Index: source/ariba/overlay/BaseOverlay.cpp
===================================================================
--- source/ariba/overlay/BaseOverlay.cpp	(revision 2390)
+++ source/ariba/overlay/BaseOverlay.cpp	(revision 2473)
@@ -273,5 +273,5 @@
 bool BaseOverlay::bind(ServiceInterface* service, const ServiceID& sid) {
 
-	logging_debug( "binding service on serviceid " << sid.toString() );
+	logging_debug( "binding service " << service << " on serviceid " << sid.toString() );
 
 	if( listenerMux.contains( sid ) ){
@@ -284,15 +284,17 @@
 }
 
-bool BaseOverlay::unbind(ServiceInterface* service, const ServiceID& sid){
-
-	logging_debug( "unbinding service on serviceid " << sid.toString() );
+ServiceInterface* BaseOverlay::unbind(const ServiceID& sid){
+
+	logging_debug( "unbinding service from serviceid " << sid.toString() );
 
 	if( !listenerMux.contains( sid ) ){
 		logging_warn( "cannot unbind service. no service registered on service id " << sid.toString() );
-		return false;
-	}
-
-	listenerMux.unregisterItem( service );
-	return true;
+		return NULL;
+	}
+
+	ServiceInterface* iface = listenerMux.get( sid );
+	listenerMux.unregisterItem( sid );
+	
+	return NULL; //iface;
 }
 
Index: source/ariba/overlay/BaseOverlay.h
===================================================================
--- source/ariba/overlay/BaseOverlay.h	(revision 2390)
+++ source/ariba/overlay/BaseOverlay.h	(revision 2473)
@@ -185,7 +185,7 @@
 	 * Unregister a receiver.
 	 *
-	 * @param receiver An implementation of the receiver interface
-	 */
-	bool unbind( ServiceInterface* service, const ServiceID& sid );
+	 * @param sid The service id to unregister
+	 */
+	ServiceInterface* unbind( const ServiceID& sid );
 
 	/**
@@ -271,5 +271,5 @@
 	 * to deliver upcoming messages to the correct service.
 	 */
-	Demultiplexer<ServiceInterface*, const ServiceID> listenerMux;
+	Demultiplexer<ServiceInterface*, ServiceID> listenerMux;
 
 	/**
Index: source/ariba/overlay/modules/OverlayInterface.cpp
===================================================================
--- source/ariba/overlay/modules/OverlayInterface.cpp	(revision 2390)
+++ source/ariba/overlay/modules/OverlayInterface.cpp	(revision 2473)
@@ -53,8 +53,9 @@
 		eventsReceiver( _eventsReceiver ) {
 
-	ServiceInterface::initialize( &_baseoverlay, OVERLAY_SERVICE_ID );
+	_baseoverlay.bind( this, OVERLAY_SERVICE_ID );
 }
 
 OverlayInterface::~OverlayInterface(){
+	baseoverlay.unbind( OVERLAY_SERVICE_ID );
 }
 
