Index: source/ariba/utility/system/StartupWrapper.cpp
===================================================================
--- source/ariba/utility/system/StartupWrapper.cpp	(revision 3037)
+++ source/ariba/utility/system/StartupWrapper.cpp	(revision 3041)
@@ -124,12 +124,14 @@
 void StartupWrapper::startup(StartupInterface* service, bool block){
 
-	StartupWrapper* spovnet = new StartupWrapper(service, block);
+	StartupWrapper* startup = new StartupWrapper(service, block);
 
 #ifdef UNDERLAY_OMNET
 	SystemQueue::instance().scheduleEvent(
-		SystemEvent( spovnet, StartupWrapperEventType, NULL), 0 );
+		SystemEvent( startup, StartupWrapperEventType, NULL), 0 );
 #else
-	spovnet->handleSystemEvent(
-		SystemEvent( spovnet, StartupWrapperEventType, NULL));
+	SystemQueue::instance().scheduleEvent(
+		SystemEvent( startup, StartupWrapperEventType, NULL), 0 );
+
+	if( block ) getchar();
 #endif
 }
@@ -149,23 +151,12 @@
 
 	service->startup();
-	waitForExit();
-
-#ifndef UNDERLAY_OMNET
-	service->shutdown();
-	delete event.getListener();
-#endif
 }
 
-void StartupWrapper::waitForExit(){
-#ifndef UNDERLAY_OMNET
-	if( blocking ) getchar();
-#endif
-}
-
-void StartupWrapper::shutdown(){
+void StartupWrapper::shutdown(StartupInterface* service){
 #ifdef UNDERLAY_OMNET
 	//TODO: service->shutdown();
 #endif
 
+	service->shutdown();
 	SystemQueue::instance().cancel();
 }
Index: source/ariba/utility/system/StartupWrapper.h
===================================================================
--- source/ariba/utility/system/StartupWrapper.h	(revision 3037)
+++ source/ariba/utility/system/StartupWrapper.h	(revision 3041)
@@ -72,5 +72,5 @@
 	static void initConfig(string filename);
 	static void startup(StartupInterface* service, bool block = true);
-	static void shutdown();
+	static void shutdown(StartupInterface* service);
 
 #ifdef UNDERLAY_OMNET
