diff --git a/CMake/elxModules.cmake b/CMake/elxModules.cmake
index 0b993b9570fca4351a47dacadb59c42e476d1f3b..7ba40b4dcd590ce7de87e6203ca71fef82ffdd5f 100644
--- a/CMake/elxModules.cmake
+++ b/CMake/elxModules.cmake
@@ -6,7 +6,7 @@ macro( _elxmodule_check_name MODULE )
     message( FATAL_ERROR "Invalid module name: ${MODULE}" )
   endif()
 
-  list( FIND ELXMODULE_ALL "${MODULE}" MODULE_FOUND )
+  list( FIND ELASTIX_MODULES "${MODULE}" MODULE_FOUND )
   if( ${MODULE_FOUND} EQUAL -1 )
     message( FATAL_ERROR "Module not found: ${MODULE}")
   endif()
@@ -16,7 +16,7 @@ macro( _elxmodule_enable MODULE )
   _elxmodule_check_name( ${MODULE} )
 
   if( NOT ${MODULE}_ENABLED )
-    set( USE_${MODULE} ON )
+    set( ELASTIX_USE_${MODULE} ON )
 
     include( ${${MODULE}_FILE} )
 
@@ -24,14 +24,9 @@ macro( _elxmodule_enable MODULE )
       include_directories( ${${MODULE}_INCLUDE_DIRS} )
     endif()
 
-    add_subdirectory( ${${MODULE}_SOURCE_DIR} )
-
     if( ${MODULE}_LIBRARIES )
       link_directories( ${${MODULE}_LIBRARY_DIRS} )
-
-      list( APPEND ELASTIX_LIBRARIES
-        ${${MODULE}_LIBRARIES}
-      )
+      list( APPEND ELASTIX_LIBRARIES ${${MODULE}_LIBRARIES} )
     endif()
 
     # TODO: Add recursive dependency walk
@@ -43,30 +38,32 @@ macro( _elxmodule_disable MODULE )
 endmacro()
 
 macro( _elxmodules_initialize )
-  set( ELXMODULE_ALL )
+  set( ELASTIX_LIBRARIES )
+  set( ELASTIX_MODULES )
 
-  file( GLOB MODULE_FILES RELATIVE "${CMAKE_SOURCE_DIR}"
+  file( GLOB_RECURSE MODULE_FILES RELATIVE "${CMAKE_SOURCE_DIR}"
      "${CMAKE_SOURCE_DIR}/Modules/*/elxModule*.cmake"
   )
 
   message( STATUS "Found the following elastix modules:")
   foreach( MODULE_FILE ${MODULE_FILES})
-    get_filename_component( MODULE_PATH ${MODULE_FILE} PATH )
-    get_filename_component( MODULE ${MODULE_FILE} NAME_WE )
-    message( STATUS "  ${MODULE}" )
+    get_filename_component( MODULE_NAME ${MODULE_FILE} NAME_WE )
+    get_filename_component( ${MODULE_NAME}_PATH ${MODULE_FILE} PATH )
+    
+    message( STATUS "  ${MODULE_NAME}" )
 
-    option( "USE_${MODULE}" OFF )
-    set( "${MODULE}_FILE" ${CMAKE_SOURCE_DIR}/${MODULE_FILE} )
-    set( "${MODULE}_ENABLED" OFF )
+    option( "ELASTIX_USE_${MODULE_NAME}" OFF )
+    set( "${MODULE_NAME}_FILE" ${CMAKE_SOURCE_DIR}/${MODULE_FILE} )
+    set( "${MODULE_NAME}_ENABLED" OFF )
 
-    set( ${MODULE}_SOURCE_DIR ${CMAKE_SOURCE_DIR}/${MODULE_PATH} )
-    set( ${MODULE}_BINARY_DIR ${CMAKE_BINARY_DIR}/${MODULE_PATH} )
+    set( ${MODULE_NAME}_SOURCE_DIR ${CMAKE_SOURCE_DIR}/${${MODULE_NAME}_PATH} )
+    set( ${MODULE_NAME}_BINARY_DIR ${CMAKE_BINARY_DIR}/${${MODULE_NAME}_PATH} )
 
-    set( ${MODULE}_INCLUDE_DIRS )
-    set( ${MODULE}_LIBRARY_DIRS )
-    set( ${MODULE}_LIBRARIES )
+    set( ${MODULE_NAME}_INCLUDE_DIRS )
+    set( ${MODULE_NAME}_LIBRARY_DIRS )
+    set( ${MODULE_NAME}_LIBRARIES )
 
-    list(APPEND ELXMODULE_ALL ${MODULE} )
+    list(APPEND ELASTIX_MODULES ${MODULE_NAME} )
   endforeach()
 endmacro()
 
@@ -79,9 +76,3 @@ macro( elxmodule_enable MODULE )
   _elxmodule_enable( ${MODULE} )
 endmacro()
 
-macro( elxmodule_compile MODULE )
-  project( "${MODULE}" )
-  add_library( ${MODULE} STATIC "${${MODULE}_SOURCE_FILES}" )
-  target_link_libraries( ${MODULE} ${ELASTIX_LIBRARIES} )
-  list( APPEND ${MODULE}_LIBRARIES ${MODULE} )
-endmacro()
diff --git a/CMakeLists.txt b/CMakeLists.txt
index eea7b29716863cb1db0a6dd49cd4fbc9f6ef7f3d..0d48eb59510e0d5cd86f11ad52e142e37a9b9612 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,7 +36,6 @@ include_directories( ${Boost_INCLUDE_DIRS} )
 
 # ---------------------------------------------------------------------
 # Build Elastix
-
 # For now we just enable all modules
 include( "${CMAKE_CURRENT_SOURCE_DIR}/CMake/elxModules.cmake" )
 elxmodule_enable( elxModuleCore )
diff --git a/Modules/Core/CMakeLists.txt b/Modules/Core/CMakeLists.txt
deleted file mode 100644
index 50296aa3c753ddf0818b1b78653383350f700b40..0000000000000000000000000000000000000000
--- a/Modules/Core/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-elxmodule_compile( ${MODULE} )
diff --git a/Modules/Core/elxModuleCore.cmake b/Modules/Core/elxModuleCore.cmake
index 585fd509611ea8161fb2f1bc7eaf9b42afdce41f..24e93a5aced2900241b50cb7df509fa9c1c03b00 100644
--- a/Modules/Core/elxModuleCore.cmake
+++ b/Modules/Core/elxModuleCore.cmake
@@ -1,12 +1,22 @@
-set( ${MODULE}_INCLUDE_DIRS
-  ${CMAKE_SOURCE_DIR}/${MODULE_PATH}/Common/include
-  ${CMAKE_SOURCE_DIR}/${MODULE_PATH}/Blueprints/include
-)
+set( MODULE elxModuleCore )
 
-set( ${MODULE}_SOURCE_FILES
-  ${CMAKE_SOURCE_DIR}/${MODULE_PATH}/Blueprints/src/elxBlueprint.cxx
+# Export include files
+set( ${MODULE}_INCLUDE_DIRS
+  ${${MODULE}_SOURCE_DIR}/Common/include
+  ${${MODULE}_SOURCE_DIR}/Blueprints/include
 )
 
+# Export libraries
 set( ${MODULE}_LIBRARIES 
   ${MODULE}
 )
+
+# Module source files
+set( ${MODULE}_SOURCE_FILES
+  ${${MODULE}_SOURCE_DIR}/Blueprints/src/elxBlueprint.cxx
+)
+
+# Compile library
+
+add_library( ${MODULE} STATIC "${${MODULE}_SOURCE_FILES}" )
+target_link_libraries( ${MODULE} ${ELASTIX_LIBRARIES} )
diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt
index 0eb91de3a6f2cccb4fd546af8fb89ce8ff0777aa..b9f5378324b24ff57e6383863baebb262c30ae98 100644
--- a/SuperBuild/CMakeLists.txt
+++ b/SuperBuild/CMakeLists.txt
@@ -54,7 +54,6 @@ if( USE_SYSTEM_ITK )
   include( "${CMAKE_CURRENT_SOURCE_DIR}/../CMake/elxRequiredITKModules.cmake" )
 else()
   include( ExternalITK )
-  list( APPEND ELASTIX_DEPENDENCIES ITK )
 endif()
 
 # ---------------------------------------------------------------------
@@ -66,7 +65,6 @@ if( USE_SYSTEM_BOOST )
   find_package( BOOST REQUIRED graph )
 else()
   include( ExternalBoost )
-  list( APPEND ELASTIX_DEPENDENCIES BOOST )
 endif()
 
 # ---------------------------------------------------------------------
diff --git a/SuperBuild/ExternalBoost.cmake b/SuperBuild/ExternalBoost.cmake
index e1f1286e9995efa98dce2649cc9aa79a41bebdbf..d710dbac56e1b3311dddbaeb173f3c3b408f75be 100644
--- a/SuperBuild/ExternalBoost.cmake
+++ b/SuperBuild/ExternalBoost.cmake
@@ -1,4 +1,4 @@
-set( PROJECT BOOST )
+set( proj BOOST )
 
 # Note: It IS important to download different files on different OS's:
 # on Unix-like systems, we need the file persmissions (only available in the .tar.gz),
@@ -19,7 +19,7 @@ else()
   endif()
 endif()
 
-set( BOOST_BUILD_DIR "${CMAKE_INSTALL_PREFIX}/${PROJECT}-build/" )
+set( BOOST_BUILD_DIR "${CMAKE_INSTALL_PREFIX}/${proj}-build/" )
 
 ExternalProject_Add( BOOST
   BUILD_IN_SOURCE 1
@@ -37,3 +37,5 @@ ExternalProject_Add( BOOST
 )
 
 set( BOOST_ROOT ${BOOST_BUILD_DIR} )
+
+list( APPEND ELASTIX_DEPENDENCIES ${proj} )
diff --git a/SuperBuild/ExternalITK.cmake b/SuperBuild/ExternalITK.cmake
index 0ee77affea1569d7f946b128e1a7de2756189959..1cd9197d1ed36830d637aa91902ead533944aef3 100644
--- a/SuperBuild/ExternalITK.cmake
+++ b/SuperBuild/ExternalITK.cmake
@@ -1,13 +1,13 @@
-set( PROJECT ITK )
+set( proj ITK )
 set( ITK_REPOSITORY https://github.com/InsightSoftwareConsortium/ITK.git )
 set( ITK_TAG "v${ITK_VERSION_STRING}")
 
-ExternalProject_Add( ${PROJECT}
+ExternalProject_Add( ${proj}
   GIT_REPOSITORY ${ITK_REPOSITORY}
   GIT_TAG ${ITK_TAG}
   UPDATE_COMMAND ""
-  SOURCE_DIR ${PROJECT}
-  BINARY_DIR ${PROJECT}-build
+  SOURCE_DIR ${proj}
+  BINARY_DIR ${proj}-build
   CMAKE_ARGS
     --no-warn-unused-cli
     -DBUILD_EXAMPLES:BOOL=OFF
@@ -20,5 +20,7 @@ ExternalProject_Add( ${PROJECT}
     -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
 )
 
-ExternalProject_Get_Property( ITK install_dir )
+ExternalProject_Get_Property( ${proj} install_dir )
 set( ITK_DIR "${install_dir}/lib/cmake/ITK-${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}" )
+
+list( APPEND ELASTIX_DEPENDENCIES ${proj} )