Index: sample/pingpong/PingPong.cpp
===================================================================
--- sample/pingpong/PingPong.cpp	(revision 3037)
+++ sample/pingpong/PingPong.cpp	(revision 3041)
@@ -62,4 +62,8 @@
 	node = new Node( *ariba, nodeName );
 
+	// bind communication and node listener
+	node->bind( this );                       /*NodeListener*/
+	node->bind( this, PingPong::PINGPONG_ID); /*CommunicationListener*/
+
 	// start node module
 	node->start();
@@ -68,12 +72,4 @@
 	if (!isInitiator) node->join(spovnetName);
 	else node->initiate(spovnetName);
-
-	// bind communication and node listener
-	node->bind( this );                       /*NodeListener*/
-	node->bind( this, PingPong::PINGPONG_ID); /*CommunicationListener*/
-
-	// start the ping timer. if we are not
-	// the initiator this will happen in onJoinCompleted
-	if( isInitiator ) Timer::start();
 
 	// ping pong started up...
@@ -109,24 +105,4 @@
 }
 
-// node listener interface
-void PingPong::onJoinCompleted( const SpoVNetID& vid ) {
-	logging_error( "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX pingpong node join completed, spovnetid=" << vid.toString() );
-
-	// start the timer to ping every second
-	Timer::start();
-}
-
-void PingPong::onJoinFailed( const SpoVNetID& vid ) {
-	logging_error("pingpong node join failed, spovnetid=" << vid.toString() );
-}
-
-void PingPong::onLeaveCompleted( const SpoVNetID& vid ){
-	logging_info("pingpong node leave completed, spovnetid=" << vid.toString() );
-}
-
-void PingPong::onLeaveFailed( const SpoVNetID& vid ){
-	logging_error("pingpong node leave failed, spovnetid=" << vid.toString() );
-}
-
 // timer event
 void PingPong::eventFunction() {
@@ -153,4 +129,24 @@
 	//-----------------------------------------------------------------------
 	// node->sendBroadcastMessage( pingmsg, PingPong::PINGPONG_ID );
+}
+
+// node listener interface
+void PingPong::onJoinCompleted( const SpoVNetID& vid ) {
+	logging_error( "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX pingpong node join completed, spovnetid=" << vid.toString() );
+
+	// start the timer to ping every second
+	Timer::start();
+}
+
+void PingPong::onJoinFailed( const SpoVNetID& vid ) {
+	logging_error("pingpong node join failed, spovnetid=" << vid.toString() );
+}
+
+void PingPong::onLeaveCompleted( const SpoVNetID& vid ){
+	logging_info("pingpong node leave completed, spovnetid=" << vid.toString() );
+}
+
+void PingPong::onLeaveFailed( const SpoVNetID& vid ){
+	logging_error("pingpong node leave failed, spovnetid=" << vid.toString() );
 }
 
Index: sample/pingpong/main.cpp
===================================================================
--- sample/pingpong/main.cpp	(revision 3037)
+++ sample/pingpong/main.cpp	(revision 3041)
@@ -20,6 +20,7 @@
 	StartupWrapper::startup(&ping, true);
 
-	// this will run blocking until <enter> is hit
-	StartupWrapper::shutdown();
+	// --> we will run blocking until <enter> is hit
+
+	StartupWrapper::shutdown(&ping);
 	return 0;
 }
