diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0396a1c4620a641fbd26c725875b5a2ca7ab34e4..9e267cc5b85cc4484ccfc515bb039722c71a2548 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -65,12 +65,12 @@ if(ADIOS_ENABLE_PIC)
   set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 endif()
 
-option(ADIOS_USE_MPI "Enable the MPI version of ADIOS" ON)
+option(ADIOS_USE_MPI "Enable the MPI version of ADIOS" OFF)
 if(ADIOS_USE_MPI)
   # Workaround for OpenMPI forcing the link of C++ bindings
   add_definitions(-DOMPI_SKIP_MPICXX)
 endif()
-option(ADIOS_USE_BZip2 "Enable support for BZip2 transforms" ON)
+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_DataMan "Enable support for the DataMan engine" OFF)
 
diff --git a/examples/hello/bpWriter/CMakeLists.txt b/examples/hello/bpWriter/CMakeLists.txt
index 67e193342b05fe0c7d99881038a69e5233706fda..d208c353979cc633ec57c741583831d27be03081 100644
--- a/examples/hello/bpWriter/CMakeLists.txt
+++ b/examples/hello/bpWriter/CMakeLists.txt
@@ -3,6 +3,13 @@
 # accompanying file Copyright.txt for details.
 #------------------------------------------------------------------------------#
 
+add_executable(hello_bpWriter_nompi helloBPWriter_nompi.cpp)
+target_link_libraries(hello_bpWriter_nompi adios2_nompi)
+
+if(ADIOS_BUILD_TESTING)
+  add_test( NAME Example::hello::bpWriter_nompi COMMAND hello_bpWriter_nompi)
+endif()
+
 if(ADIOS_USE_MPI)
   find_package(MPI COMPONENTS C REQUIRED)
   add_executable(hello_bpWriter helloBPWriter.cpp)
@@ -12,12 +19,5 @@ if(ADIOS_USE_MPI)
   if(ADIOS_BUILD_TESTING)
     add_test( NAME Example::hello::bpWriter COMMAND hello_bpWriter)
   endif()
-else()
-  add_executable(hello_bpWriter_nompi helloBPWriter_nompi.cpp)
-  target_link_libraries(hello_bpWriter_nompi adios2)
-
-  if(ADIOS_BUILD_TESTING)
-    add_test( NAME Example::hello::bpWriter_nompi COMMAND hello_bpWriter_nompi)
-  endif()
 endif()
 
diff --git a/examples/hello/datamanReader/CMakeLists.txt b/examples/hello/datamanReader/CMakeLists.txt
index 3aa3e264ad829cf697e9cd91a6336d6fcf8b668d..34db8ffb63b807a029daa91ad67f80614170c736 100644
--- a/examples/hello/datamanReader/CMakeLists.txt
+++ b/examples/hello/datamanReader/CMakeLists.txt
@@ -3,6 +3,16 @@
 # accompanying file Copyright.txt for details.
 #------------------------------------------------------------------------------#
 
+add_executable(hello_datamanReader_nompi helloDataManReader_nompi.cpp)
+target_link_libraries(hello_datamanReader_nompi adios2_nompi)
+
+if(ADIOS_BUILD_TESTING)
+  add_test(
+    NAME Example::hello::datamanReader_nompi
+    COMMAND hello_datamanReader_nompi
+  )
+endif()
+
 if(ADIOS_USE_MPI)
   find_package(MPI COMPONENTS C REQUIRED)
 
@@ -14,15 +24,5 @@ if(ADIOS_USE_MPI)
   if(ADIOS_BUILD_TESTING)
     add_test(NAME Example::hello::datamanReader COMMAND hello_datamanReader)
   endif()
-else()
-  add_executable(hello_datamanReader_nompi helloDataManReader_nompi.cpp)
-  target_link_libraries(hello_datamanReader_nompi adios2)
-
-  if(ADIOS_BUILD_TESTING)
-    add_test(
-      NAME Example::hello::datamanReader_nompi
-      COMMAND hello_datamanReader_nompi
-    )
-  endif()
 endif()
   
diff --git a/examples/hello/datamanWriter/CMakeLists.txt b/examples/hello/datamanWriter/CMakeLists.txt
index 7defd6c40b3bd2eba1802a4e6e99dd41f5de1697..c9268d31c761aac93069bee68adcae9fa2289530 100644
--- a/examples/hello/datamanWriter/CMakeLists.txt
+++ b/examples/hello/datamanWriter/CMakeLists.txt
@@ -3,6 +3,16 @@
 # accompanying file Copyright.txt for details.
 #------------------------------------------------------------------------------#
 
+add_executable(hello_datamanWriter_nompi helloDataManWriter_nompi.cpp)
+target_link_libraries(hello_datamanWriter_nompi adios2_nompi)
+
+if(ADIOS_BUILD_TESTING)
+  add_test(
+    NAME Example::hello::datamanWriter_nompi
+    COMMAND hello_datamanWriter_nompi
+  )
+endif()
+
 if(ADIOS_USE_MPI)
   find_package(MPI COMPONENTS C REQUIRED)
   
@@ -14,15 +24,5 @@ if(ADIOS_USE_MPI)
   if(ADIOS_BUILD_TESTING)
     add_test(NAME Example::hello::datamanWriter COMMAND hello_datamanWriter)
   endif()
-else()
-  add_executable(hello_datamanWriter_nompi helloDataManWriter_nompi.cpp)
-  target_link_libraries(hello_datamanWriter_nompi adios2)
-
-  if(ADIOS_BUILD_TESTING)
-    add_test(
-      NAME Example::hello::datamanWriter_nompi
-      COMMAND hello_datamanWriter_nompi
-    )
-  endif()
 endif()
 
diff --git a/examples/hello/timeBP/CMakeLists.txt b/examples/hello/timeBP/CMakeLists.txt
index d86828c90625a3a4e34952730fcd6ed9631c2949..949e8145e18683463df84e4b555e065901bc9e03 100644
--- a/examples/hello/timeBP/CMakeLists.txt
+++ b/examples/hello/timeBP/CMakeLists.txt
@@ -3,6 +3,16 @@
 # accompanying file Copyright.txt for details.
 #------------------------------------------------------------------------------#
 
+add_executable(hello_timeBPWriter_nompi timeBPWriter_nompi.cpp)
+target_link_libraries(hello_timeBPWriter_nompi adios2_nompi)
+
+if(ADIOS_BUILD_TESTING)
+  add_test(
+    NAME Example::hello::timeBPWriter_nompi
+    COMMAND hello_timeBPWriter_nompi
+  )
+endif()
+
 if(ADIOS_USE_MPI)
   find_package(MPI COMPONENTS C REQUIRED)
   add_executable(hello_timeBPWriter timeBPWriter.cpp)
@@ -13,14 +23,4 @@ if(ADIOS_USE_MPI)
   if(ADIOS_BUILD_TESTING)
     add_test(NAME Example::hello::timeBPWriter COMMAND hello_timeBPWriter)
   endif()
-else()
-  add_executable(hello_timeBPWriter_nompi timeBPWriter_nompi.cpp)
-  target_link_libraries(hello_timeBPWriter_nompi adios2)
-
-  if(ADIOS_BUILD_TESTING)
-    add_test(
-      NAME Example::hello::timeBPWriter_nompi
-      COMMAND hello_timeBPWriter_nompi
-    )
-  endif()
 endif()
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index beb96bfe6edb34ef6ee8cacd34bc11e4c0651204..1b3472a4020d6a4cfea8858aea614bb1a04b24b5 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -2,69 +2,81 @@
 # Distributed under the OSI-approved Apache License, Version 2.0.  See
 # 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_inst.cpp
+    #ADIOS_C.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
+  
+    engine/bp/BPFileReader.cpp
+    engine/bp/BPFileWriter.cpp
+  
+    format/BP1.cpp
+    format/BP1Aggregator.cpp
+    format/BP1Writer.cpp
+  
+    functions/adiosFunctions.cpp
+  
+    transport/file/FStream.cpp
+    transport/file/FileDescriptor.cpp
+    transport/file/FilePointer.cpp
+  )
+  target_include_directories(${adios2_target}
+    PUBLIC ${ADIOS_SOURCE_DIR}/include
+  )
+  
+  if(ADIOS_USE_ADIOS1)
+    find_package(ADIOS REQUIRED)
+    target_sources(${adios2_target} PRIVATE
+      engine/adios1/ADIOS1Reader.cpp
+      engine/adios1/ADIOS1Writer.cpp
+    )
+    target_compile_definitions(${adios2_target} PRIVATE ADIOS_HAVE_ADIOS1)
+    target_link_libraries(${adios2_target} PRIVATE adios::adios)
+  endif()
+  
+  if(ADIOS_USE_DataMan)
+    find_package(DataMan REQUIRED)
+    target_sources(${adios2_target} PRIVATE
+      engine/dataman/DataManReader.cpp
+      engine/dataman/DataManWriter.cpp
+      transport/wan/MdtmMan.cpp
+    )
+    target_compile_definitions(${adios2_target} PRIVATE ADIOS_HAVE_DATAMAN)
+    target_link_libraries(${adios2_target} PRIVATE DataMan::DataMan)
+  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()
 
-add_library(adios2
-  ADIOS.cpp ADIOS_inst.cpp
-  #ADIOS_C.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
-
-  engine/bp/BPFileReader.cpp
-  engine/bp/BPFileWriter.cpp
-
-  format/BP1.cpp
-  format/BP1Aggregator.cpp
-  format/BP1Writer.cpp
-
-  functions/adiosFunctions.cpp
-
-  transport/file/FStream.cpp
-  transport/file/FileDescriptor.cpp
-  transport/file/FilePointer.cpp
-)
-target_include_directories(adios2 PUBLIC ${ADIOS_SOURCE_DIR}/include)
+target_sources(adios2_nompi PRIVATE mpidummy.cpp)
+if(CMAKE_CXX_COMPILER_WRAPPER STREQUAL CrayPrgEnv)
+  target_compile_options(adios2_nompi PRIVATE --cray-bypass-pkgconfig)
+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)
-  find_package(ADIOS 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 adios::adios)
-endif()
-
-if(ADIOS_USE_DataMan)
-  find_package(DataMan REQUIRED)
-  target_sources(adios2 PRIVATE
-    engine/dataman/DataManReader.cpp
-    engine/dataman/DataManWriter.cpp
-    transport/wan/MdtmMan.cpp
-  )
-  target_compile_definitions(adios2 PRIVATE ADIOS_HAVE_DATAMAN)
-  target_link_libraries(adios2 PRIVATE DataMan::DataMan)
-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()