diff --git a/nlsr.c b/nlsr.c
index 37ac91e..11605a1 100644
--- a/nlsr.c
+++ b/nlsr.c
@@ -1079,20 +1079,18 @@
 		printf("Freeing Allocated Memory....\n");
 	}	
 	writeLogg(__FILE__,__FUNCTION__,__LINE__,"Freeing Allocated Memory....\n");	
+	
 	/* Destroying all face created by nlsr in CCND */
 	destroy_all_face_by_nlsr();	
 	destroy_faces_for_nbrs();
 	
-	/* Destroying every hash table attached to each neighbor in ADL before destorying ADL */	
-	//hashtb_destroy(&nlsr->adl);
 	destroy_adl();
-	//hashtb_destroy(&nlsr->npl);
 	destroy_npl();
-		
-	//hashtb_destroy(&nlsr->pit_alsa);
-	hashtb_destroy(&nlsr->lsdb->name_lsdb);
-	hashtb_destroy(&nlsr->lsdb->adj_lsdb);
-	hashtb_destroy(&nlsr->lsdb->cor_lsdb);
+	destroy_lsdb();	
+
+	//hashtb_destroy(&nlsr->lsdb->name_lsdb);
+	//hashtb_destroy(&nlsr->lsdb->adj_lsdb);
+	//hashtb_destroy(&nlsr->lsdb->cor_lsdb);
 
 	int i, npt_element,rt_element;
 	struct npt_entry *ne;
@@ -1131,8 +1129,6 @@
 	close(nlsr->nlsr_api_server_sock_fd);
 
 	ccn_destroy(&nlsr->ccn);
-	free(nlsr->lsdb->lsdb_version);
-	free(nlsr->lsdb);
 	free(nlsr->router_name);
 	if ( nlsr->debugging )
 	{
@@ -1200,7 +1196,6 @@
 
 	nlsr->adl=hashtb_create(sizeof(struct ndn_neighbor), NULL);
 	nlsr->npl = hashtb_create(sizeof(struct name_prefix_list_entry), NULL);
-	//nlsr->pit_alsa = hashtb_create(sizeof(struct pending_interest), NULL);
 	nlsr->npt = hashtb_create(sizeof(struct npt_entry), NULL);
 	nlsr->routing_table = hashtb_create(sizeof(struct routing_table_entry), NULL);
 
diff --git a/nlsr_lsdb.c b/nlsr_lsdb.c
index 9eb5b98..00de7b8 100644
--- a/nlsr_lsdb.c
+++ b/nlsr_lsdb.c
@@ -2489,3 +2489,90 @@
 	free(cor_lsa_key);
 	return ret;
 }
+
+
+void
+destroy_name_lsdb(void)
+{
+	int i, name_lsdb_element;
+	struct nlsa *name_lsa;
+
+	struct hashtb_enumerator ee;
+    	struct hashtb_enumerator *e = &ee;
+    	
+    	hashtb_start(nlsr->lsdb->name_lsdb, e);
+	name_lsdb_element=hashtb_n(nlsr->lsdb->name_lsdb);
+
+	for(i=0;i<name_lsdb_element;i++)
+	{
+		name_lsa=e->data;
+		destroy_name_lsa_component(name_lsa);	
+		hashtb_next(e);		
+	}
+
+	hashtb_end(e);
+
+	if ( nlsr->lsdb->name_lsdb )
+		hashtb_destroy(&nlsr->lsdb->name_lsdb);
+}
+
+void
+destroy_adj_lsdb(void)
+{
+	int i, adj_lsdb_element;
+	struct alsa *adj_lsa;
+
+	struct hashtb_enumerator ee;
+    	struct hashtb_enumerator *e = &ee;
+    	
+    	hashtb_start(nlsr->lsdb->adj_lsdb, e);
+	adj_lsdb_element=hashtb_n(nlsr->lsdb->adj_lsdb);
+
+	for(i=0;i<adj_lsdb_element;i++)
+	{
+		adj_lsa=e->data;
+		destroy_adj_lsa_component(adj_lsa);	
+		hashtb_next(e);		
+	}
+
+	hashtb_end(e);
+	if(nlsr->lsdb->adj_lsdb	)
+		hashtb_destroy(&nlsr->lsdb->adj_lsdb);
+}
+
+void
+destroy_cor_lsdb(void)
+{
+	int i, cor_lsdb_element;
+	struct clsa *cor_lsa;
+
+	struct hashtb_enumerator ee;
+    	struct hashtb_enumerator *e = &ee;
+    	
+    	hashtb_start(nlsr->lsdb->cor_lsdb, e);
+	cor_lsdb_element=hashtb_n(nlsr->lsdb->cor_lsdb);
+
+	for(i=0;i<cor_lsdb_element;i++)
+	{
+		cor_lsa=e->data;
+		destroy_cor_lsa_component(cor_lsa);	
+		hashtb_next(e);		
+	}
+
+	hashtb_end(e);
+	if(nlsr->lsdb->cor_lsdb	)
+		hashtb_destroy(&nlsr->lsdb->cor_lsdb);
+}
+
+void
+destroy_lsdb(void)
+{
+	destroy_name_lsdb();
+	destroy_adj_lsdb();
+	destroy_cor_lsdb();
+	
+	if ( nlsr->lsdb->lsdb_version )
+		free(nlsr->lsdb->lsdb_version);
+	if ( nlsr->lsdb )
+		free(nlsr->lsdb);
+}
diff --git a/nlsr_lsdb.h b/nlsr_lsdb.h
index c67348e..db7b831 100644
--- a/nlsr_lsdb.h
+++ b/nlsr_lsdb.h
@@ -102,4 +102,6 @@
 double get_hyperbolic_r(char *router);
 double get_hyperbolic_theta(char *router);
 
+void destroy_lsdb(void);
+
 #endif
