Index: source/ariba/overlay/modules/chord/Chord.cpp
===================================================================
--- source/ariba/overlay/modules/chord/Chord.cpp	(revision 5671)
+++ source/ariba/overlay/modules/chord/Chord.cpp	(revision 5673)
@@ -123,5 +123,5 @@
 		dmsg.setSourceEndpoint(&baseoverlay.getEndpointDescriptor());
 		dmsg.setFollowType(Discovery::successor);
-		dmsg.setTTL((uint8_t)2);
+		dmsg.setTTL((uint8_t)3);
 		cmsg.encapsulate(&dmsg);
 		send(&cmsg, lnk);
@@ -133,5 +133,5 @@
 		dmsg.setSourceEndpoint(&baseoverlay.getEndpointDescriptor());
 		dmsg.setFollowType(Discovery::predecessor);
-		dmsg.setTTL((uint8_t)2);
+		dmsg.setTTL((uint8_t)3);
 		cmsg.encapsulate(&dmsg);
 		send(&cmsg, lnk);
@@ -260,4 +260,5 @@
 		logging_info("new orphan: " << remote.toString()
 				<< " with link " << lnk.toString());
+		discover_neighbors( lnk );
 		table->insert_orphan(remote)->info = lnk;
 	}
@@ -321,5 +322,5 @@
 		// decapsulate message
 		Discovery* dmsg = m->decapsulate<Discovery> ();
-		logging_info("received discovery message with"
+		logging_debug("received discovery message with"
 			    << " src=" << m->getSource().toString()
 				<< " dst=" << m->getDestination().toString()
@@ -347,5 +348,5 @@
 					cmsg_s.encapsulate(&dmsg_s);
 					route_item* succ_item = table->get(*table->get_successor());
-					logging_info("Discovery split: routing discovery message to successor "
+					logging_debug("Discovery split: routing discovery message to successor "
 							<< succ_item->id.toString() );
 					send(&cmsg_s, succ_item->info);
@@ -360,5 +361,5 @@
 					route_item* pred_item = table->get(
 							*table->get_predesessor());
-					logging_info("Discovery split: routing discovery message to predecessor "
+					logging_debug("Discovery split: routing discovery message to predecessor "
 							<< pred_item->id.toString() );
 					send(&cmsg_p, pred_item->info);
@@ -427,5 +428,5 @@
 void Chord::eventFunction() {
 	stabilize_counter++;
-	if (stabilize_counter < 0 || stabilize_counter == 1) {
+	if (stabilize_counter < 0 || stabilize_counter == 3) {
 
 		// reset counter
@@ -450,18 +451,12 @@
 		const NodeID disc2 = table->get_finger_table(stabilize_finger).get_compare().get_center();
 		send_discovery_to(disc1);
-
-		if (table->get_successor() != NULL) {
-			route_item* succ_item = table->get(*table->get_successor());
-			if (!succ_item->info.isUnspecified()) discover_neighbors(succ_item->info);
-		}
-
-		// send predecessor message
-		if (table->get_predesessor() != NULL) {
-			route_item* pred_item = table->get(*table->get_predesessor());
-			if (!pred_item->info.isUnspecified()) discover_neighbors(pred_item->info);
-		}
-
 		if (disc1 != disc2)
 			send_discovery_to(disc2);
+
+		for (int i=0; i<table->size(); i++) {
+			LinkID id = (*table)[i]->info;
+			if (!id.isUnspecified()) discover_neighbors(id);
+		}
+
 
 		// remove orphan links
Index: source/ariba/overlay/modules/chord/detail/chord_routing_table.hpp
===================================================================
--- source/ariba/overlay/modules/chord/detail/chord_routing_table.hpp	(revision 5671)
+++ source/ariba/overlay/modules/chord/detail/chord_routing_table.hpp	(revision 5673)
@@ -167,5 +167,5 @@
 public:
 	/// constructs the reactive chord routing table
-	explicit chord_routing_table( const nodeid_t& id, int redundancy = 8 ) :
+	explicit chord_routing_table( const nodeid_t& id, int redundancy = 2 ) :
 		id(id),	succ( redundancy, succ_compare_type(this->id), *this ),
 		pred( redundancy, pred_compare_type(this->id), *this ) {
