Update
diff --git a/nlsr.c b/nlsr.c
index 6b55078..b3d38e9 100644
--- a/nlsr.c
+++ b/nlsr.c
@@ -311,8 +311,7 @@
 	hashtb_end(e);
 
 	
-	hashtb_destroy(&nlsr->lsdb->adj_lsdb);
-	hashtb_destroy(&nlsr->lsdb->name_lsdb);
+
 	hashtb_destroy(&nlsr->adl);
 	hashtb_destroy(&nlsr->npl);
 	ccn_schedule_destroy(&nlsr->sched);
@@ -338,7 +337,8 @@
 	nlsr->in_content.p = &incoming_content;
 
 	nlsr->lsdb=(struct linkStateDatabase *)malloc(sizeof(struct linkStateDatabase *));
-	nlsr->lsdb->version=0;
+	nlsr->lsdb->version=(char *)malloc(16);
+	nlsr->lsdb->version="0000000000000000";
 
 	nlsr->lsdb->adj_lsdb = hashtb_create(sizeof(struct adj_lsa), &param_adj_lsdb);
 	nlsr->lsdb->name_lsdb = hashtb_create(sizeof(struct name_lsa), &param_name_lsdb);
diff --git a/nlsr.h b/nlsr.h
index c491089..11635fc 100644
--- a/nlsr.h
+++ b/nlsr.h
@@ -15,13 +15,13 @@
 	struct name_prefix *neighbor;
 	int face;
 	int status;
-	long int last_lsdb_version;
+	char *last_lsdb_version;
 	struct hashtb *lsa_update_queue;
 };
 
 struct linkStateDatabase
 {
-	long int version;
+	char *version;
 	struct hashtb *adj_lsdb;
 	struct hashtb *name_lsdb;
 };
diff --git a/nlsr_adl.c b/nlsr_adl.c
index 63d9a63..94ccb42 100644
--- a/nlsr_adl.c
+++ b/nlsr_adl.c
@@ -42,11 +42,13 @@
 	hnbr->neighbor=(struct name_prefix *)malloc(sizeof(struct name_prefix *));
 	hnbr->neighbor->name=(char *)malloc(nbr->neighbor->length);
 	memcpy(hnbr->neighbor->name,nbr->neighbor->name,nbr->neighbor->length);
+	hnbr->last_lsdb_version=(char *)malloc(15);
 
 	hnbr->neighbor->length=nbr->neighbor->length;
 	hnbr->face=nbr->face;
 	hnbr->status=nbr->status;
-	hnbr->last_lsdb_version=0;
+	memcpy(hnbr->last_lsdb_version,"00000000000000",14);
+	memcpy(hnbr->last_lsdb_version+strlen(hnbr->last_lsdb_version),"\0",1);
 
 	struct hashtb_param param_luq = {0};
 	hnbr->lsa_update_queue=hashtb_create(200, &param_luq);
@@ -74,7 +76,7 @@
 	for(i=0;i<adl_element;i++)
 	{
 		nbr=e->data;
-		printf("Neighbor: %s Length: %d Face: %d Status: %d LSDB Version: %ld \n",nbr->neighbor->name,nbr->neighbor->length,nbr->face, nbr->status, nbr->last_lsdb_version);	
+		printf("Neighbor: %s Length: %d Face: %d Status: %d LSDB Version: %s \n",nbr->neighbor->name,nbr->neighbor->length,nbr->face, nbr->status, nbr->last_lsdb_version);	
 		hashtb_next(e);		
 	}
 
@@ -97,7 +99,7 @@
 	hashtb_start(nlsr->adl, e);
    	res = hashtb_seek(e, nbr->buf, nbr->length, 0);
 
-	//assert( res == HT_OLD_ENTRY);
+	assert( res == HT_OLD_ENTRY);
 
 	nnbr=e->data;
 	nnbr->status=status;
@@ -107,7 +109,7 @@
 
 
 void 
-update_adjacent_lsdb_version_to_adl(struct ccn_charbuf *nbr, long int version)
+update_adjacent_lsdb_version_to_adl(struct ccn_charbuf *nbr, char *version)
 {
 	printf("update_adjacent_status_to_adl called \n");
 
@@ -120,10 +122,10 @@
 	hashtb_start(nlsr->adl, e);
    	res = hashtb_seek(e, nbr->buf, nbr->length, 0);
 
-	//assert( res == HT_OLD_ENTRY);
+	assert( res == HT_OLD_ENTRY);
 
 	nnbr=e->data;
-	nnbr->last_lsdb_version=version;
-		
+	memcpy(nnbr->last_lsdb_version,version,strlen(version)+1);
+	
 	hashtb_end(e);
 }
diff --git a/nlsr_adl.h b/nlsr_adl.h
index cd25524..1803a14 100644
--- a/nlsr_adl.h
+++ b/nlsr_adl.h
@@ -4,6 +4,6 @@
 void add_adjacent_to_adl(struct ndn_neighbor *nbr);
 void print_adjacent_from_adl(void);
 void update_adjacent_status_to_adl(struct ccn_charbuf *nbr, int status);
-void update_adjacent_lsdb_version_to_adl(struct ccn_charbuf *nbr, long int version);
+void update_adjacent_lsdb_version_to_adl(struct ccn_charbuf *nbr, char *version);
 
 #endif
diff --git a/nlsr_ndn.c b/nlsr_ndn.c
index e336e23..ab43697 100644
--- a/nlsr_ndn.c
+++ b/nlsr_ndn.c
@@ -256,6 +256,7 @@
 	for(i=0;i<nlsr_position;i++)
 	{
 		res=ccn_name_comp_get(info->interest_ccnb, info->interest_comps,i,&comp_ptr1, &comp_size);
+		//printf("%s \n",comp_ptr1);
 		ccn_charbuf_append_string(nbr,"/");
 		ccn_charbuf_append_string(nbr,(const char *)comp_ptr1);	
 	}
@@ -352,20 +353,17 @@
 		/* Now comp points to the start of your potential number, and size is its length */
 	}
 
-	int db_version=atoi((char *)comp);
-	int dbcmp=db_version- nlsr->lsdb->version;
-	
-	//int dbcmp=strncmp(nlsr->lsdb->version,(char *)comp,16);
+	int dbcmp=strncmp(nlsr->lsdb->version,(char *)comp,16);
 
-	//printf (" dbcmp = %d \n",dbcmp);	
+	printf (" dbcmp = %d \n",dbcmp);	
 
 	if(dbcmp > 0)
 	{
-		printf("Has Updated database (Older: %s New: %ld)\n",comp,nlsr->lsdb->version);
+		printf("Has Updated database (Older: %s New: %s)\n",comp,nlsr->lsdb->version);
 	}
 	else 
 	{
-		printf("Data base is not updated than the older one (Older: %s New: %ld)\n",comp,nlsr->lsdb->version);
+		printf("Data base is not updated than the older one (Older: %s New: %s)\n",comp,nlsr->lsdb->version);
 		printf("Sending NACK Content back.....\n");
 
 		struct ccn_charbuf *data=ccn_charbuf_create();
@@ -432,12 +430,12 @@
 	for(i=0;i<adl_element;i++)
 	{
 		nbr=e->data;
-		//printf("Sending interest for name prefix:%s/%s/%s\n",nbr->neighbor->name,nlsr_str,lsdb_str);	
+		printf("Sending interest for name prefix:%s/%s/%s/%s\n",nbr->neighbor->name,nlsr_str,lsdb_str,rnumstr);	
 		name=ccn_charbuf_create();
 		res=ccn_name_from_uri(name,nbr->neighbor->name);
 		ccn_name_append_str(name,nlsr_str);
 		ccn_name_append_str(name,lsdb_str);
-		printf("Sending interest for name prefix:%s\n",ccn_name_as_string(name));
+		ccn_name_append_str(name,rnumstr);
 
 		/* adding Exclusion filter */
 		
@@ -455,8 +453,7 @@
 		ccnb_tagged_putf(templ, CCN_DTAG_Any, "");
 		ccn_charbuf_reset(c);
 		//ccn_charbuf_putf(c, "%u", (unsigned)mynumber);
-		//ccn_charbuf_putf(c, "%s", nbr->last_lsdb_version);
-		ccn_charbuf_putf(c, "%ld", nbr->last_lsdb_version);
+		ccn_charbuf_putf(c, "%s", nbr->last_lsdb_version);
 		ccnb_append_tagged_blob(templ, CCN_DTAG_Component, c->buf, c->length);
 		ccn_charbuf_append_closer(templ); /* </Exclude> */
 		ccn_charbuf_append_closer(templ); /* </Interest> */