diff --git a/bfps/cpp/full_code/NSVE.cpp b/bfps/cpp/full_code/NSVE.cpp
index 0b82a781fb73f850fc39e4386d6dbb4a5e5ef5df..9c40968a66f050c318222690a94b273488e46b61 100644
--- a/bfps/cpp/full_code/NSVE.cpp
+++ b/bfps/cpp/full_code/NSVE.cpp
@@ -36,11 +36,11 @@ int NSVE<rnumber>::initialize(void)
             simname.c_str(),
             nx, ny, nz,
             dkx, dky, dkz,
-            FFTW_MEASURE);
+            DEFAULT_FFTW_FLAG);
     this->tmp_vec_field = new field<rnumber, FFTW, THREE>(
             nx, ny, nz,
             this->comm,
-            FFTW_MEASURE);
+            DEFAULT_FFTW_FLAG);
 
 
     this->fs->checkpoints_per_file = checkpoints_per_file;
diff --git a/bfps/cpp/full_code/code_base.hpp b/bfps/cpp/full_code/code_base.hpp
index 6fc29ff113e227a440b5101b9b9d515eb913e75d..08a234b755b01a8fa53c6c50d30a315070af9a1e 100644
--- a/bfps/cpp/full_code/code_base.hpp
+++ b/bfps/cpp/full_code/code_base.hpp
@@ -41,6 +41,7 @@ class code_base
         MPI_Comm comm;
 
         std::string simname;
+        int iteration;
 
         bool stop_code_now;
 
@@ -91,6 +92,10 @@ class code_base
             this->time0 = this->time1;
             return EXIT_SUCCESS;
         }
+
+        virtual int initialize(void) = 0;
+        virtual int main_loop(void) = 0;
+        virtual int finalize(void) = 0;
 };
 
 #endif//CODE_BASE_HPP
diff --git a/bfps/cpp/full_code/direct_numerical_simulation.hpp b/bfps/cpp/full_code/direct_numerical_simulation.hpp
index 978f91b2e8c7da389368514b5c5011ada5bdfba5..8050bb045b29acf29d655273f7dff310dd10d0fa 100644
--- a/bfps/cpp/full_code/direct_numerical_simulation.hpp
+++ b/bfps/cpp/full_code/direct_numerical_simulation.hpp
@@ -36,7 +36,7 @@
 class direct_numerical_simulation: public code_base
 {
     public:
-        int iteration, checkpoint;
+        int checkpoint;
         int checkpoints_per_file;
         int niter_out;
         int niter_stat;
diff --git a/bfps/cpp/full_code/native_binary_to_hdf5.cpp b/bfps/cpp/full_code/native_binary_to_hdf5.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ee1b6f9d8f3787c57a77fa8e50ae7965b1d99ef6
--- /dev/null
+++ b/bfps/cpp/full_code/native_binary_to_hdf5.cpp
@@ -0,0 +1,33 @@
+#include <string>
+#include <cmath>
+#include "native_binary_to_hdf5.hpp"
+#include "scope_timer.hpp"
+
+
+template <typename rnumber>
+int native_binary_to_hdf5<rnumber>::initialize(void)
+{
+    this->read_parameters();
+    this->vec_field = new field<rnumber, FFTW, THREE>(
+            nx, ny, nz,
+            this->comm,
+            DEFAULT_FFTW_FLAG);
+    return EXIT_SUCCESS;
+}
+
+template <typename rnumber>
+int native_binary_to_hdf5<rnumber>::work_on_current_iteration(void)
+{
+    return EXIT_SUCCESS;
+}
+
+template <typename rnumber>
+int native_binary_to_hdf5<rnumber>::finalize(void)
+{
+    delete this->vec_field;
+    return EXIT_SUCCESS;
+}
+
+template class native_binary_to_hdf5<float>;
+template class native_binary_to_hdf5<double>;
+
diff --git a/bfps/cpp/full_code/native_binary_to_hdf5.hpp b/bfps/cpp/full_code/native_binary_to_hdf5.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..2235e4fca2644e3b49ab979005d007e6a3f4f45d
--- /dev/null
+++ b/bfps/cpp/full_code/native_binary_to_hdf5.hpp
@@ -0,0 +1,60 @@
+/**********************************************************************
+*                                                                     *
+*  Copyright 2017 Max Planck Institute                                *
+*                 for Dynamics and Self-Organization                  *
+*                                                                     *
+*  This file is part of bfps.                                         *
+*                                                                     *
+*  bfps is free software: you can redistribute it and/or modify       *
+*  it under the terms of the GNU General Public License as published  *
+*  by the Free Software Foundation, either version 3 of the License,  *
+*  or (at your option) any later version.                             *
+*                                                                     *
+*  bfps is distributed in the hope that it will be useful,            *
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of     *
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the      *
+*  GNU General Public License for more details.                       *
+*                                                                     *
+*  You should have received a copy of the GNU General Public License  *
+*  along with bfps.  If not, see <http://www.gnu.org/licenses/>       *
+*                                                                     *
+* Contact: Cristian.Lalescu@ds.mpg.de                                 *
+*                                                                     *
+**********************************************************************/
+
+
+
+#ifndef NATIVE_BINARY_TO_HDF5_HPP
+#define NATIVE_BINARY_TO_HDF5_HPP
+
+#include <cstdlib>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <vector>
+#include "base.hpp"
+#include "field.hpp"
+#include "full_code/postprocess.hpp"
+
+template <typename rnumber>
+class native_binary_to_hdf5: public postprocess
+{
+    public:
+
+        field<rnumber, FFTW, THREE> *vec_field;
+
+        native_binary_to_hdf5(
+                const MPI_Comm COMMUNICATOR,
+                const std::string &simulation_name):
+            postprocess(
+                    COMMUNICATOR,
+                    simulation_name){}
+        virtual ~native_binary_to_hdf5(){}
+
+        int initialize(void);
+        int work_on_current_iteration(void);
+        int finalize(void);
+        virtual int read_parameters(void);
+};
+
+#endif//NATIVE_BINARY_TO_HDF5_HPP
+
diff --git a/bfps/cpp/full_code/postprocess.cpp b/bfps/cpp/full_code/postprocess.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3c6eed59921afa17c3b7c4fa048df41f42eef350
--- /dev/null
+++ b/bfps/cpp/full_code/postprocess.cpp
@@ -0,0 +1,28 @@
+#include <cstdlib>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include "scope_timer.hpp"
+#include "hdf5_tools.hpp"
+#include "full_code/postprocess.hpp"
+
+
+int postprocess::main_loop(void)
+{
+    this->start_simple_timer();
+    for (unsigned int iteration_counter = 0;
+         iteration_counter < iteration_list.size();
+         iteration_counter++)
+    {
+        this->iteration = iteration_list[iteration_counter];
+    #ifdef USE_TIMINGOUTPUT
+        const std::string loopLabel = ("postprocess::main_loop-" +
+                                       std::to_string(this->iteration));
+        TIMEZONE(loopLabel.c_str());
+    #endif
+        this->work_on_current_iteration();
+        this->print_simple_timer(
+                "iteration " + std::to_string(this->iteration));
+    }
+    return EXIT_SUCCESS;
+}
+
diff --git a/bfps/cpp/full_code/postprocess.hpp b/bfps/cpp/full_code/postprocess.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..5d3e578d7dad0975fe47848e1f6224442a219b80
--- /dev/null
+++ b/bfps/cpp/full_code/postprocess.hpp
@@ -0,0 +1,59 @@
+/**********************************************************************
+*                                                                     *
+*  Copyright 2017 Max Planck Institute                                *
+*                 for Dynamics and Self-Organization                  *
+*                                                                     *
+*  This file is part of bfps.                                         *
+*                                                                     *
+*  bfps is free software: you can redistribute it and/or modify       *
+*  it under the terms of the GNU General Public License as published  *
+*  by the Free Software Foundation, either version 3 of the License,  *
+*  or (at your option) any later version.                             *
+*                                                                     *
+*  bfps is distributed in the hope that it will be useful,            *
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of     *
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the      *
+*  GNU General Public License for more details.                       *
+*                                                                     *
+*  You should have received a copy of the GNU General Public License  *
+*  along with bfps.  If not, see <http://www.gnu.org/licenses/>       *
+*                                                                     *
+* Contact: Cristian.Lalescu@ds.mpg.de                                 *
+*                                                                     *
+**********************************************************************/
+
+
+
+#ifndef POSTPROCESS_HPP
+#define POSTPROCESS_HPP
+
+#include <cstdlib>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <vector>
+#include "base.hpp"
+#include "full_code/code_base.hpp"
+
+class postprocess: public code_base
+{
+    public:
+        std::vector<int> iteration_list;
+        hid_t stat_file;
+
+        postprocess(
+                const MPI_Comm COMMUNICATOR,
+                const std::string &simulation_name):
+            code_base(
+                    COMMUNICATOR,
+                    simulation_name){}
+        virtual ~postprocess(){}
+
+        virtual int initialize(void) = 0;
+        virtual int work_on_current_iteration(void) = 0;
+        virtual int finalize(void) = 0;
+
+        int main_loop(void);
+};
+
+#endif//POSTPROCESS_HPP
+
diff --git a/setup.py b/setup.py
index f9574c84c1e40b4feca307793ece98c191a8cedf..cd2dd02aa8e0828c4484bd6155afef87c2911f60 100644
--- a/setup.py
+++ b/setup.py
@@ -89,6 +89,8 @@ print('This is bfps version ' + VERSION)
 
 ### lists of files and MANIFEST.in
 src_file_list = ['hdf5_tools',
+                 'full_code/native_binary_to_hdf5',
+                 'full_code/postprocess',
                  'full_code/code_base',
                  'full_code/direct_numerical_simulation',
                  'full_code/NSVE',