Index: sample/pingpong/PingPong.cpp
===================================================================
--- sample/pingpong/PingPong.cpp	(revision 2473)
+++ sample/pingpong/PingPong.cpp	(revision 2483)
@@ -17,4 +17,5 @@
 // construction
 PingPong::PingPong() : pingId( 0 ) {
+	Timer::setInterval( 5000 );
 }
 
@@ -70,7 +71,11 @@
 
 	// bind communication and node listener
-	node->bind(this);
-	node->bind(this, PingPong::PINGPONG_ID);
+	node->bind( this );
+	node->bind( this, PingPong::PINGPONG_ID);
 	
+	// start the ping timer. if we are not
+	// the initiator this will happen in onJoinCompleted
+	if( isInitiator ) Timer::start();
+
 	// ping pong started up...
 	logging_info( "pingpong started up ");
@@ -85,5 +90,5 @@
 	Timer::stop();
 
-	// unbind listeners
+	// unbind communication and node listener
 	node->unbind( this );
 	node->unbind( this, PingPong::PINGPONG_ID );
@@ -108,5 +113,4 @@
 
 	// start the timer to ping every second
-	Timer::setInterval( 1000 );
 	Timer::start();
 }
@@ -117,16 +121,15 @@
 
 // communication listener
-bool PingPong::onLinkRequest(const NodeID& remote, Message* msg) {
+bool PingPong::onLinkRequest(const NodeID& remote, const DataMessage& msg) {
 	return false;
 }
 
-void PingPong::onMessage(Message* msg, const NodeID& remote, 
-		const LinkID& lnk = LinkID::UNSPECIFIED) {
+void PingPong::onMessage(const DataMessage& msg, const NodeID& remote, const LinkID& lnk) {
 
-	PingPongMessage* pingmsg = msg->decapsulate<PingPongMessage> ();
+	PingPongMessage* pingmsg = msg.getMessage()->decapsulate<PingPongMessage> ();
 
 	logging_info( "received ping message on link " << lnk.toString()
 			<< " from node " << remote.toString()
-			<< ": " << pingmsg->toString() );
+			<< ": " << pingmsg->info() );
 }
 
@@ -142,5 +145,4 @@
 	PingPongMessage pingmsg( pingId );
 	node->sendBroadcastMessage( pingmsg, PingPong::PINGPONG_ID );
-
 }
 
Index: sample/pingpong/PingPong.h
===================================================================
--- sample/pingpong/PingPong.h	(revision 2473)
+++ sample/pingpong/PingPong.h	(revision 2483)
@@ -35,6 +35,6 @@
 protected:
 	// communication listener interface
-	virtual bool onLinkRequest(const NodeID& remote, Message* msg);
-	virtual void onMessage(Message* msg, const NodeID& remote, const LinkID& lnk);
+	virtual bool onLinkRequest(const NodeID& remote, const DataMessage& msg);
+	virtual void onMessage(const DataMessage& msg, const NodeID& remote, const LinkID& lnk= LinkID::UNSPECIFIED);
 
 	// node listener interface
@@ -62,4 +62,5 @@
  	// the current ping id
  	unsigned long pingId;
+
 };
 
