Index: source/ariba/communication/BaseCommunication.cpp
===================================================================
--- source/ariba/communication/BaseCommunication.cpp	(revision 2988)
+++ source/ariba/communication/BaseCommunication.cpp	(revision 3037)
@@ -55,6 +55,15 @@
 const BaseCommunication::LinkDescriptor BaseCommunication::LinkDescriptor::UNSPECIFIED;
 
-BaseCommunication::BaseCommunication(const NetworkLocator* _locallocator, const uint16_t _listenport)
-	: messageReceiver( NULL ), currentSeqnum( 0 ), listenport( _listenport ) {
+BaseCommunication::BaseCommunication()
+	: messageReceiver(NULL), network(NULL), transport(NULL){
+}
+
+BaseCommunication::~BaseCommunication(){
+}
+
+void BaseCommunication::start(const NetworkLocator* _locallocator, const uint16_t _listenport){
+
+	currentSeqnum = 0;
+	listenport = _listenport;
 
 	logging_info( "starting up base communication and creating transports ..." );
@@ -139,5 +148,5 @@
 }
 
-BaseCommunication::~BaseCommunication() {
+void BaseCommunication::stop() {
 
 	logging_info( "stopping base communication and transport ..." );
@@ -210,5 +219,5 @@
 	// warn if this link has some queued messages attached
 	if( descriptor.waitingmsg.size() > 0 ){
-		logging_warn( "dropping link " << link.toString() << 
+		logging_warn( "dropping link " << link.toString() <<
 			" that has " << descriptor.waitingmsg.size() << " waiting messages" );
 	}
@@ -368,5 +377,5 @@
 		const NetworkLocator* remoteLocator = dynamic_cast<const NetworkLocator*>(message->getSourceAddress());
 
-		logging_debug( "localLocator=" << localLocator->toString() 
+		logging_debug( "localLocator=" << localLocator->toString()
 				<< " remoteLocator=" << remoteLocator->toString());
 
@@ -419,5 +428,5 @@
 		// the link is now open
 		//
-		
+
 		BOOST_FOREACH( CommunicationEvents* i, eventListener ){
 			i->onLinkUp( localLink, localLocator, remoteLocator );
@@ -444,6 +453,6 @@
 
 		linkDesc.remoteLink = spovmsg->getLocalLink();
-		linkDesc.linkup = true;	
-	
+		linkDesc.linkup = true;
+
 		logging_debug( "the link is now up with local link id " << spovmsg->getRemoteLink().toString() );
 
@@ -452,5 +461,5 @@
 		}
 
-		if( linkDesc.waitingmsg.size() > 0 ){ 
+		if( linkDesc.waitingmsg.size() > 0 ){
 			logging_info( "sending out queued messages on link " << linkDesc.localLink.toString() );
 
@@ -564,5 +573,5 @@
 	for( ; i != iend; i++){
 		if( (*i).localLink != localLink) continue;
-		
+
 		BOOST_FOREACH( Message* msg, i->waitingmsg ){
 			delete msg;
Index: source/ariba/communication/BaseCommunication.h
===================================================================
--- source/ariba/communication/BaseCommunication.h	(revision 2988)
+++ source/ariba/communication/BaseCommunication.h	(revision 3037)
@@ -122,18 +122,27 @@
  */
 class BaseCommunication : public MessageReceiver, NetworkChangeInterface {
-
 	use_logging_h(BaseCommunication);
-
 public:
-	/**
-	 * Constructs a Base Communication instance.
-	 * Listens default on port number 41402
-	 */
-	BaseCommunication(const NetworkLocator* _locallocator, const uint16_t _listenport);
-
-	/**
-	 * Destructs a Base Communication instance
+
+	/**
+	 * Default ctor that just creates an empty
+	 * non functional base communication
+	 */
+	BaseCommunication();
+
+	/**
+	 * Default dtor that does nothing
 	 */
 	virtual ~BaseCommunication();
+
+	/**
+	 * Startup the base communication, start modules etc.
+	 */
+	void start(const NetworkLocator* _locallocator, const uint16_t _listenport);
+
+	/**
+	 * stop the base communication, stop modules etc.
+	 */
+	void stop();
 
 	/**
Index: source/ariba/communication/EndpointDescriptor.cpp
===================================================================
--- source/ariba/communication/EndpointDescriptor.cpp	(revision 2988)
+++ source/ariba/communication/EndpointDescriptor.cpp	(revision 3037)
@@ -57,4 +57,6 @@
 
 EndpointDescriptor::EndpointDescriptor(const Locator* _locator){
+	if( _locator == NULL ) return;
+
 	locator = new IPv4Locator(*dynamic_cast<IPv4Locator*>((Locator*)_locator));
 	isUnspec = false;
Index: source/ariba/communication/EndpointDescriptor.h
===================================================================
--- source/ariba/communication/EndpointDescriptor.h	(revision 2988)
+++ source/ariba/communication/EndpointDescriptor.h	(revision 3037)
@@ -51,11 +51,4 @@
 using ariba::communication::IPv4Locator;
 
-// needed for friend decleration
-// in different namespace
-namespace ariba {
-namespace interface {
-	class UnderlayAbstraction;
-}}
-
 namespace ariba {
 namespace communication {
@@ -67,5 +60,4 @@
 
 	friend class BaseCommunication;
-	friend class ariba::interface::UnderlayAbstraction;
 
 public:
