diff --git a/CMakeLists.txt b/CMakeLists.txt
index 89463224a89678ee16c84af00e469d88ec185054..0fbada3757ab7ac6375e1d974a64216b3e499a41 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -72,6 +72,7 @@ if(ADIOS_USE_MPI)
 endif()
 option(ADIOS_USE_BZip2 "Enable support for BZip2 transforms" OFF)
 option(ADIOS_USE_ADIOS1 "Enable support for the ADIOS 1 engine" OFF)
+option(ADIOS_USE_HDF5 "Enable support for the HDF5 engine" OFF)
 
 # DataMan is not a user-settable option.  It will always be enabled if the
 # platform supports it.
@@ -137,5 +138,5 @@ message("    MPI:     ${ADIOS_USE_MPI}")
 message("    BZip2:   ${ADIOS_USE_BZip2}")
 message("    ADIOS1:  ${ADIOS_USE_ADIOS1}")
 message("    DataMan: ${ADIOS_USE_DataMan}")
-message("    HDF5: ${ADIOS_USE_PHDF5}")
+message("    HDF5:    ${ADIOS_USE_HDF5}")
 message("")
diff --git a/cmake/FindADIOS1.cmake b/cmake/FindADIOS1.cmake
index 867539a498b8790715137ff3e2d7725fe493b1c7..4e4accd11c0b601d40b7a0022d475515f71939bc 100644
--- a/cmake/FindADIOS1.cmake
+++ b/cmake/FindADIOS1.cmake
@@ -244,20 +244,20 @@ endif()
 # handles the REQUIRED, QUIET and version-related arguments for find_package
 include(FindPackageHandleStandardArgs)
 find_package_handle_standard_args(ADIOS1
-    REQUIRED_VARS ADIOS1_LIBRARY_PATH ADIOS1_DEPENDENCY_LIBRARIES ADIOS1_INCLUDE_DIRS
-    VERSION_VAR ADIOS1_VERSION
+    REQUIRED_VARS
+      ADIOS1_LIBRARY_PATH ADIOS1_DEPENDENCY_LIBRARIES ADIOS1_INCLUDE_DIRS
+    VERSION_VAR
+      ADIOS1_VERSION
 )
 
 ##########################################################################
 # Add target and dependencies to ADIOS2
 ##########################################################################
-#message(STATUS "ADIOS1 Find ended with ${ADIOS1_FOUND}")
-    if(ADIOS1_FOUND AND NOT TARGET adios1::adios)
-      message(STATUS "Add library ADIOS1 to the build")
-      add_library(adios1::adios UNKNOWN IMPORTED)
-      set_target_properties(adios1::adios PROPERTIES
-        IMPORTED_LOCATION "${ADIOS1_LIBRARY_PATH}"
-        INTERFACE_LINK_LIBRARIES "${ADIOS1_DEPENDENCY_LIBRARIES}"
-        INTERFACE_INCLUDE_DIRECTORIES "${ADIOS1_INCLUDE_DIRS}"
-      )
-    endif()
+if(ADIOS1_FOUND AND NOT TARGET adios1::adios)
+  add_library(adios1::adios UNKNOWN IMPORTED)
+  set_target_properties(adios1::adios PROPERTIES
+    IMPORTED_LOCATION "${ADIOS1_LIBRARY_PATH}"
+    INTERFACE_LINK_LIBRARIES "${ADIOS1_DEPENDENCY_LIBRARIES}"
+    INTERFACE_INCLUDE_DIRECTORIES "${ADIOS1_INCLUDE_DIRS}"
+  )
+endif()
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 62a642e966648cd5d2d73c4473146429920fa58a..fb4e9725225604ab835ab32e719f5a6797418d08 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -3,107 +3,102 @@
 # accompanying file Copyright.txt for details.
 #------------------------------------------------------------------------------#
   
-set(adios2_targets adios2_nompi)
-if(ADIOS_USE_MPI)
-  list(APPEND adios2_targets adios2)
-endif()
-  
-foreach(adios2_target IN LISTS adios2_targets)
-  add_library(${adios2_target}
-    ADIOS.cpp ADIOS.tcc
-    #ADIOS_C.cpp
+add_library(adios2
+  ADIOS.cpp ADIOS.tcc
+  #ADIOS_C.cpp
   
-    capsule/heap/STLVector.cpp
-    capsule/shmem/ShmSystemV.cpp
+  capsule/heap/STLVector.cpp
+  capsule/shmem/ShmSystemV.cpp
   
-    core/Capsule.cpp
-    core/Engine.cpp
-    core/Method.cpp
-    core/Support.cpp
-    core/Transform.cpp
-    core/Transport.cpp
+  core/Capsule.cpp
+  core/Engine.cpp
+  core/Method.cpp
+  core/Support.cpp
+  core/Transform.cpp
+  core/Transport.cpp
   
-    engine/bp/BPFileReader.cpp
-    engine/bp/BPFileWriter.cpp
+  engine/bp/BPFileReader.cpp
+  engine/bp/BPFileWriter.cpp
 
-    utilities/format/bp1/BP1Base.cpp
-    utilities/format/bp1/BP1Aggregator.cpp
-    utilities/format/bp1/BP1Writer.cpp
+  utilities/format/bp1/BP1Base.cpp
+  utilities/format/bp1/BP1Aggregator.cpp
+  utilities/format/bp1/BP1Writer.cpp
     
-    utilities/profiling/iochrono/Timer.cpp
-  
-    functions/adiosFunctions.cpp
+  utilities/profiling/iochrono/Timer.cpp
+
+  functions/adiosFunctions.cpp
   
-    transport/file/FStream.cpp
-    transport/file/FileDescriptor.cpp
-    transport/file/FilePointer.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
+  utilities/format/bp1/BP1Base.cpp
+  utilities/format/bp1/BP1Aggregator.cpp
+  utilities/format/bp1/BP1Writer.cpp
+  utilities/format/bp1/BP1Writer.tcc
     
-    utilities/profiling/iochrono/Timer.cpp
-  )
-  target_include_directories(${adios2_target}
-    PUBLIC ${ADIOS_SOURCE_DIR}/include
-  )
+  utilities/profiling/iochrono/Timer.cpp
+)
+target_include_directories(adios2
+  PUBLIC ${ADIOS_SOURCE_DIR}/include
+)
   
-  if(ADIOS_USE_DataMan)
-    target_sources(${adios2_target} 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_target} PRIVATE ADIOS_HAVE_DATAMAN)
-    target_link_libraries(${adios2_target} PRIVATE ${CMAKE_DL_LIBS})
-  endif()
+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_target} PRIVATE transform/BZip2.cpp)
-    target_compile_definitions(${adios2_target} PRIVATE ADIOS_HAVE_BZIP2)
-    target_link_libraries(${adios2_target} PRIVATE BZip2::BZip2)
-  endif()
-endforeach()
-
-target_sources(adios2_nompi PRIVATE mpidummy.cpp)
-if(CMAKE_CXX_COMPILER_WRAPPER STREQUAL CrayPrgEnv)
-  target_compile_options(adios2_nompi PRIVATE --cray-bypass-pkgconfig)
+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_ADIOS1)
+  if(ADIOS_HAVE_MPI)
     find_package(ADIOS1 REQUIRED)
-    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)
+  else()
+    find_package(ADIOS1 COMPONENTS sequential REQUIRED)
   endif()
 
-  if(ADIOS_USE_PHDF5)
-    find_package(HDF5 REQUIRED)
-    message("    HDF5 ROOT:   ${HDF5_ROOT}")
-    message("    HDF5 include:   ${HDF5_INCLUDE_DIRS}   is paralle? ${HDF5_IS_PARALLEL}")
-
-    target_include_directories(adios2 PRIVATE ${HDF5_INCLUDE_DIRS})
+  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()
 
-    target_sources(adios2 PRIVATE
-      engine/hdf5/HDF5ReaderP.cpp
-      engine/hdf5/HDF5WriterP.cpp
-    )
-    target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_PHDF5)
-    target_link_libraries(adios2 PRIVATE ${HDF5_C_LIBRARIES})
+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 requires a parallel 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})
 endif()