Index: source/ariba/overlay/modules/chord/Chord.cpp
===================================================================
--- source/ariba/overlay/modules/chord/Chord.cpp	(revision 5706)
+++ source/ariba/overlay/modules/chord/Chord.cpp	(revision 5716)
@@ -216,6 +216,6 @@
 		// all nodes that I know, fingers, succ/pred
 		for (size_t i = 0; i < table->size(); i++){
-			if ((*table)[i]->ref_count != 0
-					&& !(*table)[i]->info.isUnspecified())
+			if (/*(*table)[i]->ref_count != 0
+					&&*/ !(*table)[i]->info.isUnspecified())
 				nodelist.push_back((*table)[i]->id);
 		}
@@ -225,7 +225,5 @@
 			nodelist.push_back( *(table->get_predesessor()) );
 		}
-
 		if( table->get_successor() != NULL ){
-
 			OverlayInterface::NodeList::iterator i =
 				std::find( nodelist.begin(), nodelist.end(), *(table->get_successor()) );
@@ -261,7 +259,9 @@
 		logging_info("new orphan: " << remote.toString()
 				<< " with link " << lnk.toString());
-		discover_neighbors( lnk );
 		table->insert_orphan(remote)->info = lnk;
 	}
+
+	discover_neighbors( lnk );
+	send_discovery_to(remote);
 
 	vector<LinkID>::iterator it = std::find(bootstrapLinks.begin(), bootstrapLinks.end(), lnk);
@@ -435,5 +435,5 @@
 void Chord::eventFunction() {
 	stabilize_counter++;
-	if (stabilize_counter < 0 || stabilize_counter == 3) {
+	if (stabilize_counter < 0 || stabilize_counter == 2) {
 
 		// reset counter
@@ -468,5 +468,5 @@
 		// remove orphan links
 		orphan_removal_counter++;
-		if (orphan_removal_counter <0 || orphan_removal_counter >= 2) {
+		if (orphan_removal_counter <0 || orphan_removal_counter >= 4) {
 			logging_info("Running orphan removal");
 			orphan_removal_counter = 0;
