diff --git a/cmake_support/OST.cmake b/cmake_support/OST.cmake
index 534e9b34b009cdbbd27c2f85ca567b4b501fd6c4..07ba4660230fb440856acf235fd5283f51165ced 100644
--- a/cmake_support/OST.cmake
+++ b/cmake_support/OST.cmake
@@ -104,7 +104,7 @@ macro(stage_headers HEADERS HEADER_INSTALL_DIR TARGET SUB)
   # introduce a helper target to make sure the headers are staged before
   # building the library
   string(REPLACE "/" "_" _SUB_NO_SLASH "${SUB}")
-  string(REPLACE "ost_" "" _TARGET "${TARGET}")
+  string(REPLACE "${PREFIX}_" "" _TARGET "${TARGET}")
   #message("target before: ${TARGET} after: ${_TARGET}")
   set(_TARGET_NAME ${_TARGET}_${_SUB_NO_SLASH}_headers)
   set(_SUB ${SUB})
@@ -133,19 +133,30 @@ endmacro()
 macro(module)
   #-----------------------------------------------------------------------------
   # deal with arguments
-  #-----------------------------------------------------------------------------  
-  parse_argument_list(_ARG 
-                      "NAME;SOURCES;HEADERS;DEPENDS_ON;LINK;HEADER_OUTPUT_DIR" 
-                      "" ${ARGN})  
+  #-----------------------------------------------------------------------------
+  set(_ARGS "NAME;SOURCES;HEADERS;DEPENDS_ON;LINK;HEADER_OUTPUT_DIR;PREFIX")
+  set(_ARG_PREFIX ost)  
+  parse_argument_list(_ARG "${_ARGS}" "" ${ARGN})  
   if (NOT _ARG_NAME)
-    message(FATAL_ERROR "invalid use of module(): a module name must be provided")
+    message(FATAL_ERROR 
+            "invalid use of module(): a module name must be provided")
   endif()
-  
-  set(_HEADER_OUTPUT_DIR ost/${_ARG_NAME})
+
+
   if (_ARG_HEADER_OUTPUT_DIR)
     set(_HEADER_OUTPUT_DIR ${_ARG_HEADER_OUTPUT_DIR})
+  else()
+    if (_ARG_PREFIX)
+      set(_HEADER_OUTPUT_DIR "${_ARG_PREFIX}/${_ARG_NAME}")
+    else()
+      set(_HEADER_OUTPUT_DIR "${_ARG_NAME}")
+    endif()
+  endif()
+  if (_ARG_PREFIX)
+    set(_LIB_NAME ${_ARG_PREFIX}_${_ARG_NAME})
+  else()
+    set(_LIB_NAME ${_ARG_NAME})
   endif()
-  set(_LIB_NAME ost_${_ARG_NAME})
   string(TOUPPER ${_LIB_NAME} _UPPER_LIB_NAME)  
   #-----------------------------------------------------------------------------
   # create library  
@@ -343,15 +354,20 @@ macro(pymod)
   #-----------------------------------------------------------------------------
   # deal with arguments
   #-----------------------------------------------------------------------------
+  set(_ARG_PREFIX ost)
   parse_argument_list(_ARG 
-                      "NAME;CPP;PY;LINK;OUTPUT_DIR" "" ${ARGN})
+                      "NAME;CPP;PY;LINK;OUTPUT_DIR;PREFIX" "" ${ARGN})
   if (NOT _ARG_NAME)
     message(FATAL_ERROR "invalid use of pymod(): a name must be provided")
   endif()
   if (_ARG_OUTPUT_DIR)
     set(PYMOD_DIR "openstructure/${_ARG_OUTPUT_DIR}")
   else()
-    set(PYMOD_DIR "openstructure/ost/${_ARG_NAME}")
+    if (_ARG_PREFIX)
+        set(PYMOD_DIR "openstructure/${_ARG_PREFIX}/${_ARG_NAME}")
+    else()
+      set(PYMOD_DIR "openstructure/${_ARG_NAME}")
+    endif()
   endif()
   set(PYMOD_STAGE_DIR "${LIB_STAGE_PATH}/${PYMOD_DIR}")
   file(MAKE_DIRECTORY ${PYMOD_STAGE_DIR})
@@ -363,9 +379,14 @@ macro(pymod)
     set_target_properties("_${_ARG_NAME}"
                           PROPERTIES ECHO_STRING
                           "Building Python Module ${_ARG_NAME}")
-    get_target_property(_CUSTOM_CHECK "ost_${_ARG_NAME}" HEADER_ONLY)
+    if (_ARG_PREFIX)
+      set(_PARENT_NAME "${_ARG_PREFIX}_${_ARG_NAME}")
+    else()
+      set(_PARENT_NAME "${_ARG_NAME}")
+    endif()
+    get_target_property(_CUSTOM_CHECK "${_PARENT_NAME}" HEADER_ONLY)
     if (NOT _CUSTOM_CHECK)
-      set(_PARENT_LIB_NAME "ost_${_ARG_NAME}")
+      set(_PARENT_LIB_NAME "${_PARENT_NAME}")
     endif()
     target_link_libraries("_${_ARG_NAME}" ${_PARENT_LIB_NAME} 
                           ${PYTHON_LIBRARIES} ${BOOST_PYTHON_LIBRARIES})
@@ -429,8 +450,8 @@ macro(pymod)
       include_directories(${PYTHON_INCLUDE_PATH})
       install(FILES ${_PY_FILES} DESTINATION "${LIB_DIR}/${PYMOD_DIR}")
       endif()
-  endif()
-  get_target_property(_MOD_DEPS "ost_${_ARG_NAME}" MODULE_DEPS)
+  endif()  
+  get_target_property(_MOD_DEPS "${_PARENT_NAME}" MODULE_DEPS)
   if(_MOD_DEPS)
     foreach(dep ${_MOD_DEPS})
        add_dependencies("_${_ARG_NAME}" "_${dep}")
diff --git a/modules/config/CMakeLists.txt b/modules/config/CMakeLists.txt
index 9c5c890916dd6cefd673103ab40cd147dbefa72b..12abad743846debb764683f191c9c363a6a5ba2a 100644
--- a/modules/config/CMakeLists.txt
+++ b/modules/config/CMakeLists.txt
@@ -49,4 +49,4 @@ set(CONFIG_HH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/config.hh")
 configure_file(config.hh.in ${CONFIG_HH_FILE})
 add_custom_target(ost_config)
 stage_headers("${OST_CONFIG_HEADERS}" "ost" 
-              "ost_config" "")
+              "ost_config" "" "ost")