Index: source/ariba/communication/BaseCommunication.h
===================================================================
--- source/ariba/communication/BaseCommunication.h	(revision 9322)
+++ source/ariba/communication/BaseCommunication.h	(revision 9684)
@@ -131,11 +131,8 @@
 
 	/// Establishes a link to another end-point.
-	const LinkID establishLink(const EndpointDescriptor& descriptor,
-		const LinkID& linkid = LinkID::UNSPECIFIED, const QoSParameterSet& qos =
-				QoSParameterSet::DEFAULT, const SecurityParameterSet& sec =
-				SecurityParameterSet::DEFAULT);
+	const LinkID establishLink(const EndpointDescriptor& descriptor );
 
 	/// Drops a link
-	void dropLink(const LinkID link);
+	void dropLink( LinkID link );
 
 	/**
@@ -146,5 +143,5 @@
 	 * @return A sequence number for this message
 	 */
-	seqnum_t sendMessage(const LinkID lid, const Message* message);
+	seqnum_t sendMessage( LinkID lid, const Message* message );
 
 	/**
@@ -154,6 +151,6 @@
 	 * @return The end-point descriptor of the link's end-point
 	 */
-	const EndpointDescriptor& getEndpointDescriptor(const LinkID link =
-			LinkID::UNSPECIFIED) const;
+	const EndpointDescriptor& getEndpointDescriptor(
+			LinkID link = LinkID::UNSPECIFIED) const;
 
 	/**
@@ -212,11 +209,6 @@
 	class LinkDescriptor {
 	public:
-
 		/// default constructor
-		LinkDescriptor() :
-			localLink(LinkID::UNSPECIFIED), localLocator(NULL),
-			remoteLink(LinkID::UNSPECIFIED), remoteLocator(NULL),
-			up(false) {
-		}
+		LinkDescriptor() : up(false), id(), localLocator(NULL), remoteLocator(NULL) {}
 
 		~LinkDescriptor() {
@@ -226,28 +218,19 @@
 
 		bool isUnspecified() const {
-			return (this == &UNSPECIFIED());
+			return id.isUnspecified();
 		}
 
-		static LinkDescriptor& UNSPECIFIED(){
-			static LinkDescriptor* unspec = NULL;
-			if(unspec == NULL) unspec = new LinkDescriptor();
-			return *unspec;
-		}
-
-		bool unspecified;
-
-		/// link identifiers
-		LinkID localLink;
+		/// flag, whether this link is up
+		bool up;
+
+		/// link identifier
+		LinkID id;
+
+		/// locators
 		const address_v* localLocator;
-
-		/// used underlay addresses for the link
-		LinkID remoteLink;
 		const address_v* remoteLocator;
 
 		/// the remote end-point descriptor
 		EndpointDescriptor remoteEndpoint;
-
-		/// flag, whether this link is up
-		bool up;
 	};
 
@@ -259,14 +242,11 @@
 
 	/// Link management: add a link
-	void addLink( LinkDescriptor* link );
+	LinkDescriptor& addLink( LinkID link );
 
 	/// Link management: remove a link
-	void removeLink(const LinkID& localLink);
+	void removeLink( LinkID link);
 
 	/// Link management: get link information using the local link
-	LinkDescriptor& queryLocalLink(const LinkID& localLink) const;
-
-	/// Link management: get link information using the remote link
-	LinkDescriptor& queryRemoteLink(const LinkID& remoteLink) const;
+	LinkDescriptor& queryLink( LinkID link) const;
 
 	/// The local end-point descriptor
@@ -307,9 +287,9 @@
 	/// convenience: send message to peer
 	void send( Message* message, const EndpointDescriptor& endpoint );
+
 	void send( Message* message, const LinkDescriptor& descriptor );
 
 	/// state of the base communication
 	bool started;
-
 };
 
Index: source/ariba/communication/messages/AribaBaseMsg.cpp
===================================================================
--- source/ariba/communication/messages/AribaBaseMsg.cpp	(revision 9322)
+++ source/ariba/communication/messages/AribaBaseMsg.cpp	(revision 9684)
@@ -44,8 +44,6 @@
 vsznDefault(AribaBaseMsg);
 
-AribaBaseMsg::AribaBaseMsg( type_ _type,
-	const LinkID& localLink, const LinkID& remoteLink ) :
-	type((uint8_t)_type),
-	localLink(localLink),remoteLink(remoteLink) {
+AribaBaseMsg::AribaBaseMsg( type_ _type, LinkID link ) :
+	type((uint8_t)_type), link(link){
 }
 
Index: source/ariba/communication/messages/AribaBaseMsg.h
===================================================================
--- source/ariba/communication/messages/AribaBaseMsg.h	(revision 9322)
+++ source/ariba/communication/messages/AribaBaseMsg.h	(revision 9684)
@@ -41,7 +41,9 @@
 
 #include <string>
-#include <boost/cstdint.hpp>
+#include <stdint.h>
+
 #include "ariba/utility/messages.h"
 #include "ariba/utility/serialization.h"
+
 #include "ariba/utility/types/LinkID.h"
 #include "ariba/utility/types/Address.h"
@@ -72,8 +74,5 @@
 	};
 
-	AribaBaseMsg( type_ type = typeData,
-			const LinkID& localLink = LinkID::UNSPECIFIED,
-			const LinkID& remoteLink = LinkID::UNSPECIFIED );
-
+	AribaBaseMsg( type_ type = typeData, LinkID link = LinkID::UNSPECIFIED );
 	virtual ~AribaBaseMsg();
 
@@ -84,10 +83,6 @@
 	}
 
-	const LinkID& getLocalLink() const {
-		return localLink;
-	}
-
-	const LinkID& getRemoteLink() const {
-		return remoteLink;
+	const LinkID& getLink() const {
+		return link;
 	}
 
@@ -101,11 +96,11 @@
 
 private:
-	uint8_t type;		// the link message type
+	// link message type
+	uint8_t type;
 
-	// remote and local link ids
-	LinkID localLink;	// the local link id
-	LinkID remoteLink;	// the remote link id
+	// link identifier
+	LinkID  link;
 
-	// remote and local endpoint descriptors
+	// remote and local endpoint descriptors (link reply/request only)
 	EndpointDescriptor localDescriptor;
 	EndpointDescriptor remoteDescriptor;
@@ -115,7 +110,8 @@
 
 sznBeginDefault( ariba::communication::AribaBaseMsg, X ) {
-	X && type && &localLink && &remoteLink;
-	if (type == typeLinkReply || type == typeLinkRequest)
+	X && type && link;
+	if (type == typeLinkReply || type == typeLinkRequest) {
 		X && localDescriptor && remoteDescriptor;
+	}
 	X && Payload();
 } sznEnd();
