diff --git a/src/gpu/core/Init/PositionReader.cpp b/src/gpu/core/Init/PositionReader.cpp
deleted file mode 100644
index b4efea8bdc266c7e4851444db18ff012f76bae9f..0000000000000000000000000000000000000000
--- a/src/gpu/core/Init/PositionReader.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "PositionReader.h"
-
-#include "Parameter/Parameter.h"
-
-#include <basics/utilities/UbFileInputASCII.h>
-
-using namespace vf::lbm::dir;
-
-//////////////////////////////////////////////////////////////////////////
-void PositionReader::readMeasurePoints( Parameter* para ) 
-{
-    UbFileInputASCII in(para->getmeasurePoints());
-    int numberOfAllNodes = in.readInteger();
-    in.readLine();
-    int tempLevel;
-    MeasurePoints tempMP;
-    //printf("done, init the values...\n");
-    for (int u = 0; u < numberOfAllNodes; u++)
-    {
-        tempMP.name = in.readString();         
-        //printf("done, read the name...\n");
-        tempMP.k = in.readInteger();
-        //printf("done, read k...\n");
-        tempLevel = in.readInteger();
-        //printf("done, read level...\n");
-        in.readLine();
-        //printf("done, read the values...\n");
-        para->getParH(tempLevel)->MP.push_back(tempMP);
-        //printf("done, put it into a vector...\n");
-    }
-}
diff --git a/src/gpu/core/Init/PositionReader.h b/src/gpu/core/Init/PositionReader.h
deleted file mode 100644
index 16c1b02d3dc8d9aae1fb1a51f00caabbfd0b404a..0000000000000000000000000000000000000000
--- a/src/gpu/core/Init/PositionReader.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef POSITION_READER_H
-#define POSITION_READER_H
-
-class Parameter;
-
-class PositionReader
-{
-public:
-   static void readMeasurePoints(Parameter* para);
-};
-
-#endif
\ No newline at end of file
diff --git a/src/gpu/core/Init/ReaderMeasurePoints.cpp b/src/gpu/core/Init/ReaderMeasurePoints.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..59835b1f6ff95de78ac8885e3e30a34626a80350
--- /dev/null
+++ b/src/gpu/core/Init/ReaderMeasurePoints.cpp
@@ -0,0 +1,80 @@
+#include "ReaderMeasurePoints.h"
+
+#include "Parameter/Parameter.h"
+#include "GPU/CudaMemoryManager.h"
+
+#include <basics/utilities/UbFileInputASCII.h>
+
+using namespace vf::lbm::dir;
+
+//////////////////////////////////////////////////////////////////////////
+void ReaderMeasurePoints::readMeasurePoints( Parameter* para ) 
+{
+    UbFileInputASCII in(para->getmeasurePoints());
+    int numberOfAllNodes = in.readInteger();
+    in.readLine();
+    int tempLevel;
+    MeasurePoints tempMP;
+    //printf("done, init the values...\n");
+    for (int u = 0; u < numberOfAllNodes; u++)
+    {
+        tempMP.name = in.readString();         
+        //printf("done, read the name...\n");
+        tempMP.k = in.readInteger();
+        //printf("done, read k...\n");
+        tempLevel = in.readInteger();
+        //printf("done, read level...\n");
+        in.readLine();
+        //printf("done, read the values...\n");
+        para->getParH(tempLevel)->MP.push_back(tempMP);
+        //printf("done, put it into a vector...\n");
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ReaderMeasurePoints::readMeasurePoints(Parameter* para, CudaMemoryManager* cudaMemoryManager)
+{
+    // read measure points from file
+    ReaderMeasurePoints::readMeasurePoints(para);
+    // printf("done, reading the file...\n");
+    // level loop
+    for (int lev = 0; lev <= para->getMaxLevel(); lev++) {
+        // set Memory Size and malloc of the indices and macroscopic values per level
+        para->getParH(lev)->numberOfValuesMP = (unsigned int)para->getParH(lev)->MP.size() *
+                                               (unsigned int)para->getclockCycleForMP() /
+                                               ((unsigned int)para->getTimestepForMP());
+        para->getParD(lev)->numberOfValuesMP = para->getParH(lev)->numberOfValuesMP;
+
+        para->getParH(lev)->numberOfPointskMP = (int)para->getParH(lev)->MP.size();
+        para->getParD(lev)->numberOfPointskMP = para->getParH(lev)->numberOfPointskMP;
+
+        para->getParH(lev)->memSizeIntkMP = sizeof(unsigned int) * (int)para->getParH(lev)->MP.size();
+        para->getParD(lev)->memSizeIntkMP = para->getParH(lev)->memSizeIntkMP;
+
+        para->getParH(lev)->memSizerealkMP = sizeof(real) * para->getParH(lev)->numberOfValuesMP;
+        para->getParD(lev)->memSizerealkMP = para->getParH(lev)->memSizerealkMP;
+
+        printf("Level: %d, numberOfValuesMP: %d, memSizeIntkMP: %d, memSizerealkMP: %d\n", lev,
+               para->getParH(lev)->numberOfValuesMP, para->getParH(lev)->memSizeIntkMP, para->getParD(lev)->memSizerealkMP);
+
+        cudaMemoryManager->cudaAllocMeasurePointsIndex(lev);
+
+        // loop over all measure points per level
+        for (int index = 0; index < (int)para->getParH(lev)->MP.size(); index++) {
+            // set indices
+            para->getParH(lev)->kMP[index] = para->getParH(lev)->MP[index].k;
+        }
+        // loop over all measure points per level times MPClockCycle
+        for (int index = 0; index < (int)para->getParH(lev)->numberOfValuesMP; index++) {
+            // init values
+            para->getParH(lev)->VxMP[index] = (real)0.0;
+            para->getParH(lev)->VyMP[index] = (real)0.0;
+            para->getParH(lev)->VzMP[index] = (real)0.0;
+            para->getParH(lev)->RhoMP[index] = (real)0.0;
+        }
+
+        // copy indices-arrays
+        cudaMemoryManager->cudaCopyMeasurePointsIndex(lev);
+    }
+}
+////////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/core/Init/ReaderMeasurePoints.h b/src/gpu/core/Init/ReaderMeasurePoints.h
new file mode 100644
index 0000000000000000000000000000000000000000..62dd9446c0ad9d0e3b1d1e5c34eb80d53ff8038a
--- /dev/null
+++ b/src/gpu/core/Init/ReaderMeasurePoints.h
@@ -0,0 +1,16 @@
+#ifndef POSITION_READER_H
+#define POSITION_READER_H
+
+class Parameter;
+class CudaMemoryManager;
+
+class ReaderMeasurePoints
+{
+private:
+    static void readMeasurePoints(Parameter* para);
+
+public:
+    static void readMeasurePoints(Parameter* para, CudaMemoryManager* cudaMemoryManager);
+};
+
+#endif
\ No newline at end of file
diff --git a/src/gpu/core/Init/VfReader.cpp b/src/gpu/core/Init/VfReader.cpp
deleted file mode 100644
index 1c15e8cda2d5906d7c7706a65f729db67f4ee239..0000000000000000000000000000000000000000
--- a/src/gpu/core/Init/VfReader.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "Init/VfReader.h"
-
-#include "Parameter/Parameter.h"
-#include "Init/PositionReader.h"
-#include "GPU/CudaMemoryManager.h"
-
-////////////////////////////////////////////////////////////////////////////////
-void readMeasurePoints(Parameter* para, CudaMemoryManager* cudaMemoryManager)
-{
-    //read measure points from file
-    PositionReader::readMeasurePoints(para);
-    //printf("done, reading the file...\n");
-    //level loop
-    for (int lev = 0; lev <= para->getMaxLevel(); lev++)
-    {
-        //set Memory Size and malloc of the indices and macroscopic values per level
-        para->getParH(lev)->numberOfValuesMP = (unsigned int)para->getParH(lev)->MP.size()*(unsigned int)para->getclockCycleForMP()/((unsigned int)para->getTimestepForMP());
-        para->getParD(lev)->numberOfValuesMP = para->getParH(lev)->numberOfValuesMP;
-
-        para->getParH(lev)->numberOfPointskMP = (int)para->getParH(lev)->MP.size();
-        para->getParD(lev)->numberOfPointskMP = para->getParH(lev)->numberOfPointskMP;
-
-        para->getParH(lev)->memSizeIntkMP = sizeof(unsigned int)*(int)para->getParH(lev)->MP.size();
-        para->getParD(lev)->memSizeIntkMP = para->getParH(lev)->memSizeIntkMP;
-
-        para->getParH(lev)->memSizerealkMP = sizeof(real)*para->getParH(lev)->numberOfValuesMP;
-        para->getParD(lev)->memSizerealkMP = para->getParH(lev)->memSizerealkMP;        
-        
-        printf("Level: %d, numberOfValuesMP: %d, memSizeIntkMP: %d, memSizerealkMP: %d\n",lev,para->getParH(lev)->numberOfValuesMP,para->getParH(lev)->memSizeIntkMP, para->getParD(lev)->memSizerealkMP);
-
-        cudaMemoryManager->cudaAllocMeasurePointsIndex(lev);
-
-        //loop over all measure points per level 
-        for(int index = 0; index < (int)para->getParH(lev)->MP.size(); index++)
-        {
-            //set indices
-            para->getParH(lev)->kMP[index] = para->getParH(lev)->MP[index].k;
-        }
-        //loop over all measure points per level times MPClockCycle
-        for(int index = 0; index < (int)para->getParH(lev)->numberOfValuesMP; index++)
-        {
-            //init values
-            para->getParH(lev)->VxMP[index]  = (real)0.0;
-            para->getParH(lev)->VyMP[index]  = (real)0.0;
-            para->getParH(lev)->VzMP[index]  = (real)0.0;
-            para->getParH(lev)->RhoMP[index] = (real)0.0;
-        }
-
-        //copy indices-arrays
-        cudaMemoryManager->cudaCopyMeasurePointsIndex(lev);
-    }
-}
-////////////////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-
-
diff --git a/src/gpu/core/Init/VfReader.h b/src/gpu/core/Init/VfReader.h
deleted file mode 100644
index 3583b7f819828942f621023b30cb41921cf2870f..0000000000000000000000000000000000000000
--- a/src/gpu/core/Init/VfReader.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef VF_READER_H
-#define VF_READER_H
-
-
-class CudaMemoryManager;
-class Parameter;
-
-
-void readMeasurePoints(Parameter* para, CudaMemoryManager* cudaMemoryManager);
-
-#endif
diff --git a/src/gpu/core/LBM/Simulation.cpp b/src/gpu/core/LBM/Simulation.cpp
index 3566c26f8849e586bcdadbc6c916f0815b8d54cf..3348cf9d78a7a7d6a7bced115b93ad87325e1dc3 100644
--- a/src/gpu/core/LBM/Simulation.cpp
+++ b/src/gpu/core/LBM/Simulation.cpp
@@ -26,7 +26,7 @@
 #include "StringUtilities/StringUtil.h"
 //////////////////////////////////////////////////////////////////////////
 #include "Init/InitLattice.h"
-#include "Init/VfReader.h"
+#include "Init/ReaderMeasurePoints.h"
 //////////////////////////////////////////////////////////////////////////
 #include "FindQ/FindQ.h"
 #include "FindQ/DefineBCs.h"
@@ -245,7 +245,7 @@ void Simulation::init(GridProvider &gridProvider, BoundaryConditionFactory *bcFa
     //////////////////////////////////////////////////////////////////////////
     if (para->getUseMeasurePoints()) {
         VF_LOG_INFO("read measure points");
-        readMeasurePoints(para.get(), cudaMemoryManager.get());
+        ReaderMeasurePoints::readMeasurePoints(para.get(), cudaMemoryManager.get());
     }
 
     //////////////////////////////////////////////////////////////////////////