diff --git a/CMakeLists.txt b/CMakeLists.txt
index c0d1a206408adb5f2cdbbb74760f84ecce92050e..876318ceded59fd94879c50b75bc4c32ce161a9e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -78,6 +78,13 @@ option(ADIOS_USE_HDF5 "Enable support for the HDF5 engine" OFF)
 # platform supports it.
 set(ADIOS_USE_DataMan ${SHARED_LIBS_SUPPORTED})
 
+include(GenerateADIOSConfig)
+GenerateADIOSConfig(MPI BZip2 ADIOS1 HDF5 DataMan)
+install(
+  FILES ${ADIOS_BINARY_DIR}/adios2/ADIOSConfig.h
+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/adios2
+)
+
 #------------------------------------------------------------------------------#
 # Third party libraries
 #------------------------------------------------------------------------------#
diff --git a/bindings/python/include/ADIOSPy.h b/bindings/python/include/ADIOSPy.h
index f6d6ebb742ce1144a2c93dbf1f2db41ee504392b..b1a009370675a3bcaeee97598cc7da3a83c2f413 100644
--- a/bindings/python/include/ADIOSPy.h
+++ b/bindings/python/include/ADIOSPy.h
@@ -16,17 +16,17 @@
 #include <string>
 
 #ifdef HAVE_BOOSTPYTHON
-#include "boost/python.hpp"
+#include "adios2/boost/python.hpp"
 #endif
 
 #ifdef HAVE_PYBIND11
-#include "pybind11/pybind11.h"
+#include "adios2/pybind11/pybind11.h"
 #endif
 
-#include "ADIOS.h"
-#include "MethodPy.h"
-#include "VariablePy.h"
-#include "adiosPyFunctions.h" //ListToVector, VectorToList
+#include "adios2/ADIOS.h"
+#include "adios2/MethodPy.h"
+#include "adios2/VariablePy.h"
+#include "adios2/adiosPyFunctions.h" //ListToVector, VectorToList
 
 namespace adios
 {
diff --git a/bindings/python/include/EnginePy.h b/bindings/python/include/EnginePy.h
index 29d65cb0042b3d28834d9061fd10b3fa095c63d5..8ecb12679f438613f6d99a6ea3d7e3971fff2e3c 100644
--- a/bindings/python/include/EnginePy.h
+++ b/bindings/python/include/EnginePy.h
@@ -12,19 +12,19 @@
 #define ENGINEPY_H_
 
 #ifdef HAVE_BOOSTPYTHON
-#include "boost/python.hpp"
-#include "boost/python/numpy.hpp"
+#include "adios2/boost/python.hpp"
+#include "adios2/boost/python/numpy.hpp"
 #endif
 
 #ifdef HAVE_PYBIND11
-#include "pybind11/numpy.h"
-#include "pybind11/pybind11.h"
+#include "adios2/pybind11/numpy.h"
+#include "adios2/pybind11/pybind11.h"
 #endif
 
-#include "ADIOSPy.h"
-#include "VariablePy.h"
-#include "adiosPyFunctions.h"
-#include "core/Engine.h"
+#include "adios2/ADIOSPy.h"
+#include "adios2/VariablePy.h"
+#include "adios2/adiosPyFunctions.h"
+#include "adios2/core/Engine.h"
 
 namespace adios
 {
diff --git a/bindings/python/include/MethodPy.h b/bindings/python/include/MethodPy.h
index 5bdb9a3aa082aeccd2c5d254e0036e36e981066d..3b012f566dce3d9fb7f3fe49181d7ea6becebb4a 100644
--- a/bindings/python/include/MethodPy.h
+++ b/bindings/python/include/MethodPy.h
@@ -12,15 +12,15 @@
 #define METHODPY_H_
 
 #ifdef HAVE_BOOSTPYTHON
-#include "boost/python.hpp"
+#include "adios2/boost/python.hpp"
 #endif
 
 #ifdef HAVE_PYBIND11
-#include "pybind11/cast.h"
-#include "pybind11/pybind11.h"
+#include "adios2/pybind11/cast.h"
+#include "adios2/pybind11/pybind11.h"
 #endif
 
-#include "core/Method.h"
+#include "adios2/core/Method.h"
 
 namespace adios
 {
diff --git a/bindings/python/include/VariablePy.h b/bindings/python/include/VariablePy.h
index 91b71be593dac143c5505111ac525aa4e2f5cc69..86143dca501057bd94125563fdda61682e8cf8a1 100644
--- a/bindings/python/include/VariablePy.h
+++ b/bindings/python/include/VariablePy.h
@@ -11,8 +11,8 @@
 #ifndef VARIABLEPY_H_
 #define VARIABLEPY_H_
 
-#include "adiosPyFunctions.h"
-#include "core/Variable.h"
+#include "adios2/adiosPyFunctions.h"
+#include "adios2/core/Variable.h"
 
 namespace adios
 {
diff --git a/bindings/python/include/adiosPyFunctions.h b/bindings/python/include/adiosPyFunctions.h
index b47e02d7b4e1c8b656b22a6b4f21a993c0dc0098..4751fe804bb3b61d0e50a6e9fdcaef1c045acaff 100644
--- a/bindings/python/include/adiosPyFunctions.h
+++ b/bindings/python/include/adiosPyFunctions.h
@@ -16,13 +16,13 @@
 #include <vector>
 
 #ifdef HAVE_BOOSTPYTHON
-#include "boost/python.hpp"
-#include "boost/python/numpy.hpp"
+#include "adios2/boost/python.hpp"
+#include "adios2/boost/python/numpy.hpp"
 #endif
 
 #ifdef HAVE_PYBIND11
-#include "pybind11/numpy.h"
-#include "pybind11/pybind11.h"
+#include "adios2/pybind11/numpy.h"
+#include "adios2/pybind11/pybind11.h"
 #endif
 
 namespace adios
diff --git a/bindings/python/src/ADIOSPy.cpp b/bindings/python/src/ADIOSPy.cpp
index 6e45ce3970e59404c5b979b20418cd2f71e50141..9f8a6ac8392eeacd4ba78ee87046462e41586d0b 100644
--- a/bindings/python/src/ADIOSPy.cpp
+++ b/bindings/python/src/ADIOSPy.cpp
@@ -12,8 +12,8 @@
 
 #include <mpi4py/mpi4py.h>
 
-#include "ADIOSPy.h"
-#include "EnginePy.h"
+#include "adios2/ADIOSPy.h"
+#include "adios2/EnginePy.h"
 
 namespace adios
 {
diff --git a/bindings/python/src/EnginePy.cpp b/bindings/python/src/EnginePy.cpp
index 20826731f42d8916a8be02d01eadd123df6005dd..91310f2a7d2af6086e969a289331e5fff62b619f 100644
--- a/bindings/python/src/EnginePy.cpp
+++ b/bindings/python/src/EnginePy.cpp
@@ -10,9 +10,9 @@
 
 #include <string>
 
-#include "EnginePy.h"
+#include "adios2/EnginePy.h"
 
-#include "adiosPyFunctions.h"
+#include "adios2/adiosPyFunctions.h"
 
 namespace adios
 {
diff --git a/bindings/python/src/MethodPy.cpp b/bindings/python/src/MethodPy.cpp
index 937df58fb72a55456b0f65b6e0be0c0820994793..6545ca36360a3d8e530a24199193495b74288123 100644
--- a/bindings/python/src/MethodPy.cpp
+++ b/bindings/python/src/MethodPy.cpp
@@ -10,8 +10,8 @@
 
 #include <iostream>
 
-#include "MethodPy.h"
-#include "adiosPyFunctions.h"
+#include "adios2/MethodPy.h"
+#include "adios2/adiosPyFunctions.h"
 
 namespace adios
 {
diff --git a/bindings/python/src/VariablePy.cpp b/bindings/python/src/VariablePy.cpp
index 09d92899e844848a723284f2900b5c6f48ad7076..e7dc4034d9f4c4a8e268b2e9840c225e05ac923a 100644
--- a/bindings/python/src/VariablePy.cpp
+++ b/bindings/python/src/VariablePy.cpp
@@ -8,7 +8,7 @@
  *      Author: wfg
  */
 
-#include "VariablePy.h"
+#include "adios2/VariablePy.h"
 
 namespace adios
 {
diff --git a/bindings/python/src/adiosPyFunctions.cpp b/bindings/python/src/adiosPyFunctions.cpp
index 92d18b4c0dfe0fe37e959fb4eccafc10632f869f..f9396e05b7117e6226bf934a8357e47afcc9c97f 100644
--- a/bindings/python/src/adiosPyFunctions.cpp
+++ b/bindings/python/src/adiosPyFunctions.cpp
@@ -9,7 +9,7 @@
  */
 #include <iostream>
 
-#include "adiosPyFunctions.h"
+#include "adios2/adiosPyFunctions.h"
 
 namespace adios
 {
diff --git a/bindings/python/src/glueBoostPython.cpp b/bindings/python/src/glueBoostPython.cpp
index 1718700b47dbcfa66a29524b7a437a6aae3eedb4..a1e2988b048eb372d7e32504a7f3d1ea47218fcb 100644
--- a/bindings/python/src/glueBoostPython.cpp
+++ b/bindings/python/src/glueBoostPython.cpp
@@ -10,14 +10,14 @@
 
 #include <mpi4py/mpi4py.h>
 
-#include "boost/python.hpp"
-#include "boost/python/numpy.hpp"
-#include "boost/python/raw_function.hpp"
-#include "boost/python/suite/indexing/vector_indexing_suite.hpp"
+#include "adios2/boost/python.hpp"
+#include "adios2/boost/python/numpy.hpp"
+#include "adios2/boost/python/raw_function.hpp"
+#include "adios2/boost/python/suite/indexing/vector_indexing_suite.hpp"
 
-#include "ADIOSPy.h"
-#include "EnginePy.h"
-#include "adiosPyFunctions.h"
+#include "adios2/ADIOSPy.h"
+#include "adios2/EnginePy.h"
+#include "adios2/adiosPyFunctions.h"
 
 namespace py = boost::python;
 namespace np = boost::python::numpy;
diff --git a/bindings/python/src/gluePyBind11.cpp b/bindings/python/src/gluePyBind11.cpp
index dd76c295c061c1b7ae81d776612de46d8412b821..15adfd9671af4773f68fe90b74a45c9dcea80f1d 100644
--- a/bindings/python/src/gluePyBind11.cpp
+++ b/bindings/python/src/gluePyBind11.cpp
@@ -12,10 +12,10 @@
 
 #include <mpi4py/mpi4py.h>
 
-#include "pybind11/pybind11.h"
+#include "adios2/pybind11/pybind11.h"
 
-#include "ADIOSPy.h"
-#include "EnginePy.h"
+#include "adios2/ADIOSPy.h"
+#include "adios2/EnginePy.h"
 
 namespace py = pybind11;
 
diff --git a/cmake/GenerateADIOSConfig.cmake b/cmake/GenerateADIOSConfig.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..914e235ec9404381c42894d0ae5727bd6ccae5ae
--- /dev/null
+++ b/cmake/GenerateADIOSConfig.cmake
@@ -0,0 +1,48 @@
+#------------------------------------------------------------------------------#
+# Distributed under the OSI-approved Apache License, Version 2.0.  See
+# accompanying file Copyright.txt for details.
+#------------------------------------------------------------------------------#
+
+function(GenerateADIOSConfig)
+  configure_file(
+    ${ADIOS_SOURCE_DIR}/source/adios2/ADIOSConfig.h.in
+    ${ADIOS_BINARY_DIR}/adios2/ADIOSConfig.h
+  )
+
+  foreach(L IN ITEMS C CXX Fortran)
+    if(NOT CMAKE_${L}_COMPILER)
+      continue()
+    endif()
+    file(APPEND ${ADIOS_BINARY_DIR}/adios2/ADIOSConfig.h
+      " *   ${L}: ${CMAKE_${L}_COMPILER}\n"
+    )
+    if(CMAKE_${L}_COMPILER_WRAPPER)
+      file(APPEND ${ADIOS_BINARY_DIR}/adios2/ADIOSConfig.h
+        " *    Wrapper: ${CMAKE_${L}_COMPILER_WRAPPER}\n"
+      )
+    endif()
+    file(APPEND ${ADIOS_BINARY_DIR}/adios2/ADIOSConfig.h
+      " *    Id: ${CMAKE_${L}_COMPILER_ID} ${CMAKE_${L}_COMPILER_VERSION}\n"
+    )
+  endforeach()
+  file(APPEND ${ADIOS_BINARY_DIR}/adios2/ADIOSConfig.h " */\n")
+
+  foreach(OPT IN LISTS ARGN)
+    string(TOUPPER ${OPT} OPT_UPPER)
+    file(APPEND ${ADIOS_BINARY_DIR}/adios2/ADIOSConfig.h
+      "\n/* CMake Option: ADIOS_USE_${OPT}=${ADIOS_USE_${OPT}} */\n"
+    )
+    if(ADIOS_USE_${OPT})
+      file(APPEND ${ADIOS_BINARY_DIR}/adios2/ADIOSConfig.h
+        "#define ADIOS2_HAVE_${OPT_UPPER} 1\n"
+      )
+    else()
+      file(APPEND ${ADIOS_BINARY_DIR}/adios2/ADIOSConfig.h
+        "#undef ADIOS2_HAVE_${OPT_UPPER}\n"
+      )
+    endif()
+  endforeach()
+  file(APPEND ${ADIOS_BINARY_DIR}/adios2/ADIOSConfig.h
+    "\n#endif /* ADIOSCONFIG_H_ */\n"
+  )
+endfunction()
diff --git a/doc/API_design/API_example_use.cpp b/doc/API_design/API_example_use.cpp
index 701bb8994bf973330fb61381b2d2d5fa84741563..bc1c00fc820732729e2d4fa4ffc0008fd02f2bff 100644
--- a/doc/API_design/API_example_use.cpp
+++ b/doc/API_design/API_example_use.cpp
@@ -2,7 +2,7 @@
  * of the ideas */
 #include <mpi.h>
 
-#include "ADIOS.h"
+#include "adios2/ADIOS.h"
 
 void cb_AsyncWriteAdvanceCompleted(std::shared_ptr<adios::Engine> writer)
 {
diff --git a/examples/globalArray/globalArrayNoXML.cpp b/examples/globalArray/globalArrayNoXML.cpp
index 64f33e42dce0cf2e0b66427b17d6abf7661477d0..aa4a3d5c652118830efb50f840f9ef4178aad773 100644
--- a/examples/globalArray/globalArrayNoXML.cpp
+++ b/examples/globalArray/globalArrayNoXML.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <vector>
 
-#include "../../include/ADIOS.h"
+#include "adios2/../../include/ADIOS.h"
 
 int main(int argc, char *argv[])
 {
diff --git a/examples/globalArray/globalArrayXML.cpp b/examples/globalArray/globalArrayXML.cpp
index c25d046e32cb1fcef4a77c8049d3ebef6444108b..9ab2027674e73ec31d8a5a1320fbd889f9317b62 100644
--- a/examples/globalArray/globalArrayXML.cpp
+++ b/examples/globalArray/globalArrayXML.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <vector>
 
-#include "../../include/ADIOS.h"
+#include "adios2/../../include/ADIOS.h"
 
 int main(int argc, char *argv[])
 {
diff --git a/examples/globalArray/globalArrayZeroCopy.cpp b/examples/globalArray/globalArrayZeroCopy.cpp
index a85b5dc56e77f55430e8c21920248cf196c22a2f..7b7506eb974f34b1fb41fa9ef66d2f4065667652 100644
--- a/examples/globalArray/globalArrayZeroCopy.cpp
+++ b/examples/globalArray/globalArrayZeroCopy.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <vector>
 
-#include "../../include/ADIOS.h"
+#include "adios2/../../include/ADIOS.h"
 
 int main(int argc, char *argv[])
 {
diff --git a/examples/heatTransfer/read/PrintData.cpp b/examples/heatTransfer/read/PrintData.cpp
index 030fa561f1cc1a6e3dc62b24d8cf45f98583bfcd..ef84e6a40a69e1ad1c37514c69a0843093055e06 100644
--- a/examples/heatTransfer/read/PrintData.cpp
+++ b/examples/heatTransfer/read/PrintData.cpp
@@ -8,12 +8,13 @@
  *      Author: Norbert Podhorszki
  */
 
-#include "PrintData.h"
 #include <fstream>
 #include <iomanip>
 #include <iostream>
 #include <string>
 
+#include "PrintData.h"
+
 void printData(double *xy, uint64_t *size, uint64_t *offset, int rank,
                int steps)
 {
diff --git a/examples/heatTransfer/read/heatRead_adios1.cpp b/examples/heatTransfer/read/heatRead_adios1.cpp
index bcedac6d5a84b700b9e7045eee1b222146b29341..90e870e8095d5208da0cd4a7f48cae26c40c17ac 100644
--- a/examples/heatTransfer/read/heatRead_adios1.cpp
+++ b/examples/heatTransfer/read/heatRead_adios1.cpp
@@ -1,8 +1,5 @@
-
-#include <mpi.h>
-
-#include "adios_read.h"
 #include <cstdint>
+
 #include <iomanip>
 #include <iostream>
 #include <math.h>
@@ -10,6 +7,9 @@
 #include <stdexcept>
 #include <string>
 
+#include <adios_read.h>
+#include <mpi.h>
+
 #include "PrintData.h"
 
 int main(int argc, char *argv[])
diff --git a/examples/heatTransfer/write/CMakeLists.txt b/examples/heatTransfer/write/CMakeLists.txt
index fb0b9f029cec18bc8b2e020d518254f37965f036..89373e645092a77f51269358b37e47dd9a538259 100644
--- a/examples/heatTransfer/write/CMakeLists.txt
+++ b/examples/heatTransfer/write/CMakeLists.txt
@@ -34,4 +34,22 @@ if(ADIOS_USE_MPI)
       adios1::adios ${MPI_C_LIBRARIES}
     )
   endif()
+
+  if(ADIOS_USE_HDF5)
+    find_package(HDF5 REQUIRED)
+    find_package(MPI COMPONENTS C REQUIRED)
+
+    add_executable(heatTransfer_write_hdf5
+      main.cpp
+      HeatTransfer.cpp
+      Settings.cpp
+      IO_hdf5_a.cpp
+    )
+    target_include_directories(heatTransfer_write_hdf5
+      PRIVATE ${MPI_C_INCLUDE_PATH} ${HDF5_INCLUDE_DIRS}
+    )
+    target_link_libraries(heatTransfer_write_hdf5
+      ${MPI_C_LIBRARIES} ${HDF5_C_LIBRARIES}
+    )
+  endif()
 endif()
diff --git a/examples/heatTransfer/write/IO_adios1.cpp b/examples/heatTransfer/write/IO_adios1.cpp
index 8bc8753c264d3562eb792e7ba39184ed349e957b..898691a1d9d945cebeba5149fede4eed512cb05e 100644
--- a/examples/heatTransfer/write/IO_adios1.cpp
+++ b/examples/heatTransfer/write/IO_adios1.cpp
@@ -8,12 +8,13 @@
  *      Author: Norbert Podhorszki
  */
 
+#include "IO.h"
+
 #include <iomanip>
 #include <iostream>
 #include <string>
 
-#include "IO.h"
-#include "adios.h"
+#include <adios.h>
 
 static int64_t group;
 static int rank_saved;
diff --git a/examples/heatTransfer/write/IO_adios2.cpp b/examples/heatTransfer/write/IO_adios2.cpp
index ee3e1b0d8a42314e218c36a307a33498eb902d47..c16c4000d1b08e1abb344b3f1ab7f764f7e37042 100644
--- a/examples/heatTransfer/write/IO_adios2.cpp
+++ b/examples/heatTransfer/write/IO_adios2.cpp
@@ -9,10 +9,11 @@
  */
 
 #include "IO.h"
-#include <adios2.h>
 
 #include <string>
 
+#include <adios2.h>
+
 static int rank_saved;
 adios::ADIOS *ad = nullptr;
 std::shared_ptr<adios::Engine> bpWriter;
diff --git a/examples/heatTransfer/write/IO_ascii.cpp b/examples/heatTransfer/write/IO_ascii.cpp
index 5f16aa05f9ed1ac75892d903ec7af0fe794e64db..0cce79fbb04f78bbca74819a6ffe5231e2b2dda1 100644
--- a/examples/heatTransfer/write/IO_ascii.cpp
+++ b/examples/heatTransfer/write/IO_ascii.cpp
@@ -8,12 +8,12 @@
  *      Author: Norbert Podhorszki
  */
 
+#include "IO.h"
+
 #include <fstream>
 #include <iomanip>
 #include <iostream>
 
-#include "IO.h"
-
 static std::ofstream of;
 static std::streambuf *buf;
 
diff --git a/examples/heatTransfer/write/IO_hdf5_a.cpp b/examples/heatTransfer/write/IO_hdf5_a.cpp
index c0514b803dff617f24d732f8dbcae60a50f6dd7c..1100fbeb80ed0490ec6920430446bee65f70b3bf 100644
--- a/examples/heatTransfer/write/IO_hdf5_a.cpp
+++ b/examples/heatTransfer/write/IO_hdf5_a.cpp
@@ -11,13 +11,14 @@
  *      Author: Norbert Podhorszki
  */
 
+#include "IO.h"
+
 #include <fstream>
 #include <iomanip>
 #include <iostream>
 #include <string>
 
-#include "IO.h"
-#include "hdf5.h"
+#include <hdf5.h>
 
 IO::IO(const Settings &s, MPI_Comm comm) : m_outputfilename{s.outputfile} {}
 
diff --git a/examples/heatTransfer/write/Settings.cpp b/examples/heatTransfer/write/Settings.cpp
index 4922afd5fdf640d258c110a8b1f3adc38ef613f0..bb473192c84136344b58b5471e6f442530bb773a 100644
--- a/examples/heatTransfer/write/Settings.cpp
+++ b/examples/heatTransfer/write/Settings.cpp
@@ -8,12 +8,13 @@
  *      Author: Norbert Podhorszki
  */
 
-#include <cstdlib>
+#include "Settings.h"
+
 #include <errno.h>
 
-#include <stdexcept>
+#include <cstdlib>
 
-#include "Settings.h"
+#include <stdexcept>
 
 static unsigned int convertToUint(std::string varName, char *arg)
 {
diff --git a/examples/solidfluid/solidfluid_read.cpp b/examples/solidfluid/solidfluid_read.cpp
index 028590601b9cdefaae4eeb6ebd37206726d70357..f451ff12d76a37317ebca73477997943b8c22247 100644
--- a/examples/solidfluid/solidfluid_read.cpp
+++ b/examples/solidfluid/solidfluid_read.cpp
@@ -15,7 +15,7 @@
 #include <string>
 #include <vector>
 
-#include "ADIOS_OOP.h"
+#include "adios2/ADIOS_OOP.h"
 
 struct MYDATA
 {
diff --git a/examples/xmlParser/xmlParser.cpp b/examples/xmlParser/xmlParser.cpp
index 98624de22bb771c31a2b9a5de2b9a62fb17ace88..e19295e5dc59196895a40b4ff57900c079aa24cb 100644
--- a/examples/xmlParser/xmlParser.cpp
+++ b/examples/xmlParser/xmlParser.cpp
@@ -12,12 +12,12 @@
 #include <stdexcept>
 #include <string>
 
-#include "../../include/ADIOS.h"
+#include "adios2/../../include/ADIOS.h"
 
 #ifdef HAVE_MPI
 #include <mpi.h>
 #else
-#include "../../include/mpidummy.h"
+#include "adios2/../../include/mpidummy.h"
 using namespace adios;
 #endif
 
diff --git a/source/ADIOS_MPI.h b/source/ADIOS_MPI.h
deleted file mode 100644
index 1a310f04f7c3208949774a2e6994aa1b5076295f..0000000000000000000000000000000000000000
--- a/source/ADIOS_MPI.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Distributed under the OSI-approved Apache License, Version 2.0.  See
- * accompanying file Copyright.txt for details.
- */
-
-#ifndef ADIOS_MPI_H_
-#define ADIOS_MPI_H_
-
-#ifdef ADIOS_HAVE_MPI
-#define OMPI_SKIP_MPICXX 1 // workaround for OpenMPI forcing C++ bindings
-#include <mpi.h>
-#undef OMPI_SKIP_MPICXX
-#else
-#include "mpidummy.h"
-#endif
-
-#endif /* ADIOS_MPI_H_ */
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index e138a98cdd25722664c415c9868638843fee8cf4..45126c37b91ed42af89c0a846b04cc6cbe3a55ec 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -3,136 +3,13 @@
 # accompanying file Copyright.txt for details.
 #------------------------------------------------------------------------------#
   
-add_library(adios2
-  ADIOS.cpp ADIOS.tcc
-  
-  capsule/heap/STLVector.cpp
-  capsule/shmem/ShmSystemV.cpp
-  
-  core/Capsule.cpp
-  core/Engine.cpp
-  core/Method.cpp
-  core/Support.cpp
-  core/Timer.cpp
-  core/Transform.cpp
-  core/Transport.cpp
-  core/adiosFunctions.cpp
-  
-  engine/bp/BPFileReader.cpp
-  engine/bp/BPFileWriter.cpp
-
-  utilities/format/bp1/BP1Base.cpp
-  utilities/format/bp1/BP1Aggregator.cpp
-  utilities/format/bp1/BP1Writer.cpp
-    
-  transport/file/FStream.cpp
-  transport/file/FileDescriptor.cpp
-  transport/file/FilePointer.cpp
-    
-  utilities/format/bp1/BP1Base.cpp
-  utilities/format/bp1/BP1Aggregator.cpp
-  utilities/format/bp1/BP1Writer.cpp
-  utilities/format/bp1/BP1Writer.tcc
-)
-target_include_directories(adios2
-  PUBLIC
-    $<BUILD_INTERFACE:${ADIOS_BINARY_DIR}>
-    $<INSTALL_INTERFACE:include>
-  PRIVATE ${ADIOS_SOURCE_DIR}/source
-)
-  
 if(ADIOS_USE_DataMan)
-  target_sources(adios2 PRIVATE
-    engine/dataman/DataManReader.cpp
-    engine/dataman/DataManWriter.cpp
-    transport/wan/MdtmMan.cpp
-    utilities/realtime/dataman/DataManBase.cpp
-    utilities/realtime/dataman/DataMan.cpp
-  )
-  target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_DATAMAN)
-  target_link_libraries(adios2 PRIVATE ${CMAKE_DL_LIBS})
-endif()
-  
-if(ADIOS_USE_BZip2)
-  find_package(BZip2 REQUIRED)
-  target_sources(adios2 PRIVATE transform/BZip2.cpp)
-  target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_BZIP2)
-  target_link_libraries(adios2 PRIVATE BZip2::BZip2)
-endif()
-
-if(ADIOS_USE_MPI)
-  find_package(MPI COMPONENTS C REQUIRED)
-  target_include_directories(adios2 PUBLIC ${MPI_C_INCLUDE_PATH})
-  target_compile_definitions(adios2 PUBLIC ADIOS_HAVE_MPI)
-  target_link_libraries(adios2 PUBLIC ${MPI_C_LIBRARIES})
-else()
-  target_sources(adios2 PRIVATE mpidummy.cpp)
-endif()
-
-if(ADIOS_USE_ADIOS1)
-  if(ADIOS_USE_MPI)
-    find_package(ADIOS1 REQUIRED)
-  else()
-    find_package(ADIOS1 COMPONENTS sequential REQUIRED)
-  endif()
-
-  target_sources(adios2 PRIVATE
-    engine/adios1/ADIOS1Reader.cpp
-    engine/adios1/ADIOS1Writer.cpp
-  )
-  target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_ADIOS1)
-  target_link_libraries(adios2 PRIVATE adios1::adios)
-endif()
-
-if(ADIOS_USE_HDF5)
-  find_package(HDF5 REQUIRED)
-  if(ADIOS_USE_MPI AND (NOT HDF5_IS_PARALLEL))
-    message(FATAL_ERROR
-      "A sequential version of HDF5 was detected but the parallel version "
-      "of ADIOS is being built, which requires a parallel HDF5."
-    )
-  elseif((NOT ADIOS_USE_MPI) AND HDF5_IS_PARALLEL)
-    message(FATAL_ERROR
-      "A parallel version of HDF5 was detected but the sequential version "
-      "of ADIOS is being built, which requires a sequential HDF5."
-    )
-  endif()
-
-  target_include_directories(adios2 PRIVATE ${HDF5_INCLUDE_DIRS})
-  target_sources(adios2 PRIVATE
-    engine/hdf5/HDF5ReaderP.cpp
-    engine/hdf5/HDF5WriterP.cpp
-  )
-  target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_HDF5)
-  target_link_libraries(adios2 PRIVATE ${HDF5_C_LIBRARIES})
+  add_subdirectory(dataman)
 endif()
 
-# Main header when using the build directory
-set(ADIOS_INCLUDE_DIR "${ADIOS_SOURCE_DIR}/source")
-configure_file(adios2.h.in ${ADIOS_BINARY_DIR}/adios2.h)
+add_subdirectory(adios2)
 
-# Header installation
-set(ADIOS_INCLUDE_DIR "adios2")
-configure_file(adios2.h.in ${ADIOS_BINARY_DIR}/adios2.install.h)
 install(
-  FILES ${ADIOS_BINARY_DIR}/adios2.install.h
+  FILES adios2.h
   DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-  RENAME adios2.h
-)
-install(
-  FILES ADIOS.h ADIOS.inl ADIOSMacros.h ADIOS_MPI.h ADIOSTypes.h mpidummy.h
-  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/adios2
-)
-install(
-  DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/core
-  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/adios2
-  FILES_MATCHING REGEX "[^/]*\.(h|inl)$"
-)
-
-# Library installation
-install(
-  TARGETS adios2 EXPORT adios2
-  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
 )
diff --git a/source/adios2.h b/source/adios2.h
new file mode 100644
index 0000000000000000000000000000000000000000..671ea6242aa9a38d8ac06281667fbcf421f345c3
--- /dev/null
+++ b/source/adios2.h
@@ -0,0 +1,17 @@
+/*
+ * Distributed under the OSI-approved Apache License, Version 2.0.  See
+ * accompanying file Copyright.txt for details.
+ */
+
+#ifndef ADIOS2_H_
+#define ADIOS2_H_
+
+#include "adios2/ADIOSConfig.h"
+
+#include "adios2/ADIOS.h"
+#include "adios2/ADIOSTypes.h"
+#include "adios2/core/Engine.h"
+#include "adios2/core/Method.h"
+#include "adios2/core/Transform.h"
+
+#endif /* ADIOS2_H_ */
diff --git a/source/adios2.h.in b/source/adios2.h.in
deleted file mode 100644
index 6a0a8674b400c0be433c5e219d89998088174b60..0000000000000000000000000000000000000000
--- a/source/adios2.h.in
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Distributed under the OSI-approved Apache License, Version 2.0.  See
- * accompanying file Copyright.txt for details.
- */
-
-#ifndef ADIOS2_H_
-#define ADIOS2_H_
-
-#include "@ADIOS_INCLUDE_DIR@/ADIOS.h"
-#include "@ADIOS_INCLUDE_DIR@/ADIOSTypes.h"
-#include "@ADIOS_INCLUDE_DIR@/core/Method.h"
-#include "@ADIOS_INCLUDE_DIR@/core/Engine.h"
-#include "@ADIOS_INCLUDE_DIR@/core/Transform.h"
-
-#endif /* ADIOS2_H_ */
diff --git a/source/ADIOS.cpp b/source/adios2/ADIOS.cpp
similarity index 94%
rename from source/ADIOS.cpp
rename to source/adios2/ADIOS.cpp
index a6748445d727ba46117cb65f744b232dfdc18541..15676f532bc4be63476049daf0b816bb0ac68b11 100644
--- a/source/ADIOS.cpp
+++ b/source/adios2/ADIOS.cpp
@@ -8,37 +8,33 @@
  *      Author: William F Godoy
  */
 
-/// \cond EXCLUDE_FROM_DOXYGEN
+#include "ADIOS.h"
+#include "ADIOS.tcc"
+
 #include <fstream>
 #include <ios> //std::ios_base::failure
 #include <iostream>
 #include <sstream>
 #include <utility>
-/// \endcond
-
-#include "ADIOS.h"
-#include "ADIOS.tcc"
-#include "ADIOSMacros.h"
-
-#include "core/adiosFunctions.h"
 
-// Engines
-#include "engine/bp/BPFileReader.h"
-#include "engine/bp/BPFileWriter.h"
+#include "adios2/ADIOSMacros.h"
+#include "adios2/core/adiosFunctions.h"
+#include "adios2/engine/bp/BPFileReader.h"
+#include "adios2/engine/bp/BPFileWriter.h"
 
-#ifdef ADIOS_HAVE_DATAMAN // external dependencies
-#include "engine/dataman/DataManReader.h"
-#include "engine/dataman/DataManWriter.h"
+#ifdef ADIOS2_HAVE_DATAMAN // external dependencies
+#include "adios2/engine/dataman/DataManReader.h"
+#include "adios2/engine/dataman/DataManWriter.h"
 #endif
 
-#ifdef ADIOS_HAVE_ADIOS1 // external dependencies
-#include "engine/adios1/ADIOS1Reader.h"
-#include "engine/adios1/ADIOS1Writer.h"
+#ifdef ADIOS2_HAVE_ADIOS1 // external dependencies
+#include "adios2/engine/adios1/ADIOS1Reader.h"
+#include "adios2/engine/adios1/ADIOS1Writer.h"
 #endif
 
-#ifdef ADIOS_HAVE_HDF5 // external dependencies
-#include "engine/hdf5/HDF5ReaderP.h"
-#include "engine/hdf5/HDF5WriterP.h"
+#ifdef ADIOS2_HAVE_HDF5 // external dependencies
+#include "adios2/engine/hdf5/HDF5ReaderP.h"
+#include "adios2/engine/hdf5/HDF5WriterP.h"
 #endif
 
 namespace adios
@@ -154,7 +150,7 @@ std::shared_ptr<Engine> ADIOS::Open(const std::string &name,
     }
     else if (type == "DataManWriter")
     {
-#ifdef ADIOS_HAVE_DATAMAN
+#ifdef ADIOS2_HAVE_DATAMAN
         return std::make_shared<DataManWriter>(*this, name, accessMode, mpiComm,
                                                method);
 #else
@@ -165,7 +161,7 @@ std::shared_ptr<Engine> ADIOS::Open(const std::string &name,
     }
     else if (type == "DataManReader")
     {
-#ifdef ADIOS_HAVE_DATAMAN
+#ifdef ADIOS2_HAVE_DATAMAN
         return std::make_shared<DataManReader>(*this, name, accessMode, mpiComm,
                                                method);
 #else
@@ -176,7 +172,7 @@ std::shared_ptr<Engine> ADIOS::Open(const std::string &name,
     }
     else if (type == "ADIOS1Writer")
     {
-#ifdef ADIOS_HAVE_ADIOS1
+#ifdef ADIOS2_HAVE_ADIOS1
         return std::make_shared<ADIOS1Writer>(*this, name, accessMode, mpiComm,
                                               method);
 #else
@@ -193,7 +189,7 @@ std::shared_ptr<Engine> ADIOS::Open(const std::string &name,
     }
     else if (type == "HDF5Writer") // -junmin
     {
-#ifdef ADIOS_HAVE_HDF5
+#ifdef ADIOS2_HAVE_HDF5
         return std::make_shared<HDF5Writer>(*this, name, accessMode, mpiComm,
                                             method);
 #else
diff --git a/source/ADIOS.h b/source/adios2/ADIOS.h
similarity index 97%
rename from source/ADIOS.h
rename to source/adios2/ADIOS.h
index e6d0b8caaeda0cf8fc37cdd15af87741a6f4de4c..baf5183c570fc1487e21aa95fd9d6df212b461fe 100644
--- a/source/ADIOS.h
+++ b/source/adios2/ADIOS.h
@@ -2,12 +2,13 @@
  * Distributed under the OSI-approved Apache License, Version 2.0.  See
  * accompanying file Copyright.txt for details.
  *
- * ADIOS.\ *
+ * ADIOS.h
  *  Created on: Oct 3, 2016
- *      Author: wfg`123 */
+ *      Author: wfg
+ */
 
-#ifndef ADIOS_H_
-#define ADIOS_H_
+#ifndef ADIOS2_ADIOS_H_
+#define ADIOS2_ADIOS_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <complex>
@@ -19,15 +20,15 @@
 #include <vector>
 /// \endcond
 
-#include "ADIOSMacros.h"
-#include "ADIOS_MPI.h"
-
-#include "ADIOSTypes.h"
-#include "core/Method.h"
-#include "core/Support.h"
-#include "core/Transform.h"
-#include "core/Variable.h"
-#include "core/VariableCompound.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/ADIOSMacros.h"
+#include "adios2/ADIOSTypes.h"
+#include "adios2/ADIOS_MPI.h"
+#include "adios2/core/Method.h"
+#include "adios2/core/Support.h"
+#include "adios2/core/Transform.h"
+#include "adios2/core/Variable.h"
+#include "adios2/core/VariableCompound.h"
 
 namespace adios
 {
@@ -358,6 +359,6 @@ extern template unsigned int ADIOS::GetVariableIndex<void>(const std::string &);
 } // end namespace adios
 
 // Include the inline implementations for the public interface
-#include "ADIOS.inl"
+#include "adios2/ADIOS.inl"
 
-#endif /* ADIOS_H_ */
+#endif /* ADIOS2_ADIOS_H_ */
diff --git a/source/ADIOS.inl b/source/adios2/ADIOS.inl
similarity index 90%
rename from source/ADIOS.inl
rename to source/adios2/ADIOS.inl
index 1efaa8380b55342433a2f8973191afd26d96e996..6be677d6284227512be935e4d043c87d89112817 100644
--- a/source/ADIOS.inl
+++ b/source/adios2/ADIOS.inl
@@ -6,9 +6,9 @@
  *   This contains the template implementations for the ADIOS class
  */
 
-#ifndef ADIOS_INL_
-#define ADIOS_INL_
-#ifndef ADIOS_H_
+#ifndef ADIOS2_ADIOS_INL_
+#define ADIOS2_ADIOS_INL_
+#ifndef ADIOS2_ADIOS_H_
 #error "Inline file should only be included from it's header, never on it's own"
 #endif
 
@@ -32,4 +32,4 @@ VariableCompound &ADIOS::DefineVariableCompound(const std::string &name,
 
 } // end namespace adios
 
-#endif /* ADIOS_INL_ */
+#endif /* ADIOS2_ADIOS_INL_ */
diff --git a/source/ADIOS.tcc b/source/adios2/ADIOS.tcc
similarity index 96%
rename from source/ADIOS.tcc
rename to source/adios2/ADIOS.tcc
index 44d95a9fd26d1edcb9e1061efeee21fa5ec594bf..81af327ac2fc770191c4d1aeab692439b0f550d4 100644
--- a/source/ADIOS.tcc
+++ b/source/adios2/ADIOS.tcc
@@ -6,11 +6,11 @@
  *   This contains the template specializatios for the ADIOS class
  */
 
-#ifndef ADIOS_TCC_
-#define ADIOS_TCC_
+#ifndef ADIOS2_ADIOS_TCC_
+#define ADIOS2_ADIOS_TCC_
 
-#include "ADIOS.h"
-#include "ADIOSMacros.h"
+#include "adios2/ADIOS.h"
+#include "adios2/ADIOSMacros.h"
 
 namespace adios
 {
@@ -155,4 +155,4 @@ Variable<T> &ADIOS::GetVariable(const std::string &name)
 
 } // end namespace adios
 
-#endif // ADIOS_TCC_
+#endif // ADIOS2_ADIOS_TCC_
diff --git a/source/adios2/ADIOSConfig.h.in b/source/adios2/ADIOSConfig.h.in
new file mode 100644
index 0000000000000000000000000000000000000000..90fb88224512276e4446752a9d3853ad5bb39521
--- /dev/null
+++ b/source/adios2/ADIOSConfig.h.in
@@ -0,0 +1,18 @@
+/*
+ * Distributed under the OSI-approved Apache License, Version 2.0.  See
+ * accompanying file Copyright.txt for details.
+ */
+
+#ifndef ADIOSCONFIG_H_
+#define ADIOSCONFIG_H_
+
+/* ADIOS Version Information */
+#define ADIOS2_VERSION_MAJOR @ADIOS_VERSION_MAJOR@
+#define ADIOS2_VERSION_MINOR @ADIOS_VERSION_MINOR@
+#define ADIOS2_VERSION_PATCH @ADIOS_VERSION_PATCH@
+#define ADIOS2_VERSION       @ADIOS_VERSION@
+
+/*
+ * ADIOS Build Information:
+ *
+ * Compiler:
diff --git a/source/ADIOSMacros.h b/source/adios2/ADIOSMacros.h
similarity index 97%
rename from source/ADIOSMacros.h
rename to source/adios2/ADIOSMacros.h
index 06dd9cd3b4167a21a2b0f73de1a61bebe45ab5ed..0a15f131de7c3c715807482830179a9692eac3ed 100644
--- a/source/ADIOSMacros.h
+++ b/source/adios2/ADIOSMacros.h
@@ -5,8 +5,8 @@
  * ADIOSMacros.h
  *   This contains a set of helper macros used internally
  */
-#ifndef ADIOSMACROS_H
-#define ADIOSMACROS_H
+#ifndef ADIOS2_ADIOSMACROS_H
+#define ADIOS2_ADIOSMACROS_H
 
 // The ADIOS_FOREACH_TYPE_1ARG macro assumes the given argument is a macro which
 // takes a single argument that is a type and then inserts the given MACRO for
@@ -59,4 +59,4 @@
     MACRO(double)                                                              \
     MACRO(long double)
 
-#endif // ADIOSMACROS_H
+#endif /* ADIOS2_ADIOSMACROS_H */
diff --git a/source/ADIOSTypes.h b/source/adios2/ADIOSTypes.h
similarity index 95%
rename from source/ADIOSTypes.h
rename to source/adios2/ADIOSTypes.h
index 585a7f680bb1d6df7de6e15fe620363e80b5e13e..a5ea21b9e95f429b1ec273d247995de93c0a2de0 100644
--- a/source/ADIOSTypes.h
+++ b/source/adios2/ADIOSTypes.h
@@ -8,14 +8,16 @@
  *      Author: pnb
  */
 
-#ifndef ADIOS_TYPES_H_
-#define ADIOS_TYPES_H_
+#ifndef ADIOS2_ADIOSTYPES_H_
+#define ADIOS2_ADIOSTYPES_H_
 
 #include <complex>
 #include <cstddef>
 #include <cstdint>
 #include <type_traits>
 
+#include "adios2/ADIOSConfig.h"
+
 namespace adios
 {
 
@@ -137,4 +139,4 @@ struct TypeInfo<T, typename std::enable_if<std::is_same<
 
 } // end namespace adios
 
-#endif /* ADIOS_TYPES_H_ */
+#endif /* ADIOS2_ADIOSTYPES_H_ */
diff --git a/source/adios2/ADIOS_MPI.h b/source/adios2/ADIOS_MPI.h
new file mode 100644
index 0000000000000000000000000000000000000000..5a1a585db1818ff4a2059bb5edb99dbf6e8b52df
--- /dev/null
+++ b/source/adios2/ADIOS_MPI.h
@@ -0,0 +1,17 @@
+/*
+ * Distributed under the OSI-approved Apache License, Version 2.0.  See
+ * accompanying file Copyright.txt for details.
+ */
+
+#ifndef ADIOS2_ADIOS_MPI_H_
+#define ADIOS2_ADIOS_MPI_H_
+
+#include "adios2/ADIOSConfig.h"
+
+#ifdef ADIOS2_HAVE_MPI
+#include <mpi.h>
+#else
+#include "adios2/mpidummy.h"
+#endif
+
+#endif /* ADIOS2_ADIOS_MPI_H_ */
diff --git a/source/adios2/CMakeLists.txt b/source/adios2/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e24b486a1ae958e642452a7a23e4a75fc8b61778
--- /dev/null
+++ b/source/adios2/CMakeLists.txt
@@ -0,0 +1,121 @@
+#------------------------------------------------------------------------------#
+# Distributed under the OSI-approved Apache License, Version 2.0.  See
+# accompanying file Copyright.txt for details.
+#------------------------------------------------------------------------------#
+  
+add_library(adios2
+  ADIOS.cpp ADIOS.tcc
+  
+  capsule/heap/STLVector.cpp
+  capsule/shmem/ShmSystemV.cpp
+  
+  core/Capsule.cpp
+  core/Engine.cpp
+  core/Method.cpp
+  core/Support.cpp
+  core/Timer.cpp
+  core/Transform.cpp
+  core/Transport.cpp
+  core/adiosFunctions.cpp
+  
+  engine/bp/BPFileReader.cpp
+  engine/bp/BPFileWriter.cpp
+
+  utilities/format/bp1/BP1Base.cpp
+  utilities/format/bp1/BP1Aggregator.cpp
+  utilities/format/bp1/BP1Writer.cpp
+    
+  transport/file/FStream.cpp
+  transport/file/FileDescriptor.cpp
+  transport/file/FilePointer.cpp
+    
+  utilities/format/bp1/BP1Base.cpp
+  utilities/format/bp1/BP1Aggregator.cpp
+  utilities/format/bp1/BP1Writer.cpp
+  utilities/format/bp1/BP1Writer.tcc
+)
+target_include_directories(adios2
+  PUBLIC
+    $<BUILD_INTERFACE:${ADIOS_SOURCE_DIR}/source>
+    $<BUILD_INTERFACE:${ADIOS_BINARY_DIR}>
+    $<INSTALL_INTERFACE:include>
+  PRIVATE ${ADIOS_SOURCE_DIR}/source
+)
+  
+if(ADIOS_USE_DataMan)
+  target_sources(adios2 PRIVATE
+    engine/dataman/DataManReader.cpp
+    engine/dataman/DataManWriter.cpp
+    transport/wan/MdtmMan.cpp
+  )
+  target_link_libraries(adios2 PRIVATE dataman)
+endif()
+  
+if(ADIOS_USE_BZip2)
+  find_package(BZip2 REQUIRED)
+  target_sources(adios2 PRIVATE transform/BZip2.cpp)
+  target_link_libraries(adios2 PRIVATE BZip2::BZip2)
+endif()
+
+if(ADIOS_USE_MPI)
+  find_package(MPI COMPONENTS C REQUIRED)
+  target_include_directories(adios2 PUBLIC ${MPI_C_INCLUDE_PATH})
+  target_link_libraries(adios2 PUBLIC ${MPI_C_LIBRARIES})
+else()
+  target_sources(adios2 PRIVATE mpidummy.cpp)
+endif()
+
+if(ADIOS_USE_ADIOS1)
+  if(ADIOS_USE_MPI)
+    find_package(ADIOS1 REQUIRED)
+  else()
+    find_package(ADIOS1 COMPONENTS sequential REQUIRED)
+  endif()
+
+  target_sources(adios2 PRIVATE
+    engine/adios1/ADIOS1Reader.cpp
+    engine/adios1/ADIOS1Writer.cpp
+  )
+  target_link_libraries(adios2 PRIVATE adios1::adios)
+endif()
+
+if(ADIOS_USE_HDF5)
+  find_package(HDF5 REQUIRED)
+  if(ADIOS_USE_MPI AND (NOT HDF5_IS_PARALLEL))
+    message(FATAL_ERROR
+      "A sequential version of HDF5 was detected but the parallel version "
+      "of ADIOS is being built, which requires a parallel HDF5."
+    )
+  elseif((NOT ADIOS_USE_MPI) AND HDF5_IS_PARALLEL)
+    message(FATAL_ERROR
+      "A parallel version of HDF5 was detected but the sequential version "
+      "of ADIOS is being built, which requires a sequential HDF5."
+    )
+  endif()
+
+  target_include_directories(adios2 PRIVATE ${HDF5_INCLUDE_DIRS})
+  target_sources(adios2 PRIVATE
+    engine/hdf5/HDF5ReaderP.cpp
+    engine/hdf5/HDF5WriterP.cpp
+  )
+  target_link_libraries(adios2 PRIVATE ${HDF5_C_LIBRARIES})
+endif()
+
+install(
+  FILES
+    ADIOS.h ADIOS.inl ADIOSMacros.h ADIOS_MPI.h ADIOSTypes.h mpidummy.h
+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/adios2
+)
+install(
+  DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/core
+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/adios2
+  FILES_MATCHING REGEX "[^/]*\.(h|inl)$"
+)
+
+# Library installation
+install(
+  TARGETS adios2 EXPORT adios2
+  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
diff --git a/source/capsule/heap/STLVector.cpp b/source/adios2/capsule/heap/STLVector.cpp
similarity index 97%
rename from source/capsule/heap/STLVector.cpp
rename to source/adios2/capsule/heap/STLVector.cpp
index 31a9e18455b0587d87e67a91089a153640223f12..2b6b9a289fcded2c1cc3fddcd36673befd82fe87 100644
--- a/source/capsule/heap/STLVector.cpp
+++ b/source/adios2/capsule/heap/STLVector.cpp
@@ -8,12 +8,10 @@
  *      Author: wfg
  */
 
-/// \cond EXCLUDE_FROM_DOXYGEN
+#include "STLVector.h"
+
 #include <new>       //std::bad_alloc
 #include <stdexcept> //std::runtime_error
-/// \endcond
-
-#include "STLVector.h"
 
 namespace adios
 {
diff --git a/source/capsule/heap/STLVector.h b/source/adios2/capsule/heap/STLVector.h
similarity index 86%
rename from source/capsule/heap/STLVector.h
rename to source/adios2/capsule/heap/STLVector.h
index 18c7f348d2dd84a2688313b7c4e70138c75b4ec7..aaa7bd095cedb6d252c7d7ec1d7c28787613a0dd 100644
--- a/source/capsule/heap/STLVector.h
+++ b/source/adios2/capsule/heap/STLVector.h
@@ -8,14 +8,15 @@
  *      Author: wfg
  */
 
-#ifndef STLVECTOR_H_
-#define STLVECTOR_H_
+#ifndef ADIOS2_CAPSULE_HEAP_STLVECTOR_H_
+#define ADIOS2_CAPSULE_HEAP_STLVECTOR_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <vector>
 /// \endcond
 
-#include "core/Capsule.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Capsule.h"
 
 namespace adios
 {
@@ -59,4 +60,4 @@ public:
 } // end namespace capsule
 } // end namespace
 
-#endif /* STLVECTOR_H_ */
+#endif /* ADIOS2_CAPSULE_HEAP_STLVECTOR_H_ */
diff --git a/source/capsule/shmem/ShmSystemV.cpp b/source/adios2/capsule/shmem/ShmSystemV.cpp
similarity index 98%
rename from source/capsule/shmem/ShmSystemV.cpp
rename to source/adios2/capsule/shmem/ShmSystemV.cpp
index 4bd56810c7b4ba6e38c516d8f0e02bd6cda426d8..c241b6eab36ecd106ab9feec7df510320e31c570 100644
--- a/source/capsule/shmem/ShmSystemV.cpp
+++ b/source/adios2/capsule/shmem/ShmSystemV.cpp
@@ -7,14 +7,13 @@
  *  Created on: Dec 22, 2016
  *      Author: wfg
  */
-/// \cond EXCLUDE_FROM_DOXYGEN
+
+#include "ShmSystemV.h"
+
 #include <sys/shm.h>
 
 #include <ios> //std::ios_base::failure
 #include <utility>
-/// \endcond
-
-#include "ShmSystemV.h"
 
 namespace adios
 {
diff --git a/source/capsule/shmem/ShmSystemV.h b/source/adios2/capsule/shmem/ShmSystemV.h
similarity index 86%
rename from source/capsule/shmem/ShmSystemV.h
rename to source/adios2/capsule/shmem/ShmSystemV.h
index 2e3a14c5b804736b5c2f8d4d5890bc49efde2eba..68631624b214716fac3e54a272835c5917fab43b 100644
--- a/source/capsule/shmem/ShmSystemV.h
+++ b/source/adios2/capsule/shmem/ShmSystemV.h
@@ -1,11 +1,16 @@
+/*
+ * Distributed under the OSI-approved Apache License, Version 2.0.  See
+ * accompanying file Copyright.txt for details.
+ */
 
-#ifndef SHMSYSTEMV_H_
-#define SHMSYSTEMV_H_
+#ifndef ADIOS2_CAPSULE_SHMEM_SHMSYSTEMV_H_
+#define ADIOS2_CAPSULE_SHMEM_SHMSYSTEMV_H_
 
 #include <sys/ipc.h>
 #include <sys/types.h>
 
-#include "core/Capsule.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Capsule.h"
 
 namespace adios
 {
@@ -60,4 +65,4 @@ private:
 
 } // end namespace adios
 
-#endif /* SHMSYSTEMV_H_ */
+#endif /* ADIOS2_CAPSULE_SHMEM_SHMSYSTEMV_H_ */
diff --git a/source/core/Attribute.h b/source/adios2/core/Attribute.h
similarity index 78%
rename from source/core/Attribute.h
rename to source/adios2/core/Attribute.h
index d1384d228ff5019a9ad6fcadf7ee76ff736e3595..146e72486ae4da7275af68b45f2a447a01c8558d 100644
--- a/source/core/Attribute.h
+++ b/source/adios2/core/Attribute.h
@@ -8,12 +8,12 @@
  *      Author: wfg
  */
 
-#ifndef ATTRIBUTE_H_
-#define ATTRIBUTE_H_
+#ifndef ADIOS2_CORE_ATTRIBUTE_H_
+#define ADIOS2_CORE_ATTRIBUTE_H_
 
-/// \cond EXCLUDE_FROM_DOXYGEN
 #include <string>
-/// \endcond
+
+#include "adios2/ADIOSConfig.h"
 
 namespace adios
 {
@@ -29,4 +29,4 @@ struct Attribute
 
 } // end namespace
 
-#endif /* ATTRIBUTE_H_ */
+#endif /* ADIOS2_CORE_ATTRIBUTE_H_ */
diff --git a/source/core/Capsule.cpp b/source/adios2/core/Capsule.cpp
similarity index 95%
rename from source/core/Capsule.cpp
rename to source/adios2/core/Capsule.cpp
index b30603ab42bc0137b0803d802a01e67b937eb7c0..60888e8f85ee0bd4bad144c8e7c28b75033ef25a 100644
--- a/source/core/Capsule.cpp
+++ b/source/adios2/core/Capsule.cpp
@@ -8,9 +8,9 @@
  *      Author: wfg
  */
 
-#include <utility>
+#include "Capsule.h"
 
-#include "core/Capsule.h"
+#include <utility>
 
 namespace adios
 {
diff --git a/source/core/Capsule.h b/source/adios2/core/Capsule.h
similarity index 93%
rename from source/core/Capsule.h
rename to source/adios2/core/Capsule.h
index 609aab8471b21ca8178d91f0e6c64127f9f024d3..c3e3cdcebef36517998014186d664affea40342f 100644
--- a/source/core/Capsule.h
+++ b/source/adios2/core/Capsule.h
@@ -8,13 +8,15 @@
  *      Author: wfgtemplates and pointers
  */
 
-#ifndef CAPSULE_H_
-#define CAPSULE_H_
+#ifndef ADIOS2_CORE_CAPSULE_H_
+#define ADIOS2_CORE_CAPSULE_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <string>
 /// \endcond
 
+#include "adios2/ADIOSConfig.h"
+
 namespace adios
 {
 
@@ -65,4 +67,4 @@ protected:
 
 } // end namespace
 
-#endif /* CAPSULE_H_ */
+#endif /* ADIOS2_CORE_CAPSULE_H_ */
diff --git a/source/core/Engine.cpp b/source/adios2/core/Engine.cpp
similarity index 99%
rename from source/core/Engine.cpp
rename to source/adios2/core/Engine.cpp
index bbfe5a978df903e7afef313c5edbab6d436f6a9f..76ded52fae6704f798c76c4692a3efa314c0f8bd 100644
--- a/source/core/Engine.cpp
+++ b/source/adios2/core/Engine.cpp
@@ -8,11 +8,12 @@
  *      Author: wfg
  */
 
+#include "Engine.h"
+
 #include <ios> //std::ios_base::failure
 
-#include "core/Engine.h"
-#include "core/Support.h"
-#include "core/adiosFunctions.h"
+#include "adios2/core/Support.h"
+#include "adios2/core/adiosFunctions.h"
 
 namespace adios
 {
diff --git a/source/core/Engine.h b/source/adios2/core/Engine.h
similarity index 97%
rename from source/core/Engine.h
rename to source/adios2/core/Engine.h
index 1b1e547be040a6e4d0efd84765db6bcffefd96dd..cea4802d4a9caf53a85fb1a24496eeb757a118b4 100644
--- a/source/core/Engine.h
+++ b/source/adios2/core/Engine.h
@@ -8,8 +8,8 @@
  *      Author: wfg
  */
 
-#ifndef ENGINE_H_
-#define ENGINE_H_
+#ifndef ADIOS2_CORE_ENGINE_H_
+#define ADIOS2_CORE_ENGINE_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <complex>    //std::complex
@@ -21,16 +21,16 @@
 #include <vector>
 /// \endcond
 
-#include "../ADIOS_MPI.h"
-
-#include "../ADIOS.h"
-#include "../ADIOSTypes.h"
-#include "Capsule.h"
-#include "Method.h"
-#include "Transform.h"
-#include "Transport.h"
-#include "Variable.h"
-#include "VariableCompound.h"
+#include "adios2/ADIOS.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/ADIOSTypes.h"
+#include "adios2/ADIOS_MPI.h"
+#include "adios2/core/Capsule.h"
+#include "adios2/core/Method.h"
+#include "adios2/core/Transform.h"
+#include "adios2/core/Transport.h"
+#include "adios2/core/Variable.h"
+#include "adios2/core/VariableCompound.h"
 
 namespace adios
 {
@@ -539,4 +539,4 @@ protected:
 
 } // end namespace
 
-#endif /* ENGINE_H_ */
+#endif /* ADIOS2_CORE_ENGINE_H_ */
diff --git a/source/core/IOChrono.h b/source/adios2/core/IOChrono.h
similarity index 80%
rename from source/core/IOChrono.h
rename to source/adios2/core/IOChrono.h
index da668822b3d02198014f9731a5f524e768385c06..2f17b497fccf281fcd53e2aa7f8fa49b43c02aa4 100644
--- a/source/core/IOChrono.h
+++ b/source/adios2/core/IOChrono.h
@@ -8,14 +8,15 @@
  *      Author: wfg
  */
 
-#ifndef IOCHRONO_H_
-#define IOCHRONO_H_
+#ifndef ADIOS2_CORE_IOCHRONO_H_
+#define ADIOS2_CORE_IOCHRONO_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <vector>
 /// \endcond
 
-#include "Timer.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Timer.h"
 
 namespace adios
 {
@@ -40,4 +41,4 @@ struct IOChrono
 } // end namespace profiling
 } // end namespace adios
 
-#endif /* IOCHRONO_H_ */
+#endif /* ADIOS2_CORE_IOCHRONO_H_ */
diff --git a/source/core/Method.cpp b/source/adios2/core/Method.cpp
similarity index 96%
rename from source/core/Method.cpp
rename to source/adios2/core/Method.cpp
index 25b7af4adb2c3538201ccd9ab11b31183f749b98..083e19135c5fe100f4b0d02b309c106892d6bd74 100644
--- a/source/core/Method.cpp
+++ b/source/adios2/core/Method.cpp
@@ -8,10 +8,11 @@
  *      Author: wfg
  */
 
+#include "Method.h"
+
 #include <utility>
 
-#include "core/Method.h"
-#include "core/adiosFunctions.h"
+#include "adios2/core/adiosFunctions.h"
 
 namespace adios
 {
diff --git a/source/core/Method.h b/source/adios2/core/Method.h
similarity index 95%
rename from source/core/Method.h
rename to source/adios2/core/Method.h
index 27efc64edb3d20f3767d9d47e727a59141c874d9..26ab2ffe0c62efc7cd1cadb1953797eba75123f5 100644
--- a/source/core/Method.h
+++ b/source/adios2/core/Method.h
@@ -8,8 +8,8 @@
  *      Author: wfg
  */
 
-#ifndef METHOD_H_
-#define METHOD_H_
+#ifndef ADIOS2_CORE_METHOD_H_
+#define ADIOS2_CORE_METHOD_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <map>
@@ -17,8 +17,9 @@
 #include <vector>
 /// \endcond
 
-#include "../ADIOSTypes.h"
-#include "adiosFunctions.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/ADIOSTypes.h"
+#include "adios2/core/adiosFunctions.h"
 
 namespace adios
 {
@@ -148,4 +149,4 @@ private:
 
 } // end namespace adios
 
-#endif /* METHOD_H_ */
+#endif /* ADIOS2_CORE_METHOD_H_ */
diff --git a/source/core/Selection.h b/source/adios2/core/Selection.h
similarity index 92%
rename from source/core/Selection.h
rename to source/adios2/core/Selection.h
index 541508d2fb2a8c81b5f55825549c2611d9c0ab17..b5e7e01280f8f4971c4391a78473e568193561c9 100644
--- a/source/core/Selection.h
+++ b/source/adios2/core/Selection.h
@@ -30,8 +30,11 @@
  *   the application does not need to retrieve the selection to work on the read
  * data.
  */
-#ifndef __SELECTION_H__
-#define __SELECTION_H__
+
+#ifndef ADIOS2_CORE_SELECTION_H_
+#define ADIOS2_CORE_SELECTION_H_
+
+#include "adios2/ADIOSConfig.h"
 
 namespace adios
 {
@@ -62,4 +65,4 @@ public:
 
 } // namespace adios
 
-#endif /*__SELECTION_H__*/
+#endif /* ADIOS2_CORE_SELECTION_H_ */
diff --git a/source/core/SelectionBoundingBox.h b/source/adios2/core/SelectionBoundingBox.h
similarity index 76%
rename from source/core/SelectionBoundingBox.h
rename to source/adios2/core/SelectionBoundingBox.h
index fb991720cb4cac711ff1961cdfd6f57f9199e585..6e8cdd1cc0547a0537f02499d745d7820f4cfdf9 100644
--- a/source/core/SelectionBoundingBox.h
+++ b/source/adios2/core/SelectionBoundingBox.h
@@ -3,16 +3,15 @@
  * accompanying file Copyright.txt for details.
  */
 
-#ifndef __ADIOS_SELECTION_BOUNDINGBOX_H__
-#define __ADIOS_SELECTION_BOUNDINGBOX_H__
+#ifndef ADIOS2_CORE_SELECTIONBOUNDINGBOX_H_
+#define ADIOS2_CORE_SELECTIONBOUNDINGBOX_H_
 
-/// \cond EXCLUDE_FROM_DOXYGEN
 #include <cstdint>
-/// \endcond
 
 #include <vector>
 
-#include "Selection.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Selection.h"
 
 namespace adios
 {
@@ -30,12 +29,10 @@ public:
     {
     }
 
-    ~SelectionBoundingBox() = default;
-
     std::vector<std::uint64_t> m_Start;
     std::vector<std::uint64_t> m_Count;
 };
 
 } // namespace adios
 
-#endif /*__ADIOS_SELECTION_BOUNDINGBOX_H__*/
+#endif /* ADIOS2_CORE_SELECTIONBOUNDINGBOX_H_ */
diff --git a/source/core/SelectionPoints.h b/source/adios2/core/SelectionPoints.h
similarity index 88%
rename from source/core/SelectionPoints.h
rename to source/adios2/core/SelectionPoints.h
index 981460290eae0817850dda8564b90aa304cfc58e..75dfec84d9054766971b70120d3fdb83afa87fa4 100644
--- a/source/core/SelectionPoints.h
+++ b/source/adios2/core/SelectionPoints.h
@@ -3,8 +3,8 @@
  * accompanying file Copyright.txt for details.
  */
 
-#ifndef __ADIOS_SELECTION_POINTS_H__
-#define __ADIOS_SELECTION_POINTS_H__
+#ifndef ADIOS2_CORE_SELECTIONPOINTS_H_
+#define ADIOS2_CORE_SELECTIONPOINTS_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <cstdint>
@@ -12,7 +12,8 @@
 
 #include <vector>
 
-#include "Selection.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Selection.h"
 
 namespace adios
 {
@@ -53,4 +54,4 @@ public:
 
 } // namespace adios
 
-#endif /*__ADIOS_SELECTION_POINTS_H__*/
+#endif /* ADIOS2_CORE_SELECTIONPOINTS_H_ */
diff --git a/source/core/Support.cpp b/source/adios2/core/Support.cpp
similarity index 98%
rename from source/core/Support.cpp
rename to source/adios2/core/Support.cpp
index 7a7785efb716e9f63114fd7f7ef67e9c121b320c..c1db02342d3e45a618a2b7638deb737de3ff289a 100644
--- a/source/core/Support.cpp
+++ b/source/adios2/core/Support.cpp
@@ -8,8 +8,9 @@
  *      Author: wfg
  */
 
-#include "core/Support.h"
-#include "core/adiosTemplates.h"
+#include "Support.h"
+
+#include "adios2/core/adiosTemplates.h"
 
 namespace adios
 {
diff --git a/source/core/Support.h b/source/adios2/core/Support.h
similarity index 89%
rename from source/core/Support.h
rename to source/adios2/core/Support.h
index 6284f52cba877082bdca19c77ef21f7f64aafa28..c836724b168a73c51063cd5177d90b4a943a2495 100644
--- a/source/core/Support.h
+++ b/source/adios2/core/Support.h
@@ -2,14 +2,14 @@
  * Distributed under the OSI-approved Apache License, Version 2.0.  See
  * accompanying file Copyright.txt for details.
  *
- * SSupport.h
+ * Support.h
  *
  *  Created on: Oct 10, 2016
  *      Author: wfg
  */
 
-#ifndef SUPPORT_H_
-#define SUPPORT_H_
+#ifndef ADIOS2_CORE_SUPPORT_H_
+#define ADIOS2_CORE_SUPPORT_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <map>
@@ -17,6 +17,8 @@
 #include <string>
 /// \endcond
 
+#include "adios2/ADIOSConfig.h"
+
 namespace adios
 {
 
@@ -58,4 +60,4 @@ struct Support
 
 } // end namespace adios
 
-#endif /* SUPPORT_H_ */
+#endif /* ADIOS2_CORE_SUPPORT_H_ */
diff --git a/source/core/Timer.cpp b/source/adios2/core/Timer.cpp
similarity index 99%
rename from source/core/Timer.cpp
rename to source/adios2/core/Timer.cpp
index 731714489d49f45e885c3690574b029625a35213..2ae983fe859962158d3fd00faf6861d5ee4db86f 100644
--- a/source/core/Timer.cpp
+++ b/source/adios2/core/Timer.cpp
@@ -8,7 +8,7 @@
  *      Author: wfg
  */
 
-#include "core/Timer.h"
+#include "Timer.h"
 
 namespace adios
 {
diff --git a/source/core/Timer.h b/source/adios2/core/Timer.h
similarity index 90%
rename from source/core/Timer.h
rename to source/adios2/core/Timer.h
index 62b7b8cfee7d12df993a71f81ea0161f7654f30a..59796aedcb3744babcbd0fdb738d56ca29b0c47f 100644
--- a/source/core/Timer.h
+++ b/source/adios2/core/Timer.h
@@ -8,15 +8,16 @@
  *      Author: wfg
  */
 
-#ifndef TIMER_H_
-#define TIMER_H_
+#ifndef ADIOS2_CORE_TIMER_H_
+#define ADIOS2_CORE_TIMER_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <chrono>
 #include <string>
 /// \endcond
 
-#include "Support.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Support.h"
 
 namespace adios
 {
@@ -62,4 +63,4 @@ private:
 } // end namespace profiling
 } // end namespace adios
 
-#endif /* TIMER_H_ */
+#endif /* ADIOS2_CORE_TIMER_H_ */
diff --git a/source/core/Transform.cpp b/source/adios2/core/Transform.cpp
similarity index 95%
rename from source/core/Transform.cpp
rename to source/adios2/core/Transform.cpp
index 7549342b26640480331644a5bdcc0adaded88a55..ac75b66adf3470058fe0bc5487d0b7be544c0b51 100644
--- a/source/core/Transform.cpp
+++ b/source/adios2/core/Transform.cpp
@@ -7,9 +7,10 @@
  *  Created on: Dec 5, 2016
  *      Author: wfg
  */
-#include <utility>
 
-#include "core/Transform.h"
+#include "Transform.h"
+
+#include <utility>
 
 namespace adios
 {
diff --git a/source/core/Transform.h b/source/adios2/core/Transform.h
similarity index 86%
rename from source/core/Transform.h
rename to source/adios2/core/Transform.h
index c133c146d7a9fc6be8fc944f38270bd66c9b393b..8073ba4002e4b0412b20b0092b9b4d98adb65bbe 100644
--- a/source/core/Transform.h
+++ b/source/adios2/core/Transform.h
@@ -8,14 +8,16 @@
  *      Author: wfg
  */
 
-#ifndef TRANSFORM_H_
-#define TRANSFORM_H_
+#ifndef ADIOS2_CORE_TRANSFORM_H_
+#define ADIOS2_CORE_TRANSFORM_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <string>
 #include <vector>
 /// \endcond
 
+#include "adios2/ADIOSConfig.h"
+
 namespace adios
 {
 
@@ -45,4 +47,4 @@ public:
 };
 
 } // end namespace adios
-#endif /* TRANSFORM_H_ */
+#endif /* ADIOS2_CORE_TRANSFORM_H_ */
diff --git a/source/core/Transport.cpp b/source/adios2/core/Transport.cpp
similarity index 97%
rename from source/core/Transport.cpp
rename to source/adios2/core/Transport.cpp
index 1fde211ae4f9a8a6cca8768d07679afdc832081f..808b5c9330d871bb6d747a4278ca153267f70acd 100644
--- a/source/core/Transport.cpp
+++ b/source/adios2/core/Transport.cpp
@@ -8,9 +8,9 @@
  *      Author: wfg
  */
 
-#include <utility>
+#include "Transport.h"
 
-#include "core/Transport.h"
+#include <utility>
 
 namespace adios
 {
diff --git a/source/core/Transport.h b/source/adios2/core/Transport.h
similarity index 92%
rename from source/core/Transport.h
rename to source/adios2/core/Transport.h
index 4d90414ca582374e2593fbd7d525a64af9181e3c..83f5339f86fd24ff6244824d9c9e88c11e8235ec 100644
--- a/source/core/Transport.h
+++ b/source/adios2/core/Transport.h
@@ -8,16 +8,17 @@
  *      Author: wfg
  */
 
-#ifndef TRANSPORT_H_
-#define TRANSPORT_H_
+#ifndef ADIOS2_CORE_TRANSPORT_H_
+#define ADIOS2_CORE_TRANSPORT_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <string>
 #include <vector>
 /// \endcond
 
-#include "../ADIOS_MPI.h"
-#include "IOChrono.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/ADIOS_MPI.h"
+#include "adios2/core/IOChrono.h"
 
 namespace adios
 {
@@ -90,4 +91,4 @@ protected:
 
 } // end namespace adios
 
-#endif /* TRANSPORT_H_ */
+#endif /* ADIOS2_CORE_TRANSPORT_H_ */
diff --git a/source/core/Variable.h b/source/adios2/core/Variable.h
similarity index 94%
rename from source/core/Variable.h
rename to source/adios2/core/Variable.h
index be5fc56750ef12328e00650ee5d7039fd6e11ffa..5b0fdbb5b81b94743e2860d7c15efb68fbfa3841 100644
--- a/source/core/Variable.h
+++ b/source/adios2/core/Variable.h
@@ -8,8 +8,8 @@
  *      Author: wfg
  */
 
-#ifndef VARIABLE_H_
-#define VARIABLE_H_
+#ifndef ADIOS2_CORE_VARIABLE_H_
+#define ADIOS2_CORE_VARIABLE_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <map>
@@ -18,8 +18,9 @@
 #include <vector>
 /// \endcond
 
-#include "Transform.h"
-#include "VariableBase.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Transform.h"
+#include "adios2/core/VariableBase.h"
 
 namespace adios
 {
@@ -118,4 +119,4 @@ public:
 
 } // end namespace
 
-#endif /* VARIABLE_H_ */
+#endif /* ADIOS2_CORE_VARIABLE_H_ */
diff --git a/source/core/VariableBase.h b/source/adios2/core/VariableBase.h
similarity index 93%
rename from source/core/VariableBase.h
rename to source/adios2/core/VariableBase.h
index e05afd69abb172541c4c0e5a9788745538a7fe9e..aef3af0d3ab2b96817ec18b91b417a82155865f7 100644
--- a/source/core/VariableBase.h
+++ b/source/adios2/core/VariableBase.h
@@ -8,8 +8,8 @@
  *      Author: wfg
  */
 
-#ifndef VARIABLEBASE_H_
-#define VARIABLEBASE_H_
+#ifndef ADIOS2_CORE_VARIABLEBASE_H_
+#define ADIOS2_CORE_VARIABLEBASE_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <exception>
@@ -19,9 +19,10 @@
 #include <vector>
 /// \endcond
 
-#include "SelectionBoundingBox.h"
-#include "adiosFunctions.h"
-#include "adiosTemplates.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/SelectionBoundingBox.h"
+#include "adios2/core/adiosFunctions.h"
+#include "adios2/core/adiosTemplates.h"
 
 namespace adios
 {
@@ -136,4 +137,4 @@ public:
 
 } // end namespace
 
-#endif /* VARIABLEBASE_H_ */
+#endif /* ADIOS2_CORE_VARIABLEBASE_H_ */
diff --git a/source/core/VariableCompound.h b/source/adios2/core/VariableCompound.h
similarity index 88%
rename from source/core/VariableCompound.h
rename to source/adios2/core/VariableCompound.h
index 9f3ceeebea38e900146c26af282c7c5cabc89976..4a64cbd45213458f2a38adc8cf27d4affd2cfb6c 100644
--- a/source/core/VariableCompound.h
+++ b/source/adios2/core/VariableCompound.h
@@ -8,10 +8,11 @@
  *      Author: wfg
  */
 
-#ifndef VARIABLECOMPOUND_H_
-#define VARIABLECOMPOUND_H_
+#ifndef ADIOS2_CORE_VARIABLECOMPOUND_H_
+#define ADIOS2_CORE_VARIABLECOMPOUND_H_
 
-#include "VariableBase.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/VariableBase.h"
 
 namespace adios
 {
@@ -61,4 +62,4 @@ private:
 
 } // end namespace
 
-#endif /* VARIABLECOMPOUND_H_ */
+#endif /* ADIOS2_CORE_VARIABLECOMPOUND_H_ */
diff --git a/source/core/adiosFunctions.cpp b/source/adios2/core/adiosFunctions.cpp
similarity index 98%
rename from source/core/adiosFunctions.cpp
rename to source/adios2/core/adiosFunctions.cpp
index d2a84b45f37a24be0ecf82fa460565a806d4d0dc..ffb5c81f43a4d32adb732e4a59d934ceebce419e 100644
--- a/source/core/adiosFunctions.cpp
+++ b/source/adios2/core/adiosFunctions.cpp
@@ -8,26 +8,26 @@
  *      Author: wfg
  */
 
-/// \cond EXCLUDED_FROM_DOXYGEN
+#include "adiosFunctions.h"
+
+#include <sys/stat.h>  //stat
+#include <sys/types.h> //CreateDirectory
+#include <unistd.h>    //CreateDirectory
+
+#include <cmath>   // std::ceil, std::pow, std::log
+#include <cstring> //std::memcpy
+
 #include <algorithm> //std::count
-#include <cmath>     // std::ceil, std::pow, std::log
-#include <cstring>   //std::memcpy
 #include <fstream>
 #include <ios> //std::ios_base::failure
 #include <sstream>
 #include <stdexcept>
 #include <thread> //std::thread
 
-#include <sys/stat.h>  //stat
-#include <sys/types.h> //CreateDirectory
-#include <unistd.h>    //CreateDirectory
-/// \endcond
-
-#include "core/Support.h"
-#include "core/adiosFunctions.h"
+#include "adios2/core/Support.h"
 
-#ifdef ADIOS_HAVE_BZIP2
-#include "transform/BZip2.h"
+#ifdef ADIOS2_HAVE_BZIP2
+#include "adios2/transform/BZip2.h"
 #endif
 
 namespace adios
@@ -539,7 +539,7 @@ void SetTransformsHelper(const std::vector<std::string> &transformNames,
         {
             if (transformMethod == "bzip2")
             {
-#ifdef ADIOS_HAVE_BZIP2
+#ifdef ADIOS2_HAVE_BZIP2
                 transforms.push_back(
                     std::make_shared<adios::transform::BZip2>());
 #endif
diff --git a/source/core/adiosFunctions.h b/source/adios2/core/adiosFunctions.h
similarity index 97%
rename from source/core/adiosFunctions.h
rename to source/adios2/core/adiosFunctions.h
index 6b76c96cc2a69540d04eaf36d2d570ee64a26a0d..07f05fae2b3bec413f680f18ba5c339e2b071545 100644
--- a/source/core/adiosFunctions.h
+++ b/source/adios2/core/adiosFunctions.h
@@ -8,8 +8,8 @@
  *      Author: wfg
  */
 
-#ifndef ADIOSFUNCTIONS_H_
-#define ADIOSFUNCTIONS_H_
+#ifndef ADIOS2_CORE_ADIOSFUNCTIONS_H_
+#define ADIOS2_CORE_ADIOSFUNCTIONS_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <cstring> //std::size_t
@@ -19,8 +19,9 @@
 #include <vector>
 /// \endcond
 
-#include "../ADIOS_MPI.h"
-#include "Transform.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/ADIOS_MPI.h"
+#include "adios2/core/Transform.h"
 
 namespace adios
 {
@@ -230,4 +231,4 @@ bool IsLittleEndian() noexcept;
 
 } // end namespace
 
-#endif /* ADIOSFUNCTIONS_H_ */
+#endif /* ADIOS2_CORE_ADIOSFUNCTIONS_H_ */
diff --git a/source/core/adiosTemplates.h b/source/adios2/core/adiosTemplates.h
similarity index 98%
rename from source/core/adiosTemplates.h
rename to source/adios2/core/adiosTemplates.h
index 5640c538758c70c62511f68443153dafb34f80be..702a5c1450a4a85d752c52f81acd7fa4578c21af 100644
--- a/source/core/adiosTemplates.h
+++ b/source/adios2/core/adiosTemplates.h
@@ -8,8 +8,8 @@
  *      Author: wfg
  */
 
-#ifndef ADIOSTEMPLATES_H_
-#define ADIOSTEMPLATES_H_
+#ifndef ADIOS2_CORE_ADIOSTEMPLATES_H_
+#define ADIOS2_CORE_ADIOSTEMPLATES_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <cmath> //std::sqrt
@@ -21,6 +21,8 @@
 #include <vector>
 /// \endcond
 
+#include "adios2/ADIOSConfig.h"
+
 namespace adios
 {
 /**
@@ -322,4 +324,4 @@ void PrintValues(const std::string name, const char *buffer,
 
 } // end namespace
 
-#endif /* ADIOSTEMPLATES_H_ */
+#endif /* ADIOS2_CORE_ADIOSTEMPLATES_H_ */
diff --git a/source/core/capsuleTemplates.h b/source/adios2/core/capsuleTemplates.h
similarity index 94%
rename from source/core/capsuleTemplates.h
rename to source/adios2/core/capsuleTemplates.h
index 5208b184c856f5bad2d5b8d75281a739ec59ac9a..76c022f2775a7421a6926697a7ed9a7a1a0770a9 100644
--- a/source/core/capsuleTemplates.h
+++ b/source/adios2/core/capsuleTemplates.h
@@ -8,8 +8,8 @@
  *      Author: wfg
  */
 
-#ifndef CAPSULETEMPLATES_H_
-#define CAPSULETEMPLATES_H_
+#ifndef ADIOS2_CORE_CAPSULETEMPLATES_H_
+#define ADIOS2_CORE_CAPSULETEMPLATES_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <cstring> //std::memcpy
@@ -17,7 +17,8 @@
 #include <vector>
 /// \endcond
 
-#include "Transport.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Transport.h"
 
 namespace adios
 {
@@ -110,4 +111,4 @@ namespace adios
 
 } // end namespace
 
-#endif /* CAPSULETEMPLATES_H_ */
+#endif /* ADIOS2_CORE_CAPSULETEMPLATES_H_ */
diff --git a/source/engine/adios1/ADIOS1Reader.cpp b/source/adios2/engine/adios1/ADIOS1Reader.cpp
similarity index 95%
rename from source/engine/adios1/ADIOS1Reader.cpp
rename to source/adios2/engine/adios1/ADIOS1Reader.cpp
index bb82bfee3b99690e9bdc807984c0f491aa248dc2..7ec1ac27934ac73522c8d769e7fe4afe7f626ca0 100644
--- a/source/engine/adios1/ADIOS1Reader.cpp
+++ b/source/adios2/engine/adios1/ADIOS1Reader.cpp
@@ -8,14 +8,14 @@
  *      Author: wfg
  */
 
-#include "core/Support.h"
-#include "core/adiosFunctions.h"           // CSVToVector
-#include "transport/file/FStream.h"        // uses C++ fstream
-#include "transport/file/FileDescriptor.h" // uses POSIX
-#include "transport/file/FilePointer.h"    // uses C FILE*
-
 #include "ADIOS1Reader.h"
 
+#include "adios2/core/Support.h"
+#include "adios2/core/adiosFunctions.h"           // CSVToVector
+#include "adios2/transport/file/FStream.h"        // uses C++ fstream
+#include "adios2/transport/file/FileDescriptor.h" // uses POSIX
+#include "adios2/transport/file/FilePointer.h"    // uses C FILE*
+
 namespace adios
 {
 
diff --git a/source/engine/adios1/ADIOS1Reader.h b/source/adios2/engine/adios1/ADIOS1Reader.h
similarity index 93%
rename from source/engine/adios1/ADIOS1Reader.h
rename to source/adios2/engine/adios1/ADIOS1Reader.h
index 992b3e620d3cae8b00011f2effa081c0361a7cf6..51b9e044335625cdc6fd8274d408db3340ef24b0 100644
--- a/source/engine/adios1/ADIOS1Reader.h
+++ b/source/adios2/engine/adios1/ADIOS1Reader.h
@@ -10,30 +10,22 @@
  *      Author: pnb
  */
 
-#ifndef ADIOS1READER_H_
-#define ADIOS1READER_H_
+#ifndef ADIOS2_ENGINE_ADIOS1_ADIOS1READER_H_
+#define ADIOS2_ENGINE_ADIOS1_ADIOS1READER_H_
 
 #include <iostream> //this must go away
 
-#include "core/Engine.h"
+#include <adios_read_v2.h>
 
-// supported capsules
-#include "capsule/heap/STLVector.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/capsule/heap/STLVector.h"
+#include "adios2/core/Engine.h"
 
 namespace adios
 {
 
-#ifndef ADIOS_HAVE_MPI
-#define _NOMPI 1
-#endif
-#include "adios_read_v2.h" // this is adios 1.x header file
-#ifndef ADIOS_HAVE_MPI
-#undef _NOMPI
-#endif
-
 class ADIOS1Reader : public Engine
 {
-
 public:
     /**
      * Constructor for single BP capsule engine, writes in BP format into a
@@ -123,4 +115,4 @@ private:
 
 } // end namespace adios
 
-#endif /* ADIOS1READER_H_ */
+#endif /* ADIOS2_ENGINE_ADIOS1_ADIOS1READER_H_ */
diff --git a/source/engine/adios1/ADIOS1Writer.cpp b/source/adios2/engine/adios1/ADIOS1Writer.cpp
similarity index 99%
rename from source/engine/adios1/ADIOS1Writer.cpp
rename to source/adios2/engine/adios1/ADIOS1Writer.cpp
index d66714bed2f3ce57ff4c0b16e0b1c5bfa72ba298..9dff8ee98022c7baa33789ed2cf8e5b6890bb51a 100644
--- a/source/engine/adios1/ADIOS1Writer.cpp
+++ b/source/adios2/engine/adios1/ADIOS1Writer.cpp
@@ -10,10 +10,10 @@
  *      Author: pnb
  */
 
-#include "core/adiosFunctions.h"
-
 #include "ADIOS1Writer.h"
 
+#include "adios2/core/adiosFunctions.h"
+
 extern int adios_verbose_level;
 extern int adios_errno;
 
diff --git a/source/engine/adios1/ADIOS1Writer.h b/source/adios2/engine/adios1/ADIOS1Writer.h
similarity index 95%
rename from source/engine/adios1/ADIOS1Writer.h
rename to source/adios2/engine/adios1/ADIOS1Writer.h
index c13eee78201bc3b797e7bbe654c1fe7d1a3e9be1..c02de6a815a93980e8c807d220d67b8df882ea61 100644
--- a/source/engine/adios1/ADIOS1Writer.h
+++ b/source/adios2/engine/adios1/ADIOS1Writer.h
@@ -10,16 +10,17 @@
  *      Author: pnb
  */
 
-#ifndef ADIOS1WRITER_H_
-#define ADIOS1WRITER_H_
+#ifndef ADIOS2_ENGINE_ADIOS1_ADIOS1WRITER_H_
+#define ADIOS2_ENGINE_ADIOS1_ADIOS1WRITER_H_
 
-#include "core/Engine.h"
+#include <adios.h>
+
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Engine.h"
 
 namespace adios
 {
 
-#include "adios.h" // this is adios 1.x header file
-
 class ADIOS1Writer : public Engine
 {
 
@@ -128,4 +129,4 @@ private:
 
 } // end namespace adios
 
-#endif /* ADIOS1WRITER_H_ */
+#endif /* ADIOS2_ENGINE_ADIOS1_ADIOS1WRITER_H_ */
diff --git a/source/engine/bp/BPFileReader.cpp b/source/adios2/engine/bp/BPFileReader.cpp
similarity index 96%
rename from source/engine/bp/BPFileReader.cpp
rename to source/adios2/engine/bp/BPFileReader.cpp
index 265ab95bf72c22ae74f750c9b1e55866f0091d2e..ef4951a0a65487bcf8b28d253092a92bdc140179 100644
--- a/source/engine/bp/BPFileReader.cpp
+++ b/source/adios2/engine/bp/BPFileReader.cpp
@@ -10,11 +10,11 @@
 
 #include "BPFileReader.h"
 
-#include "core/Support.h"
-#include "core/adiosFunctions.h"           // CSVToVector
-#include "transport/file/FStream.h"        // uses C++ fstream
-#include "transport/file/FileDescriptor.h" // uses POSIX
-#include "transport/file/FilePointer.h"    // uses C FILE*
+#include "adios2/core/Support.h"
+#include "adios2/core/adiosFunctions.h"           // CSVToVector
+#include "adios2/transport/file/FStream.h"        // uses C++ fstream
+#include "adios2/transport/file/FileDescriptor.h" // uses POSIX
+#include "adios2/transport/file/FilePointer.h"    // uses C FILE*
 
 namespace adios
 {
diff --git a/source/engine/bp/BPFileReader.h b/source/adios2/engine/bp/BPFileReader.h
similarity index 95%
rename from source/engine/bp/BPFileReader.h
rename to source/adios2/engine/bp/BPFileReader.h
index 538be9fc3b446c5b09cd798a4c640c09d51813d2..cba6a54ea7724d530cef9a22ab351b13351a36b7 100644
--- a/source/engine/bp/BPFileReader.h
+++ b/source/adios2/engine/bp/BPFileReader.h
@@ -8,14 +8,14 @@
  *      Author: wfg
  */
 
-#ifndef BPFILEREADER_H_
-#define BPFILEREADER_H_
+#ifndef ADIOS2_ENGINE_BP_BPFILEREADER_H_
+#define ADIOS2_ENGINE_BP_BPFILEREADER_H_
 
 #include <iostream> //this must go away
 
-#include "core/Engine.h"
-
-#include "capsule/heap/STLVector.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/capsule/heap/STLVector.h"
+#include "adios2/core/Engine.h"
 
 namespace adios
 {
@@ -144,4 +144,4 @@ private:
 
 } // end namespace adios
 
-#endif /* BPFILEREADER_H_ */
+#endif /* ADIOS2_ENGINE_BP_BPFILEREADER_H_ */
diff --git a/source/engine/bp/BPFileWriter.cpp b/source/adios2/engine/bp/BPFileWriter.cpp
similarity index 99%
rename from source/engine/bp/BPFileWriter.cpp
rename to source/adios2/engine/bp/BPFileWriter.cpp
index b83f4052f4f01311733e3f7bee4065443abb01d9..013a19ec07d72c18371f3041fbb0b6ac29c528f4 100644
--- a/source/engine/bp/BPFileWriter.cpp
+++ b/source/adios2/engine/bp/BPFileWriter.cpp
@@ -7,15 +7,15 @@
  *  Created on: Dec 19, 2016
  *      Author: wfg
  */
-#include <utility>
 
-#include "ADIOS.h"
 #include "BPFileWriter.h"
 
-// supported transports
-#include "transport/file/FStream.h"
-#include "transport/file/FileDescriptor.h"
-#include "transport/file/FilePointer.h"
+#include <utility>
+
+#include "adios2/ADIOS.h"
+#include "adios2/transport/file/FStream.h"
+#include "adios2/transport/file/FileDescriptor.h"
+#include "adios2/transport/file/FilePointer.h"
 
 namespace adios
 {
diff --git a/source/engine/bp/BPFileWriter.h b/source/adios2/engine/bp/BPFileWriter.h
similarity index 96%
rename from source/engine/bp/BPFileWriter.h
rename to source/adios2/engine/bp/BPFileWriter.h
index 6ab88afa79d8f349fed9f2e30de8ad468de5e39a..f6754ed382681feb4441ef9a9a58bbc247545945 100644
--- a/source/engine/bp/BPFileWriter.h
+++ b/source/adios2/engine/bp/BPFileWriter.h
@@ -8,13 +8,13 @@
  *      Author: wfg
  */
 
-#ifndef BPFILEWRITER_H_
-#define BPFILEWRITER_H_
+#ifndef ADIOS2_ENGINE_BP_BPFILEWRITER_H_
+#define ADIOS2_ENGINE_BP_BPFILEWRITER_H_
 
-#include "core/Engine.h"
-
-#include "capsule/heap/STLVector.h"
-#include "utilities/format/bp1/BP1.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/capsule/heap/STLVector.h"
+#include "adios2/core/Engine.h"
+#include "adios2/utilities/format/bp1/BP1.h"
 
 namespace adios
 {
@@ -185,4 +185,4 @@ private:
 
 } // end namespace adios
 
-#endif /* BPFILEWRITER_H_ */
+#endif /* ADIOS2_ENGINE_BP_BPFILEWRITER_H_ */
diff --git a/source/engine/dataman/DataManReader.cpp b/source/adios2/engine/dataman/DataManReader.cpp
similarity index 96%
rename from source/engine/dataman/DataManReader.cpp
rename to source/adios2/engine/dataman/DataManReader.cpp
index 32cfdb9679013a93b3b3e5f6a02be8d13236c835..bb520b5011ad22cce0c48ee25e973a4bccf4676e 100644
--- a/source/engine/dataman/DataManReader.cpp
+++ b/source/adios2/engine/dataman/DataManReader.cpp
@@ -10,15 +10,12 @@
 
 #include "DataManReader.h"
 
-#include "core/Support.h"
-#include "core/adiosFunctions.h" //CSVToVector
-#include "external/json.hpp"
-
-// supported transports
-#include "transport/file/FStream.h"        // uses C++ fstream
-#include "transport/file/FileDescriptor.h" // uses POSIX
-#include "transport/file/FilePointer.h"    // uses C FILE*
-#include "transport/wan/MdtmMan.h"         //uses Mdtm library
+#include "adios2/core/Support.h"
+#include "adios2/core/adiosFunctions.h"           //CSVToVector
+#include "adios2/transport/file/FStream.h"        // uses C++ fstream
+#include "adios2/transport/file/FileDescriptor.h" // uses POSIX
+#include "adios2/transport/file/FilePointer.h"    // uses C FILE*
+#include "adios2/transport/wan/MdtmMan.h"         //uses Mdtm library
 
 namespace adios
 {
diff --git a/source/engine/dataman/DataManReader.h b/source/adios2/engine/dataman/DataManReader.h
similarity index 93%
rename from source/engine/dataman/DataManReader.h
rename to source/adios2/engine/dataman/DataManReader.h
index a74adcf64c9f4201ac99f07bfab2d1e63467b070..003fad9776b587b96bfcb0b7a60247f4549509ba 100644
--- a/source/engine/dataman/DataManReader.h
+++ b/source/adios2/engine/dataman/DataManReader.h
@@ -8,17 +8,17 @@
  *      Author: wfg
  */
 
-#ifndef DATAMANREADER_H_
-#define DATAMANREADER_H_
+#ifndef ADIOS2_ENGINE_DATAMAN_DATAMANREADER_H_
+#define ADIOS2_ENGINE_DATAMAN_DATAMANREADER_H_
 
 #include <iostream> //std::cout << Needs to go
 
-#include "core/Engine.h"
-#include "utilities/format/bp1/BP1Writer.h"
-#include "utilities/realtime/dataman/DataMan.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/capsule/heap/STLVector.h"
+#include "adios2/core/Engine.h"
+#include "adios2/utilities/format/bp1/BP1Writer.h"
 
-// supported capsules
-#include "capsule/heap/STLVector.h"
+#include <DataMan.h>
 
 namespace adios
 {
@@ -108,7 +108,7 @@ private:
     /// m_Transports
 
     bool m_DoRealTime = false;
-    realtime::DataMan m_Man;
+    DataMan m_Man;
     std::function<void(const void *, std::string, std::string, std::string,
                        Dims)>
         m_CallBack; ///< call back function
@@ -141,4 +141,4 @@ private:
 
 } // end namespace
 
-#endif /* DATAMANREADER_H_ */
+#endif /* ADIOS2_ENGINE_DATAMAN_DATAMANREADER_H_ */
diff --git a/source/engine/dataman/DataManWriter.cpp b/source/adios2/engine/dataman/DataManWriter.cpp
similarity index 98%
rename from source/engine/dataman/DataManWriter.cpp
rename to source/adios2/engine/dataman/DataManWriter.cpp
index bd2ef126d6b6699f4380149f8ebb6bec432bd56b..c125c10cbbb21b16d6341830213ab1992bc2feaa 100644
--- a/source/engine/dataman/DataManWriter.cpp
+++ b/source/adios2/engine/dataman/DataManWriter.cpp
@@ -8,16 +8,14 @@
  *      Author: wfg
  */
 
-#include <iostream> //needs to go away, this is just for demo purposes
-
 #include "DataManWriter.h"
 
-#include "core/Support.h"
-#include "core/adiosFunctions.h" //CSVToVector
+#include <iostream> //needs to go away, this is just for demo purposes
 
-// supported transports
-#include "transport/file/FStream.h" // uses C++ fstream
-#include "transport/wan/MdtmMan.h"  //uses Mdtm library
+#include "adios2/core/Support.h"
+#include "adios2/core/adiosFunctions.h"    //CSVToVector
+#include "adios2/transport/file/FStream.h" // uses C++ fstream
+#include "adios2/transport/wan/MdtmMan.h"  //uses Mdtm library
 
 namespace adios
 {
diff --git a/source/engine/dataman/DataManWriter.h b/source/adios2/engine/dataman/DataManWriter.h
similarity index 95%
rename from source/engine/dataman/DataManWriter.h
rename to source/adios2/engine/dataman/DataManWriter.h
index ba28a58610eef7ae22dd077eb761a2836e0a5388..0edaeb2e1a067d95caba640c3ec30328d2343cff 100644
--- a/source/engine/dataman/DataManWriter.h
+++ b/source/adios2/engine/dataman/DataManWriter.h
@@ -8,18 +8,18 @@
  *      Author: wfg
  */
 
-#ifndef DATAMANWRITER_H_
-#define DATAMANWRITER_H_
+#ifndef ADIOS2_ENGINE_DATAMAN_DATAMAN_WRITER_H_
+#define ADIOS2_ENGINE_DATAMAN_DATAMAN_WRITER_H_
 
 #include <iostream> //std::cout must be removed, only used for hello example
 #include <unistd.h> //sleep must be removed
 
-#include "core/Engine.h"
-#include "utilities/format/bp1/BP1Writer.h"
-#include "utilities/realtime/dataman/DataMan.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/capsule/heap/STLVector.h"
+#include "adios2/core/Engine.h"
+#include "adios2/utilities/format/bp1/BP1Writer.h"
 
-// supported capsules
-#include "capsule/heap/STLVector.h"
+#include <DataMan.h>
 
 namespace adios
 {
@@ -106,7 +106,7 @@ private:
 
     bool m_DoRealTime = false;
     bool m_DoMonitor = false;
-    realtime::DataMan m_Man;
+    DataMan m_Man;
     std::function<void(const void *, std::string, std::string, std::string,
                        Dims)>
         m_CallBack; ///< call back function
@@ -181,4 +181,4 @@ private:
 
 } // end namespace adios
 
-#endif /* DATAMANWRITER_H_ */
+#endif /* ADIOS2_ENGINE_DATAMAN_DATAMAN_WRITER_H_ */
diff --git a/source/engine/hdf5/HDF5ReaderP.cpp b/source/adios2/engine/hdf5/HDF5ReaderP.cpp
similarity index 100%
rename from source/engine/hdf5/HDF5ReaderP.cpp
rename to source/adios2/engine/hdf5/HDF5ReaderP.cpp
index 5b706030e7bdc5bc8114a2360f92787366c75564..782135c00da4f7ef2e0f18fd2aa17e48277e97ea 100644
--- a/source/engine/hdf5/HDF5ReaderP.cpp
+++ b/source/adios2/engine/hdf5/HDF5ReaderP.cpp
@@ -8,6 +8,6 @@
  *      Author: Junmin
  */
 
-#include <iostream> //needs to go away, this is just for demo purposes
-
 #include "HDF5ReaderP.h"
+
+#include <iostream> //needs to go away, this is just for demo purposes
diff --git a/source/engine/hdf5/HDF5ReaderP.h b/source/adios2/engine/hdf5/HDF5ReaderP.h
similarity index 61%
rename from source/engine/hdf5/HDF5ReaderP.h
rename to source/adios2/engine/hdf5/HDF5ReaderP.h
index ec5d910ebf453c4f4f9eb6d5faf55248759feef6..42e4dab6be48f5fdda07b7fcd5aac35bb135e63e 100644
--- a/source/engine/hdf5/HDF5ReaderP.h
+++ b/source/adios2/engine/hdf5/HDF5ReaderP.h
@@ -8,7 +8,7 @@
  *      Author: Junmin
  */
 
-#ifndef HDF5_READER_P_H
-#define HDF5_READER_P_H
+#ifndef ADIOS2_ENGINE_HDF5_HDF5READERP_H_
+#define ADIOS2_ENGINE_HDF5_HDF5READERP_H_
 
-#endif
+#endif /* ADIOS2_ENGINE_HDF5_HDF5READERP_H_ */
diff --git a/source/engine/hdf5/HDF5WriterP.cpp b/source/adios2/engine/hdf5/HDF5WriterP.cpp
similarity index 98%
rename from source/engine/hdf5/HDF5WriterP.cpp
rename to source/adios2/engine/hdf5/HDF5WriterP.cpp
index 40837346de7f92b704a63217816ca0ce8906334a..87daeb882e5d839d866a2c81b69855a652ac0496 100644
--- a/source/engine/hdf5/HDF5WriterP.cpp
+++ b/source/adios2/engine/hdf5/HDF5WriterP.cpp
@@ -8,12 +8,12 @@
  *      Author: Junmin
  */
 
-#include <iostream> //needs to go away, this is just for demo purposes
-
 #include "HDF5WriterP.h"
 
-#include "core/Support.h"
-#include "core/adiosFunctions.h" //CSVToVector
+#include <iostream> //needs to go away, this is just for demo purposes
+
+#include "adios2/core/Support.h"
+#include "adios2/core/adiosFunctions.h" //CSVToVector
 
 namespace adios
 {
@@ -78,7 +78,7 @@ void HDF5Writer::Init()
 
     _plist_id = H5Pcreate(H5P_FILE_ACCESS);
 
-#ifdef ADIOS_HAVE_MPI
+#ifdef ADIOS2_HAVE_MPI
     H5Pset_fapl_mpio(_plist_id, m_MPIComm, MPI_INFO_NULL);
 #endif
 
@@ -342,7 +342,7 @@ void HDF5Writer::UseHDFWrite(Variable<T> &variable, const T *values,
     //  Create property list for collective dataset write.
 
     _plist_id = H5Pcreate(H5P_DATASET_XFER);
-#ifdef ADIOS_HAVE_MPI
+#ifdef ADIOS2_HAVE_MPI
     H5Pset_dxpl_mpio(_plist_id, H5FD_MPIO_COLLECTIVE);
 #endif
     herr_t status;
diff --git a/source/engine/hdf5/HDF5WriterP.h b/source/adios2/engine/hdf5/HDF5WriterP.h
similarity index 93%
rename from source/engine/hdf5/HDF5WriterP.h
rename to source/adios2/engine/hdf5/HDF5WriterP.h
index 64fc6031ceaf523e31fd4d02fa505cacf46f666d..33807473988c9d91aa0e42bfa9feded67d3f1dfd 100644
--- a/source/engine/hdf5/HDF5WriterP.h
+++ b/source/adios2/engine/hdf5/HDF5WriterP.h
@@ -9,15 +9,13 @@
  *      Author: Junmin
  */
 
-#ifndef HDF5_WRITER_P_H_
-#define HDF5_WRITER_P_H_
+#ifndef ADIOS2_ENGINE_HDF5_HDF5WRITERP_H__
+#define ADIOS2_ENGINE_HDF5_HDF5WRITERP_H__
 
-#include "core/Engine.h"
-
-// supported capsules
-#include "capsule/heap/STLVector.h"
-
-#include "ADIOS_MPI.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/ADIOS_MPI.h"
+#include "adios2/capsule/heap/STLVector.h"
+#include "adios2/core/Engine.h"
 
 #include <hdf5.h>
 
@@ -110,4 +108,4 @@ private:
 
 } // end namespace adios
 
-#endif /* HDF5_WRITER_P_H_ */
+#endif /* ADIOS2_ENGINE_HDF5_HDF5WRITERP_H__ */
diff --git a/source/mpidummy.cpp b/source/adios2/mpidummy.cpp
similarity index 99%
rename from source/mpidummy.cpp
rename to source/adios2/mpidummy.cpp
index c70ae74e0d74dd3a1215427e8d82e1ab36d55b5e..44baae4a060498c5b10a8a5f09a85af4214f54ae 100644
--- a/source/mpidummy.cpp
+++ b/source/adios2/mpidummy.cpp
@@ -12,21 +12,18 @@
    A dummy MPI implementation for the BP READ API, to have an MPI-free version
    of the API
 */
-/// \cond EXCLUDE_FROM_DOXYGEN
-#define __STDC_FORMAT_MACROS
-#include <cinttypes>
-#include <cstdint>
-#include <cstdio>
-#include <cstring>
 
-//#define _LARGEFILE64_SOURCE
-#include <unistd.h>
+#include "mpidummy.h"
 
 #include <sys/time.h>
 #include <sys/types.h>
-/// \endcond
+#include <unistd.h>
 
-#include "mpidummy.h"
+#define __STDC_FORMAT_MACROS
+#include <cinttypes>
+#include <cstdint>
+#include <cstdio>
+#include <cstring>
 
 #if defined(__APPLE__) || defined(__WIN32__) || defined(__CYGWIN__)
 #define lseek64 lseek
diff --git a/source/mpidummy.h b/source/adios2/mpidummy.h
similarity index 96%
rename from source/mpidummy.h
rename to source/adios2/mpidummy.h
index 86122ede8af34481a719166a9df32f9cddacd835..ed2b120584d2a334de31a43edfe6811cbce58dbb 100644
--- a/source/mpidummy.h
+++ b/source/adios2/mpidummy.h
@@ -3,8 +3,8 @@
  * accompanying file Copyright.txt for details.
  */
 
-#ifndef __MPI_DUMMY_H__
-#define __MPI_DUMMY_H__
+#ifndef ADIOS2_MPIDUMMY_H_
+#define ADIOS2_MPIDUMMY_H_
 
 /*
    A dummy MPI 'implementation' for the BP READ API, to have an MPI-free version
@@ -19,6 +19,8 @@
 #include <sys/types.h>
 /// \endcond
 
+#include "adios2/ADIOSConfig.h"
+
 namespace adios
 {
 
@@ -117,6 +119,6 @@ int MPI_Get_processor_name(char *name, int *resultlen);
 
 double MPI_Wtime();
 
-} // end namespace
+} // end namespace adios
 
-#endif
+#endif /* ADIOS2_MPIDUMMY_H_ */
diff --git a/source/transform/BZip2.cpp b/source/adios2/transform/BZip2.cpp
similarity index 100%
rename from source/transform/BZip2.cpp
rename to source/adios2/transform/BZip2.cpp
diff --git a/source/transform/BZip2.h b/source/adios2/transform/BZip2.h
similarity index 80%
rename from source/transform/BZip2.h
rename to source/adios2/transform/BZip2.h
index 57f7cf25d95aec06dbf8e91b21c6df518fc481ae..bf16fa75750c6e102ca920df3056352b9323273d 100644
--- a/source/transform/BZip2.h
+++ b/source/adios2/transform/BZip2.h
@@ -8,10 +8,11 @@
  *      Author: wfg
  */
 
-#ifndef BZIP2_H_
-#define BZIP2_H_
+#ifndef ADIOS2_TRANSFORM_BZIP2_H_
+#define ADIOS2_TRANSFORM_BZIP2_H_
 
-#include "core/Transform.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Transform.h"
 
 namespace adios
 {
@@ -41,4 +42,4 @@ public:
 } // end namespace transform
 } // end namespace adios
 
-#endif /* BZIP2_H_ */
+#endif /* ADIOS2_TRANSFORM_BZIP2_H_ */
diff --git a/source/transport/file/FStream.cpp b/source/adios2/transport/file/FStream.cpp
similarity index 97%
rename from source/transport/file/FStream.cpp
rename to source/adios2/transport/file/FStream.cpp
index 69b603e6355a2dfbf4d05164cf9fccef718a3557..a22f83da196504c55a520d7927920902cc08ff75 100644
--- a/source/transport/file/FStream.cpp
+++ b/source/adios2/transport/file/FStream.cpp
@@ -8,12 +8,10 @@
  *      Author: wfg
  */
 
-/// \cond EXCLUDED_FROM_DOXYGEN
+#include "FStream.h"
+
 #include <ios> // std::ios_base::failure
 #include <stdexcept>
-/// \endcond
-
-#include "FStream.h"
 
 namespace adios
 {
diff --git a/source/transport/file/FStream.h b/source/adios2/transport/file/FStream.h
similarity index 81%
rename from source/transport/file/FStream.h
rename to source/adios2/transport/file/FStream.h
index 79c6737c460b20cf4af7cdcc905bab7bbd865283..a0436d788f0dde895d0ad44f08057b0b5d2f9d52 100644
--- a/source/transport/file/FStream.h
+++ b/source/adios2/transport/file/FStream.h
@@ -8,14 +8,15 @@
  *      Author: wfg
  */
 
-#ifndef FSTREAM_H_
-#define FSTREAM_H_
+#ifndef ADIOS2_TRANSPORT_FILE_FSTREAM_H_
+#define ADIOS2_TRANSPORT_FILE_FSTREAM_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <fstream>
 /// \endcond
 
-#include "core/Transport.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Transport.h"
 
 namespace adios
 {
@@ -50,4 +51,4 @@ private:
 } // end namespace transport
 } // end namespace adios
 
-#endif /* FSTREAM_H_ */
+#endif /* ADIOS2_TRANSPORT_FILE_FSTREAM_H_ */
diff --git a/source/transport/file/FileDescriptor.cpp b/source/adios2/transport/file/FileDescriptor.cpp
similarity index 98%
rename from source/transport/file/FileDescriptor.cpp
rename to source/adios2/transport/file/FileDescriptor.cpp
index 29959987ae5a3f5607a8bf1a99cfd5d91d8df167..c64d6a4cfcdddcdd1b4de723f12c25c93046b495 100644
--- a/source/transport/file/FileDescriptor.cpp
+++ b/source/adios2/transport/file/FileDescriptor.cpp
@@ -8,16 +8,14 @@
  *      Author: wfg
  */
 
-/// \cond EXCLUDE_FROM_DOXYGEN
+#include "FileDescriptor.h"
+
 #include <fcntl.h>     // open
 #include <ios>         // std::ios_base::failure
 #include <stddef.h>    // write output
 #include <sys/stat.h>  // open
 #include <sys/types.h> // open
 #include <unistd.h>    // write, close
-/// \endcond
-
-#include "FileDescriptor.h"
 
 namespace adios
 {
diff --git a/source/transport/file/FileDescriptor.h b/source/adios2/transport/file/FileDescriptor.h
similarity index 77%
rename from source/transport/file/FileDescriptor.h
rename to source/adios2/transport/file/FileDescriptor.h
index 812bdcadb6e8591665c4c4f0505121db715e58db..7b87d13c3c959ffa9feb908e416a89c06aa901fc 100644
--- a/source/transport/file/FileDescriptor.h
+++ b/source/adios2/transport/file/FileDescriptor.h
@@ -8,10 +8,11 @@
  *      Author: wfg
  */
 
-#ifndef FILEDESCRIPTOR_H_
-#define FILEDESCRIPTOR_H_
+#ifndef ADIOS2_TRANSPORT_FILE_FILEDESCRIPTOR_H_
+#define ADIOS2_TRANSPORT_FILE_FILEDESCRIPTOR_H_
 
-#include "core/Transport.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Transport.h"
 
 namespace adios
 {
@@ -41,4 +42,4 @@ private:
 
 } // end namespace transport
 } // end namespace
-#endif /* FILEDESCRIPTOR_H_ */
+#endif /* ADIOS2_TRANSPORT_FILE_FILEDESCRIPTOR_H_ */
diff --git a/source/transport/file/FilePointer.cpp b/source/adios2/transport/file/FilePointer.cpp
similarity index 97%
rename from source/transport/file/FilePointer.cpp
rename to source/adios2/transport/file/FilePointer.cpp
index 8348d80ea62b2b86919b45812f4412fb7fae4c58..3e889420b7d7a36f8b0bb99dde1d73f8254203ab 100644
--- a/source/transport/file/FilePointer.cpp
+++ b/source/adios2/transport/file/FilePointer.cpp
@@ -8,12 +8,10 @@
  *      Author: wfg
  */
 
-/// \cond EXCLUDE_FROM_DOXYGEN
-#include <ios> //std::ios_base::failure
-/// \endcond
-
 #include "FilePointer.h"
 
+#include <ios> //std::ios_base::failure
+
 namespace adios
 {
 namespace transport
diff --git a/source/transport/file/FilePointer.h b/source/adios2/transport/file/FilePointer.h
similarity index 80%
rename from source/transport/file/FilePointer.h
rename to source/adios2/transport/file/FilePointer.h
index 0967e400b4cfe31009c092446617acecc5acd9f6..8761127044dc8114bf2fa93d4080226127f41ff7 100644
--- a/source/transport/file/FilePointer.h
+++ b/source/adios2/transport/file/FilePointer.h
@@ -8,14 +8,15 @@
  *      Author: wfg
  */
 
-#ifndef FILEPOINTER_H_
-#define FILEPOINTER_H_
+#ifndef ADIOS2_TRANSPORT_FILE_FILEPOINTER_H_
+#define ADIOS2_TRANSPORT_FILE_FILEPOINTER_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <stdio.h> // FILE*
 /// \endcond
 
-#include "core/Transport.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Transport.h"
 
 namespace adios
 {
@@ -51,4 +52,4 @@ private:
 } // end namespace transport
 } // end namespace
 
-#endif /* FILEPOINTER_H_ */
+#endif /* ADIOS2_TRANSPORT_FILE_FILEPOINTER_H_ */
diff --git a/source/transport/file/MPI_File.h b/source/adios2/transport/file/MPI_File.h
similarity index 79%
rename from source/transport/file/MPI_File.h
rename to source/adios2/transport/file/MPI_File.h
index 445df82000acfdf41b31a0404b2355c2b05a7962..d1098669b5bc6269414b80f8ec6968dda4b9d043 100644
--- a/source/transport/file/MPI_File.h
+++ b/source/adios2/transport/file/MPI_File.h
@@ -8,12 +8,11 @@
  *      Author: wfg
  */
 
-#ifndef MPI_FILE_H_
-#define MPI_FILE_H_
+#ifndef ADIOS2_TRANSPORT_FILE_MPI_FILE_H_
+#define ADIOS2_TRANSPORT_FILE_MPI_FILE_H_
 
-/// \cond EXCLUDE_FROM_DOXYGEN
-#include "ADIOS_MPI.h"
-/// \endcond
+#include "adios2/ADIOSConfig.h"
+#include "adios2/ADIOS_MPI.h"
 
 namespace adios
 {
@@ -48,4 +47,4 @@ private:
 } // end namespace transport
 } // end namespace
 
-#endif /* MPI_FILE_H_ */
+#endif /* ADIOS2_TRANSPORT_FILE_MPI_FILE_H_ */
diff --git a/source/transport/wan/MdtmMan.cpp b/source/adios2/transport/wan/MdtmMan.cpp
similarity index 100%
rename from source/transport/wan/MdtmMan.cpp
rename to source/adios2/transport/wan/MdtmMan.cpp
diff --git a/source/transport/wan/MdtmMan.h b/source/adios2/transport/wan/MdtmMan.h
similarity index 94%
rename from source/transport/wan/MdtmMan.h
rename to source/adios2/transport/wan/MdtmMan.h
index 78f0f92b8aadbc28d4c3858286d4392979151ee0..887ffae35d4e8936a89f8d9dada6e49152bc44a5 100644
--- a/source/transport/wan/MdtmMan.h
+++ b/source/adios2/transport/wan/MdtmMan.h
@@ -8,13 +8,13 @@
  *      Author: wfg
  */
 
-#ifndef MDTMMAN_H_
-#define MDTMMAN_H_
+#ifndef ADIOS2_TRANSPORT_WAN_MDTMMAN_H_
+#define ADIOS2_TRANSPORT_WAN_MDTMMAN_H_
 
-#include "core/Transport.h"
-#include "external/json.hpp"
+#include <json.hpp>
 
-#include "utilities/realtime/dataman/DataManBase.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/Transport.h"
 
 namespace adios
 {
@@ -137,4 +137,4 @@ private:
 } // end namespace transport
 } // end namespace
 
-#endif /* MDTMMAN_H_ */
+#endif /* ADIOS2_TRANSPORT_WAN_MDTMMAN_H_ */
diff --git a/source/adios2/utilities/format/bp1/BP1.h b/source/adios2/utilities/format/bp1/BP1.h
new file mode 100644
index 0000000000000000000000000000000000000000..bc9ffb84acc7d8e098b7b9f6a65d5a3ed1fd59bd
--- /dev/null
+++ b/source/adios2/utilities/format/bp1/BP1.h
@@ -0,0 +1,19 @@
+/*
+ * Distributed under the OSI-approved Apache License, Version 2.0.  See
+ * accompanying file Copyright.txt for details.
+ *
+ * BP1.h
+ *
+ *  Created on: Apr 4, 2017
+ *      Author: wfg
+ */
+
+#ifndef ADIOS2_UTILITIES_FORMAT_BP1_BP1_H_
+#define ADIOS2_UTILITIES_FORMAT_BP1_BP1_H_
+
+#include "adios2/ADIOSConfig.h"
+#include "adios2/utilities/format/bp1/BP1Aggregator.h"
+#include "adios2/utilities/format/bp1/BP1Structs.h"
+#include "adios2/utilities/format/bp1/BP1Writer.h"
+
+#endif /* ADIOS2_UTILITIES_FORMAT_BP1_BP1_H_ */
diff --git a/source/utilities/format/bp1/BP1Aggregator.cpp b/source/adios2/utilities/format/bp1/BP1Aggregator.cpp
similarity index 98%
rename from source/utilities/format/bp1/BP1Aggregator.cpp
rename to source/adios2/utilities/format/bp1/BP1Aggregator.cpp
index 7cb585ed8b4ac46ce4843fd9850dc571701f87c5..b26215f186ef1194d5a98977dddf31fc8c90c907 100644
--- a/source/utilities/format/bp1/BP1Aggregator.cpp
+++ b/source/adios2/utilities/format/bp1/BP1Aggregator.cpp
@@ -8,13 +8,11 @@
  *      Author: wfg
  */
 
-/// \cond EXCLUDE_FROM_DOXYGEN
 #include "BP1Aggregator.h"
 
 #include <fstream>
 #include <stdexcept>
 #include <vector>
-/// \endcond
 
 namespace adios
 {
diff --git a/source/utilities/format/bp1/BP1Aggregator.h b/source/adios2/utilities/format/bp1/BP1Aggregator.h
similarity index 84%
rename from source/utilities/format/bp1/BP1Aggregator.h
rename to source/adios2/utilities/format/bp1/BP1Aggregator.h
index 8682ba62b84c625b94fe28e93776e513310985d0..f1fc6c61fe986b5864f107c7814b281f5dde691b 100644
--- a/source/utilities/format/bp1/BP1Aggregator.h
+++ b/source/adios2/utilities/format/bp1/BP1Aggregator.h
@@ -8,14 +8,15 @@
  *      Author: wfg
  */
 
-#ifndef BP1AGGREGATOR_H_
-#define BP1AGGREGATOR_H_
+#ifndef ADIOS2_UTILITIES_FORMAT_BP1_BP1AGGREGATOR_H_
+#define ADIOS2_UTILITIES_FORMAT_BP1_BP1AGGREGATOR_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <string>
 /// \endcond
 
-#include "ADIOS_MPI.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/ADIOS_MPI.h"
 
 namespace adios
 {
@@ -56,4 +57,4 @@ private:
 } // end namespace format
 } // end namespace adios
 
-#endif /* BP1AGGREGATOR_H_ */
+#endif /* ADIOS2_UTILITIES_FORMAT_BP1_BP1AGGREGATOR_H_ */
diff --git a/source/utilities/format/bp1/BP1Base.cpp b/source/adios2/utilities/format/bp1/BP1Base.cpp
similarity index 98%
rename from source/utilities/format/bp1/BP1Base.cpp
rename to source/adios2/utilities/format/bp1/BP1Base.cpp
index c31d5dec19999851e53abc918728dbfe53677851..86da561c739e14a4855385f6d2bc9bc4203df254 100644
--- a/source/utilities/format/bp1/BP1Base.cpp
+++ b/source/adios2/utilities/format/bp1/BP1Base.cpp
@@ -9,7 +9,8 @@
  */
 
 #include "BP1Base.h"
-#include "core/adiosFunctions.h"
+
+#include "adios2/core/adiosFunctions.h"
 
 namespace adios
 {
diff --git a/source/utilities/format/bp1/BP1Base.h b/source/adios2/utilities/format/bp1/BP1Base.h
similarity index 96%
rename from source/utilities/format/bp1/BP1Base.h
rename to source/adios2/utilities/format/bp1/BP1Base.h
index bb5173103545477c79111b1abc38436cdb21bf46..f9ce6493881909421cfca6ef094d9ba3e11b1f7d 100644
--- a/source/utilities/format/bp1/BP1Base.h
+++ b/source/adios2/utilities/format/bp1/BP1Base.h
@@ -8,8 +8,8 @@
  *      Author: wfg
  */
 
-#ifndef BP1BASE_H_
-#define BP1BASE_H_
+#ifndef ADIOS2_UTILITIES_FORMAT_BP1_BP1BASE_H_
+#define ADIOS2_UTILITIES_FORMAT_BP1_BP1BASE_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <cstdint> //std::uintX_t
@@ -18,9 +18,9 @@
 #include <vector>
 /// \endcond
 
-//#include <queue>  //std::priority_queue to be added later
-#include "ADIOS_MPI.h"
-#include "core/Transport.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/ADIOS_MPI.h"
+#include "adios2/core/Transport.h"
 
 namespace adios
 {
@@ -277,4 +277,4 @@ inline std::int8_t BP1Base::GetDataType<long double>() const noexcept
 } // end namespace format
 } // end namespace adios
 
-#endif /* BP1BASE_H_ */
+#endif /* ADIOS2_UTILITIES_FORMAT_BP1_BP1BASE_H_ */
diff --git a/source/utilities/format/bp1/BP1Structs.h b/source/adios2/utilities/format/bp1/BP1Structs.h
similarity index 90%
rename from source/utilities/format/bp1/BP1Structs.h
rename to source/adios2/utilities/format/bp1/BP1Structs.h
index 77f22feb80510bc1acf458c633a7bb39b99d8fac..60a79a04adefac460ef621e3e83111ff4cf41bf1 100644
--- a/source/utilities/format/bp1/BP1Structs.h
+++ b/source/adios2/utilities/format/bp1/BP1Structs.h
@@ -8,8 +8,8 @@
  *      Author: wfg
  */
 
-#ifndef BP1STRUCTS_H_
-#define BP1STRUCTS_H_
+#ifndef ADIOS2_UTILITIES_FORMAT_BP1_BP1STRUCTS_H_
+#define ADIOS2_UTILITIES_FORMAT_BP1_BP1STRUCTS_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <cstdint>
@@ -18,7 +18,8 @@
 #include <vector>
 /// \endcond
 
-#include "core/IOChrono.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/core/IOChrono.h"
 
 namespace adios
 {
@@ -84,4 +85,4 @@ struct BP1MetadataSet
 } // end namespace format
 } // end namespace adios
 
-#endif /* BP1STRUCTS_H_ */
+#endif /* ADIOS2_UTILITIES_FORMAT_BP1_BP1STRUCTS_H_ */
diff --git a/source/utilities/format/bp1/BP1Writer.cpp b/source/adios2/utilities/format/bp1/BP1Writer.cpp
similarity index 99%
rename from source/utilities/format/bp1/BP1Writer.cpp
rename to source/adios2/utilities/format/bp1/BP1Writer.cpp
index 12b3139a4dafed5b897bdfa86cf880247d2af4c1..6f42bc968b7b944be9565ed2030b3bf85e5b132f 100644
--- a/source/utilities/format/bp1/BP1Writer.cpp
+++ b/source/adios2/utilities/format/bp1/BP1Writer.cpp
@@ -8,14 +8,12 @@
  *      Author: wfg
  */
 
-/// \cond EXCLUDE_FROM_DOXYGEN
-#include <string>
-#include <vector>
-/// \endcond
-
 #include "BP1Writer.h"
 #include "BP1Writer.tcc"
 
+#include <string>
+#include <vector>
+
 namespace adios
 {
 namespace format
diff --git a/source/utilities/format/bp1/BP1Writer.h b/source/adios2/utilities/format/bp1/BP1Writer.h
similarity index 94%
rename from source/utilities/format/bp1/BP1Writer.h
rename to source/adios2/utilities/format/bp1/BP1Writer.h
index b8876c7f34b0e671d5fa42f25d2e013f7cef806f..ba898ea1e118e0d428227bbed2c074e05fb61641 100644
--- a/source/utilities/format/bp1/BP1Writer.h
+++ b/source/adios2/utilities/format/bp1/BP1Writer.h
@@ -8,8 +8,8 @@
  *      Author: wfg
  */
 
-#ifndef BP1WRITER_H_
-#define BP1WRITER_H_
+#ifndef ADIOS2_UTILITIES_FORMAT_BP1_BP1WRITER_H_
+#define ADIOS2_UTILITIES_FORMAT_BP1_BP1WRITER_H_
 
 /// \cond EXCLUDE_FROM_DOXYGEN
 #include <algorithm> //std::count, std::copy, std::for_each
@@ -17,15 +17,15 @@
 #include <cstring>   //std::memcpy
 /// \endcond
 
-#include "ADIOSMacros.h"
-#include "ADIOSTypes.h"
-#include "utilities/format/bp1/BP1Base.h"
-#include "utilities/format/bp1/BP1Structs.h"
-
-#include "capsule/heap/STLVector.h"
-#include "core/Variable.h"
-#include "core/adiosFunctions.h"
-#include "core/adiosTemplates.h"
+#include "adios2/ADIOSConfig.h"
+#include "adios2/ADIOSMacros.h"
+#include "adios2/ADIOSTypes.h"
+#include "adios2/capsule/heap/STLVector.h"
+#include "adios2/core/Variable.h"
+#include "adios2/core/adiosFunctions.h"
+#include "adios2/core/adiosTemplates.h"
+#include "adios2/utilities/format/bp1/BP1Base.h"
+#include "adios2/utilities/format/bp1/BP1Structs.h"
 
 namespace adios
 {
@@ -264,4 +264,4 @@ ADIOS_FOREACH_TYPE_1ARG(declare_template_instantiation)
 } // end namespace format
 } // end namespace adios
 
-#endif /* BP1WRITER_H_ */
+#endif /* ADIOS2_UTILITIES_FORMAT_BP1_BP1WRITER_H_ */
diff --git a/source/utilities/format/bp1/BP1Writer.tcc b/source/adios2/utilities/format/bp1/BP1Writer.tcc
similarity index 98%
rename from source/utilities/format/bp1/BP1Writer.tcc
rename to source/adios2/utilities/format/bp1/BP1Writer.tcc
index bab7bb9c8c3da815a152ed3745972c7d7be7b6dc..1e5f0fb4fb914256dc61b28e6ecea6bd2d720470 100644
--- a/source/utilities/format/bp1/BP1Writer.tcc
+++ b/source/adios2/utilities/format/bp1/BP1Writer.tcc
@@ -7,8 +7,8 @@
  *  Created on: Apr 11, 2017
  *      Author: wfg
  */
-#ifndef BP1WRITER_TCC_
-#define BP1WRITER_TCC_
+#ifndef ADIOS2_UTILITIES_FORMAT_BP1_BP1WRITER_TCC_
+#define ADIOS2_UTILITIES_FORMAT_BP1_BP1WRITER_TCC_
 
 #include "BP1Writer.h"
 
@@ -303,4 +303,4 @@ void BP1Writer::WriteVariableCharacteristics(
 } // end namespace format
 } // end namespace adios
 
-#endif // BP1WRITER_TCC_
+#endif // ADIOS2_UTILITIES_FORMAT_BP1_BP1WRITER_TCC_
diff --git a/source/dataman/CMakeLists.txt b/source/dataman/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..947f927d18b1d961c902170f943c1816e2d24b60
--- /dev/null
+++ b/source/dataman/CMakeLists.txt
@@ -0,0 +1,18 @@
+#------------------------------------------------------------------------------#
+# Distributed under the OSI-approved Apache License, Version 2.0.  See
+# accompanying file Copyright.txt for details.
+#------------------------------------------------------------------------------#
+
+add_library(dataman
+  DataManBase.h DataManBase.cpp
+  DataMan.h DataMan.cpp
+)
+target_include_directories(dataman PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+target_link_libraries(dataman PUBLIC ${CMAKE_DL_LIBS})
+
+install(
+  TARGETS dataman EXPORT adios2
+  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
diff --git a/source/utilities/realtime/dataman/DataMan.cpp b/source/dataman/DataMan.cpp
similarity index 94%
rename from source/utilities/realtime/dataman/DataMan.cpp
rename to source/dataman/DataMan.cpp
index 84bad36c983018ada867d94f8dfead272f518e6e..5d8f446a4bc8002f797ddaacb8093bff706654f5 100644
--- a/source/utilities/realtime/dataman/DataMan.cpp
+++ b/source/dataman/DataMan.cpp
@@ -10,11 +10,6 @@
 
 #include "DataMan.h"
 
-namespace adios
-{
-namespace realtime
-{
-
 int DataMan::init(json p_jmsg) { return 0; }
 
 int DataMan::put(const void *p_data, std::string p_doid, std::string p_var,
@@ -72,8 +67,3 @@ void DataMan::add_stream(json p_jmsg)
 void DataMan::flush() { flush_next(); }
 
 int DataMan::get(void *p_data, json &p_jmsg) { return 0; }
-
-// end namespace realtime
-}
-// end namespace adios
-}
diff --git a/source/utilities/realtime/dataman/DataMan.h b/source/dataman/DataMan.h
similarity index 86%
rename from source/utilities/realtime/dataman/DataMan.h
rename to source/dataman/DataMan.h
index 59640e933fd9e1a5dc12800a2b3e924ff42bf92c..709f5e7f1ef2cea4e710d9507e10d4901051f725 100644
--- a/source/utilities/realtime/dataman/DataMan.h
+++ b/source/dataman/DataMan.h
@@ -8,15 +8,10 @@
  *      Author: Jason Wang
  */
 
-#ifndef DATAMANAGER_H_
-#define DATAMANAGER_H_
+#ifndef DATAMAN_H_
+#define DATAMAN_H_
 
-#include "utilities/realtime/dataman/DataManBase.h"
-
-namespace adios
-{
-namespace realtime
-{
+#include "DataManBase.h"
 
 class DataMan : public DataManBase
 {
@@ -47,8 +42,4 @@ private:
     std::vector<int> m_priority;
 };
 
-// end namespace realtime
-}
-// end namespace adios
-}
-#endif
+#endif /* DATAMAN_H_ */
diff --git a/source/utilities/realtime/dataman/DataManBase.cpp b/source/dataman/DataManBase.cpp
similarity index 98%
rename from source/utilities/realtime/dataman/DataManBase.cpp
rename to source/dataman/DataManBase.cpp
index c2f8ca6114e830ad99f0ea95b8fb3cf985fe1b6f..5f9f73ec8b53b456a2dd2d4c589ae5e98c4276f4 100644
--- a/source/utilities/realtime/dataman/DataManBase.cpp
+++ b/source/dataman/DataManBase.cpp
@@ -10,11 +10,6 @@
 
 #include "DataManBase.h"
 
-namespace adios
-{
-namespace realtime
-{
-
 DataManBase::DataManBase()
 {
     m_profiling["total_manager_time"] = 0.0f;
@@ -261,8 +256,3 @@ std::shared_ptr<DataManBase> DataManBase::get_man(std::string method)
     }
     return nullptr;
 }
-
-// end namespace realtime
-}
-// end namespace adios
-}
diff --git a/source/utilities/realtime/dataman/DataManBase.h b/source/dataman/DataManBase.h
similarity index 97%
rename from source/utilities/realtime/dataman/DataManBase.h
rename to source/dataman/DataManBase.h
index 9d14457427a4feeaeff65222c1d6a42fef352a12..9b8b116b6b431c659e1b1508bcb4231518e4606b 100644
--- a/source/utilities/realtime/dataman/DataManBase.h
+++ b/source/dataman/DataManBase.h
@@ -8,8 +8,8 @@
  *      Author: Jason Wang
  */
 
-#ifndef DATAMAN_H_
-#define DATAMAN_H_
+#ifndef DATAMANBASE_H_
+#define DATAMANBASE_H_
 
 #include <cstdint>
 
@@ -24,12 +24,7 @@
 #include <string>
 #include <vector>
 
-#include "external/json.hpp"
-
-namespace adios
-{
-namespace realtime
-{
+#include "json.hpp"
 
 class DataManBase
 {
@@ -276,8 +271,4 @@ private:
     bool m_profiling_enabled = false;
 };
 
-// end namespace realtime
-}
-// end namespace adios
-}
-#endif
+#endif /* DATAMANBASE_H_ */
diff --git a/source/external/json.hpp b/source/dataman/json.hpp
similarity index 100%
rename from source/external/json.hpp
rename to source/dataman/json.hpp
diff --git a/source/utilities/format/bp1/BP1.h b/source/utilities/format/bp1/BP1.h
deleted file mode 100644
index d1b394088ed27a85e9d7a9cd2a448a9cbd986146..0000000000000000000000000000000000000000
--- a/source/utilities/format/bp1/BP1.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Distributed under the OSI-approved Apache License, Version 2.0.  See
- * accompanying file Copyright.txt for details.
- *
- * BP1.h
- *
- *  Created on: Apr 4, 2017
- *      Author: wfg
- */
-
-#ifndef BP1_H_
-#define BP1_H_
-
-#include "utilities/format/bp1/BP1Aggregator.h"
-#include "utilities/format/bp1/BP1Structs.h"
-#include "utilities/format/bp1/BP1Writer.h"
-
-#endif /* BP1_H_ */