diff --git a/nlsr.c b/nlsr.c
index 3895e5f..49bda4a 100644
--- a/nlsr.c
+++ b/nlsr.c
@@ -342,8 +342,9 @@
 	nlsr->in_content.p = &incoming_content;
 
 	nlsr->lsdb=(struct linkStateDatabase *)malloc(sizeof(struct linkStateDatabase *));
-	nlsr->lsdb->version=(char *)malloc(16);
-	nlsr->lsdb->version="0000000000000000";
+	//nlsr->lsdb->version=(char *)malloc(16);
+	//nlsr->lsdb->version="0000000000000000";
+	nlsr->lsdb->version=0;
 
 	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 11635fc..c491089 100644
--- a/nlsr.h
+++ b/nlsr.h
@@ -15,13 +15,13 @@
 	struct name_prefix *neighbor;
 	int face;
 	int status;
-	char *last_lsdb_version;
+	long int last_lsdb_version;
 	struct hashtb *lsa_update_queue;
 };
 
 struct linkStateDatabase
 {
-	char *version;
+	long int version;
 	struct hashtb *adj_lsdb;
 	struct hashtb *name_lsdb;
 };
diff --git a/nlsr_adl.c b/nlsr_adl.c
index 1be3fc2..6b5a4ba 100644
--- a/nlsr_adl.c
+++ b/nlsr_adl.c
@@ -45,13 +45,14 @@
 		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->last_lsdb_version=(char *)malloc(15);
 
 		hnbr->neighbor->length=nbr->neighbor->length;
 		hnbr->face=nbr->face;
 		hnbr->status=nbr->status;
-		memcpy(hnbr->last_lsdb_version,"00000000000000",14);
-		memcpy(hnbr->last_lsdb_version+strlen(hnbr->last_lsdb_version),"\0",1);
+		//memcpy(hnbr->last_lsdb_version,"00000000000000",14);
+		//memcpy(hnbr->last_lsdb_version+strlen(hnbr->last_lsdb_version),"\0",1);
+		hnbr->last_lsdb_version=0;
 
 		struct hashtb_param param_luq = {0};
 		hnbr->lsa_update_queue=hashtb_create(200, &param_luq);
@@ -80,7 +81,7 @@
 	for(i=0;i<adl_element;i++)
 	{
 		nbr=e->data;
-		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);	
+		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);	
 		hashtb_next(e);		
 	}
 
@@ -119,7 +120,7 @@
 
 
 void 
-update_adjacent_lsdb_version_to_adl(struct ccn_charbuf *nbr, char *version)
+update_adjacent_lsdb_version_to_adl(struct ccn_charbuf *nbr, long int version)
 {
 	printf("update_adjacent_status_to_adl called \n");
 
@@ -135,7 +136,8 @@
 	if( res == HT_OLD_ENTRY )
 	{
 		nnbr=e->data;
-		memcpy(nnbr->last_lsdb_version,version,strlen(version)+1);
+		nnbr->last_lsdb_version = version;
+		//memcpy(nnbr->last_lsdb_version,version,strlen(version)+1);
 	}
 	else if(res == HT_NEW_ENTRY)
 	{
diff --git a/nlsr_adl.h b/nlsr_adl.h
index 1803a14..cd25524 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, char *version);
+void update_adjacent_lsdb_version_to_adl(struct ccn_charbuf *nbr, long int version);
 
 #endif
diff --git a/nlsr_ndn.c b/nlsr_ndn.c
index 43ca77b..224294b 100644
--- a/nlsr_ndn.c
+++ b/nlsr_ndn.c
@@ -355,17 +355,21 @@
 		/* Now comp points to the start of your potential number, and size is its length */
 	}
 
-	int dbcmp=strncmp(nlsr->lsdb->version,(char *)comp,16);
+	int excl_db_version=atoi((char *)comp);
+	int dbcmp=nlsr->lsdb->version-excl_db_version;
+	//int dbcmp=strncmp(nlsr->lsdb->version,(char *)comp,16);
+
+	
 
 	printf (" dbcmp = %d \n",dbcmp);	
 
 	if(dbcmp > 0)
 	{
-		printf("Has Updated database (Older: %s New: %s)\n",comp,nlsr->lsdb->version);
+		printf("Has Updated database (Older: %s New: %ld)\n",comp,nlsr->lsdb->version);
 	}
 	else 
 	{
-		printf("Data base is not updated than the older one (Older: %s New: %s)\n",comp,nlsr->lsdb->version);
+		printf("Data base is not updated than the older one (Older: %s New: %ld)\n",comp,nlsr->lsdb->version);
 		printf("Sending NACK Content back.....\n");
 
 		struct ccn_charbuf *data=ccn_charbuf_create();
@@ -432,12 +436,12 @@
 	for(i=0;i<adl_element;i++)
 	{
 		nbr=e->data;
-		printf("Sending interest for name prefix:%s/%s/%s/%s\n",nbr->neighbor->name,nlsr_str,lsdb_str,rnumstr);	
+		printf("Sending interest for name prefix:%s/%s/%s\n",nbr->neighbor->name,nlsr_str,lsdb_str);	
 		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);
-		ccn_name_append_str(name,rnumstr);
+		//ccn_name_append_str(name,rnumstr);
 
 		/* adding Exclusion filter */
 		
