Index: source/ariba/overlay/modules/OverlayInterface.cpp
===================================================================
--- source/ariba/overlay/modules/OverlayInterface.cpp	(revision 3056)
+++ source/ariba/overlay/modules/OverlayInterface.cpp	(revision 3057)
@@ -60,3 +60,24 @@
 }
 
+void OverlayInterface::onLinkUp(const LinkID& lnk, const NodeID& remote){
+}
+
+void OverlayInterface::onLinkDown(const LinkID& lnk, const NodeID& remote){
+}
+
+void OverlayInterface::onLinkChanged(const LinkID& lnk, const NodeID& remote){
+}
+
+void OverlayInterface::onLinkFail(const LinkID& lnk, const NodeID& remote){
+}
+
+void OverlayInterface::onLinkQoSChanged(const LinkID& lnk, const NodeID& remote, const LinkProperties& prop){
+}
+
+bool OverlayInterface::onLinkRequest(const NodeID& remote, const DataMessage& msg){
+}
+
+void OverlayInterface::onMessage(const DataMessage& msg, const NodeID& remote, const LinkID& lnk){
+}
+
 }} // namespace ariba, overlay
Index: source/ariba/overlay/modules/OverlayInterface.h
===================================================================
--- source/ariba/overlay/modules/OverlayInterface.h	(revision 3056)
+++ source/ariba/overlay/modules/OverlayInterface.h	(revision 3057)
@@ -80,4 +80,13 @@
 	virtual NodeList getKnownNodes() const = 0;
 
+	// functions from CommunicationListener that we _can_ use as overlay
+	virtual void onLinkUp(const LinkID& lnk, const NodeID& remote);
+	virtual void onLinkDown(const LinkID& lnk, const NodeID& remote);
+	virtual void onLinkChanged(const LinkID& lnk, const NodeID& remote);
+	virtual void onLinkFail(const LinkID& lnk, const NodeID& remote);
+	virtual void onLinkQoSChanged(const LinkID& lnk, const NodeID& remote, const LinkProperties& prop);
+	virtual bool onLinkRequest(const NodeID& remote, const DataMessage& msg);
+	virtual void onMessage(const DataMessage& msg, const NodeID& remote, const LinkID& lnk = LinkID::UNSPECIFIED);
+
 protected:
 	BaseOverlay& baseoverlay;
Index: source/ariba/overlay/modules/onehop/OneHop.cpp
===================================================================
--- source/ariba/overlay/modules/onehop/OneHop.cpp	(revision 3056)
+++ source/ariba/overlay/modules/onehop/OneHop.cpp	(revision 3057)
@@ -58,5 +58,4 @@
 
 OneHop::~OneHop(){
-
 	deleteOverlay();
 }
@@ -163,5 +162,6 @@
 }
 
-void OneHop::onLinkDown( const LinkID& link, const NodeID& local, const NodeID& remote ){
+
+void OneHop::onLinkDown(const LinkID& lnk, const NodeID& remote){
 
 	//
@@ -175,5 +175,5 @@
 
 	for( ; i != iend; i++ ){
-		if( i->second == link ){
+		if( i->second == lnk ){
 			overlayNodes.erase( i );
 			break;
@@ -182,5 +182,5 @@
 }
 
-void OneHop::onLinkUp(const LinkID& link, const NodeID& local, const NodeID& remote) {
+void OneHop::onLinkUp(const LinkID& lnk, const NodeID& remote){
 
 	//
@@ -189,5 +189,5 @@
 	//
 
-	if( link != bootstrapLink ){
+	if( lnk != bootstrapLink ){
 		if( pendingLinks > 0 )  pendingLinks--;
 		if( pendingLinks == 0 ) state = OneHopStateCompleted;
@@ -201,11 +201,11 @@
 
 	state = OneHopStateJoinListingRequested;
-	baseoverlay.sendMessage( &onemsg, link );
-}
-
-bool OneHop::receiveMessage(const Message* message, const LinkID& link, const NodeID& node){
-
-	OneHopMessage* onemsg = const_cast<Message*>(message)->decapsulate<OneHopMessage>();
-	if( onemsg == NULL ) return false;
+	baseoverlay.sendMessage( &onemsg, lnk );
+}
+
+void OneHop::onMessage(const DataMessage& msg, const NodeID& remote, const LinkID& lnk){
+
+	OneHopMessage* onemsg = msg.getMessage()->convert<OneHopMessage>();
+	if( onemsg == NULL ) return;
 
 	//
@@ -217,5 +217,5 @@
 		NodeListingRequest* request = onemsg->decapsulate<NodeListingRequest>();
 
-		logging_info( "onehop received node listing request from node " << node.toString() );
+		logging_info( "onehop received node listing request from node " << remote.toString() );
 
 		//
@@ -223,5 +223,5 @@
 		//
 
-		overlayNodes.insert( make_pair(node, link) );
+		overlayNodes.insert( make_pair(remote, lnk) );
 
 		//
@@ -249,5 +249,5 @@
 
 		onehopReply.encapsulate( &listingReply );
-		baseoverlay.sendMessage( &onehopReply, link );
+		baseoverlay.sendMessage( &onehopReply, lnk );
 
 		//
@@ -256,5 +256,5 @@
 		//
 
-		eventsReceiver->onNodeJoin( node );
+		eventsReceiver->onNodeJoin( remote );
 
 	} // if( request != NULL )
@@ -268,5 +268,5 @@
 		NodeListingReply* reply = onemsg->decapsulate<NodeListingReply>();
 
-		logging_debug( "received node listing reply from node " << node.toString()
+		logging_debug( "received node listing reply from node " << remote.toString()
 					<< " with all overlay nodes. connecting to all of them" );
 
Index: source/ariba/overlay/modules/onehop/OneHop.h
===================================================================
--- source/ariba/overlay/modules/onehop/OneHop.h	(revision 3056)
+++ source/ariba/overlay/modules/onehop/OneHop.h	(revision 3057)
@@ -85,10 +85,10 @@
 
 	//
-	// see CommunicationListener.h and OverlayInterface.h
+	// see CommunicationListener.h or OverlayInterface.h
 	//
 
-	virtual void onLinkUp( const LinkID& link, const NodeID& local, const NodeID& remote );
-	virtual void onLinkDown( const LinkID& link, const NodeID& local, const NodeID& remote );
-	virtual bool receiveMessage( const Message* message, const LinkID& link, const NodeID& node );
+	virtual void onLinkUp(const LinkID& lnk, const NodeID& remote);
+	virtual void onLinkDown(const LinkID& lnk, const NodeID& remote);
+	virtual void onMessage(const DataMessage& msg, const NodeID& remote, const LinkID& lnk = LinkID::UNSPECIFIED);
 
 private:
