Index: source/ariba/overlay/OverlayBootstrap.cpp
===================================================================
--- source/ariba/overlay/OverlayBootstrap.cpp	(revision 4850)
+++ source/ariba/overlay/OverlayBootstrap.cpp	(revision 4866)
@@ -44,4 +44,5 @@
 
 use_logging_cpp(OverlayBootstrap);
+SystemEventType OverlayBootstrapMethodType("OverlayBootstrapMethodType");
 
 OverlayBootstrap::OverlayBootstrap()
@@ -61,5 +62,5 @@
 
 	manager.registerCallback( this );
-	manager.registerAllModules();
+	manager.registerModule( BootstrapManager::BootstrapTypePeriodicBroadcast );
 }
 void OverlayBootstrap::stop(){
@@ -69,5 +70,21 @@
 
 	manager.unregisterCallback( this );
-	manager.unregisterAllModules();
+	manager.unregisterModule( BootstrapManager::BootstrapTypePeriodicBroadcast );
+}
+
+void OverlayBootstrap::handleSystemEvent(const SystemEvent& event){
+
+
+	EventData* data = event.getData<EventData>();
+
+	// announcement for our spovnet
+	logging_info( "found bootstrap node for our SpoVNetID " << data->spovnetid.toString()
+			<< " on NodeID " << data->nodeid.toString() << " with endpoint " << data->endpoint.toString() );
+
+
+	// TODO: do stuff on overlay
+
+
+	delete data;
 }
 
@@ -95,7 +112,16 @@
 	if( nid == this->nodeid ) return;
 
-	// announcement for our spovnet
-	logging_info( "found bootstrap node for our SpoVNetID " << sid.toString()
-			<< " on NodeID " << nid << " with endpoint " << ep.toString() );
+	//
+	// send out the bootstrap information as
+	// event to synchronize into the system queue
+	//
+
+	EventData* data = new EventData();
+	data->spovnetid = sid;
+	data->nodeid = nid;
+	data->endpoint = ep;
+
+	SystemQueue::instance().scheduleEvent(
+			SystemEvent( this, OverlayBootstrapMethodType, data), 0 );
 }
 
Index: source/ariba/overlay/OverlayBootstrap.h
===================================================================
--- source/ariba/overlay/OverlayBootstrap.h	(revision 4850)
+++ source/ariba/overlay/OverlayBootstrap.h	(revision 4866)
@@ -47,4 +47,8 @@
 #include "ariba/utility/bootstrap/BootstrapInformationCallback.h"
 #include "ariba/communication/EndpointDescriptor.h"
+#include "ariba/utility/system/SystemEventListener.h"
+#include "ariba/utility/system/SystemQueue.h"
+#include "ariba/utility/system/SystemEvent.h"
+#include "ariba/utility/system/SystemEventType.h"
 
 using std::string;
@@ -55,4 +59,8 @@
 using ariba::utility::BootstrapInformationCallback;
 using ariba::communication::EndpointDescriptor;
+using ariba::utility::SystemEventType;
+using ariba::utility::SystemEvent;
+using ariba::utility::SystemQueue;
+using ariba::utility::SystemEventListener;
 
 namespace ariba {
@@ -61,5 +69,5 @@
 class BaseOverlay;
 
-class OverlayBootstrap : public BootstrapInformationCallback {
+class OverlayBootstrap : public BootstrapInformationCallback, public SystemEventListener {
 	use_logging_h(OverlayBootstrap);
 public:
@@ -74,7 +82,14 @@
 
 protected:
+	virtual void handleSystemEvent(const SystemEvent& event);
 	virtual void onBootstrapServiceFound(string name, string info1, string info2, string info);
 
 private:
+	typedef struct _EventData {
+		SpoVNetID spovnetid;
+		NodeID nodeid;
+		EndpointDescriptor endpoint;
+	} EventData;
+
 	BootstrapManager& manager;
 	SpoVNetID spovnetid;
