diff --git a/src/test/storm/CMakeLists.txt b/src/test/storm/CMakeLists.txt
index 99bc99a12..985c9f80c 100644
--- a/src/test/storm/CMakeLists.txt
+++ b/src/test/storm/CMakeLists.txt
@@ -9,15 +9,32 @@ register_source_groups_from_filestructure("${ALL_FILES}" test)
 # Note that the tests also need the source files, except for the main file
 include_directories(${GTEST_INCLUDE_DIR})
 
-foreach (testsuite abstraction adapter builder logic modelchecker parser permissiveschedulers solver storage transformer utility)
-
-	  file(GLOB_RECURSE TEST_${testsuite}_FILES ${STORM_TESTS_BASE_PATH}/${testsuite}/*.h ${STORM_TESTS_BASE_PATH}/${testsuite}/*.cpp)
-      add_executable (test-${testsuite} ${TEST_${testsuite}_FILES} ${STORM_TESTS_BASE_PATH}/storm-test.cpp)
-	  target_link_libraries(test-${testsuite} storm storm-parsers storm-conv)
-	  target_link_libraries(test-${testsuite} ${STORM_TEST_LINK_LIBRARIES})
-
-	  add_dependencies(test-${testsuite} test-resources)
-	  add_test(NAME run-test-${testsuite} COMMAND $<TARGET_FILE:test-${testsuite}>)
-      add_dependencies(tests test-${testsuite})
-	
-endforeach ()
+# Set split and non-split test directories
+set(NON_SPLIT_TESTS abstraction adapter builder logic parser permissiveschedulers solver storage transformer utility)
+set(MODELCHECKER_TEST_SPLITS abstraction csl exploration multiobjective prctl reachability)
+
+function(configure_testsuite_target testsuite)
+	#message(CONFIGURING TESTSUITE '${testsuite}') #DEBUG
+	target_link_libraries(test-${testsuite} storm storm-parsers storm-conv)
+	target_link_libraries(test-${testsuite} ${STORM_TEST_LINK_LIBRARIES})
+
+	add_dependencies(test-${testsuite} test-resources)
+	add_test(NAME run-test-${testsuite} COMMAND $<TARGET_FILE:test-${testsuite}>)
+	add_dependencies(tests test-${testsuite})
+endfunction()
+
+foreach(testsuite ${NON_SPLIT_TESTS})
+	file(GLOB_RECURSE TEST_${testsuite}_FILES ${STORM_TESTS_BASE_PATH}/${testsuite}/*.h ${STORM_TESTS_BASE_PATH}/${testsuite}/*.cpp)
+	add_executable(test-${testsuite} ${TEST_${testsuite}_FILES} ${STORM_TESTS_BASE_PATH}/storm-test.cpp)
+	configure_testsuite_target(${testsuite})
+endforeach()
+
+# Modelchecker testsuite split
+foreach(modelchecker_split ${MODELCHECKER_TEST_SPLITS})
+	file(GLOB_RECURSE TEST_MODELCHECKER_${modelchecker_split}_FILES ${STORM_TESTS_BASE_PATH}/modelchecker/${modelchecker_split}/*.h ${STORM_TESTS_BASE_PATH}/modelchecker/${modelchecker_split}/*.cpp)
+	foreach(tmp ${TEST_MODELCHECKER_${modelchecker_split}_FILES})
+		message(${tmp})
+	endforeach()
+	add_executable(test-modelchecker-${modelchecker_split} ${TEST_MODELCHECKER_${modelchecker_split}_FILES} ${STORM_TESTS_BASE_PATH}/storm-test.cpp)
+	configure_testsuite_target(modelchecker-${modelchecker_split})
+endforeach()
diff --git a/src/test/storm/modelchecker/GameBasedDtmcModelCheckerTest.cpp b/src/test/storm/modelchecker/abstraction/GameBasedDtmcModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/GameBasedDtmcModelCheckerTest.cpp
rename to src/test/storm/modelchecker/abstraction/GameBasedDtmcModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/GameBasedMdpModelCheckerTest.cpp b/src/test/storm/modelchecker/abstraction/GameBasedMdpModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/GameBasedMdpModelCheckerTest.cpp
rename to src/test/storm/modelchecker/abstraction/GameBasedMdpModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/CtmcCslModelCheckerTest.cpp b/src/test/storm/modelchecker/csl/CtmcCslModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/CtmcCslModelCheckerTest.cpp
rename to src/test/storm/modelchecker/csl/CtmcCslModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/MarkovAutomatonCslModelCheckerTest.cpp b/src/test/storm/modelchecker/csl/MarkovAutomatonCslModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/MarkovAutomatonCslModelCheckerTest.cpp
rename to src/test/storm/modelchecker/csl/MarkovAutomatonCslModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/SparseExplorationModelCheckerTest.cpp b/src/test/storm/modelchecker/exploration/SparseExplorationModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/SparseExplorationModelCheckerTest.cpp
rename to src/test/storm/modelchecker/exploration/SparseExplorationModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/SparseDtmcMultiDimensionalRewardUnfoldingTest.cpp b/src/test/storm/modelchecker/multiobjective/SparseDtmcMultiDimensionalRewardUnfoldingTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/SparseDtmcMultiDimensionalRewardUnfoldingTest.cpp
rename to src/test/storm/modelchecker/multiobjective/SparseDtmcMultiDimensionalRewardUnfoldingTest.cpp
diff --git a/src/test/storm/modelchecker/SparseMaCbMultiObjectiveModelCheckerTest.cpp b/src/test/storm/modelchecker/multiobjective/SparseMaCbMultiObjectiveModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/SparseMaCbMultiObjectiveModelCheckerTest.cpp
rename to src/test/storm/modelchecker/multiobjective/SparseMaCbMultiObjectiveModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/SparseMaPcaaMultiObjectiveModelCheckerTest.cpp b/src/test/storm/modelchecker/multiobjective/SparseMaPcaaMultiObjectiveModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/SparseMaPcaaMultiObjectiveModelCheckerTest.cpp
rename to src/test/storm/modelchecker/multiobjective/SparseMaPcaaMultiObjectiveModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/SparseMdpCbMultiObjectiveModelCheckerTest.cpp b/src/test/storm/modelchecker/multiobjective/SparseMdpCbMultiObjectiveModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/SparseMdpCbMultiObjectiveModelCheckerTest.cpp
rename to src/test/storm/modelchecker/multiobjective/SparseMdpCbMultiObjectiveModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/SparseMdpMultiDimensionalRewardUnfoldingTest.cpp b/src/test/storm/modelchecker/multiobjective/SparseMdpMultiDimensionalRewardUnfoldingTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/SparseMdpMultiDimensionalRewardUnfoldingTest.cpp
rename to src/test/storm/modelchecker/multiobjective/SparseMdpMultiDimensionalRewardUnfoldingTest.cpp
diff --git a/src/test/storm/modelchecker/SparseMdpPcaaMultiObjectiveModelCheckerTest.cpp b/src/test/storm/modelchecker/multiobjective/SparseMdpPcaaMultiObjectiveModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/SparseMdpPcaaMultiObjectiveModelCheckerTest.cpp
rename to src/test/storm/modelchecker/multiobjective/SparseMdpPcaaMultiObjectiveModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/ConditionalDtmcPrctlModelCheckerTest.cpp b/src/test/storm/modelchecker/prctl/ConditionalDtmcPrctlModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/ConditionalDtmcPrctlModelCheckerTest.cpp
rename to src/test/storm/modelchecker/prctl/ConditionalDtmcPrctlModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/DtmcPrctlModelCheckerTest.cpp b/src/test/storm/modelchecker/prctl/DtmcPrctlModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/DtmcPrctlModelCheckerTest.cpp
rename to src/test/storm/modelchecker/prctl/DtmcPrctlModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/ExplicitDtmcPrctlModelCheckerTest.cpp b/src/test/storm/modelchecker/prctl/ExplicitDtmcPrctlModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/ExplicitDtmcPrctlModelCheckerTest.cpp
rename to src/test/storm/modelchecker/prctl/ExplicitDtmcPrctlModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/ExplicitMdpPrctlModelCheckerTest.cpp b/src/test/storm/modelchecker/prctl/ExplicitMdpPrctlModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/ExplicitMdpPrctlModelCheckerTest.cpp
rename to src/test/storm/modelchecker/prctl/ExplicitMdpPrctlModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/LraDtmcPrctlModelCheckerTest.cpp b/src/test/storm/modelchecker/prctl/LraDtmcPrctlModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/LraDtmcPrctlModelCheckerTest.cpp
rename to src/test/storm/modelchecker/prctl/LraDtmcPrctlModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/LraMdpPrctlModelCheckerTest.cpp b/src/test/storm/modelchecker/prctl/LraMdpPrctlModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/LraMdpPrctlModelCheckerTest.cpp
rename to src/test/storm/modelchecker/prctl/LraMdpPrctlModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/MdpPrctlModelCheckerTest.cpp b/src/test/storm/modelchecker/prctl/MdpPrctlModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/MdpPrctlModelCheckerTest.cpp
rename to src/test/storm/modelchecker/prctl/MdpPrctlModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/QuantileQueryTest.cpp b/src/test/storm/modelchecker/prctl/QuantileQueryTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/QuantileQueryTest.cpp
rename to src/test/storm/modelchecker/prctl/QuantileQueryTest.cpp
diff --git a/src/test/storm/modelchecker/SchedulerGenerationMdpPrctlModelCheckerTest.cpp b/src/test/storm/modelchecker/prctl/SchedulerGenerationMdpPrctlModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/SchedulerGenerationMdpPrctlModelCheckerTest.cpp
rename to src/test/storm/modelchecker/prctl/SchedulerGenerationMdpPrctlModelCheckerTest.cpp
diff --git a/src/test/storm/modelchecker/SparseDtmcEliminationModelCheckerTest.cpp b/src/test/storm/modelchecker/reachability/SparseDtmcEliminationModelCheckerTest.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/storm/modelchecker/SparseDtmcEliminationModelCheckerTest.cpp
rename to src/test/storm/modelchecker/reachability/SparseDtmcEliminationModelCheckerTest.cpp