diff --git a/CMake/CMakeSetCompilerFlags.cmake b/CMake/CMakeSetCompilerFlags.cmake
index 2ea8c0b2faf0a398681e32232aa7d247b511c72c..26eeca2a08436c910d1b936b665ef471ed3e557b 100644
--- a/CMake/CMakeSetCompilerFlags.cmake
+++ b/CMake/CMakeSetCompilerFlags.cmake
@@ -47,7 +47,7 @@ endmacro()
 ################################################################
 ###             ADD_COMPILER_FLAGS_TO_PROJECT                ###
 ################################################################
-function(addAdditionalFlags project_name)
+function(addAdditionalFlags library_name)
 
     status_lib("additional compiler flags CXX: ${CS_COMPILER_FLAGS_CXX}")
     status_lib("additional compiler flags CXX debug: ${CS_COMPILER_FLAGS_CXX_DEBUG}")
@@ -67,18 +67,18 @@ function(addAdditionalFlags project_name)
 
     # compile options
     foreach(flag IN LISTS CS_COMPILER_FLAGS_CXX)
-        target_compile_options(${project_name} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${flag}>")
+        target_compile_options(${library_name} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${flag}>")
         if(MSVC)
-            target_compile_options(${project_name} PRIVATE "$<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler=${flag}>")
+            target_compile_options(${library_name} PRIVATE "$<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler=${flag}>")
         endif()
     endforeach()
 
     foreach(flag IN LISTS CS_COMPILER_FLAGS_CXX_DEBUG)
-        target_compile_options(${project_name} PRIVATE "$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:DEBUG>>:${flag}>")
+        target_compile_options(${library_name} PRIVATE "$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:DEBUG>>:${flag}>")
     endforeach()
 
     foreach(flag IN LISTS CS_COMPILER_FLAGS_CXX_RELEASE)
-        target_compile_options(${project_name} PRIVATE "$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:RELEASE>>:${flag}>")
+        target_compile_options(${library_name} PRIVATE "$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:RELEASE>>:${flag}>")
     endforeach()
 
 endfunction()
\ No newline at end of file
diff --git a/CMake/VirtualFluidsMacros.cmake b/CMake/VirtualFluidsMacros.cmake
index debb5ee7826d7dc3d6499b3813070dcab4b94bd4..62388cdf333aac80464e49af0edd4facdfceb6de 100644
--- a/CMake/VirtualFluidsMacros.cmake
+++ b/CMake/VirtualFluidsMacros.cmake
@@ -80,7 +80,7 @@ endfunction()
 #################################################################################
 function (vf_get_library_test_name library_test_name)
     vf_get_library_name (folder_name)
-    set (${library_test_name} ${library_name}Tests PARENT_SCOPE)
+    set (${library_test_name} ${folder_name}Tests PARENT_SCOPE)
 endfunction()
 
 
@@ -103,11 +103,11 @@ endfunction()
 function(vf_add_library)
 
     set( options )
-    set( oneValueArgs )
-    set( multiValueArgs NAME BUILDTYPE PUBLIC_LINK PRIVATE_LINK FILES FOLDER EXCLUDE)
+    set( oneValueArgs NAME BUILDTYPE)
+    set( multiValueArgs PUBLIC_LINK PRIVATE_LINK FILES FOLDER EXCLUDE)
     cmake_parse_arguments( ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
 
-    if(${ARG_NAME})
+    if(DEFINED ARG_NAME)
         set(library_name ${ARG_NAME})
     else()
         vf_get_library_name (library_name)
diff --git a/src/gpu/VirtualFluids_GPU/CMakeLists.txt b/src/gpu/VirtualFluids_GPU/CMakeLists.txt
index 95405b25864f506e5580fa6711a4389d39d8d7a7..b80eec73174110e5759bf5f496d7f45fdfd4bd9f 100644
--- a/src/gpu/VirtualFluids_GPU/CMakeLists.txt
+++ b/src/gpu/VirtualFluids_GPU/CMakeLists.txt
@@ -12,3 +12,5 @@ linkBoost(COMPONENTS "serialization")
 #SET(TPN_WIN32 "/EHsc")
 #https://stackoverflow.com/questions/6832666/lnk2019-when-including-asio-headers-solution-generated-with-cmake
 #https://stackoverflow.com/questions/27442885/syntax-error-with-stdnumeric-limitsmax
+
+vf_add_tests()
diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
index d185487bb2642fb1628e1a9dc0a932c0ea1e71a0..0eb7471e7fe1b4442a180188ab0782845e351eaa 100644
--- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
+++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
@@ -40,18 +40,11 @@
 #include "Calculation/ForceCalculations.h"
 #include "Calculation/PorousMedia.h"
 //////////////////////////////////////////////////////////////////////////
-//CUDA
+#include "Restart/RestartObject.h"
+
 #include <cuda_runtime.h>
 #include <helper_functions.h>
 #include <helper_cuda.h>
-////random numbers
-//#include <curand.h>
-//#include <curand_kernel.h>
-//////////////////////////////////////////////////////////////////////////
-#include <boost/foreach.hpp>
-#include <stdio.h>
-#include <vector>
-#include "Restart/RestartPostprocessor.h"
 //////////////////////////////////////////////////////////////////////////
 #include "DataStructureInitializer/GridProvider.h"
 #include "Output/DataWriter.h"
@@ -59,14 +52,11 @@
 #include "PreProcessor/PreProcessorFactory/PreProcessorFactory.h"
 #include "Kernel/Kernel.h"
 
-Simulation::Simulation()
-{
 
-}
 
-Simulation::~Simulation()
+std::string getFileName(const std::string& fname, int step, int myID)
 {
-
+    return std::string(fname + "_Restart_" + UbSystem::toString(myID) + "_" +  UbSystem::toString(step));
 }
 
 
@@ -114,9 +104,7 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std
    else
        para->setStartTurn((unsigned int)0); //100000
 
-   //Restart object
-   restObj = new RestartObject();
-   rest = new RestartPostprocessor(restObj, RestartPostprocessor::TXT);
+   restart_object = std::make_shared<ASCIIRestartObject>();
    //////////////////////////////////////////////////////////////////////////
    output.setName(para->getFName() + StringUtil::toString<int>(para->getMyID()) + ".log");
    if(para->getMyID() == 0) output.setConsoleOut(true);
@@ -264,7 +252,7 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std
    //////////////////////////////////////////////////////////////////////////
    ////allocVeloForForcing(para);
    //output << "new object forceCalulator  " << "\n";
-   //forceCalculator = new ForceCalculations(para.get());
+   //forceCalculator = std::make_shared<ForceCalculations>(para.get());
 
    //////////////////////////////////////////////////////////////////////////
    //output << "define the Grid..." ;
@@ -330,10 +318,10 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std
    if (para->getDoRestart())
    {
 	   output << "Restart...\n...get the Object...\n";
-	   restObj = rest->restart(para->getFName(), para->getTimeDoRestart(), para->getMyID());
-	   output << "...load...\n";
-	   restObj->load(para.get());
-	   //para = rest->restart(para->getTimeDoRestart());
+
+		const auto name = getFileName(para->getFName(), para->getTimeDoRestart(), para->getMyID());
+		restart_object->deserialize(name, para);
+
 	   output << "...copy Memory for Restart...\n";
 	   for (int lev=para->getCoarse(); lev <= para->getFine(); lev++)
 	   {
@@ -523,8 +511,10 @@ void Simulation::run()
                 }
                 
                 output << "Dateien fuer CheckPoint schreiben t=" << t << "...";
-                restObj->safe(para.get());
-                rest->doCheckPoint(para->getFName(), t, para->getMyID());
+
+				const auto name = getFileName(para->getFName(), t, para->getMyID());
+				restart_object->serialize(name, para);
+
                 output << "\n fertig\n";
             }
             //////////////////////////////////////////////////////////////////////////
@@ -1299,11 +1289,6 @@ void Simulation::free()
 	}
 	//////////////////////////////////////////////////////////////////////////
 
-	para->~Parameter();
-	gridProvider->~GridProvider();
-	dataWriter->~DataWriter();
-	comm->~Communicator();
-	for(std::size_t i = 0; i < kernels.size(); i++)
-		kernels.at(i)->~Kernel();
+    delete comm;
 
 }
\ No newline at end of file
diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
index afecb7afd5b0ec241de1b408612fe734db3a560c..7a91331a76e565f9240e3a51ae45a88c753e9ee1 100644
--- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
+++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
@@ -20,7 +20,6 @@ class Parameter;
 class GridProvider;
 class PorousMedia;
 class RestartObject;
-class RestartPostprocessor;
 class ForceCalculations;
 class DataWriter;
 class Kernel;
@@ -33,8 +32,6 @@ class TrafficMovementFactory;
 class VIRTUALFLUIDS_GPU_EXPORT Simulation
 {
 public:
-	Simulation();
-	~Simulation();
 	void run();
 	void init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std::shared_ptr<DataWriter> dataWriter, std::shared_ptr<CudaMemoryManager> cudaManager);
 	void free();
@@ -73,12 +70,10 @@ protected:
 	std::vector < SPtr< ADKernel>> adKernels;
 	std::shared_ptr<PreProcessor> preProcessor;
 
-	//Restart object
-	RestartObject* restObj;
-	RestartPostprocessor* rest;
+    SPtr<RestartObject> restart_object;
 
 	//Forcing Calculation
-	ForceCalculations* forceCalculator;
+	std::shared_ptr<ForceCalculations> forceCalculator;
 
 	//Porous Media
 	std::vector<std::shared_ptr<PorousMedia>> pm;
diff --git a/src/gpu/VirtualFluids_GPU/Restart/RestartObject.cpp b/src/gpu/VirtualFluids_GPU/Restart/RestartObject.cpp
index ac01d57a1291911d36b94ae7a69e223579d4695f..dc9460491df245874488a50492120bc0347e495f 100644
--- a/src/gpu/VirtualFluids_GPU/Restart/RestartObject.cpp
+++ b/src/gpu/VirtualFluids_GPU/Restart/RestartObject.cpp
@@ -1,61 +1,154 @@
 #include "RestartObject.h"
+
+#include <fstream>
+
 #include "Parameter/Parameter.h"
 #include "basics/utilities/UbMath.h"
 
-RestartObject::RestartObject()
+void RestartObject::deserialize(const std::string &filename, std::shared_ptr<Parameter> para)
 {
+    for (int j = para->getCoarse(); j <= para->getFine(); j++) {
+        std::vector<real> vec;
+        fs.push_back(vec);
+
+        for (unsigned int i = 0; i < (para->getD3Qxx() * para->getParH(j)->size_Mat_SP); i++) {
+            para->getParH(j)->d0SP.f[0][i] = fs[j][i];
+        }
+    }
+
+    deserialize_internal(filename);
 }
-//////////////////////////////////////////////////////////////////////////
-RestartObject::~RestartObject()
+
+void RestartObject::serialize(const std::string &filename, std::shared_ptr<Parameter> para)
 {
+    if (fs.size() > 0) {
+        clear(para);
+    }
+    for (int j = para->getCoarse(); j <= para->getFine(); j++) {
+        std::vector<real> vec;
+        fs.push_back(vec);
+
+        for (unsigned int i = 0; i < (para->getD3Qxx() * para->getParH(j)->size_Mat_SP); i++) {
+            if (UbMath::isNaN(para->getParH(j)->d0SP.f[0][i])) {
+                fs[j].push_back((real)0.0);
+            } else {
+                fs[j].push_back(para->getParH(j)->d0SP.f[0][i]);
+            }
+        }
+    }
+
+    serialize_internal(filename);
 }
-//////////////////////////////////////////////////////////////////////////
-void RestartObject::load(Parameter* para)
+
+void RestartObject::clear(std::shared_ptr<Parameter> para)
 {
-	for (int j = para->getCoarse(); j <= para->getFine(); j++)
-	{
-		std::vector<real> vec;
-		fs.push_back(vec);
-
-		for (unsigned int i = 0; i < (para->getD3Qxx()*para->getParH(j)->size_Mat_SP); i++)
-		{
-			para->getParH(j)->d0SP.f[0][i] = fs[j][i];
-		}
-	}
+    for (int j = para->getCoarse(); j <= para->getFine(); j++) {
+        fs[j].resize(0);
+    }
+    fs.resize(0);
 }
 //////////////////////////////////////////////////////////////////////////
-void RestartObject::safe(Parameter* para)
+
+void ASCIIRestartObject::serialize_internal(const std::string &filename)
 {
-	if (fs.size() > 0)
-	{
-		clear(para);
-	}
-	for (int j = para->getCoarse(); j <= para->getFine(); j++)
-	{
-		std::vector<real> vec;
-		fs.push_back(vec);
-
-		for (unsigned int i = 0; i < (para->getD3Qxx()*para->getParH(j)->size_Mat_SP); i++)
-		{
-			if (UbMath::isNaN(para->getParH(j)->d0SP.f[0][i]))
-			{
-				fs[j].push_back((real)0.0);
-			}
-			else
-			{
-				fs[j].push_back(para->getParH(j)->d0SP.f[0][i]);
-			}
-		}
-	}
+    std::ofstream stream(filename + ".txt");
+
+    if (!stream) {
+        stream.clear();
+        std::string path = UbSystem::getPathFromString(filename);
+        if (path.size() > 0) {
+            UbSystem::makeDirectory(path);
+            stream.open(filename.c_str());
+        }
+
+        if (!stream)
+            throw UbException(UB_EXARGS, "couldn't open file " + filename);
+    }
+
+    for (std::vector<std::vector<real>>::size_type i = 0; i < fs.size(); i++) {
+        for (std::vector<real>::size_type j = 0; j < fs[i].size(); j++) {
+            stream << fs[i][j] << " ";
+        }
+        stream << "\n";
+    }
+
+    stream.close();
 }
-//////////////////////////////////////////////////////////////////////////
-void RestartObject::clear(Parameter* para)
+
+void ASCIIRestartObject::deserialize_internal(const std::string &filename)
+{
+    std::ifstream stream(filename + ".txt", std::ios_base::in);
+
+    if (!stream.is_open())
+        throw UbException(UB_EXARGS, "couldn't open check point file " + filename);
+
+    std::string line;
+    while (std::getline(stream, line)) {
+        std::vector<real> lineData;
+        std::stringstream lineStream(line);
+
+        real value;
+        while (lineStream >> value) {
+            lineData.push_back(value);
+        }
+        fs.push_back(lineData);
+    }
+
+    stream.close();
+}
+
+void BinaryRestartObject::serialize_internal(const std::string &filename)
 {
-	for (int j = para->getCoarse(); j <= para->getFine(); j++)
-	{
-		fs[j].resize(0);
-	}
-	fs.resize(0);
+    std::ofstream stream(filename + ".bin", std::ios_base::binary);
+
+    if (!stream) {
+        stream.clear();
+        std::string path = UbSystem::getPathFromString(filename);
+        if (path.size() > 0) {
+            UbSystem::makeDirectory(path);
+            stream.open(filename.c_str());
+        }
+
+        if (!stream)
+            throw UbException(UB_EXARGS, "couldn't open file " + filename);
+    }
+
+    // Store size of the outer vector
+    int s1 = fs.size();
+    stream.write(reinterpret_cast<const char *>(&s1), sizeof(s1));
+
+    // Now write each vector one by one
+    for (auto &v : fs) {
+        // Store its size
+        int size = v.size();
+        stream.write(reinterpret_cast<const char *>(&size), sizeof(size));
+
+        // Store its contents
+        stream.write(reinterpret_cast<const char *>(&v[0]), v.size() * sizeof(float));
+    }
+
+    stream.close();
 }
-//////////////////////////////////////////////////////////////////////////
 
+void BinaryRestartObject::deserialize_internal(const std::string &filename)
+{
+    std::ifstream stream(filename + ".bin", std::ios_base::in | std::ifstream::binary);
+
+    if (!stream.is_open())
+        throw UbException(UB_EXARGS, "couldn't open check point file " + filename);
+
+    int size = 0;
+    stream.read(reinterpret_cast<char *>(&size), sizeof(size));
+    fs.resize(size);
+    for (int n = 0; n < size; ++n) {
+        int size2 = 0;
+        stream.read(reinterpret_cast<char *>(&size2), sizeof(size2));
+        real f;
+        for (int k = 0; k < size2; ++k) {
+            stream.read(reinterpret_cast<char *>(&f), sizeof(f));
+            fs[n].push_back(f);
+        }
+    }
+
+    stream.close();
+}
diff --git a/src/gpu/VirtualFluids_GPU/Restart/RestartObject.h b/src/gpu/VirtualFluids_GPU/Restart/RestartObject.h
index 9e919b4b667a2ee302b173abe52473c58fea2cb4..34540ba5036d2127c21eb263b09b96d47c14dc4b 100644
--- a/src/gpu/VirtualFluids_GPU/Restart/RestartObject.h
+++ b/src/gpu/VirtualFluids_GPU/Restart/RestartObject.h
@@ -1,36 +1,44 @@
 #ifndef RestartObject_H
 #define RestartObject_H
 
-#include "LBM/LB.h"
-#include "LBM/D3Q27.h"
-#include "Parameter/Parameter.h"
-#include "basics/utilities/UbSystem.h"
-#include "boost/serialization/serialization.hpp"
-#include "boost/serialization/vector.hpp"
+#include <memory>
+#include <string>
+#include <vector>
+
+#include <basics/Core/DataTypes.h>
+
+class Parameter;
 
 class RestartObject
 {
 public:
-   RestartObject();
-   ~RestartObject();
-   void load(Parameter* para);
-   void safe(Parameter* para);
-   void clear(Parameter* para);
-protected:
+    virtual ~RestartObject() = default;
+
+    void deserialize(const std::string &filename, std::shared_ptr<Parameter> para);
+    void serialize(const std::string &filename, std::shared_ptr<Parameter> para);
+
+    std::vector<std::vector<real>> fs;
+
+    virtual void serialize_internal(const std::string &filename)   = 0;
+    virtual void deserialize_internal(const std::string &filename) = 0;
 
 private:
-	//////////////////////////////////////////////////////////////////////////
-	//Restart
-	friend class boost::serialization::access;
-	template<class Archive>
-	void serialize(Archive & ar, const unsigned int version)
-	{
-		ar & fs;
-	}
-	//////////////////////////////////////////////////////////////////////////
-	std::vector< std::vector<real> > fs;
-	//////////////////////////////////////////////////////////////////////////
+    void clear(std::shared_ptr<Parameter> para);
+};
+
 
+class ASCIIRestartObject : public RestartObject
+{
+private:
+    virtual void serialize_internal(const std::string &filename);
+    virtual void deserialize_internal(const std::string &filename);
+};
+
+class BinaryRestartObject : public RestartObject
+{
+private:
+    virtual void serialize_internal(const std::string &filename);
+    virtual void deserialize_internal(const std::string &filename);
 };
 
 #endif
diff --git a/src/gpu/VirtualFluids_GPU/Restart/RestartObjectTests.cpp b/src/gpu/VirtualFluids_GPU/Restart/RestartObjectTests.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5fa40d64daaa02abcf4815281ccf5349ad7b0f60
--- /dev/null
+++ b/src/gpu/VirtualFluids_GPU/Restart/RestartObjectTests.cpp
@@ -0,0 +1,43 @@
+#include <gmock/gmock.h>
+
+#include "RestartObject.h"
+
+
+TEST(RestartObjectTests, saveAndLoad_ascii)
+{
+    std::shared_ptr<RestartObject> sut = std::make_shared<ASCIIRestartObject>();
+
+    sut->fs = std::vector<std::vector<float>> {
+                { 1,2,3 },
+                { 4,5,6 }
+            };
+
+    std::string name {"test_do_check_point"};
+    sut->serialize_internal(name);
+
+
+    std::shared_ptr<RestartObject> obj_read = std::make_shared<ASCIIRestartObject>();
+    obj_read->deserialize_internal(name);
+
+    EXPECT_THAT(sut->fs, ::testing::ContainerEq(obj_read->fs));
+}
+
+
+TEST(RestartObjectTests, saveAndLoad_binary)
+{
+    std::shared_ptr<RestartObject> sut = std::make_shared<BinaryRestartObject>();
+
+    sut->fs = std::vector<std::vector<float>> {
+                { 1,2,3 },
+                { 4,5,6 }
+            };
+
+    std::string name {"test_do_check_point"};
+    sut->serialize_internal(name);
+
+
+    std::shared_ptr<RestartObject> obj_read = std::make_shared<BinaryRestartObject>();
+    obj_read->deserialize_internal(name);
+
+    EXPECT_THAT(sut->fs, ::testing::ContainerEq(obj_read->fs));
+}
diff --git a/src/gpu/VirtualFluids_GPU/Restart/RestartPostprocessor.cpp b/src/gpu/VirtualFluids_GPU/Restart/RestartPostprocessor.cpp
deleted file mode 100644
index a284230ed07515cf483cae2276336ac9226820e2..0000000000000000000000000000000000000000
--- a/src/gpu/VirtualFluids_GPU/Restart/RestartPostprocessor.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-#include "RestartPostprocessor.h"
-#include <boost/archive/binary_oarchive.hpp>
-#include <boost/archive/binary_iarchive.hpp>
-
-#include <boost/archive/text_oarchive.hpp>
-#include <boost/archive/text_iarchive.hpp>
-
-//#include "BoostSerializationClassExportHelper.h"
-
-RestartPostprocessor::RestartPostprocessor(RestartObject *object, ArchiveType type)
-{
-	archiveType = type;
-	obj = object;
-}
-//////////////////////////////////////////////////////////////////////////
-RestartPostprocessor::~RestartPostprocessor()
-{
-}
-//////////////////////////////////////////////////////////////////////////
-void RestartPostprocessor::doCheckPoint( std::string fname, int step, int myID)
-{
-   std::string filename = fname + "_Restart_" + UbSystem::toString(myID) + "_" +  UbSystem::toString(step);
-
-   if (archiveType == TXT)
-   {
-      saveTxtArchive(filename + ".txt");
-   } 
-   else if(archiveType == BINARY)
-   {
-      saveBinArchive(filename + ".bin");
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-RestartObject* RestartPostprocessor::restart( std::string fname, int step, int myID)
-{
-   std::string filename = fname + "_Restart_" + UbSystem::toString(myID) + "_" +  UbSystem::toString(step);
-
-   if (archiveType == TXT)
-   {
-      loadTxtArchive(filename + ".txt");
-   } 
-   else if(archiveType == BINARY)
-   {
-      loadBinArchive(filename + ".bin");
-   }
-
-   return obj;
-}
-//////////////////////////////////////////////////////////////////////////
-void RestartPostprocessor::saveTxtArchive(std::string filename)
-{
-   std::ofstream file(filename.c_str()); 
-   if(!file)
-   { 
-      file.clear(); 
-      std::string path = UbSystem::getPathFromString(filename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); file.open(filename.c_str());}
-      if(!file) throw UbException(UB_EXARGS,"couldn't open file "+filename);
-   }
-   boost::archive::text_oarchive oa(file);
-   oa.register_type<RestartObject>();
-   oa << obj;
-}
-//////////////////////////////////////////////////////////////////////////
-void RestartPostprocessor::loadTxtArchive( std::string filename )
-{
-   std::ifstream file(filename.c_str()); 
-   //if (!file.is_open()) UB_THROW( UbException(UB_EXARGS,"Can not open check point file \"" + filename + "\""));
-   if (!file.is_open()) throw UbException(UB_EXARGS,"couldn't open check point file "+filename);
-   printf("the check point file is open...");
-   boost::archive::text_iarchive ia(file);
-   printf("boost archive is allocated...");
-   ia.register_type<RestartObject>();
-   printf("register type is set...");
-   ia >> obj; 
-   printf("obj is filled...");
-}
-//////////////////////////////////////////////////////////////////////////
-void RestartPostprocessor::saveBinArchive( std::string filename )
-{
-   //impotent for binary archive add std::ios::binary
-   std::ofstream file(filename.c_str(), std::ios::binary); 
-   if(!file)
-   { 
-      file.clear(); 
-      std::string path = UbSystem::getPathFromString(filename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); file.open(filename.c_str());}
-      if(!file) throw UbException(UB_EXARGS,"couldn't open file "+filename);
-   }
-   boost::archive::binary_oarchive oa(file);
-   oa.register_type<RestartObject>();
-   oa << obj;
-}
-//////////////////////////////////////////////////////////////////////////
-void RestartPostprocessor::loadBinArchive( std::string filename )
-{
-   //impotent for binary archive add std::ios::binary
-   std::ifstream file(filename.c_str(), std::ios::binary); 
-   //if (!file.is_open()) UB_THROW( UbException(UB_EXARGS,"Can not open check point file \"" + filename + "\""));
-   boost::archive::binary_iarchive ia(file);
-   ia.register_type<RestartObject>();
-   ia >> obj;
-}
-
diff --git a/src/gpu/VirtualFluids_GPU/Restart/RestartPostprocessor.h b/src/gpu/VirtualFluids_GPU/Restart/RestartPostprocessor.h
deleted file mode 100644
index 289339e5ef84326ef5f1e5d751b92de4c5851f7e..0000000000000000000000000000000000000000
--- a/src/gpu/VirtualFluids_GPU/Restart/RestartPostprocessor.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef Restarter_H
-#define Restarter_H
-
-#include "LBM/LB.h"
-#include "LBM/D3Q27.h"
-#include "Restart/RestartObject.h"
-#include "basics/utilities/UbSystem.h"
-
-#include <boost/shared_ptr.hpp>
-class RestartPostprocessor;
-typedef boost::shared_ptr<RestartPostprocessor> RestartPostprocessorPtr;
-
-class RestartPostprocessor
-{
-public:
-   enum ArchiveType {TXT, BINARY};
-public:
-   RestartPostprocessor(RestartObject *object, ArchiveType typetype = BINARY);
-   ~RestartPostprocessor();
-   void doCheckPoint( std::string fname, int step, int myID);
-   RestartObject* restart( std::string fname, int step, int myID);
-protected:
-   void saveTxtArchive(std::string filename);
-   void loadTxtArchive(std::string filename);
-   void saveBinArchive(std::string filename);
-   void loadBinArchive(std::string filename);
-private:
-   ArchiveType archiveType;
-   RestartObject *obj;
-};
-
-#endif