diff --git a/nlsr.c b/nlsr.c
index 6ca3c40..c63aa9e 100644
--- a/nlsr.c
+++ b/nlsr.c
@@ -282,35 +282,6 @@
 
 }
 
-/*
-   void 
-   process_command_lsdb_synch_interval(char *command)
-   {
-   if(command==NULL)
-   {
-   printf(" Wrong Command Format ( lsdb-synch-interval secs )\n");
-   return;
-   }
-   char *rem;
-   const char *sep=" \t\n";
-   char *secs;
-   long int seconds;
-
-   secs=strtok_r(command,sep,&rem);
-   if(secs==NULL)
-   {
-   printf(" Wrong Command Format ( lsdb-synch-interval secs)\n");
-   return;
-   }
-
-   seconds=atoi(secs);
-   if ( seconds >= 120 && seconds <= 3600 )
-   {
-   nlsr->lsdb_synch_interval=seconds;
-   }
-
-   }
- */
 
 	void 
 process_command_interest_retry(char *command)
@@ -954,9 +925,9 @@
 				(const char *)nbr->ip_address, 9695,nlsr->tunnel_type);
 		update_face_to_adl_for_nbr(nbr->neighbor->name, face_id);		
 		add_delete_ccn_face_by_face_id(nlsr->ccn,
-				(const char *)nlsr->topo_prefix, OP_REG, face_id);
+				(const char *)nlsr->topo_prefix, OP_REG, face_id,(~0U) >> 1);
 		add_delete_ccn_face_by_face_id(nlsr->ccn, 
-				(const char *)nlsr->slice_prefix, OP_REG, face_id);
+				(const char *)nlsr->slice_prefix, OP_REG, face_id,(~0U) >> 1);
 		hashtb_next(e);		
 	}
 
@@ -982,11 +953,11 @@
 		if ( nbr->face > 0 )
 		{	
 			add_delete_ccn_face_by_face_id(nlsr->ccn, 
-					(const char *)nlsr->topo_prefix, OP_UNREG, nbr->face);
+					(const char *)nlsr->topo_prefix, OP_UNREG, nbr->face,(~0U) >> 1);
 			add_delete_ccn_face_by_face_id(nlsr->ccn, 
-					(const char *)nbr->neighbor->name,OP_UNREG,nbr->face);
+					(const char *)nbr->neighbor->name,OP_UNREG,nbr->face,(~0U) >> 1);
 			add_delete_ccn_face_by_face_id(nlsr->ccn, 
-					(const char *)nlsr->slice_prefix, OP_UNREG, nbr->face);
+					(const char *)nlsr->slice_prefix, OP_UNREG, nbr->face,(~0U) >> 1);
 		}
 		hashtb_next(e);		
 	}
@@ -1078,9 +1049,9 @@
 			{
 				update_adjacent_status_to_adl(np,NBR_DOWN);
 				int face_id=get_next_hop_face_from_adl(np->name);
-				add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)np->name, OP_UNREG, face_id);
-				add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nlsr->topo_prefix, OP_UNREG, face_id);
-				add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nlsr->slice_prefix, OP_UNREG, face_id);
+				add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)np->name, OP_UNREG, face_id,(~0U) >> 1);
+				add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nlsr->topo_prefix, OP_UNREG, face_id,(~0U) >> 1);
+				add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nlsr->slice_prefix, OP_UNREG, face_id,(~0U) >> 1);
 				delete_nbr_from_adl(np);
 				if(!nlsr->is_build_adj_lsa_sheduled)
 				{
@@ -1105,8 +1076,8 @@
 				printf("IP Address: %s \n",ip_addr);
 				int face_id=add_ccn_face(nlsr->ccn, (const char *)nbr_name->name, (const char *)ip_addr, 9695,nlsr->tunnel_type);
 				update_face_to_adl_for_nbr(nbr_name->name, face_id);		
-				add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nlsr->topo_prefix, OP_REG, face_id);
-				add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nlsr->slice_prefix, OP_REG, face_id);				
+				add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nlsr->topo_prefix, OP_REG, face_id,(~0U) >> 1);
+				add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nlsr->slice_prefix, OP_REG, face_id,(~0U) >> 1);				
 
 				add_nbr_to_adl(np,face_id,ip_addr);
 
diff --git a/nlsr_face.c b/nlsr_face.c
index 708fab7..6a7e48c 100644
--- a/nlsr_face.c
+++ b/nlsr_face.c
@@ -100,7 +100,7 @@
 	forwarding_entry->ccnd_id_size = face_instance->ccnd_id_size;
 	forwarding_entry->faceid = face_instance->faceid;
 	forwarding_entry->flags = -1;
-	forwarding_entry->lifetime = 2100;
+	forwarding_entry->lifetime = (~0U) >> 1;
 
 	prefixreg = ccn_charbuf_create();
 	ccnb_append_forwarding_entry(prefixreg, forwarding_entry);
diff --git a/nlsr_fib.c b/nlsr_fib.c
index 6ef81cb..a83899d 100644
--- a/nlsr_fib.c
+++ b/nlsr_fib.c
@@ -50,7 +50,9 @@
 
 static int 
 register_unregister_prefix(struct ccn *h, struct ccn_charbuf *local_scope_template,
-        struct ccn_charbuf *no_name, struct ccn_charbuf *name_prefix,const unsigned char *ccndid, size_t ccnd_id_size, int faceid, int operation)
+        struct ccn_charbuf *no_name, struct ccn_charbuf *name_prefix,
+		const unsigned char *ccndid, size_t ccnd_id_size, int faceid, 
+		int operation, long int lifetime)
 {
 	struct ccn_charbuf *temp = NULL;
 	struct ccn_charbuf *resultbuf = NULL;
@@ -72,7 +74,7 @@
 	forwarding_entry->ccnd_id_size =ccnd_id_size;
 	forwarding_entry->faceid = faceid;
 	forwarding_entry->flags = -1;
-	forwarding_entry->lifetime = 2100;
+	forwarding_entry->lifetime = lifetime;
 
 	prefixreg = ccn_charbuf_create();
 	ccnb_append_forwarding_entry(prefixreg, forwarding_entry);
@@ -180,7 +182,7 @@
 }
 
 int 
-add_delete_ccn_face_by_face_id(struct ccn *h, const char *uri, int operation, int faceid)
+add_delete_ccn_face_by_face_id(struct ccn *h, const char *uri, int operation, int faceid, long int lifetime)
 {
 	if ( nlsr->debugging )
 	{
@@ -210,7 +212,7 @@
 		ON_ERROR_CLEANUP(-1);
 	}
 
-	res = register_unregister_prefix(h, local_scope_template, no_name, prefix,ccndid, ccndid_size,faceid, operation);
+	res = register_unregister_prefix(h, local_scope_template, no_name, prefix,ccndid, ccndid_size,faceid, operation,lifetime);
 	
 	ON_ERROR_CLEANUP(res);
 
diff --git a/nlsr_fib.h b/nlsr_fib.h
index ce5e6d1..544a943 100644
--- a/nlsr_fib.h
+++ b/nlsr_fib.h
@@ -6,6 +6,7 @@
 #define OP_REG  0
 #define OP_UNREG 1
 
-int add_delete_ccn_face_by_face_id(struct ccn *h, const char *uri, int operation, int faceid);
+int add_delete_ccn_face_by_face_id(struct ccn *h, const char *uri, int operation,
+ int faceid, long int lifetime);
 
 #endif
diff --git a/nlsr_lsdb.c b/nlsr_lsdb.c
index 235f826..d08cb69 100644
--- a/nlsr_lsdb.c
+++ b/nlsr_lsdb.c
@@ -2348,10 +2348,10 @@
 		memcpy(new_cor_lsa->header->orig_router->name,cor_lsa->header->orig_router->name,strlen(cor_lsa->header->orig_router->name)+1);
 		new_cor_lsa->header->orig_router->length=cor_lsa->header->orig_router->length;
 
-		//new_cor_lsa->header->orig_time=(char *)malloc(strlen(cor_lsa->header->orig_time)+1); //free 
+		new_cor_lsa->header->orig_time=(char *)calloc(strlen(cor_lsa->header->orig_time)+1,sizeof(char)); //free 
 		//memset(new_cor_lsa->header->orig_time,0,strlen(cor_lsa->header->orig_time)+1);
-		//memcpy(new_cor_lsa->header->orig_time,cor_lsa->header->orig_time,strlen(cor_lsa->header->orig_time)+1);
-		new_cor_lsa->header->orig_time=get_current_timestamp_micro_v2();
+		memcpy(new_cor_lsa->header->orig_time,cor_lsa->header->orig_time,strlen(cor_lsa->header->orig_time)+1);
+		//new_cor_lsa->header->orig_time=get_current_timestamp_micro_v2();
 
 		new_cor_lsa->header->ls_type=cor_lsa->header->ls_type;
 
diff --git a/nlsr_npt.c b/nlsr_npt.c
index 48577cb..00728cd 100644
--- a/nlsr_npt.c
+++ b/nlsr_npt.c
@@ -250,7 +250,7 @@
 
 				if ( !( is_neighbor(nle->name) == 1 && get_next_hop_face_from_adl(nle->name) == faces[j] ) )
 				{
-					add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, faces[j]);
+					add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, faces[j],nlsr->router_dead_interval);
 				}
 			}
 			
@@ -284,7 +284,7 @@
 						printf("Adding face: Name:%s Face: %d\n",nle->name,faces[j]);	
 					if ( nlsr->detailed_logging )
 						writeLogg(__FILE__,__FUNCTION__,__LINE__,"Adding face: Name:%s Face: %d\n",nle->name,faces[j]);
-					add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_REG, faces[j]);	
+					add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_REG, faces[j],nlsr->router_dead_interval);	
 				}
 				else 
 				{
@@ -294,7 +294,7 @@
 							printf("Adding face: Name:%s Face: %d\n",nle->name,faces[j]);	
 						if ( nlsr->detailed_logging )
 							writeLogg(__FILE__,__FUNCTION__,__LINE__,"Adding face: Name:%s Face: %d\n",nle->name,faces[j]);
-						add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_REG, faces[j]);
+						add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_REG, faces[j],nlsr->router_dead_interval);
 					}
 				}
 			}
@@ -394,7 +394,7 @@
 						printf("Deleting face: Name:%s Face: %d\n",nle->name,faces[j]);	
 					if ( nlsr->detailed_logging )
 						writeLogg(__FILE__,__FUNCTION__,__LINE__,"Deleting face: Name:%s Face: %d\n",nle->name,faces[j]);
-					add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, faces[j]);	
+					add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, faces[j],nlsr->router_dead_interval);	
 				}
 				else 
 				{
@@ -404,7 +404,7 @@
 							printf("Deleting face: Name:%s Face: %d\n",nle->name,faces[j]);	
 						if ( nlsr->detailed_logging )
 							writeLogg(__FILE__,__FUNCTION__,__LINE__,"Deleting face: Name:%s Face: %d\n",nle->name,faces[j]);
-						add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, faces[j]);
+						add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, faces[j],nlsr->router_dead_interval);
 					}
 				}
 				
@@ -816,7 +816,7 @@
 								printf("Deleting face: Name:%s Face: %d\n",nle->name,fle->next_hop_face);
 							if ( nlsr->detailed_logging )
 								writeLogg(__FILE__,__FUNCTION__,__LINE__,"Deleting face: Name:%s Face: %d\n",nle->name,fle->next_hop_face);		
-							add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, fle->next_hop_face);
+							add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, fle->next_hop_face,nlsr->router_dead_interval);
 						}						
 		
 
@@ -847,7 +847,7 @@
 								printf("Deleting face: Name:%s Face: %d\n",nle->name,fle->next_hop_face);
 							if ( nlsr->detailed_logging )
 								writeLogg(__FILE__,__FUNCTION__,__LINE__,"Deleting face: Name:%s Face: %d\n",nle->name,fle->next_hop_face);		
-							add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, fle->next_hop_face);
+							add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, fle->next_hop_face,nlsr->router_dead_interval);
 						}						
 		
 
@@ -1038,7 +1038,7 @@
 						printf("Deleting face: Name:%s Face: %d\n",nle->name,faces[j]);
 					if ( nlsr->detailed_logging )
 						writeLogg(__FILE__,__FUNCTION__,__LINE__,"Deleting face: Name:%s Face: %d\n",nle->name,faces[j]);
-					add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, faces[j]);	
+					add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, faces[j],nlsr->router_dead_interval);	
 				}
 				else 
 				{
@@ -1048,7 +1048,7 @@
 							printf("Deleting face: Name:%s Face: %d\n",nle->name,faces[j]);
 						if ( nlsr->detailed_logging )
 							writeLogg(__FILE__,__FUNCTION__,__LINE__,"Deleting face: Name:%s Face: %d\n",nle->name,faces[j]);
-						add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, faces[j]);
+						add_delete_ccn_face_by_face_id(nlsr->ccn, (const char *)nle->name, OP_UNREG, faces[j],nlsr->router_dead_interval);
 					}
 				}
 			}
diff --git a/nlsr_sync.c b/nlsr_sync.c
index 80b0175..4ae6c82 100644
--- a/nlsr_sync.c
+++ b/nlsr_sync.c
@@ -53,6 +53,7 @@
 		struct ccn_charbuf *rhash,
 		struct ccn_charbuf *name)
 {
+	nlsr_lock();
 	int res;
 	struct ccn_charbuf *content_name; 
 	struct ccn_indexbuf *content_comps;
@@ -113,6 +114,7 @@
 	ccn_indexbuf_destroy(&content_comps);
 	ccn_indexbuf_destroy(&name_comps);
 
+	nlsr_unlock();
 	return(0);
 }
 
@@ -460,10 +462,8 @@
 		if ( nlsr->debugging )
 			printf("LSA Life time: %d\n",lsa_life_time);
 
-		if ( (strcmp(orig_router->name,nlsr->router_name) == 0 && 
-					lsa_life_time < nlsr->lsa_refresh_time) 
-				|| (strcmp(orig_router->name,nlsr->router_name) != 0 
-				&& lsa_life_time < nlsr->router_dead_interval) )
+		if ( strcmp(orig_router->name,nlsr->router_name) != 0 
+				&& (lsa_life_time < nlsr->router_dead_interval) )
 		{
 			int is_new_name_lsa=check_is_new_name_lsa(orig_router->name,
 									(char *)lst,(char *)lsid,(char *)origtime);
@@ -526,10 +526,8 @@
 			if ( nlsr->debugging )
 				printf("LSA Life time: %d\n",lsa_life_time);
 
-			if ( (strcmp(orig_router->name,nlsr->router_name) == 0 && 
-							lsa_life_time < nlsr->lsa_refresh_time) || 
-							(strcmp(orig_router->name,nlsr->router_name) != 0 && 
-							 lsa_life_time < nlsr->router_dead_interval) )	
+			if ( strcmp(orig_router->name,nlsr->router_name) != 0 
+				&& (lsa_life_time < nlsr->router_dead_interval) )
 			{
 				int is_new_adj_lsa = check_is_new_adj_lsa( orig_router->name, 
 													(char *)lst, (char *)origtime);
@@ -588,10 +586,8 @@
 			if ( nlsr->debugging )
 				printf("LSA Life time: %d\n",lsa_life_time);
 
-			if ( (strcmp(orig_router->name,nlsr->router_name) == 0 && 
-							lsa_life_time < nlsr->lsa_refresh_time) || 
-							(strcmp(orig_router->name,nlsr->router_name) != 0 && 
-							 lsa_life_time < nlsr->router_dead_interval) )	
+			if ( strcmp(orig_router->name,nlsr->router_name) != 0 
+				&& (lsa_life_time < nlsr->router_dead_interval) )	
 			{
 				int is_new_cor_lsa=check_is_new_cor_lsa( orig_router->name, 
 												(char *)lst,(char *) origtime);
@@ -692,6 +688,8 @@
 	int
 write_data_to_repo(char *data, char *name_prefix)
 {
+
+	nlsr_lock();
 	if ( nlsr->debugging )
 	{
 		printf("write_data_to_repo called\n");
@@ -781,6 +779,7 @@
 	ccn_destroy(&temp_ccn);
 	ccn_charbuf_destroy(&resultbuf);
 
+	nlsr_unlock();
 	return 0;
 }
 	int
