Index: source/ariba/utility/system/StartupInterface.h
===================================================================
--- source/ariba/utility/system/StartupInterface.h	(revision 4438)
+++ source/ariba/utility/system/StartupInterface.h	(revision 4462)
@@ -47,7 +47,6 @@
 namespace utility {
 
-/**
- * TODO: Mies -- to be replaced by a general Module!
- */
+class StartupWrapper;
+
 class StartupInterface
 #ifdef UNDERLAY_OMNET
@@ -63,4 +62,5 @@
 	virtual void startup() = 0;
 	virtual void shutdown() = 0;
+	StartupWrapper* wrapper;
 };
 
Index: source/ariba/utility/system/StartupWrapper.cpp
===================================================================
--- source/ariba/utility/system/StartupWrapper.cpp	(revision 4438)
+++ source/ariba/utility/system/StartupWrapper.cpp	(revision 4462)
@@ -47,8 +47,8 @@
 #endif
 
-SystemEventType StartupWrapperEventType("StartupWrapperEventType");
+SystemEventType StartupWrapperEventStartup("StartupWrapperEventStartup");
+SystemEventType StartupWrapperEventShutdown("StartupWrapperEventShutdown");
 
-StartupWrapper::StartupWrapper(StartupInterface* _service, bool _block)
-	: blocking( _block ), service( _service ){
+StartupWrapper::StartupWrapper(StartupInterface* _service) : service( _service ){
 }
 
@@ -126,42 +126,59 @@
 }
 
+void StartupWrapper::handleSystemEvent(const SystemEvent& event){
+
+	if( event.getType() == StartupWrapperEventStartup ){
+
+		string config = configurations.front();
+		configurations.pop();
+		Configuration::setConfigFilename( config );
+
+		//
+		// start the actual application
+		//
+
+		// TODO: im falle von omnet ist service = null, da von SpoVNetOmnetModule so ÃŒbergeben
+		// wie wird im Falle von omnet die anwendung erstellt?
+
+		service->startup();
+
+	} else if( event.getType() == StartupWrapperEventShutdown ){
+
+		service->shutdown();
+		SystemQueue::instance().cancel();
+
+	}
+
+}
+
 void StartupWrapper::startup(StartupInterface* service, bool block){
 
-	StartupWrapper* startup = new StartupWrapper(service, block);
+	StartupWrapper* startup = new StartupWrapper(service);
+	service->wrapper = startup;
 
-#ifdef UNDERLAY_OMNET
 	SystemQueue::instance().scheduleEvent(
-		SystemEvent( startup, StartupWrapperEventType, NULL), 0 );
-#else
-	SystemQueue::instance().scheduleEvent(
-		SystemEvent( startup, StartupWrapperEventType, NULL), 0 );
+		SystemEvent( startup, StartupWrapperEventStartup, NULL), 0 );
 
+#ifndef UNDERLAY_OMNET
 	if( block ) getchar();
 #endif
 }
 
-void StartupWrapper::handleSystemEvent(const SystemEvent& event){
+void StartupWrapper::shutdown(StartupInterface* service, bool block){
 
-	string config = configurations.front();
-	configurations.pop();
-	Configuration::setConfigFilename( config );
+	if( service == NULL || service->wrapper == NULL ) return;
 
-	//
-	// start the actual application
-	//
-
-	// TODO: im falle von omnet ist service = null, da von SpoVNetOmnetModule so ÃŒbergeben
-	// wie wird im Falle von omnet die anwendung erstellt?
-
-	service->startup();
-}
-
-void StartupWrapper::shutdown(StartupInterface* service){
 #ifdef UNDERLAY_OMNET
 	//TODO: service->shutdown();
 #endif
 
-	service->shutdown();
-	SystemQueue::instance().cancel();
+	if(block){
+		SystemEvent ev (service->wrapper, StartupWrapperEventShutdown);
+		service->wrapper->handleSystemEvent(ev);
+
+	}else{
+		SystemQueue::instance().scheduleEvent(
+				SystemEvent( service->wrapper, StartupWrapperEventShutdown, NULL), 0 );
+	}
 }
 
Index: source/ariba/utility/system/StartupWrapper.h
===================================================================
--- source/ariba/utility/system/StartupWrapper.h	(revision 4438)
+++ source/ariba/utility/system/StartupWrapper.h	(revision 4462)
@@ -72,5 +72,5 @@
 	static void initConfig(string filename);
 	static void startup(StartupInterface* service, bool block = true);
-	static void shutdown(StartupInterface* service);
+	static void shutdown(StartupInterface* service, bool block = true);
 
 #ifdef UNDERLAY_OMNET
@@ -80,5 +80,5 @@
 
 protected:
-	StartupWrapper(StartupInterface* _service, bool _block);
+	StartupWrapper(StartupInterface* _service);
 	virtual ~StartupWrapper();
 
@@ -94,5 +94,4 @@
 #endif
 
-	volatile bool blocking;
 	void waitForExit();
 	StartupInterface* service;
