diff --git a/examples/agent-functionalities/agent-functionalities.cpp b/examples/agent-functionalities/agent-functionalities.cpp
index d956c54..b09b72e 100644
--- a/examples/agent-functionalities/agent-functionalities.cpp
+++ b/examples/agent-functionalities/agent-functionalities.cpp
@@ -1,169 +1,169 @@
 //===-- examples/agent-functionalities/agent-functionalities.cpp *-- C++-*-===//
 //
 //                                 The RoSA Framework
 //
 //===----------------------------------------------------------------------===//
 ///
 /// \file examples/agent-functionalities/agent-functionalities.cpp
 ///
 /// \author David Juhasz (david.juhasz@tuwien.ac.at)
 ///
 /// \date 2017
 ///
 /// \brief A simple example on defining \c rosa::Agent instances using
 /// \c rosa::agent::Functionality object as components.
 ///
 //===----------------------------------------------------------------------===//
 
 #include "rosa/agent/Abstraction.hpp"
 #include "rosa/agent/LinearFunctions.hpp"
 #include "rosa/agent/Confidence.hpp"
 
 #include "rosa/config/version.h"
 
 #include "rosa/core/Agent.hpp"
 #include "rosa/core/MessagingSystem.hpp"
 
 #include "rosa/support/log.h"
 #include "rosa/support/terminal_colors.h"
 
 #include <vector>
 
 using namespace rosa;
 using namespace rosa::agent;
 using namespace rosa::terminal;
 
 /// A dummy wrapper for testing \c rosa::MessagingSystem.
 ///
 /// \note Since we test \c rosa::MessagingSystem directly here, we need to get
 /// access to its protected members. That we do by imitating to be a decent
 /// subclass of \c rosa::MessagingSystem, while calling protected member
 /// functions on an object of a type from which we actually don't inherit.
 struct SystemTester : protected MessagingSystem {
   template <typename T, typename... Funs>
   static AgentHandle createMyAgent(MessagingSystem *S, const std::string &Name,
                                    Funs &&... Fs) {
     return ((SystemTester *)S)->createAgent<T>(Name, std::move(Fs)...);
   }
 
   static void destroyMyAgent(MessagingSystem *S, const AgentHandle &H) {
     ((SystemTester *)S)->destroyUnit(unwrapAgent(H));
   }
 };
 
 /// A special \c rosa::Agent with its own state.
 class MyAgent : public Agent {
 public:
   using Tick = AtomConstant<atom("tick")>;
 
 private:
   enum class Categories { Bad, Normal, Good };
 
   static const std::map<Categories, const char *> CategoryNames;
   History<uint8_t, 10, HistoryPolicy::FIFO> H;
   Confidence<uint8_t> C;
   RangeAbstraction<uint8_t, Categories> A;
   PartialFunction<int, int> L;
   RangeConfidence<float, float> RCL;
   RangeConfidence<float, float> RCS;
 
 public:
   void handler(Tick, uint8_t V) noexcept {
     // Record \p V to the \c rosa::agent::History, then print state info.
     H << V;
     ASSERT(H.entry() == V); // Sanity check.
-	LOG_INFO_STREAM << "\nNext value: " << PRINTABLE(V)
+    LOG_INFO_STREAM << "\nNext value: " << PRINTABLE(V)
                     << ", confidence: " << C(H)
                     << ", category: " << CategoryNames.at(A(H.entry()))
-					<< ", partial: " << int(L(H.entry()))
-	                << ", range-confidence-linear: ";
-	std::vector<float> res_lin = RCL(H.entry());
-	for(auto i : res_lin){
-		LOG_INFO_STREAM << " " << i;
-	}
-	LOG_INFO_STREAM << ", range-confidence-sine: ";
-	std::vector<float> res_sine = RCS(H.entry());
-	for(auto i : res_sine){
-		LOG_INFO_STREAM << " " << i;
-	}
-	LOG_INFO_STREAM << '\n';
+                    << ", partial: " << int(L(H.entry()))
+                    << ", range-confidence-linear: ";
+    std::vector<float> res_lin = RCL(H.entry());
+    for (auto i : res_lin){
+      LOG_INFO_STREAM << " " << i;
+    }
+    LOG_INFO_STREAM << ", range-confidence-sine: ";
+    std::vector<float> res_sine = RCS(H.entry());
+    for (auto i : res_sine){
+      LOG_INFO_STREAM << " " << i;
+    }
+    LOG_INFO_STREAM << '\n';
   }
 
   MyAgent(const AtomValue Kind, const rosa::id_t Id, const std::string &Name,
           MessagingSystem &S)
       : Agent(Kind, Id, Name, S, THISMEMBER(handler)), H(), C(5, 20, 1),
         A({{{(uint8_t)10, (uint8_t)14}, Categories::Normal},
            {{(uint8_t)15, (uint8_t)17}, Categories::Good},
            {{(uint8_t)18, (uint8_t)19}, Categories::Normal}},
           Categories::Bad),
         L({{{0, 2}, new LinearFunction<int,int>(0, 1)},
            {{2, 4}, new LinearFunction<int,int>(2, 0)},
            {{4, 6}, new LinearFunction<int,int>(6, -1)}},
           0),
-		RCL({
+        RCL({
           PartialFunction<float, float>({
             {{0, 3}, new LinearFunction<float, float>(0, 1.0/3)},
             {{3, 6}, new LinearFunction<float, float>(1, 0)},
             {{6, 9}, new LinearFunction<float, float>(3.0, -1.0/3)},
           },0),
           PartialFunction<float, float>({
             {{6, 9}, new LinearFunction<float, float>(-2, 1.0/3)},
             {{9, 12}, new LinearFunction<float, float>(1, 0)},
             {{12, 15}, new LinearFunction<float, float>(5, -1.0/3)},
           },0),
           PartialFunction<float, float>({
             {{12, 15}, new LinearFunction<float, float>(-4, 1.0/3)},
             {{15, 18}, new LinearFunction<float, float>(1, 0)},
             {{18, 21}, new LinearFunction<float, float>(7, -1.0/3)},
           },0)
         }),
         RCS({
           PartialFunction<float, float>({
             {{0, 3}, new SineFunction<float, float>
               (M_PI/3, 0.5, -M_PI/2, 0.5)},
             {{3, 6}, new LinearFunction<float, float>(1, 0)},
             {{6, 9}, new SineFunction<float, float>
               (M_PI/3, 0.5, -M_PI/2 + 3, 0.5)},
           },0),
           PartialFunction<float, float>({
             {{6, 9}, new SineFunction<float, float>
               (M_PI/3, 0.5, -M_PI/2, 0.5)},
             {{9, 12}, new LinearFunction<float, float>(1, 0)},
             {{12, 15}, new SineFunction<float, float>
               (M_PI/3, 0.5, -M_PI/2 + 3, 0.5)},
           },0),
           PartialFunction<float, float>({
             {{12, 15}, new SineFunction<float, float>
               (M_PI/3, 0.5, -M_PI/2, 0.5)},
             {{15, 18}, new LinearFunction<float, float>(1, 0)},
             {{18, 21}, new SineFunction<float, float>
               (M_PI/3, 0.5, -M_PI/2 + 3, 0.5)},
           },0)
         }){}
 };
 
 const std::map<MyAgent::Categories, const char *> MyAgent::CategoryNames{
     {Categories::Bad, "Bad"},
     {Categories::Normal, "Normal"},
     {Categories::Good, "Good"}};
 
 int main(void) {
 	LOG_INFO_STREAM << library_string() << " -- " << Color::Red
                   << "agent-functionalities example" << Color::Default
                   << '\n';
 
   std::unique_ptr<MessagingSystem> S = MessagingSystem::createSystem("Sys");
   MessagingSystem *SP = S.get();
 
   AgentHandle A = SystemTester::createMyAgent<MyAgent>(SP, "MyAgent");
 
   std::vector<uint8_t> Vs{0, 1, 2, 3, 4,  5,  6,  7,  9,  10, 11, 13,
                           15, 14, 15, 16, 19, 20, 21};
   for (auto I = Vs.begin(); I != Vs.end(); ++I) {
     A.send<MyAgent::Tick, uint8_t>(MyAgent::Tick::Value, *I);
   }
 
   SystemTester::destroyMyAgent(SP, A);
 
   return 0;
 }
diff --git a/include/rosa/agent/LinearFunctions.hpp b/include/rosa/agent/LinearFunctions.hpp
index cbc901d..b0eceaa 100644
--- a/include/rosa/agent/LinearFunctions.hpp
+++ b/include/rosa/agent/LinearFunctions.hpp
@@ -1,224 +1,224 @@
 //===-- rosa/agent/LinearAbstractions.hpp --------------------------*- C++ -*-===//
 //
 //                                 The RoSA Framework
 //
 //===----------------------------------------------------------------------===//
 ///
 /// \file rosa/agent/LinearAbstractions.hpp
 ///
 /// \author Benedikt Tutzer (benedikt.tutzer@tuwien.ac.at)
 ///
 /// \date 2019
 ///
 /// \brief Definition of *LinearFunction* *functionality*.
 ///
 //===----------------------------------------------------------------------===//
 
 #ifndef ROSA_AGENT_LINEARFUNCTIONS_HPP
 #define ROSA_AGENT_LINEARFUNCTIONS_HPP
 
 #include "rosa/agent/Functionality.h"
 #include "rosa/agent/Abstraction.hpp"
 
 #include "rosa/support/debug.hpp"
 
 #include <algorithm>
 #include <vector>
 #include <cmath>
 
 namespace rosa {
 namespace agent {
 
 /// Evaluates a linear function at a given value.
 ///
 /// \tparam T type of the functions domain
 /// \tparam A type of the functions range
 template <typename T, typename A> class LinearFunction :
 	public Abstraction<T, A>{
   // Make sure the actual type arguments are matching our expectations.
   STATIC_ASSERT((std::is_arithmetic<T>::value),
     "LinearFunction not arithmetic T");
   STATIC_ASSERT((std::is_arithmetic<A>::value),
     "LinearFunction not to arithmetic");
 protected:
   const T Intercept;
   const T Coefficient;
 
 public:
   /// Creates an instance.
   ///
   /// \param Intercept the intercept of the linear function
   /// \param Coefficient the coefficient of the linear function
   /// domain
   LinearFunction(T Intercept, T Coefficient) noexcept
       : Abstraction<T, A>(Intercept),
         Intercept(Intercept),
         Coefficient(Coefficient) {}
 
   /// Destroys \p this object.
   ~LinearFunction(void) = default;
 
   /// Evaluates the linear function
   ///
   /// \param X the value at which to evaluate the function
   /// \return the result
   virtual A operator()(const T &X) const noexcept override {
     return Intercept + X*Coefficient;
   }
 };
 
 /// Evaluates a sine function at a given value.
 ///
 /// \tparam T type of the functions domain
 /// \tparam A type of the functions range
 template <typename T, typename A> class SineFunction :
 	public Abstraction<T, A>{
   // Make sure the actual type arguments are matching our expectations.
   STATIC_ASSERT((std::is_arithmetic<T>::value),
     "SineFunction not arithmetic T");
   STATIC_ASSERT((std::is_arithmetic<A>::value),
     "SineFunction not to arithmetic");
 protected:
   const T Frequency;
   const T Amplitude;
   const T Phase;
   const T Average;
 
 public:
   /// Creates an instance.
   ///
   /// \param Frequency the frequency of the sine wave
   /// \param Amplitude the amplitude of the sine wave
   /// \param Phase the phase of the sine wave
   /// \param Average the average of the sine wave
   /// domain
   SineFunction(T Frequency, T Amplitude, T Phase, T Average) noexcept
       : Abstraction<T, A>(Average),
         Frequency(Frequency),
         Amplitude(Amplitude),
         Phase(Phase),
         Average(Average) {}
 
   /// Destroys \p this object.
   ~SineFunction(void) = default;
 
   /// Evaluates the linear function
   ///
   /// \param X the value at which to evaluate the function
   /// \return the result
   virtual A operator()(const T &X) const noexcept override {
     return Amplitude*sin(Frequency * X + Phase) + Average;
   }
 };
 
 /// Implements \c rosa::agent::RangeAbstraction as an abstraction from
 /// \c std::map from ranges of a type to abstractions of that type to another
 /// type. The resulting abstractions are evaluated for the given values.
 ///
 /// \note This implementation is supposed to be used to abstract ranges of
 /// arithmetic types into abstractions from that type to another arithmetic
 /// type, which is statically enforced.
 ///
 /// \invariant The keys in the underlying \c std::map define valid ranges
 /// such that `first <= second` and there are no overlapping ranges defined by
 /// the keys.
 ///
 /// \tparam T type to abstract from
 /// \tparam A type to abstract to
 template <typename T, typename A>
 class PartialFunction : private Abstraction<T, A> {
   // Make sure the actual type arguments are matching our expectations.
   STATIC_ASSERT((std::is_arithmetic<T>::value), "abstracting not arithmetic");
   STATIC_ASSERT((std::is_arithmetic<A>::value),
       "abstracting not to arithmetic");
 
 private:
   RangeAbstraction<T, Abstraction<T, A>*> RA;
 
 public:
   /// Creates an instance by Initializing the underlying \c RangeAbstraction.
   ///
   /// \param Map the mapping to do abstraction according to
   /// \param Default abstraction to abstract to by default
   ///
   /// \pre Each key defines a valid range such that `first <= second` and
   /// there are no overlapping ranges defined by the keys.
   PartialFunction(const std::map<std::pair<T, T>, Abstraction<T, A>*> &Map,
     const A Default)
       : Abstraction<T, A>(Default), RA(Map, new Abstraction<T, A>(Default)) {
   }
 
   /// Destroys \p this object.
   ~PartialFunction(void) = default;
 
   /// Evaluates an Abstraction from type \p T to type \p A based on the set
   /// mapping.
   ///
   /// Results in the value associated by the set mapping to the argument, or
   /// \c rosa::agent::RangeAbstraction::Default if the actual argument is not
   /// included in any of the ranges in the set mapping.
   ///
   /// \param V value to abstract
   ///
   /// \return the abstracted value based on the set mapping
   A operator()(const T &V) const noexcept override {
     return (*RA(V))(V);
   }
 };
 
 /// Evaluates a vector of Abstractions at a given value and returns the results
 /// as a vector
 ///
 /// \note This implementation is supposed to be used to abstract ranges of
 /// arithmetic types into vectors of another arithmetic type, which is
 /// statically enforced.
 ///
 /// \tparam T type to abstract from
 /// \tparam A type to abstract a vector of to
 template <typename T, typename A>
 class RangeConfidence : public Abstraction<T, std::vector<A>>,
       private std::vector<PartialFunction<T, A>>{
   // Make sure the actual type arguments are matching our expectations.
   STATIC_ASSERT((std::is_arithmetic<T>::value), "abstracting not arithmetic");
   STATIC_ASSERT((std::is_arithmetic<A>::value),
       "abstracting not to arithmetic");
 
   // Bringing into scope inherited members.
   using std::vector<PartialFunction<T, A>>::size;
   using std::vector<PartialFunction<T, A>>::begin;
   using std::vector<PartialFunction<T, A>>::end;
 
 public:
   /// Creates an instance by Initializing the underlying \c RangeAbstraction.
   ///
   /// \param Abstractions the Abstractions to be evaluated
   RangeConfidence(const std::vector<PartialFunction<T, A>> &Abstractions)
       : Abstraction<T, std::vector<A>>({}),
         std::vector<PartialFunction<T, A>>(Abstractions) {
   }
 
   /// Destroys \p this object.
   ~RangeConfidence(void) = default;
 
   /// Evaluates an Abstraction from type \p T to type \p A based on the set
   /// mapping.
   ///
   /// Results in the value associated by the set mapping to the argument, or
   /// \c rosa::agent::RangeAbstraction::Default if the actual argument is not
   /// included in any of the ranges in the set mapping.
   ///
   /// \param V value to abstract
   ///
   /// \return the abstracted value based on the set mapping
   std::vector<A> operator()(const T &V) const noexcept override {
     std::vector<A> ret;
-	for(auto const& func : ((std::vector<PartialFunction<T, A>>)*this)){
-		ret.push_back(func(V));
-	}
-	return ret;
+    for (auto const& func : ((std::vector<PartialFunction<T, A>>)*this)){
+      ret.push_back(func(V));
+    }
+    return ret;
   }
 };
 } // End namespace agent
 } // End namespace rosa
 
 #endif // ROSA_AGENT_ABSTRACTION_HPP