diff --git a/CMakeLists.txt b/CMakeLists.txt
index f432a36d473562d6247d72ab56f699616479f0ae..f7bd0e6f8edb0dd7106560eae29ca6ebb1c02092 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,15 +1,93 @@
+execute_process (COMMAND pwd
+    OUTPUT_VARIABLE path
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+## ----------------------------------------------------------------------------
+##  Host-specific overrides
+
+function(check_package_name _NAME result_var)
+  if ("${_NAME}" MATCHES "^$")
+    set(${result_var} 0 PARENT_SCOPE)
+    break()
+  elseif (${_NAME} STREQUAL "IONProc")
+    set(${result_var} 1 PARENT_SCOPE)
+    break()
+  elseif (${_NAME} STREQUAL "CNProc") 
+    set(${result_var} 1 PARENT_SCOPE)
+    break()
+  elseif (${_NAME} STREQUAL "Storage") 
+    set(${result_var} 1 PARENT_SCOPE)
+    break()
+  else ("${_NAME}" MATCHES "^$")
+    set(${result_var} 0 PARENT_SCOPE)
+  endif ("${_NAME}" MATCHES "^$") 
+endfunction(check_package_name)  
+
+set (PACKAGE_NAME "${PACKAGE_NAME}")
+
+check_package_name("${PACKAGE_NAME}" valid_package_name)
+if (NOT ${valid_package_name})
+  message (FATAL_ERROR "Illegal package name: (${PACKAGE_NAME})")
+endif(NOT ${valid_package_name})
+
+execute_process (COMMAND hostname -s
+  OUTPUT_VARIABLE hostname
+  OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+set (LOFAR_VARIANTS_FILE ${path}/../../cmake/variants/variants.${hostname})
+
+message (STATUS "Loading settings variants ${path}/../../cmake/variants/variants")
+include (${path}/../../cmake/variants/variants)
+
+if (EXISTS ${LOFAR_VARIANTS_FILE})
+  message (STATUS "Loading settings variants " ${LOFAR_VARIANTS_FILE})
+  include (${LOFAR_VARIANTS_FILE})
+endif (EXISTS ${LOFAR_VARIANTS_FILE})
+  
+## Get compiler: e.g. ~/projects/LOFAR/build/gnu_openmpi-opt
+get_filename_component (BUILD_VARIANT ${path} NAME)
+
+
+#set ( BUILD_VARIANT gnubgp_cn )
+STRING (REGEX MATCH ".*_" compiler ${BUILD_VARIANT})
+STRING (REGEX REPLACE "_" "" compiler ${compiler})
+
+## Get variant
+STRING (REGEX MATCH "_.*" variant ${BUILD_VARIANT})
+STRING (REGEX REPLACE "_" "" variant ${variant})
+
+foreach (comp ${${compiler}_compiler})
+  STRING (REGEX MATCH "^C[CX].*=" result ${comp})
+  if (${result} STREQUAL "CC=")
+    STRING (REGEX MATCH "/.*" cc ${comp})
+    set( CMAKE_C_COMPILER ${cc} CACHE INTERNAL "gcc Compiler" FORCE )
+  elseif (${result} STREQUAL "CXX=")
+    STRING (REGEX MATCH "/.*" cc ${comp})
+    set( CMAKE_CXX_COMPILER ${cc} CACHE INTERNAL "g++ Compiler" FORCE )
+    if (${variant} STREQUAL "ion") 
+      set( CXX_COMPILE_FLAGS "${CXX_COMPILE_FLAGS} ${${variant}}" CACHE STRING "g++ Compiler flags" FORCE )
+    else (${variant} STREQUAL "ion") 
+      set( CXX_COMPILE_FLAGS "${${variant}}" CACHE STRING "g++ Compiler flags" FORCE )
+    endif (${variant} STREQUAL "ion")
+  elseif (${result} STREQUAL "CCAS=")
+    STRING (REGEX MATCH "/.*" asm ${comp})
+    set( CCAS "${asm}" CACHE STRING "Assembler" FORCE )
+  else (${result} STREQUAL "CC=")
+    message(SEND_ERROR "Invalid compiler: ${comp}")
+  endif (${result} STREQUAL "CC=")
+endforeach (comp ${${compiler}_compiler})
 
 ## ------------------------------------------------------------------------------
 ## Project characteristics
 
 project (LOFAR)
 
-cmake_minimum_required (VERSION 2.5)
+cmake_minimum_required (VERSION 2.6)
 
 ## ------------------------------------------------------------------------------
 ## Set CMAKE_MODULE_PATH to load custom CMake modules
 
-find_path (USG_ROOT cmake/CMakeSettings.cmake
+find_path (LOFAR_ROOT cmake/modules/CMakeSettings.cmake
   PATHS 
   ${LOFAR_SOURCE_DIR}
   ${LOFAR_SOURCE_DIR}/..
@@ -18,109 +96,83 @@ find_path (USG_ROOT cmake/CMakeSettings.cmake
   $ENV{LOFARSOFT}
   )
 
-if (USG_ROOT)
-  include (${USG_ROOT}/cmake/CMakeSettings.cmake)
-else (USG_ROOT)
+if (LOFAR_ROOT)
+  include (${LOFAR_ROOT}/cmake/modules/CMakeSettings.cmake)
+else (LOFAR_ROOT)
   message (FATAL_ERROR "Unable to locate additional CMake scripts!")
-endif (USG_ROOT)
+endif (LOFAR_ROOT)
+
+## -----------------------------------------------------------------------------
+## Include Lofar general
+
+include (LofarGeneral)
 
 ## ------------------------------------------------------------------------------
+## Set debug options
 
-option (LOFAR_VERBOSE_CONFIGURE "Verbose output during configuration?" 0)
+option (LOFAR_VERBOSE_CONFIGURE "Verbose output during configuration?" 1)
 option (LOFAR_BUILD_TESTS       "Build the test programs?"             1)
-option (LOFAR_WITH_TINYCEP      "Use tinyCEP?"                         0)
 
 ## ------------------------------------------------------------------------------
 ## Additional CMake modules
 
 include (CheckIncludeFiles)
 include (CheckLibraryExists)
-#include (CheckFunctionExists)
+include (CheckCXXSourceCompiles)
 include (CheckTypeSize)
 include (CTest)
 enable_testing()
 
 ## ------------------------------------------------------------------------------
-## Check system libraries
-
-check_include_files (sys/socket.h  HAVE_SYS_SOCKET_H )
-check_include_files (sys/types.h   HAVE_SYS_TYPES_H  )
-check_include_files (unistd.h      HAVE_UNISTD_H     )
-check_include_files (stdarg.h      HAVE_STDARG_H     )
-check_include_files (time.h        HAVE_TIME_H       )
-check_include_files (stdio.h       HAVE_STDIO_H      )
-check_include_files (netinet/in.h  HAVE_NETINET_IN_H )
-
-if (HAVE_SYS_TYPES_H)
-  check_type_size ("uint" HAVE_UINT)
-  if (HAVE_UINT)
-    add_definitions (-DHAVE_UINT)
-  endif (HAVE_UINT)
-  ##
-  check_type_size ("long" HAVE_LONG)
-  if (HAVE_LONG)
-    add_definitions (-DHAVE_LONG)
-  endif (HAVE_LONG)
-  ##
-  check_type_size ("long long" HAVE_LONGLONG)
-  if (HAVE_LONGLONG)
-    add_definitions (-DHAVE_LONGLONG)
-  endif (HAVE_LONGLONG)
-  ##
-  check_type_size ("ushort" HAVE_USHORT)
-  if (HAVE_USHORT)
-    add_definitions (-DHAVE_USHORT)
-  endif (HAVE_USHORT)
-else (HAVE_SYS_TYPES_H)
-  message (STATUS "Unable to find sys/types.h")
-endif (HAVE_SYS_TYPES_H)
-
-## ------------------------------------------------------------------------------
-## Check for required tools
+## Configure file
 
-find_program ( bison_bin bison )
-find_program ( flex_bin  flex  )
-find_program ( lex_bin   lex   )
-find_program ( yacc_bin  yacc  )
+configure_file(${CMAKE_SOURCE_DIR}/config.h.cmake
+               ${CMAKE_BINARY_DIR}/config.h)
+configure_file(${CMAKE_SOURCE_DIR}/lofar_config.h.cmake
+               ${CMAKE_BINARY_DIR}/lofar_config.h)
 
 ## ------------------------------------------------------------------------------
 ## Search for external libraries
 
 if (NOT LOFAR_VERBOSE_CONFIGURE)
   set (BOOST_FIND_QUIETLY TRUE)
-  set (CASACORE_FIND_QUIETLY TRUE)
+  set (CASACORE_FIND_QUIETLY FALSE)
 endif (NOT LOFAR_VERBOSE_CONFIGURE)
 
-## Boost++
-
-include (FindBoost)
-
-if (BOOST_INCLUDES)
-  include_directories (${BOOST_INCLUDES})
-  add_definitions (-DHAVE_BOOST)
-endif (BOOST_INCLUDES)
-
-## casacore
-
-include (FindCASACORE)
-
-if (CASACORE_INCLUDES)
-  include_directories (${CASACORE_INCLUDES})
-  add_definitions (-DHAVE_AIPSPP)
-endif (CASACORE_INCLUDES)
+## Load module(s)
+foreach (mod ${${PACKAGE_NAME}_modules})
+  include(${CMAKE_MODULE_PATH}/${mod}.cmake)
+  STRING (REGEX REPLACE "Find" "" mod ${mod})
+  if (${mod}_FOUND)
+    string(TOUPPER ${mod} mod)
+    if (${mod} STREQUAL "BOOST")
+      include_directories (${${mod}_INCLUDE_DIR})
+    elseif (${mod} STREQUAL "MPI")
+      include_directories (${${mod}_INCLUDE_PATH})
+    else (${mod} STREQUAL "BOOST")
+      include_directories (${${mod}_INCLUDES})
+    endif (${mod} STREQUAL "BOOST")
+    if (${mod} STREQUAL "CASACORE")
+      add_definitions (-DHAVE_AIPSPP)
+    else (${mod} STREQUAL "CASACORE")
+      add_definitions (-DHAVE_${mod})
+    endif (${mod} STREQUAL "CASACORE")
+    if (${mod} STREQUAL "MPI")
+      set( CMAKE_CXX_COMPILER ${MPI_COMPILER} CACHE INTERNAL "MPI Compiler" FORCE )
+    endif (${mod} STREQUAL "MPI")
+  endif (${mod}_FOUND)
+endforeach (mod ${${PACKAGE_NAME}_modules})
 
+## ------------------------------------------------------------------------------
 ## Commonly used configuration files
 
-set (LOFAR_config ${LOFAR_BINARY_DIR}/lofar_config.h)
-
-file (WRITE ${LOFAR_config} "/* lofar_config.h --  Generated by CMake. */\n\n")
-
-include_directories (${LOFAR_BINARY_DIR})
+if (${compiler} STREQUAL "gnu" OR ${compiler} STREQUAL "gnubgp")
+  set( CXX_COMPILE_FLAGS "${CXX_COMPILE_FLAGS} -W -Wall -Woverloaded-virtual -Wno-unknown-pragmas" CACHE STRING "CXX Compiler flags" FORCE )
+  add_definitions (${CXX_COMPILE_FLAGS})
+endif (${compiler} STREQUAL "gnu" OR ${compiler} STREQUAL "gnubgp")
 
 ## Common compiler flags
 
-add_definitions (-fPIC)
-
 ## ------------------------------------------------------------------------------
 ## Module header files
 
@@ -128,80 +180,50 @@ include_directories (
   ## LCS
   ${LOFAR_SOURCE_DIR}/LCS/Blob/include
   ${LOFAR_SOURCE_DIR}/LCS/Common/include
-  ${LOFAR_SOURCE_DIR}/LCS/ACC/ALC/include
   ${LOFAR_SOURCE_DIR}/LCS/ACC/APS/include
   ${LOFAR_SOURCE_DIR}/LCS/ACC/PLC/include
   ${LOFAR_SOURCE_DIR}/LCS/AMC/AMCBase/include
   ${LOFAR_SOURCE_DIR}/LCS/AMC/AMCImpl/include
   ${LOFAR_SOURCE_DIR}/LCS/Transport/include
-  ## CEP
-  ${LOFAR_SOURCE_DIR}/CEP/CEPFrame/include
-  ${LOFAR_SOURCE_DIR}/CEP/tinyCEP/include
-  ## Appl
-  ${LOFAR_SOURCE_DIR}/Appl/ApplCommon/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_BandpassCorrector/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_BBS/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_BinningFlagger/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_DataSquasher/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_DFTImager/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_Flagger/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_Flagger2/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_FrequencyFlagger/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_Generator/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_Imager/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_Interface/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_pp_lib/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_SPWCombine/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_Storage/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_Tools/include
-  ${LOFAR_SOURCE_DIR}/Appl/CEP/CS1/CS1_IONProc/src
+  ${LOFAR_SOURCE_DIR}/LCS/Stream/include
+  ${LOFAR_SOURCE_DIR}/LCS/ApplCommon/include
+  ## RTCP
+  ${LOFAR_SOURCE_DIR}/RTCP/Interface/include
+  ${LOFAR_SOURCE_DIR}/RTCP/Storage/include
+  ${LOFAR_SOURCE_DIR}/RTCP/IONProc/src
+  ${LOFAR_SOURCE_DIR}/RTCP/CNProc/src
   )
 
 ## ------------------------------------------------------------------------------
 ## Check for the presence of various packages in the code tree
 
-## --- Appl --------------------------------------
-
-find_path (HAVE_APPLCOMMON CMakeLists.txt ${LOFAR_SOURCE_DIR}/Appl/ApplCommon)
 
-if (HAVE_APPLCOMMON)
-   set (HAVE_APPLCOMMON TRUE CACHE BOOL "Have package ApplCommon?" FORCE)
-endif (HAVE_APPLCOMMON)
-
-## --- CEP ---------------------------------------
-
-find_path (HAVE_CEPFRAME CMakeLists.txt ${LOFAR_SOURCE_DIR}/CEP/CEPFrame)
-
-if (HAVE_CEPFRAME)
-   set (HAVE_CEPFRAME TRUE CACHE BOOL "Have package CEPFrame?" FORCE)
-endif (HAVE_CEPFRAME)
-
-find_path (HAVE_TINYCEP CMakeLists.txt ${LOFAR_SOURCE_DIR}/CEP/tinyCEP)
-
-if (HAVE_TINYCEP)
-   set (HAVE_TINYCEP TRUE CACHE BOOL "Have package TINYCEP?" FORCE)
-endif (HAVE_TINYCEP)
+## ------------------------------------------------------------------------------
+## Directories to be included in the build
 
 ## --- LCS ---------------------------------------
 
-find_path (HAVE_APS CMakeLists.txt ${LOFAR_SOURCE_DIR}/LCS/ACC/APS)
-
-if (HAVE_APS)
-   set (HAVE_APS TRUE CACHE BOOL "Have package APS?" FORCE)
-endif (HAVE_APS)
-
-## ------------------------------------------------------------------------------
-## Directories to be included in the build
+find_path (HAVE_LCS CMakeLists.txt ${LOFAR_SOURCE_DIR}/LCS)
+if (HAVE_LCS)
+  set (HAVE_LCS TRUE CACHE BOOL "Have package LCS?" FORCE)
+  add_subdirectory (LCS)
+endif (HAVE_LCS)  
 
-add_subdirectory (Appl)
+### --- RTCP ---------------------------------------
 
-if (HAVE_CEPFRAME AND HAVE_TINYCEP)
-  add_subdirectory (CEP)
-endif (HAVE_CEPFRAME AND HAVE_TINYCEP)
+find_path (HAVE_RTCP CMakeLists.txt ${LOFAR_SOURCE_DIR}/RTCP)
+if (HAVE_RTCP)
+  set (HAVE_RTCP TRUE CACHE BOOL "Have package RTCP?" FORCE)
+  add_subdirectory (RTCP)
+endif (HAVE_RTCP)  
 
-if (HAVE_APS)
-  add_subdirectory (LCS)
-endif (HAVE_APS)
+# ------------------------------------------------------------------------------
+## Additional target dependencies 
+message (STATUS "TEST_PROGRAMS      = ${TEST_PROGRAMS}")
+add_custom_target (check
+  ctest
+  DEPENDS ${TEST_PROGRAMS}
+)
 
 ## ==============================================================================
 ##
@@ -212,15 +234,20 @@ endif (HAVE_APS)
 if (LOFAR_VERBOSE_CONFIGURE)
   message (STATUS "-----------------------------------------------------------------")
   message (STATUS "[LOFAR] Configuration summary")
+  message (STATUS "PACKAGE_NAME            = ${PACKAGE_NAME}")
   message (STATUS "LOFAR_SOURCE_DIR        = ${LOFAR_SOURCE_DIR}")
+  message (STATUS "CMAKE_C_COMPILER        = ${CMAKE_C_COMPILER}")
+  message (STATUS "CMAKE_CXX_COMPILER      = ${CMAKE_CXX_COMPILER}")
+  message (STATUS "CCAS                    = ${CCAS}")
+  message (STATUS "CXX_COMPILE_FLAGS       = ${CXX_COMPILE_FLAGS}")
   message (STATUS "CMAKE_MODULE_PATH       = ${CMAKE_MODULE_PATH}")
-  message (STATUS "Have package ApplCommon = ${HAVE_APPLCOMMON}")
-  message (STATUS "Have package APS        = ${HAVE_APS}")
-  message (STATUS "Have package CEPFrame   = ${HAVE_CEPFRAME}")
-  message (STATUS "Have package tinyCEP    = ${HAVE_TINYCEP}")
-  message (STATUS "Boost++ includes        = ${BOOST_INCLUDES}")
-  message (STATUS "Boost++ libraries       = ${BOOST_LIBRARIES}")
-  message (STATUS "Have Boost++            = ${HAVE_BOOST}")
-  message (STATUS "Have casacore           = ${HAVE_CASACORE}")
+  message (STATUS "Have package MPI        = ${MPI_FOUND}")
+  message (STATUS "Boost++                 = ${Boost_FOUND}")
+  message (STATUS "Boost++ includes        = ${Boost_INCLUDE_DIR}")
+  message (STATUS "Boost++ libraries       = ${Boost_LIBRARIES}")
+  message (STATUS "CasaCore                = ${CASACORE_FOUND}")
+  message (STATUS "Log4CPlus               = ${Log4CPlus_FOUND}")
+  message (STATUS "SHMEM                   = ${SHMEM_FOUND}")
+  message (STATUS "Backtrace               = ${Backtrace_FOUND}")
   message (STATUS "-----------------------------------------------------------------")
 endif (LOFAR_VERBOSE_CONFIGURE)