diff --git a/src/Neuron/Neuron.cpp b/src/Neuron/Neuron.cpp
index fc7dc78db4bda1326fce329aab8add4005a54da5..15664cd953bd38f298d22f194d554b0eff82086c 100644
--- a/src/Neuron/Neuron.cpp
+++ b/src/Neuron/Neuron.cpp
@@ -4,8 +4,3 @@
 Neuron::~Neuron() {
 
 }
-//template<class Archive>
-//void Neuron::serialize(Archive & ar, const unsigned int version) {
-//    ar << this->potential;
-//    ar << this->state;
-//}
\ No newline at end of file
diff --git a/src/Neuron/Neuron.h b/src/Neuron/Neuron.h
index 6e098a85858a5e7ef54fc4a497fb5c39c51b37ec..bcc85cf41f70cbe0220e03d2345e25b6e1dccfa6 100644
--- a/src/Neuron/Neuron.h
+++ b/src/Neuron/Neuron.h
@@ -19,20 +19,11 @@ class IDifferentiable;
   * Abstract class representing a general neuron
   */
 class Neuron {
+private:
     friend class boost::serialization::access;
 
-protected:
-
     template<class Archive>
-    void serialize(Archive & ar, const unsigned int version){
-        //TODO separate implementation to Neuron.cpp!
-//        ar & this->potential;
-//        ar & this->state;
-//
-//        for(unsigned short int i = 0; i < this->n_activation_function_parameters; i++) {
-//            ar & this->activation_function_parameters[i];
-//        }
-    };
+    void serialize(Archive & ar, const unsigned int version){};
 
 public:
 
@@ -47,6 +38,7 @@ public:
      * Performs the activation function and returns the result
      */
     virtual double activate( double x, double b ) = 0;
+
 }; /* end of Neuron class */
 
 
diff --git a/src/Neuron/NeuronBinary.cpp b/src/Neuron/NeuronBinary.cpp
index 4ccb178bcf0d0c81945c83c16f71dfd5a207d935..48ada48fc2b562e90abccad7941a7ceee13db712 100644
--- a/src/Neuron/NeuronBinary.cpp
+++ b/src/Neuron/NeuronBinary.cpp
@@ -4,9 +4,7 @@
 
 #include "NeuronBinary.h"
 
-NeuronBinary::NeuronBinary( ) {
-
-}
+NeuronBinary::NeuronBinary( ) {}
 
 double NeuronBinary::activate( double x, double b ) {
 
diff --git a/src/Neuron/NeuronBinary.h b/src/Neuron/NeuronBinary.h
index 9e2d116160ad0b97ba8230f4333e4e907523d303..e9857a7ab3dd8d16bd36aabe32e68210f939e67a 100644
--- a/src/Neuron/NeuronBinary.h
+++ b/src/Neuron/NeuronBinary.h
@@ -16,12 +16,11 @@
  *  Binary neuron class - uses unit-step as the activation function
  */
 class NeuronBinary:public Neuron {
+private:
     friend class boost::serialization::access;
 
-protected:
     template<class Archive>
     void serialize(Archive & ar, const unsigned int version){
-        //TODO separate implementation to NeuronLogistic.cpp!
         ar & boost::serialization::base_object<Neuron>(*this);
     };
 
diff --git a/src/Neuron/NeuronConstant.cpp b/src/Neuron/NeuronConstant.cpp
index a09fe8c561453229b0b3129cac431b8e3dc883c1..1b349c2f913dfe1ea3c09dcf5765fe28254cd555 100644
--- a/src/Neuron/NeuronConstant.cpp
+++ b/src/Neuron/NeuronConstant.cpp
@@ -8,9 +8,7 @@
 #include "NeuronConstant.h"
 
 NeuronConstant::NeuronConstant( double c ) {
-
     this->p = c;
-
 }
 
 double NeuronConstant::activate( double x, double b ) {
diff --git a/src/Neuron/NeuronConstant.h b/src/Neuron/NeuronConstant.h
index f87d5a608d18671661b9be6b156aa7fd5032cdca..2c7091dc99e1ddd5f161f6b45a80fc5c85e398eb 100644
--- a/src/Neuron/NeuronConstant.h
+++ b/src/Neuron/NeuronConstant.h
@@ -12,13 +12,16 @@
 #include "Neuron.h"
 
 class NeuronConstant: public Neuron, public IDifferentiable {
+private:
     friend class boost::serialization::access;
 
-protected:
+    double p = 0.0;
+
     template<class Archive>
     void serialize(Archive & ar, const unsigned int version){
-        //TODO separate implementation to NeuronLinear.cpp!
         ar & boost::serialization::base_object<Neuron>(*this);
+
+        ar & this->p;
     };
 
 public:
@@ -54,7 +57,6 @@ public:
      * @return
      */
     Neuron* get_derivative( ) override;
-private:
-    double p = 0.0;
 };
+
 #endif //INC_4NEURO_NEURONCONSTANT_H
diff --git a/src/Neuron/NeuronLinear.cpp b/src/Neuron/NeuronLinear.cpp
index 71ad80fd42825abd1be54d6433653c4f4a6ba9ce..afb73c6ac102d5b8e725cbceac2c3c38075cc887 100644
--- a/src/Neuron/NeuronLinear.cpp
+++ b/src/Neuron/NeuronLinear.cpp
@@ -6,10 +6,7 @@
 
 
 
-NeuronLinear::NeuronLinear( ) {
-
-
-}
+NeuronLinear::NeuronLinear( ) {}
 
 double NeuronLinear::activate( double x, double b ) {
 
diff --git a/src/Neuron/NeuronLinear.h b/src/Neuron/NeuronLinear.h
index bd5d8c42f26bce108eba26c39fedd690d9e58c1a..56d9793282a5d651bc93622af5d02aac72dcc893 100644
--- a/src/Neuron/NeuronLinear.h
+++ b/src/Neuron/NeuronLinear.h
@@ -20,12 +20,11 @@
  * 'x' being the neuron's potential
  */
 class NeuronLinear:public Neuron, public IDifferentiable {
+private:
     friend class boost::serialization::access;
 
-protected:
     template<class Archive>
     void serialize(Archive & ar, const unsigned int version){
-        //TODO separate implementation to NeuronLinear.cpp!
         ar & boost::serialization::base_object<Neuron>(*this);
     };
 
diff --git a/src/Neuron/NeuronLogistic.cpp b/src/Neuron/NeuronLogistic.cpp
index 7d8075bc3298fb8fabe387e99e80479d28f6e381..6ca3f80006e07752dd6e85392f45941159b8c74d 100644
--- a/src/Neuron/NeuronLogistic.cpp
+++ b/src/Neuron/NeuronLogistic.cpp
@@ -5,9 +5,7 @@
 
 #include "NeuronLogistic.h"
 
-NeuronLogistic_d2::NeuronLogistic_d2( ) {
-
-}
+NeuronLogistic_d2::NeuronLogistic_d2( ) {}
 
 double NeuronLogistic_d2::activate( double x, double b ) {
     //(e^(b + x) (e^b - e^x))/(e^b + e^x)^3
@@ -40,9 +38,7 @@ NeuronLogistic* NeuronLogistic_d2::get_derivative() {
     return nullptr;
 }
 
-NeuronLogistic_d1::NeuronLogistic_d1( ) {
-
-}
+NeuronLogistic_d1::NeuronLogistic_d1( ) {}
 
 
 double NeuronLogistic_d1::activate( double x, double b ) {
@@ -80,9 +76,7 @@ NeuronLogistic* NeuronLogistic_d1::get_derivative( ) {
     return output;
 }
 
-NeuronLogistic::NeuronLogistic( ) {
-
-}
+NeuronLogistic::NeuronLogistic( ) {}
 
 double NeuronLogistic::activate( double x, double b ) {
     //(1 + e^(-x + b))^(-1)
diff --git a/src/Neuron/NeuronLogistic.h b/src/Neuron/NeuronLogistic.h
index 9eaa3e2bda01667c983f022aad3a35323f2e33fb..c5ce9d9e34aa330f9368f10aefcced0e803e880e 100644
--- a/src/Neuron/NeuronLogistic.h
+++ b/src/Neuron/NeuronLogistic.h
@@ -59,13 +59,15 @@ public:
 
 
 class NeuronLogistic_d1:public NeuronLogistic {
+private:
     friend class boost::serialization::access;
-protected:
+
     template<class Archive>
     void serialize(Archive & ar, const unsigned int version){
-        //TODO separate implementation to NeuronLogistic_d1.cpp!
+        //TODO separate implementation to Neuronogistic_d1.cpp!
         ar & boost::serialization::base_object<Neuron>(*this);
     };
+
 public:
 
     /**
@@ -106,13 +108,15 @@ public:
 
 
 class NeuronLogistic_d2:public NeuronLogistic_d1 {
+private:
     friend class boost::serialization::access;
-protected:
+
     template<class Archive>
     void serialize(Archive & ar, const unsigned int version){
         //TODO separate implementation to NeuronLogistic_d1.cpp!
         ar & boost::serialization::base_object<Neuron>(*this);
     };
+
 public:
 
     /**