diff --git a/CMakeLists.txt b/CMakeLists.txt
index bf72b8b..ed7636c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,188 +1,198 @@
 cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
 
 set(CMAKE_LEGACY_CYGWIN_WIN32 0)
 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 
 project("HEJ" VERSION 2.0.6 LANGUAGES C CXX)
 
+## User settings
+include(CMakeDependentOption)
+option(EXCLUDE_QCDloop "Do not include QCDloop" FALSE)
+option(EXCLUDE_HighFive "Do not include HighFive" FALSE)
+option(EXCLUDE_HepMC "Do not include HepMC version 2" FALSE)
+option(EXCLUDE_HepMC3 "Do not include HepMC version 3" FALSE)
+CMAKE_DEPENDENT_OPTION(EXCLUDE_rivet "Do not include rivet" FALSE
+                                              "NOT EXCLUDE_HepMC" TRUE)
+
+option(TEST_ALL "Run additional (longer) tests" FALSE)
+option(TEST_COVERAGE "Generate test coverage with \"gcovr\"" FALSE)
+
 # Set a default build type if none was specified
 set(default_build_type "RelWithDebInfo")
 
 if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
   message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
   set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
       STRING "Choose the type of build." FORCE)
   # Set the possible values of build type for cmake-gui
   set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
     "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
 endif()
 
 ## Global flags for the compiler (all warnings)
 if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
 elseif (MSVC)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /WX /EHsc")
 endif()
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 set(CMAKE_CXX_STANDARD 14)
 
 ## Create Version
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
 
 # Get the latest abbreviated commit hash of the working branch
 execute_process(
   COMMAND git rev-parse HEAD
   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
   OUTPUT_VARIABLE PROJECT_GIT_REVISION
   OUTPUT_STRIP_TRAILING_WHITESPACE
 )
 # Get the current working branch
 execute_process(
   COMMAND git rev-parse --abbrev-ref HEAD
   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
   OUTPUT_VARIABLE PROJECT_GIT_BRANCH
   OUTPUT_STRIP_TRAILING_WHITESPACE
   )
 
 ## target directories for install
 set(INSTALL_INCLUDE_DIR_BASE include)
 set(INSTALL_INCLUDE_DIR ${INSTALL_INCLUDE_DIR_BASE}/HEJ)
 set(INSTALL_BIN_DIR bin)
 set(INSTALL_LIB_DIR lib)
 set(INSTALL_CONFIG_DIR lib/cmake/HEJ)
 
 ## Template files
 configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Templates/Version.hh.in
                 ${PROJECT_BINARY_DIR}/include/HEJ/Version.hh  @ONLY )
 
 configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Templates/HEJ-config.cc.in
                 ${PROJECT_BINARY_DIR}/src/bin/HEJ-config.cc  @ONLY )
 
 # Generate CMake config file
 include(CMakePackageConfigHelpers)
 configure_package_config_file(
   cmake/Templates/hej-config.cmake.in
   ${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_CONFIG_DIR}/hej-config.cmake
   INSTALL_DESTINATION ${INSTALL_CONFIG_DIR}
   PATH_VARS INSTALL_INCLUDE_DIR_BASE INSTALL_LIB_DIR
   )
 write_basic_package_version_file(
   ${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_CONFIG_DIR}/hej-config-version.cmake
   COMPATIBILITY SameMajorVersion
   )
 install(
   FILES ${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_CONFIG_DIR}/hej-config.cmake
     ${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_CONFIG_DIR}/hej-config-version.cmake
   DESTINATION ${INSTALL_CONFIG_DIR})
 
 ## find dependencies
 find_package(fastjet REQUIRED)
 find_package(CLHEP 2.3 REQUIRED)
 find_package(LHAPDF REQUIRED)
 ## Amend unintuitive behaviour of FindBoost.cmake
 ## Priority of BOOST_ROOT over BOOSTROOT matches FindBoost.cmake
 ## at least for cmake 3.12
 if(DEFINED BOOST_ROOT)
   message("BOOST_ROOT set - only looking for Boost in ${BOOST_ROOT}")
   set(Boost_NO_BOOST_CMAKE ON)
   elseif(DEFINED BOOSTROOT)
   message("BOOSTROOT set - only looking for Boost in ${BOOSTROOT}")
   set(Boost_NO_BOOST_CMAKE ON)
 endif()
 find_package(Boost REQUIRED COMPONENTS iostreams)
 find_package(yaml-cpp) # requiring yaml does not work with fedora
 if(${EXCLUDE_HepMC})
   message(STATUS "Skipping HepMC")
-  # avoid "unused variable" warning if EXCLUDE_rivet is set by user
-  set(EXCLUDE_rivet TRUE)
 else()
   find_package(HepMC 2 EXACT)
 endif()
 if(${HepMC_FOUND})
   if(${EXCLUDE_rivet})
     message(STATUS "Skipping rivet")
   else()
     find_package(rivet)
   endif()
 endif()
 if(${EXCLUDE_HepMC3})
   message(STATUS "Skipping HepMC3")
 else()
   ## version 3.1: Finding version not possible in 3.1.1, see HepMC3 git 29e7a6c3
   find_package(HepMC3)
   ## print standard message
   find_package_handle_standard_args( HepMC3
     FOUND_VAR
       HepMC3_FOUND
     REQUIRED_VARS
       HEPMC3_INCLUDE_DIR
       HEPMC3_LIBRARIES
     # VERSION_VAR
     #   HEPMC3_VERSION
   )
 endif()
 if(${EXCLUDE_QCDloop})
   message(STATUS "Skipping QCDloop")
 else()
   find_package(QCDloop 2)
 endif()
 if(${EXCLUDE_HighFive})
   message(STATUS "Skipping HighFive")
 else()
   find_package(HighFive QUIET)
   find_package_handle_standard_args( HighFive CONFIG_MODE )
 endif()
 
 ## shortcut for HEJ specific includes
 set(HEJ_INCLUDE_DIR
     $<INSTALL_INTERFACE:include>
     $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
     $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
   )
 
 
 if (TEST_COVERAGE AND (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) )
   include(CodeCoverage)
   APPEND_COVERAGE_COMPILER_FLAGS()
   set(COVERAGE_GCOVR_EXCLUDES "${PROJECT_SOURCE_DIR}/include/LHEF/*"
                               "${PROJECT_SOURCE_DIR}/include/cxxopts.hpp"
                               "${PROJECT_SOURCE_DIR}/t/*")
   SETUP_TARGET_FOR_COVERAGE_GCOVR_HTML(
     NAME ctest_coverage                    # New target name
     EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR
   )
 endif()
 
 ## create main HEJ library
 add_subdirectory(src)
 
 ## define executable
 add_executable(HEJ_main src/bin/HEJ.cc)
 set_target_properties(HEJ_main PROPERTIES OUTPUT_NAME "HEJ")
 
 ## link libraries
 target_link_libraries(HEJ_main HEJ)
 
 add_executable(HEJ-config src/bin/HEJ-config.cc)
 target_include_directories(HEJ-config PRIVATE ${HEJ_INCLUDE_DIR})
 
 file(GLOB hej_headers
   ${CMAKE_CURRENT_SOURCE_DIR}/include/HEJ/*.hh
   ${PROJECT_BINARY_DIR}/include/HEJ/*.hh
 )
 file(GLOB hej_detail_headers ${CMAKE_CURRENT_SOURCE_DIR}/include/HEJ/detail/*.hh)
 file(GLOB lhef_headers ${CMAKE_CURRENT_SOURCE_DIR}/include/LHEF/*.h)
 install(FILES ${hej_headers} DESTINATION ${INSTALL_INCLUDE_DIR})
 install(FILES ${hej_detail_headers} DESTINATION ${INSTALL_INCLUDE_DIR}/detail/)
 install(FILES ${lhef_headers} DESTINATION ${INSTALL_INCLUDE_DIR_BASE}/LHEF/)
 install(TARGETS HEJ_main HEJ-config DESTINATION ${INSTALL_BIN_DIR})
 
 ## tests (prevent testing if current project is a subproject)
 if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
   ## advanced version of enable_testing()
   ## adds "BUILD_TESTING" option to deactivate testing
   include(CTest)
   if(BUILD_TESTING)
     add_subdirectory(t)
   endif()
 endif()