diff --git a/FSL/.gitignore b/FSL/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e43b0f988953ae3a84b00331d0ccf5f7d51cb3cf
--- /dev/null
+++ b/FSL/.gitignore
@@ -0,0 +1 @@
+.DS_Store
diff --git a/FSL/CMakeLists.txt b/FSL/CMakeLists.txt
index f6033368f273f0117bde54795b007e3388564db4..db4d1e742f29bf379ddcc4cbf1fed23bf760e787 100644
--- a/FSL/CMakeLists.txt
+++ b/FSL/CMakeLists.txt
@@ -33,9 +33,20 @@ else()
 endif()
 
 
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
 
 
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
+# Support for the HepMC3 exchange format
+# This is ON by default, but it can be disabled by the user if not used/needed,
+# or if HepMC3 is not installed.
+option(GEOMODEL_USE_HEPMC3 "Buil GeoModel tools with support for the HepMC3 exchancge format (Note: HepMC3 must be installed on the target machine)" ON)
+if(GEOMODEL_USE_HEPMC3)
+    find_package(HepMC3 REQUIRED) # required by default, but it can be disabled 
+endif()
+if(HepMC3_FOUND)
+    target_compile_definitions(fullSimLight PRIVATE USE_HEPMC3)
+endif()
+
 
 # Find the dependencies of the project.
 find_package( Qt5 COMPONENTS Core Gui Widgets Sql PrintSupport OpenGL REQUIRED )
diff --git a/FSL/src/fsl_mainwindow.cpp b/FSL/src/fsl_mainwindow.cpp
index ee37c1955daef8e7f8c60fecc2c62345c7d0a91e..32d64ace6236186ee449702851f48fd13f65639a 100644
--- a/FSL/src/fsl_mainwindow.cpp
+++ b/FSL/src/fsl_mainwindow.cpp
@@ -191,6 +191,13 @@ FSLMainWindow::FSLMainWindow(QWidget *parent)
     connect(&fullSimLight_process,SIGNAL(started()),this,SLOT(fsml_process_started()));
     connect(&fullSimLight_process,SIGNAL(finished(int , QProcess::ExitStatus )),this,SLOT(fsml_process_finished()));
 
+    // Disable options if the underlying packages/tools are not installed/found
+    // (e.g., HepMC3, Pythia, ...)
+    // TODO: add check for Pythia, external plugins, and anything is not embedded in FullSimLight by default
+#ifndef USE_HEPMC3
+    ui->cB_gen_options->setItemData(2, false, Qt::UserRole -1);
+    ui->groupBox_hepmc3->setEnabled(false);
+#endif
 
 }
 
@@ -934,11 +941,12 @@ void FSLMainWindow::configure_generator()
     {
         ui->sB_NOT->setValue(1);
         ui->sB_NOT->setEnabled(false);
-        
+       
+#ifdef USE_HEPMC3
         ui->pB_hepmc3_browse_files->setEnabled(true);
         ui->cB_hepmc3_type_of_eve->setEnabled(true);
         ui->lE_HEPMC3->setEnabled(true);
-
+#endif
         
         ui->cB_particle->setEnabled(false);
         ui->lE_px->setEnabled(false);
@@ -1152,6 +1160,7 @@ void FSLMainWindow::run_configuration()
     QStringList args;   //Contains arguments of the command
     
     //Needs to be fixed. Should not be a hard coded path.
+    //TODO: add check if exe is found. If not, throw an error message
     Command = "fullSimLight";
     
     args<<"-c"<< QString::fromUtf8(tmpConf.c_str());
@@ -1173,6 +1182,7 @@ void FSLMainWindow::run_gmex()
     QStringList args;   //Contains arguments of the command
     
     //Needs to be fixed. Should not be a hard coded path.
+    //TODO: add check if exe is found. If not, throw an error message
     Command = "gmex";
      
     args << QString::fromUtf8(geom_file_address.c_str());
@@ -1194,6 +1204,7 @@ void FSLMainWindow::run_gmclash()
     QStringList args;   //Contains arguments of the command
     
     //Needs to be fixed. Should not be a hard coded path.
+    //TODO: add check if exe is found. If not, throw an error message
     Command = "gmclash";
      
     args << QString("-g") <<  QString::fromUtf8(geom_file_address.c_str());
@@ -1404,18 +1415,18 @@ void FSLMainWindow::load_configuration()
     {
         ui->sB_NOT->setValue(1);
         ui->sB_NOT->setEnabled(false);
-        
+#ifdef USE_HEPMC3    
         ui->cB_gen_options->setCurrentIndex(2);
         ui->pB_hepmc3_browse_files->setEnabled(true);
         ui->cB_hepmc3_type_of_eve->setEnabled(true);
         ui->lE_HEPMC3->setEnabled(true);
-
         
         hepmc3_type_of_file = j_load["HepMC3 type of file"];
         hepmc3_input_file = j_load["HepMC3 file"];
         
         ui->cB_hepmc3_type_of_eve->setCurrentText(QString::fromUtf8(hepmc3_type_of_file.c_str()));
         ui->lE_HEPMC3->setText(QString::fromUtf8(hepmc3_input_file.c_str()));
+#endif
 
         
         ui->lE_px->clear();
@@ -1879,7 +1890,8 @@ void FSLMainWindow::load_configuration_CL(std::string config_file_path)
     {
         ui->sB_NOT->setValue(1);
         ui->sB_NOT->setEnabled(false);
-        
+
+#ifdef USE_HEPMC3
         ui->cB_gen_options->setCurrentIndex(2);
         ui->pB_hepmc3_browse_files->setEnabled(true);
         ui->cB_hepmc3_type_of_eve->setEnabled(true);
@@ -1891,7 +1903,7 @@ void FSLMainWindow::load_configuration_CL(std::string config_file_path)
         
         ui->cB_hepmc3_type_of_eve->setCurrentText(QString::fromUtf8(hepmc3_type_of_file.c_str()));
         ui->lE_HEPMC3->setText(QString::fromUtf8(hepmc3_input_file.c_str()));
-
+#endif
         
         ui->lE_px->clear();
         ui->lE_py->clear();
diff --git a/FSL/src/fsl_mainwindow.ui b/FSL/src/fsl_mainwindow.ui
index cc26d0a65605fe5c6ea513a3eadec929a061d24b..e86dc0316e2f23d7687491ae8352f5c059cb8dc1 100644
--- a/FSL/src/fsl_mainwindow.ui
+++ b/FSL/src/fsl_mainwindow.ui
@@ -29,7 +29,7 @@
        </font>
       </property>
       <property name="currentIndex">
-       <number>0</number>
+       <number>1</number>
       </property>
       <widget class="QWidget" name="main">
        <attribute name="title">
@@ -595,7 +595,7 @@
          </spacer>
         </item>
         <item row="2" column="4">
-         <widget class="QGroupBox" name="groupBox_5">
+         <widget class="QGroupBox" name="groupBox_pythia">
           <property name="font">
            <font>
             <pointsize>15</pointsize>
@@ -667,7 +667,7 @@
          </widget>
         </item>
         <item row="3" column="4">
-         <widget class="QGroupBox" name="groupBox_10">
+         <widget class="QGroupBox" name="groupBox_hepmc3">
           <property name="font">
            <font>
             <pointsize>15</pointsize>
@@ -742,7 +742,7 @@
          </spacer>
         </item>
         <item row="4" column="4">
-         <widget class="QGroupBox" name="groupBox_12">
+         <widget class="QGroupBox" name="groupBox_plugin">
           <property name="font">
            <font>
             <pointsize>15</pointsize>
diff --git a/FullSimLight/CMakeLists.txt b/FullSimLight/CMakeLists.txt
index 8971f4cf2b9bb35c702b98706d994cabdb9c88cd..d4ed57bcd03938fd866d65401bf2280e656e2da5 100644
--- a/FullSimLight/CMakeLists.txt
+++ b/FullSimLight/CMakeLists.txt
@@ -7,7 +7,6 @@ cmake_minimum_required( VERSION 3.14 )
 project( "FullSimLight" )
 
 #Set up the project. Check if we build it with GeoModel or individually
-
 if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
     # I am top-level project.
     # Make the root module directory visible to CMake.
@@ -20,6 +19,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
     include( cmake_colors_defs )
     # Warn the users about what they are doing
     message(STATUS "${BoldGreen}Building ${PROJECT_NAME} individually, as a top-level project.${ColourReset}")
+    # Set a default build type
+    include( BuildType )
     # Set default build and C++ options
     include( configure_cpp_options )
     set( CMAKE_FIND_FRAMEWORK "LAST" CACHE STRING
@@ -38,6 +39,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
     find_package( GeoModelG4 REQUIRED ${GeoModel_VERSION} )
     # Set a flag to steer the  of the subpackages
     set( ${PROJECT_NAME}_INDIVIDUAL_BUILD ON )
+    # Print Build Info on screen
+    include( PrintBuildInfo )
 else()
     # I am called from other project with add_subdirectory().
     message( STATUS "Building ${PROJECT_NAME} as part of the root GeoModel project.")
@@ -54,10 +57,24 @@ find_package(Geant4 REQUIRED)
 message( STATUS "Found Geant4: ${Geant4_INCLUDE_DIR}")
 #----------------------------------------------------------------------------
 
+# Support for the Pythia MC generator
 find_package(Pythia QUIET) # optional
-find_package(HepMC3 REQUIRED)
-#find_package(ROOT QUIET) #optional
-#option(HEPMC3_ROOTIO_USE "Enable the use of HEPMC3 with ROOT" OFF)
+if(Pythia_FOUND)
+  target_compile_definitions(fullSimLight PRIVATE USE_PYTHIA)
+  target_link_libraries(fullSimLight PRIVATE Pythia::Pythia)
+endif()
+
+# Support for the HepMC3 exchange format
+# This is ON by default, but it can be disabled by the user if not used/needed,
+# or if HepMC3 is not installed.
+option(GEOMODEL_USE_HEPMC3 "Build GeoModel tools with support for the HepMC3 exchancge format (Note: HepMC3 must be installed on the target machine)" ON)
+if(GEOMODEL_USE_HEPMC3)
+    find_package(HepMC3 REQUIRED) # required by default, but it can be disabled 
+endif()
+if(HepMC3_FOUND)
+    #target_compile_definitions(fullSimLight PRIVATE USE_HEPMC3)
+    add_compile_definitions( USE_HEPMC3 )
+endif()
 
 
 #----------------------------------------------------------------------------
@@ -97,6 +114,18 @@ include_directories(${PROJECT_SOURCE_DIR}/include)
 #
 file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
 file(GLOB headers ${PROJECT_SOURCE_DIR}/inc/*.hh)
+#message("sources: ${sources}") # debug msg
+
+
+if( NOT HepMC3_FOUND)
+    file(GLOB hepmc3src ${PROJECT_SOURCE_DIR}/src/HepMC3*.cc)
+    message(STATUS "! NOTE ==> The support for HepMC3 was disabled by the user; therefore, support for it in FullSimLight will not be compiled.")
+    #message("Removing those HepMC3-related sources: ${hepmc3src}") # debug msg
+    list(REMOVE_ITEM sources ${hepmc3src})
+    #message("new sources without HepMC3 support: ${sources}") # debug msg
+else()
+    message(STATUS "Found HepMC3, so support for it will be compiled. (${HEPMC3_INCLUDE_DIR})")
+endif()
 
 #----------------------------------------------------------------------------
 # Add the executable, and link it to the Geant4 libraries
@@ -116,10 +145,7 @@ add_executable(gmgeantino geantinoMaps.cc ${sources} ${headers})
 #add_executable(testMagneticField testMagneticField.cc)
 add_executable(gm2gdml geoModel2GDML.cc ${sources} ${headers})
 
-if(Pythia_FOUND)
-  target_compile_definitions(fullSimLight PRIVATE USE_PYTHIA)
-  target_link_libraries(fullSimLight PRIVATE Pythia::Pythia)
-endif()
+
 
 #if(HEPMC3_ROOTIO_USE)
 #  message( STATUS "HEPMC3 Root Dependency Switched on")
diff --git a/FullSimLight/Plugins/Examples/EventGeneratorPlugins/FSLExamplePrimaryGeneratorPlugin/CMakeLists.txt b/FullSimLight/Plugins/Examples/EventGeneratorPlugins/FSLExamplePrimaryGeneratorPlugin/CMakeLists.txt
index 124362dff343664e584613ff8fb83bb81ca46ade..d7eb29db21b982d5c91d62bcacbcb81fc9493f77 100644
--- a/FullSimLight/Plugins/Examples/EventGeneratorPlugins/FSLExamplePrimaryGeneratorPlugin/CMakeLists.txt
+++ b/FullSimLight/Plugins/Examples/EventGeneratorPlugins/FSLExamplePrimaryGeneratorPlugin/CMakeLists.txt
@@ -60,7 +60,14 @@ include(${Geant4_USE_FILE})
 # Use the GNU install directory names.
 include( GNUInstallDirs )
 
-target_include_directories( ExamplePrimaryGeneratorPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight)
+# Add the FullSimLight headers dir.
+# Path is different if built as a single top project, 
+# or as an all-in-one build together with all other GeoModel subpackages 
+if( FullSimLight_INDIVIDUAL_BUILD )
+    target_include_directories( ExamplePrimaryGeneratorPlugin PUBLIC  ${CMAKE_SOURCE_DIR} )
+else() # all-in-one--build
+    target_include_directories( ExamplePrimaryGeneratorPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight )
+endif()
 
 target_link_libraries ( ExamplePrimaryGeneratorPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES})
 
diff --git a/FullSimLight/Plugins/Examples/MagneticFieldPlugins/UniformMagneticFieldPlugin/CMakeLists.txt b/FullSimLight/Plugins/Examples/MagneticFieldPlugins/UniformMagneticFieldPlugin/CMakeLists.txt
index 778b68dbcf629c6eeac91e1302617d10d4b3369a..dcd0dfeb7522733b94e3d6c087003aee07906543 100644
--- a/FullSimLight/Plugins/Examples/MagneticFieldPlugins/UniformMagneticFieldPlugin/CMakeLists.txt
+++ b/FullSimLight/Plugins/Examples/MagneticFieldPlugins/UniformMagneticFieldPlugin/CMakeLists.txt
@@ -62,7 +62,14 @@ include( GNUInstallDirs )
 add_definitions (-DMAPPATH="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}" )
 
 
-target_include_directories( UniformMagneticFieldPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight )
+# Add the FullSimLight headers dir.
+# Path is different if built as a single top project, 
+# or as an all-in-one build together with all other GeoModel subpackages 
+if( FullSimLight_INDIVIDUAL_BUILD )
+    target_include_directories( UniformMagneticFieldPlugin PUBLIC ${CMAKE_SOURCE_DIR} )
+else() # all-in-one--build
+    target_include_directories( UniformMagneticFieldPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight )
+endif()
 
 
 target_link_libraries ( UniformMagneticFieldPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES} Eigen3::Eigen)
diff --git a/FullSimLight/Plugins/Examples/PhysicsListPlugins/FSLTestPhysListPlugins/CMakeLists.txt b/FullSimLight/Plugins/Examples/PhysicsListPlugins/FSLTestPhysListPlugins/CMakeLists.txt
index 21b03aab55ad03d3bd8c714b370c09d90ed6c1cb..c37cd349c3f808343119693b02e5efcfcaee0e86 100644
--- a/FullSimLight/Plugins/Examples/PhysicsListPlugins/FSLTestPhysListPlugins/CMakeLists.txt
+++ b/FullSimLight/Plugins/Examples/PhysicsListPlugins/FSLTestPhysListPlugins/CMakeLists.txt
@@ -58,7 +58,14 @@ include(${Geant4_USE_FILE})
 # Use the GNU install directory names.
 include( GNUInstallDirs )
 
-target_include_directories( TestPhysicsListPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight)
+# Add the FullSimLight headers dir.
+# Path is different if built as a single top project, 
+# or as an all-in-one build together with all other GeoModel subpackages 
+if( FullSimLight_INDIVIDUAL_BUILD )
+    target_include_directories( TestPhysicsListPlugin PUBLIC  ${CMAKE_SOURCE_DIR} )
+else() # all-in-one--build
+    target_include_directories( TestPhysicsListPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight )
+endif()
 
 target_link_libraries ( TestPhysicsListPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES})
 
diff --git a/FullSimLight/Plugins/Examples/SensitiveDetectorPlugins/SDPlugin/CMakeLists.txt b/FullSimLight/Plugins/Examples/SensitiveDetectorPlugins/SDPlugin/CMakeLists.txt
index 2f26af51b43c5c4cb44d1ea42ba5272f0daf7025..819b2d8fe056c8e81111b7b349b5daf0c653f33a 100644
--- a/FullSimLight/Plugins/Examples/SensitiveDetectorPlugins/SDPlugin/CMakeLists.txt
+++ b/FullSimLight/Plugins/Examples/SensitiveDetectorPlugins/SDPlugin/CMakeLists.txt
@@ -59,7 +59,14 @@ include(${Geant4_USE_FILE})
 # Use the GNU install directory names.
 include( GNUInstallDirs )
 
-target_include_directories( SDPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight)
+# Add the FullSimLight headers dir.
+# Path is different if built as a single top project, 
+# or as an all-in-one build together with all other GeoModel subpackages 
+if( FullSimLight_INDIVIDUAL_BUILD )
+    target_include_directories( SDPlugin PUBLIC  ${CMAKE_SOURCE_DIR} )
+else() # all-in-one--build
+    target_include_directories( SDPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight )
+endif()
 
 target_link_libraries ( SDPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES})
 
diff --git a/FullSimLight/Plugins/Examples/UserActionPlugins/CMakeLists.txt b/FullSimLight/Plugins/Examples/UserActionPlugins/CMakeLists.txt
index a3ebdda288f2894dde0ea8b2324d4e0cdc001ccc..73e5e728720dd985711926ed1014c08f5b0264c4 100644
--- a/FullSimLight/Plugins/Examples/UserActionPlugins/CMakeLists.txt
+++ b/FullSimLight/Plugins/Examples/UserActionPlugins/CMakeLists.txt
@@ -2,7 +2,7 @@
 
 # Set up the project.
 cmake_minimum_required( VERSION 3.1 )
-project( "FSLUserActionsPlugins" )
+project( "UserActionsPlugins" )
 
 #Set up the project. Check if we build it with GeoModel or individually
 if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
diff --git a/FullSimLight/Plugins/Examples/UserActionPlugins/DummyUserActionPlugin/CMakeLists.txt b/FullSimLight/Plugins/Examples/UserActionPlugins/DummyUserActionPlugin/CMakeLists.txt
index 2383e191cdedd5fc2e5bc4e8f466849f40f880af..2cf5e92a851d3f3928b93e7d5c55abb788ff3363 100644
--- a/FullSimLight/Plugins/Examples/UserActionPlugins/DummyUserActionPlugin/CMakeLists.txt
+++ b/FullSimLight/Plugins/Examples/UserActionPlugins/DummyUserActionPlugin/CMakeLists.txt
@@ -61,7 +61,14 @@ include(${Geant4_USE_FILE})
 # Use the GNU install directory names.
 include( GNUInstallDirs )
 
-target_include_directories( DummyUserActionPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS})
+# Add the FullSimLight headers dir.
+# Path is different if built as a single top project, 
+# or as an all-in-one build together with all other GeoModel subpackages 
+if( FullSimLight_INDIVIDUAL_BUILD )
+    target_include_directories( DummyUserActionPlugin PUBLIC  ${CMAKE_SOURCE_DIR} ${HDF5_CXX_INCLUDE_DIRS})
+else() # all-in-one--build
+    target_include_directories( DummyUserActionPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS})
+endif()
 
 target_link_libraries ( DummyUserActionPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES} ${HDF5_CXX_LIBRARIES})
 
diff --git a/FullSimLight/Plugins/HitsPlugin/CMakeLists.txt b/FullSimLight/Plugins/HitsPlugin/CMakeLists.txt
index 5f6dc0f008d5a97a3bc3f7f6efe14de33eabed00..e9fb430c20446ee783972c63c06bf8525ef17699 100644
--- a/FullSimLight/Plugins/HitsPlugin/CMakeLists.txt
+++ b/FullSimLight/Plugins/HitsPlugin/CMakeLists.txt
@@ -63,7 +63,15 @@ include(${Geant4_USE_FILE})
 # Use the GNU install directory names.
 include( GNUInstallDirs )
 
-target_include_directories( GenerateHitsPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS})
+
+# Add the FullSimLight headers dir.
+# Path is different if built as a single top project, 
+# or as an all-in-one build together with all other GeoModel subpackages 
+if( FullSimLight_INDIVIDUAL_BUILD )
+    target_include_directories( GenerateHitsPlugin PUBLIC  ${CMAKE_SOURCE_DIR} ${HDF5_CXX_INCLUDE_DIRS})
+else() # all-in-one--build
+    target_include_directories( GenerateHitsPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS})
+endif()
 
 target_link_libraries ( GenerateHitsPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES} ${HDF5_CXX_LIBRARIES})
 
diff --git a/FullSimLight/Plugins/TracksPlugin/CMakeLists.txt b/FullSimLight/Plugins/TracksPlugin/CMakeLists.txt
index 9fc0e614b932031d977c90641c913a8a7cee138a..21a411fbe9c6da14103555d6952596599c8c86ce 100644
--- a/FullSimLight/Plugins/TracksPlugin/CMakeLists.txt
+++ b/FullSimLight/Plugins/TracksPlugin/CMakeLists.txt
@@ -62,18 +62,21 @@ include(${Geant4_USE_FILE})
 # Use the GNU install directory names.
 include( GNUInstallDirs )
 
-target_include_directories( GenerateTracksPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include)
+# Add the FullSimLight headers dir.
+# Path is different if built as a single top project, 
+# or as an all-in-one build together with all other GeoModel subpackages 
+if( FullSimLight_INDIVIDUAL_BUILD )
+    target_include_directories( GenerateTracksPlugin PUBLIC  ${CMAKE_SOURCE_DIR} ${HDF5_CXX_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include)
+else() # all-in-one--build
+    target_include_directories( GenerateTracksPlugin PUBLIC  ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include)
+endif()
 
 target_link_libraries ( GenerateTracksPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES} ${HDF5_CXX_LIBRARIES})
 
-
-
 set_target_properties( GenerateTracksPlugin PROPERTIES
 		       VERSION ${PROJECT_VERSION}
 		       SOVERSION ${PROJECT_VERSION_MAJOR} )
 
-
-
 install( TARGETS GenerateTracksPlugin
 	 LIBRARY DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/FullSimLight/UserActionPlugins
 	 COMPONENT Runtime
diff --git a/FullSimLight/src/FSLActionInitialization.cc b/FullSimLight/src/FSLActionInitialization.cc
index 6f8e76ffb29c4602d4a86b9aa9420aa90874a43b..c06970ba99201e683372a3e03c123aaba4f8991c 100644
--- a/FullSimLight/src/FSLActionInitialization.cc
+++ b/FullSimLight/src/FSLActionInitialization.cc
@@ -1,11 +1,13 @@
 #include "FSLActionInitialization.hh"
 #include "GeoModelKernel/GeoPluginLoader.h"
-#include "FSLPrimaryGeneratorAction.hh"
-#include "HepMC3PrimaryGeneratorAction.hh"
 #include "FSLRunAction.hh"
 #include "FSLEventAction.hh"
 #include "FSLSteppingAction.hh"
 #include "FSLTrackingAction.hh"
+#include "FSLPrimaryGeneratorAction.hh"
+#if USE_HEPMC3
+#include "HepMC3PrimaryGeneratorAction.hh"
+#endif
 #include "PythiaPrimaryGeneratorAction.hh"
 #include "FullSimLight/FSLUserActionPlugin.h"
 
@@ -66,7 +68,8 @@ void FSLActionInitialization::BuildForMaster() const {
 void FSLActionInitialization::Build() const {
 
 #if !USE_PYTHIA
-  
+ 
+#if USE_HEPMC3
   if(generator == "HepMC3 File")
   {
       std::cout << "Reading in events from file: " << hepmc3_file_path << std::endl;
@@ -74,8 +77,10 @@ void FSLActionInitialization::Build() const {
       
   }
     
-  else if(generator == "Generator Plugin")
-  {
+  else if(generator == "Generator Plugin") {
+#else
+  if(generator == "Generator Plugin") {
+#endif
       std::cout << "Loading in event generator from plugin" << std::endl;
       GeoPluginLoader<FSLUserActionPlugin> generator_loader;
       const FSLUserActionPlugin * gen_plugin = generator_loader.load(generator_plugin);
@@ -98,6 +103,9 @@ void FSLActionInitialization::Build() const {
     G4int pythiaSeed = fIsPerformance ? -1 : 0;
     SetUserAction(new PythiaPrimaryGeneratorAction(pythiaSeed));
   } else {
+
+
+#if USE_HEPMC3
       if(generator == "HepMC3 File")
       {
           std::cout << "Reading in events from file: " << hepmc3_file_path << std::endl;
@@ -105,8 +113,10 @@ void FSLActionInitialization::Build() const {
           
       }
         
-      else if(generator == "Generator Plugin")
-      {
+  else if(generator == "Generator Plugin") {
+#else
+  if(generator == "Generator Plugin") {
+#endif
           std::cout << "Loading in event generator from plugin" << std::endl;
           GeoPluginLoader<FSLUserActionPlugin> generator_loader;
           const FSLUserActionPlugin * gen_plugin = generator_loader.load(generator_plugin);
diff --git a/GeoModelG4/CMakeLists.txt b/GeoModelG4/CMakeLists.txt
index 0d1c6e7b0352eba193ac149382d3c69722dad397..128f647f3b4d3215e7777e83194b51e05844144a 100644
--- a/GeoModelG4/CMakeLists.txt
+++ b/GeoModelG4/CMakeLists.txt
@@ -18,6 +18,8 @@ if( (CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) OR GEOMODEL_BUILD_GEOMODELG4_
     include( cmake_colors_defs )
     # Warn the users about what they are doing
     message(STATUS "${BoldGreen}Building ${PROJECT_NAME} individually, as a top-level project.${ColourReset}")
+    # Set a default build type
+    include( BuildType )
     # Set default build and C++ options
     include( configure_cpp_options )
     set( CMAKE_FIND_FRAMEWORK "LAST" CACHE STRING
@@ -31,6 +33,8 @@ if( (CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) OR GEOMODEL_BUILD_GEOMODELG4_
     endif()
     # Set a flag to steer the  of the subpackages
     set( ${PROJECT_NAME}_INDIVIDUAL_BUILD ON )
+    # Print Build Info on screen
+    include( PrintBuildInfo )
 else()
     # I am called from other projects with add_subdirectory().
     message( STATUS "Building ${PROJECT_NAME} as part of the root GeoModel project.")
diff --git a/GeoModelG4/GeoModel2G4/CMakeLists.txt b/GeoModelG4/GeoModel2G4/CMakeLists.txt
index d993096a8744dd7962234462fa5c9198d76d5a28..df227e6de95a31ba83546887e83bdac3db111a4f 100644
--- a/GeoModelG4/GeoModel2G4/CMakeLists.txt
+++ b/GeoModelG4/GeoModel2G4/CMakeLists.txt
@@ -30,7 +30,11 @@ file( GLOB HEADERS GeoModel2G4/*.h )
 
 # include Geant4 headers
 include(${Geant4_USE_FILE})
-add_definitions (-DG4EXTENSION_SOLID_DIR=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} )
+
+# set the path where the G4 extensions are found (e.g., the LArCustomSolid ATLAS extension)
+set(PATHEXTENSIONS ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} )
+add_definitions (-DG4EXTENSION_SOLID_DIR=${PATHEXTENSIONS})
+message("==> NOTE: G4 solid extensions will be searched in: ${PATHEXTENSIONS}. If you need custom extensions check if this is the right path. If not, set the right path by setting the environmental variable 'G4EXTENSION_SOLID_DIR' before running the application that uses the GeoModel2G4 library (e.g., 'export G4EXTENSION_SOLID_DIR=/usr/local/Cellar/geomodel-extension-atlaslar/5.4.0/lib') " )
 
 # Set target and properties
 add_library( GeoModel2G4 SHARED ${HEADERS} ${SOURCES} )
diff --git a/GeoModelTools/CMakeLists.txt b/GeoModelTools/CMakeLists.txt
index 3c29cb7ad5912aa19e24997da70da49269d0bd1c..738f05fcc77372e932a93965af045e831acd1f24 100644
--- a/GeoModelTools/CMakeLists.txt
+++ b/GeoModelTools/CMakeLists.txt
@@ -19,6 +19,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
     include( cmake_colors_defs )
     # Warn the users about what they are doing
     message(STATUS "${BoldGreen}Building ${PROJECT_NAME} individually, as a top-level project.${ColourReset}")
+    # Set a default build type
+    include( BuildType )
     # Set default build and C++ options
     include( configure_cpp_options )
     set( CMAKE_FIND_FRAMEWORK "LAST" CACHE STRING
@@ -36,6 +38,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
     find_package( GeoModelIO REQUIRED ${GeoModel_VERSION} ) 
     # Set a flag to steer the build of the subpackages
     #set( VISUALIZATION_INDIVIDUAL_BUILD ON )
+    # Print Build Info on screen
+    include( PrintBuildInfo )
 else()
     # I am called from other project with add_subdirectory().
     message( STATUS "Building ${PROJECT_NAME} as part of the root GeoModel project.")
diff --git a/GeoModelVisualization/CMakeLists.txt b/GeoModelVisualization/CMakeLists.txt
index 6ba88d17672db6eec6601833693492f8018e0839..054444a47a272f347c06333958252d30bdc31b3d 100644
--- a/GeoModelVisualization/CMakeLists.txt
+++ b/GeoModelVisualization/CMakeLists.txt
@@ -24,6 +24,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
     include( cmake_colors_defs )
     # Warn the users about what they are doing
     message(STATUS "${BoldGreen}Building ${PROJECT_NAME} individually, as a top-level project.${ColourReset}")
+    # Set a default build type
+    include( BuildType )
     # Set default build and C++ options
     include( configure_cpp_options )
     set( CMAKE_FIND_FRAMEWORK "LAST" CACHE STRING
@@ -33,6 +35,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
     find_package( GeoModelIO REQUIRED ${GeoModel_VERSION} )
     # Set a flag to steer the build of the subpackages
     set( VISUALIZATION_INDIVIDUAL_BUILD ON )
+    # Print Build Info on screen
+    include( PrintBuildInfo )
 else()
     # I am called from other project with add_subdirectory().
     message( STATUS "Building ${PROJECT_NAME} as part of the root GeoModel project.")