Index: /etc/pingpong/settings_initiator.cnf
===================================================================
--- /etc/pingpong/settings_initiator.cnf	(revision 2452)
+++ /etc/pingpong/settings_initiator.cnf	(revision 2454)
@@ -4,3 +4,3 @@
 ariba.tcp.port = 5002
 #ariba.udp.port =
-ariba.bootstrap.hints=pingpong{ip{127.0.0.1},tcp(ip,5002)}
+ariba.bootstrap.hints=pingpong{ip{127.0.0.1},tcp(ip,{5002})}
Index: /etc/pingpong/settings_node1.cnf
===================================================================
--- /etc/pingpong/settings_node1.cnf	(revision 2452)
+++ /etc/pingpong/settings_node1.cnf	(revision 2454)
@@ -4,3 +4,4 @@
 ariba.tcp.port = 5003
 #ariba.udp.port =
-ariba.bootstrap.hints=pingpong{ip{127.0.0.1},tcp(ip,5002)}
+ariba.bootstrap.hints=pingpong{ip{127.0.0.1},tcp(ip,{5002})}
+
Index: /etc/pingpong/settings_node2.cnf
===================================================================
--- /etc/pingpong/settings_node2.cnf	(revision 2452)
+++ /etc/pingpong/settings_node2.cnf	(revision 2454)
@@ -4,3 +4,4 @@
 ariba.tcp.port = 5010
 #ariba.udp.port =
-ariba.bootstrap.hints=pingpong{ip{127.0.0.1},tcp(ip,5002)}
+ariba.bootstrap.hints=pingpong{ip{127.0.0.1},tcp(ip,{5002})}
+
Index: /source/ariba/AribaModule.cpp
===================================================================
--- /source/ariba/AribaModule.cpp	(revision 2452)
+++ /source/ariba/AribaModule.cpp	(revision 2454)
@@ -58,8 +58,4 @@
 namespace ariba {
 
-AribaModule::BootstrapNode::~BootstrapNode() {
-	if (desc!=NULL) delete desc;
-}
-
 AribaModule::AribaModule() {
 
@@ -85,4 +81,5 @@
 			i++;
 		}
+		o << "}";
 	}
 	return o.str();
@@ -102,5 +99,5 @@
 			string data = nav[i][robject_data].str();
 			data = data.substr(1, data.size() - 2);
-			Name name = type;
+			Name name(type);
 			EndpointDescriptor* desc = EndpointDescriptor::fromString(data);
 			addBootstrapNode(name, desc);
Index: /source/ariba/AribaModule.h
===================================================================
--- /source/ariba/AribaModule.h	(revision 2452)
+++ /source/ariba/AribaModule.h	(revision 2454)
@@ -141,13 +141,15 @@
 	class BootstrapNode {
 	public:
-		inline BootstrapNode() : timestamp(0), desc(NULL) {
+		inline BootstrapNode() :
+			timestamp(0), desc(NULL) {
 
+		}
+		inline BootstrapNode(const BootstrapNode& copy) :
+			timestamp(copy.timestamp), desc(copy.desc) {
 		}
 		inline BootstrapNode(uint32_t timestamp,
 				communication::EndpointDescriptor* desc) :
 			timestamp(timestamp), desc(desc) {
-
 		}
-		~BootstrapNode();
 		uint32_t timestamp;
 		communication::EndpointDescriptor* desc;
@@ -157,4 +159,14 @@
 	class BootstrapInfo {
 	public:
+		BootstrapInfo() :
+			spovnetName(), nodes() {
+
+		}
+
+		BootstrapInfo(const BootstrapInfo& copy) :
+			spovnetName(copy.spovnetName), nodes(copy.nodes) {
+
+		}
+
 		Name spovnetName;
 		vector<BootstrapNode> nodes;
Index: /source/ariba/Name.cpp
===================================================================
--- /source/ariba/Name.cpp	(revision 2452)
+++ /source/ariba/Name.cpp	(revision 2454)
@@ -62,10 +62,10 @@
 	if (copy) {
 
-		if ((name!=NULL) && (len>0)){
+		if ( (name!=NULL) && (len>0) ){
 			_bytes = new uint8_t[len];
 			memcpy( _bytes, name, len );
 		} else {
 			len = 0;
-			_bytes = NULL;	
+			_bytes = NULL;
 		}
 
@@ -79,19 +79,19 @@
 }
 
-Name::Name() 
+Name::Name()
 	: _bytes( NULL ), _length( 0 ), _copy( false ), _hreadable( false) {
 }
 
-Name::Name(const char* name, int len, bool copy) 
+Name::Name(const char* name, int len, bool copy)
 	: _bytes( NULL ), _length( 0 ), _copy( false ), _hreadable( false) {
 	init(name, len, copy, len == -1);
 }
 
-Name::Name(string name) 
+Name::Name(string name)
 	: _bytes( NULL ), _length( 0 ), _copy( false ), _hreadable( false) {
 	init(name.c_str(), name.length(), true, true);
 }
 
-Name::Name(const Name& name) 
+Name::Name(const Name& name)
 	: _bytes( NULL ), _length( 0 ), _copy( false ), _hreadable( false) {
 	init((const char*)name.bytes(), name.length(), true, name._hreadable);
@@ -104,4 +104,8 @@
 		_length = 0;
 	}
+}
+
+Name& Name::operator=( const Name& name ) {
+	init((const char*)name.bytes(), name.length(), true, name._hreadable);
 }
 
@@ -119,5 +123,5 @@
 	if (_bytes == NULL && name._bytes == NULL &&
 		length() == name.length()) return true;
-	
+
 	// specified name objects
 	if (_bytes == NULL || name._bytes == NULL) return false;
Index: /source/ariba/Name.h
===================================================================
--- /source/ariba/Name.h	(revision 2452)
+++ /source/ariba/Name.h	(revision 2454)
@@ -113,4 +113,9 @@
 
 	/**
+	 * The common assign operator
+	 */
+	Name& operator=( const Name& name );
+
+	/**
 	 * The common implementation of the "equal" operator.
 	 */
Index: /source/ariba/Node.cpp
===================================================================
--- /source/ariba/Node.cpp	(revision 2452)
+++ /source/ariba/Node.cpp	(revision 2454)
@@ -45,5 +45,7 @@
 #include "ariba/interface/ServiceInterface.h"
 #include "ariba/interface/UnderlayAbstraction.h"
-
+#include "ariba/communication/EndpointDescriptor.h"
+
+using ariba::communication::EndpointDescriptor;
 using ariba::interface::UnderlayAbstraction;
 
@@ -125,5 +127,5 @@
 
 Node::Node(AribaModule& ariba_mod, const Name& node_name) :
-	ariba_mod( ariba_mod ), name( node_name ), context( NULL ){
+	ariba_mod(ariba_mod), name(node_name), context(NULL) {
 }
 
@@ -133,5 +135,5 @@
 void Node::join(const Name& vnetname) {
 	spovnetId = vnetname.toSpoVNetId();
-	nodeId = generateNodeId( name );
+	nodeId = generateNodeId(name);
 	this->context = ariba_mod.underlay_abs->joinSpoVNet(spovnetId,
 			*ariba_mod.getBootstrapNode(name), nodeId);
@@ -139,10 +141,13 @@
 
 void Node::initiate(const Name& vnetname, const SpoVNetProperties& parm) {
-	utility::OverlayParameterSet ovrpset =
-		(utility::OverlayParameterSet::_OverlayStructure) parm.getBaseOverlayType();
+	utility::OverlayParameterSet
+			ovrpset =
+					(utility::OverlayParameterSet::_OverlayStructure) parm.getBaseOverlayType();
 	spovnetId = vnetname.toSpoVNetId();
-	nodeId = generateNodeId( name );
+	nodeId = generateNodeId(name);
 	this->context = ariba_mod.underlay_abs->createSpoVNet(spovnetId, nodeId,
 			ariba_mod.ip_addr, ariba_mod.tcp_port);
+	ariba_mod.addBootstrapNode(vnetname,
+			new EndpointDescriptor(this->context->getBaseCommunication().getEndpointDescriptor()));
 }
 
@@ -173,8 +178,6 @@
 
 NodeID Node::generateNodeId(const Name& name) const {
-	if( name == Name::UNSPECIFIED )
-		return Name::random().toNodeId();
-	else
-		return name.toNodeId();
+	if (name == Name::UNSPECIFIED) return Name::random().toNodeId();
+	else return name.toNodeId();
 }
 
@@ -190,9 +193,9 @@
 seqnum_t Node::sendMessage(const DataMessage& msg, const NodeID& nid,
 		const ServiceID& sid, const LinkProperties& req) {
-	return context->getOverlay().sendMessage((Message*)msg, nid, sid);
+	return context->getOverlay().sendMessage((Message*) msg, nid, sid);
 }
 
 seqnum_t Node::sendMessage(const DataMessage& msg, const LinkID& lnk) {
-	return context->getOverlay().sendMessage((Message*)msg, lnk);
+	return context->getOverlay().sendMessage((Message*) msg, lnk);
 }
 
Index: /source/ariba/communication/EndpointDescriptor.cpp
===================================================================
--- /source/ariba/communication/EndpointDescriptor.cpp	(revision 2452)
+++ /source/ariba/communication/EndpointDescriptor.cpp	(revision 2454)
@@ -92,14 +92,19 @@
 				string ip = nav[i][robject_data].str();
 				ip = ip.substr(1,ip.size()-2);
-				cout << "ep-ip = " <<ip << endl;
+				cout << "ep-ip = " << ip << endl;
 				ep = new EndpointDescriptor();
 				ep->locator = new IPv4Locator();
+				cout << "1" << endl;
 				ep->locator->setIP(ip);
+				cout << "2" << endl;
 				ep->isUnspec = false;
+				cout << "3" << endl;
 			} else
 			if (type=="tcp") {
+				cout << "4" << endl;
 				string port = nav[i][robject_data][rfields][1].str();
 				port = port.substr(1,port.size()-2);
 				cout << "ep-tcp-port = " << port << endl;
+				cout << "5" << endl;
 				ep->locator->setPort(stoi(port));
 			}
