diff --git a/build.bat b/build.bat
index dc2a2a677106d502ab11389c2242265a51feff55..ef36e9b22ba5ea45c23debf894a153bf245ced3d 100644
--- a/build.bat
+++ b/build.bat
@@ -10,10 +10,13 @@ set DEPENDENCIES_LINK_TYPE=static
 rem Path to boost directory, in case you have it already installed on your system
 set BOOST_ROOT=%cd%\external_dependencies\boost
 
+set LIB4NEURO_INCLUDE_DIR=%cd%\include
+
 rem Build type (Release/Debug)
 set BUILD_TYPE=Debug
+
 rem Should we rebuild BOOST? (yes/no)
-set REBUILD_BOOST=yes
+set REBUILD_BOOST=no
 
 rem Should we build the examples? (yes/no)
 set BUILD_EXAMPLES=yes
@@ -34,5 +37,5 @@ rem Example: "MSYS Makefiles", "MinGW Makefiles", "NMake Makefiles"
 set MAKEFILE_GENERATOR="Visual Studio 15 2017 Win64"
 
 call clean.bat
-cmake -G %MAKEFILE_GENERATOR% -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DCMAKE_CXX_COMPILER=%CXX_COMPILER% -DCMAKE_C_COMPILER=%C_COMPILER% -DBOOST_ROOT=%BOOST_ROOT% -DBOOST_LIBRARYDIR=%BOOST_LIBRARYDIR% -DBOOST_INCLUDEDIR=%BOOST_INCLUDEDIR% -DBUILD_TESTS=%BUILD_TESTS% -DBUILD_EXAMPLES=%BUILD_EXAMPLES% -DBUILD_LIB=%BUILD_LIB% -DLIB4NEURO_DIR=build\lib .
+cmake -G %MAKEFILE_GENERATOR% -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DCMAKE_CXX_COMPILER=%CXX_COMPILER% -DCMAKE_C_COMPILER=%C_COMPILER% -DBOOST_ROOT=%BOOST_ROOT% -DBOOST_LIBRARYDIR=%BOOST_LIBRARYDIR% -DBOOST_INCLUDEDIR=%BOOST_INCLUDEDIR% -DBUILD_TESTS=%BUILD_TESTS% -DBUILD_EXAMPLES=%BUILD_EXAMPLES% -DBUILD_LIB=%BUILD_LIB% -DLIB4NEURO_DIR=build\lib -DDEPENDENCIES_LINK_TYPE=%DEPENDENCIES_LINK_TYPE% -DLIB4NEURO_INCLUDE_DIR=%LIB4NEURO_INCLUDE_DIR% .
 cmake --build . --config %BUILD_TYPE% && (echo (Build complete.); echo (For examples have a look at the folder build/examples.)) || (echo "Build finished with errors!")
diff --git a/build.sh b/build.sh
index 8dbebd5c00b432ef858a9ac7a2eb2ea3156124d1..a1fd074440bb6fe0d3e426d491e605817f865029 100755
--- a/build.sh
+++ b/build.sh
@@ -5,6 +5,7 @@
 #------------#
 
 BOOST_ROOT=${PWD}/external_dependencies/boost
+LIB4NEURO_INCLUDE_DIR=${PWD}/include
 
 #
 # Modular build parameters
@@ -34,5 +35,5 @@ $(pwd)/clean.sh
 git submodule init
 git submodule update --remote
 
-cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CXX_COMPILER} -DCMAKE_C_COMPILER=${C_COMPILER} -DBUILD_TESTS=${BUILD_TESTS} -DBUILD_EXAMPLES=${BUILD_EXAMPLES} -DBUILD_LIB=${BUILD_LIB} -DLIB4NEURO_DIR=$(pwd)/build/lib -DDEPENDENCIES_LINK_TYPE=${DEPENDENCIES_LINK_TYPE} .
+cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=${CXX_COMPILER} -DCMAKE_C_COMPILER=${C_COMPILER} -DBOOST_LIBRARYDIR=${BOOST_LIBRARYDIR} -DBOOST_INCLUDEDIR=${BOOST_INCLUDEDIR} -DBUILD_TESTS=${BUILD_TESTS} -DBUILD_EXAMPLES=${BUILD_EXAMPLES} -DBUILD_LIB=${BUILD_LIB} -DLIB4NEURO_DIR=${PWD}/build/lib -DDEPENDENCIES_LINK_TYPE=${DEPENDENCIES_LINK_TYPE} -DLIB4NEURO_INCLUDE_DIR=${LIB4NEURO_INCLUDE_DIR} .
 cmake --build . --config ${BUILD_TYPE} -- -j${N_CORES} && (tput setaf 2; echo "Build complete."; echo "For examples have a look at the folder build/bin/examples."; tput sgr 0; ) || (tput setaf 1; echo "Build finished with errors!"; tput sgr 0; exit 1;)
diff --git a/build_scripts/linux/linux_gcc_build_x64_debug_local.sh b/build_scripts/linux/linux_gcc_build_x64_debug_local.sh
index 44282300984e048067eaa05838eb09e77fe9bca7..a703a5a901a797d95bdc0f7b4f7da59f70d49f26 100755
--- a/build_scripts/linux/linux_gcc_build_x64_debug_local.sh
+++ b/build_scripts/linux/linux_gcc_build_x64_debug_local.sh
@@ -3,6 +3,7 @@
 clear
 
 BOOST_ROOT=${PWD}../../external_dependencies/boost
+LIB4NEURO_INCLUDE_DIR=${PWD}/../../include
 
 # Should we rebuild BOOST? (yes/no)
 REBUILD_BOOST=no
@@ -96,7 +97,7 @@ then
 
     cd ../..
 
-    cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=${CXX_COMPILER} -DCMAKE_C_COMPILER=${C_COMPILER} -DBOOST_LIBRARYDIR=${BOOST_LIBRARYDIR} -DBOOST_INCLUDEDIR=${BOOST_INCLUDEDIR} -DBUILD_TESTS=${BUILD_TESTS} -DBUILD_EXAMPLES=${BUILD_EXAMPLES} -DBUILD_LIB=${BUILD_LIB} -DLIB4NEURO_DIR=${PWD}/build/lib -DDEPENDENCIES_LINK_TYPE=${DEPENDENCIES_LINK_TYPE} . || ( echo "${RED}Makefile preparation finished with errors${NC}!"; BUILD_ERROR_OCCURED=1; )
+    cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=${CXX_COMPILER} -DCMAKE_C_COMPILER=${C_COMPILER} -DBOOST_LIBRARYDIR=${BOOST_LIBRARYDIR} -DBOOST_INCLUDEDIR=${BOOST_INCLUDEDIR} -DBUILD_TESTS=${BUILD_TESTS} -DBUILD_EXAMPLES=${BUILD_EXAMPLES} -DBUILD_LIB=${BUILD_LIB} -DLIB4NEURO_DIR=${PWD}/build/lib -DDEPENDENCIES_LINK_TYPE=${DEPENDENCIES_LINK_TYPE} -DLIB4NEURO_INCLUDE_DIR=${LIB4NEURO_INCLUDE_DIR} . || ( echo "${RED}Makefile preparation finished with errors${NC}!"; BUILD_ERROR_OCCURED=1; )
 
 	if [ $BUILD_ERROR_OCCURED = "0" ]
 	then
diff --git a/build_scripts/linux/linux_gcc_build_x64_debug_system.sh b/build_scripts/linux/linux_gcc_build_x64_debug_system.sh
index 2523d5f9d8b1911d8fa623f0ccaf934ae1069565..db056b4c1e12af835a96b064f520a0b77cec95be 100755
--- a/build_scripts/linux/linux_gcc_build_x64_debug_system.sh
+++ b/build_scripts/linux/linux_gcc_build_x64_debug_system.sh
@@ -3,6 +3,7 @@
 clear
 
 BOOST_ROOT=${PWD}../../external_dependencies/boost
+LIB4NEURO_INCLUDE_DIR=${PWD}/../../include
 
 # Should we rebuild BOOST? (yes/no)
 REBUILD_BOOST=no
@@ -95,7 +96,7 @@ then
 
     cd ../..
 
-    cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=${CXX_COMPILER} -DCMAKE_C_COMPILER=${C_COMPILER} -DBOOST_LIBRARYDIR=${BOOST_LIBRARYDIR} -DBOOST_INCLUDEDIR=${BOOST_INCLUDEDIR} -DBUILD_TESTS=${BUILD_TESTS} -DBUILD_EXAMPLES=${BUILD_EXAMPLES} -DBUILD_LIB=${BUILD_LIB} -DLIB4NEURO_DIR=${PWD}/build/lib -DDEPENDENCIES_LINK_TYPE=${DEPENDENCIES_LINK_TYPE} . 
+    cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=${CXX_COMPILER} -DCMAKE_C_COMPILER=${C_COMPILER} -DBOOST_LIBRARYDIR=${BOOST_LIBRARYDIR} -DBOOST_INCLUDEDIR=${BOOST_INCLUDEDIR} -DBUILD_TESTS=${BUILD_TESTS} -DBUILD_EXAMPLES=${BUILD_EXAMPLES} -DBUILD_LIB=${BUILD_LIB} -DLIB4NEURO_DIR=${PWD}/build/lib -DDEPENDENCIES_LINK_TYPE=${DEPENDENCIES_LINK_TYPE} -DLIB4NEURO_INCLUDE_DIR=${LIB4NEURO_INCLUDE_DIR} .
 	
     echo "Building the '${CYAN}lib4neuro${NC}' project for ${WHITE}Debug${NC} (building)"
     ( cmake --build . --config Debug -- -j${N_CORES} ) && ( echo "${GREEN}Build complete${NC}." ) || ( echo "${RED}Build finished with errors${NC}!"; exit 1; )
diff --git a/build_scripts/windows/win_VS_build_x64_debug.bat b/build_scripts/windows/win_VS_build_x64_debug.bat
index 4ce26b3efda300d02d832fa314f7a38e6c7b2070..008b37e45149aabb0676dd166e47439eb3553d93 100644
--- a/build_scripts/windows/win_VS_build_x64_debug.bat
+++ b/build_scripts/windows/win_VS_build_x64_debug.bat
@@ -12,7 +12,8 @@ set "BUILD_SOMETHING_LIB="
 
 rem call VsDevCmd.bat
 
-set BOOST_ROOT=%cd%../../external_dependencies/boost
+set BOOST_ROOT=%cd%..\..\external_dependencies\boost
+set LIB4NEURO_INCLUDE_DIR=%cd%..\..\include
 
 rem Should we rebuild BOOST? (yes/no)
 set REBUILD_BOOST=yes
@@ -89,8 +90,7 @@ IF "%BUILD_SOMETHING_LIB%"=="yes" (
 	set MAKEFILE_GENERATOR="Visual Studio 15 2017 Win64"
 
 	cd ..\..
-	cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=%CXX_COMPILER% -DCMAKE_C_COMPILER=%C_COMPILER% -DBOOST_ROOT=%BOOST_ROOT% -DBOOST_LIBRARYDIR=%BOOST_LIBRARYDIR% -DBOOST_INCLUDEDIR=%BOOST_INCLUDEDIR% -DBUILD_TESTS=%BUILD_TESTS% -DBUILD_EXAMPLES=%BUILD_EXAMPLES% -DBUILD_LIB=%BUILD_LIB% -DLIB4NEURO_DIR=build\lib -DDEPENDENCIES_LINK_TYPE=%DEPENDENCIES_LINK_TYPE% .  || goto error_occured_lib
-	
+	cmake -G %MAKEFILE_GENERATOR% -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=%CXX_COMPILER% -DCMAKE_C_COMPILER=%C_COMPILER% -DBOOST_ROOT=%BOOST_ROOT% -DBOOST_LIBRARYDIR=%BOOST_LIBRARYDIR% -DBOOST_INCLUDEDIR=%BOOST_INCLUDEDIR% -DBUILD_TESTS=%BUILD_TESTS% -DBUILD_EXAMPLES=%BUILD_EXAMPLES% -DBUILD_LIB=%BUILD_LIB% -DLIB4NEURO_DIR=build\lib -DDEPENDENCIES_LINK_TYPE=%DEPENDENCIES_LINK_TYPE% -DLIB4NEURO_INCLUDE_DIR=%LIB4NEURO_INCLUDE_DIR% . || goto error_occured_lib
 	title Building the 'lib4neuro' project for Debug [building]
 	cmake --build . --config Debug && echo "Build complete." || goto error_occured_lib
 
diff --git a/include/4neuro.h b/include/4neuro.h
index 486fa50b13c33a9370b602f0feccc7291681da9d..e6810f10bae7b468af70f853d7ede88af97ba3a4 100644
--- a/include/4neuro.h
+++ b/include/4neuro.h
@@ -21,6 +21,7 @@
 #include "../src/constants.h"
 #include "../src/settings.h"
 #include "../src/message.h"
+#include "../src/LearningMethods/GradientDescent.h"
 
 
 #endif //INC_4NEURO_4NEURO_H
diff --git a/src/LearningMethods/GradientDescent.h b/src/LearningMethods/GradientDescent.h
index 4d5db3a51f0f07f6bc63327624cb8f655d450e53..07dbed03ca9d737397d39cd53bb34585dfa3a54f 100644
--- a/src/LearningMethods/GradientDescent.h
+++ b/src/LearningMethods/GradientDescent.h
@@ -8,6 +8,7 @@
 #ifndef INC_4NEURO_GRADIENTDESCENT_H
 #define INC_4NEURO_GRADIENTDESCENT_H
 
+#include "../constants.h"
 #include "ILearningMethods.h"
 #include "../ErrorFunction/ErrorFunctions.h"
 
diff --git a/src/LearningMethods/ParticleSwarm.h b/src/LearningMethods/ParticleSwarm.h
index f4c6d084b49ee25fb831c72d3dee1e6296e0cb51..28159fa3ebd76e31d72d752c13085c2ddb74c01a 100644
--- a/src/LearningMethods/ParticleSwarm.h
+++ b/src/LearningMethods/ParticleSwarm.h
@@ -51,7 +51,7 @@ public:
      *
      * @param f_dim
      */
-    LIB4NEURO_API Particle(ErrorFunction* ef, double *domain_bounds);
+    LIB4NEURO_API Particle(ErrorFunction* ef, std::vector<double> *domain_bounds);
     LIB4NEURO_API ~Particle( );
 
     /**
@@ -168,7 +168,7 @@ public:
      * @param iter_max
      */
      //TODO make domain_bounds constant
-     LIB4NEURO_API ParticleSwarm(
+     LIB4NEURO_API explicit ParticleSwarm(
             std::vector<double> *domain_bounds,
             double c1 = 1.711897,
             double c2 = 1.711897,
diff --git a/src/Network/NeuralNetwork.h b/src/Network/NeuralNetwork.h
index 224a4137a2244d01357d0148d747b76f5889095a..1a67cc00b5ae8ac71341eab0b5b20c10a830cffc 100644
--- a/src/Network/NeuralNetwork.h
+++ b/src/Network/NeuralNetwork.h
@@ -235,12 +235,17 @@ public:
     /**
      *
      */
-    LIB4NEURO_API void randomize_weights();
+    LIB4NEURO_API virtual void randomize_weights();
 
     /**
      *
      */
-    LIB4NEURO_API void randomize_biases();
+    LIB4NEURO_API virtual void randomize_biases();
+
+    /**
+     *
+     */
+    LIB4NEURO_API virtual void randomize_parameters();
 
     /**
      *
@@ -304,13 +309,13 @@ public:
      *
      * @return
      */
-    LIB4NEURO_API std::vector<double>* get_parameter_ptr_weights();
+    LIB4NEURO_API virtual std::vector<double>* get_parameter_ptr_weights();
 
     /**
      *
      * @return
      */
-    LIB4NEURO_API std::vector<double>* get_parameter_ptr_biases();
+    LIB4NEURO_API virtual std::vector<double>* get_parameter_ptr_biases();
 
     /**
      *
diff --git a/src/Network/NeuralNetworkSum.h b/src/Network/NeuralNetworkSum.h
index c48056991093c78628b012dcf4c246b6212ac601..3631e7348030a7838eee8685a696d4f5bdd1fe49 100644
--- a/src/Network/NeuralNetworkSum.h
+++ b/src/Network/NeuralNetworkSum.h
@@ -31,6 +31,14 @@ public:
 
     LIB4NEURO_API void add_network( NeuralNetwork *net, std::string expression_string );
 
+    /**
+     *
+     * @param input
+     * @param output
+     * @param custom_weights_and_biases
+     */
+    LIB4NEURO_API void eval_single(std::vector<double> &input, std::vector<double> &output, std::vector<double> *custom_weights_and_biases = nullptr) override;
+
     /**
      *
      * @param error_derivative
diff --git a/src/examples/CMakeLists.txt b/src/examples/CMakeLists.txt
index 6706c0a05e43a53fad7044f2c54d72bca19b8457..296a1693af227ffe3de2d54af52a71297439f627 100644
--- a/src/examples/CMakeLists.txt
+++ b/src/examples/CMakeLists.txt
@@ -3,7 +3,7 @@
 ############
 
 add_executable(seminar seminar.cpp)
-target_link_libraries(seminar lib4neuro)
+target_link_libraries(seminar PUBLIC lib4neuro)
 
 add_executable(test_cases main.cpp)
 target_link_libraries(test_cases PUBLIC lib4neuro)
@@ -46,3 +46,59 @@ set_target_properties(
         LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib"
         RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/examples"
 )
+
+#in case the modular make does not compile library itself
+target_include_directories(
+        test_cases
+        PRIVATE
+        ${ROOT_DIR}/include
+)
+
+target_include_directories(
+        net_test_1
+        PRIVATE
+        ${ROOT_DIR}/include
+)
+
+target_include_directories(
+        net_test_2
+        PRIVATE
+        ${ROOT_DIR}/include
+)
+
+target_include_directories(
+        net_test_3
+        PRIVATE
+        ${ROOT_DIR}/include
+)
+
+target_include_directories(
+        net_test_ode_1
+        PRIVATE
+        ${ROOT_DIR}/include
+)
+
+target_include_directories(
+        net_test_pde_1
+        PRIVATE
+        ${ROOT_DIR}/include
+)
+
+target_include_directories(
+        network_serialization
+        PRIVATE
+        ${ROOT_DIR}/include
+)
+
+target_include_directories(
+        test_harmonic_oscilator
+        PRIVATE
+        ${ROOT_DIR}/include
+)
+
+target_include_directories(
+        seminar
+        PRIVATE
+        ${ROOT_DIR}/include
+)
+