diff --git a/macbook.conf b/macbook.conf
index dfc274e..0e61f98 100644
--- a/macbook.conf
+++ b/macbook.conf
@@ -1,8 +1,13 @@
-router-name /ndn/memphis.edu/netlab/macbook
-ccnneighbor /ndn/memphis.edu/dunhall/castor face9
-ccnneighbor /ndn/memphis.edu/joneshall/mira face11
+#----configuration file for macbook----------
+#
+router-name /ndn/memphis.edu/netlab/macbook/
+ccnneighbor /ndn/memphis.edu/dunhall/castor face14
+ccnneighbor /ndn/memphis.edu/joneshall/mira/ face11
 ccnname /ndn/memphis.edu/patterson
-ccnname /ndn/memphis.edu/houston
+ccnname /ndn/memphis.edu/houston/
+#------lsdb-synch-interval-----
 lsdb-synch-interval 350
 interest-retry 4
 interest-resend-time 5
+lsa-refresh-time 600
+router-dead-interval 900
diff --git a/nlsr.c b/nlsr.c
index 477b202..fc5320d 100644
--- a/nlsr.c
+++ b/nlsr.c
@@ -139,6 +139,10 @@
 		return;
 	}
 
+	if ( rtr_name[strlen(rtr_name)-1] == '/' )
+	{
+		rtr_name[strlen(rtr_name)-1]='\0';
+	}
 	struct name_prefix *nbr=(struct name_prefix *)malloc(sizeof(struct name_prefix ));
 	nbr->name=(char *)malloc(strlen(rtr_name)+1);
 	memset(nbr->name,0,strlen(rtr_name)+1);
@@ -172,6 +176,9 @@
 
 	printf("Name Prefix: %s \n",name);
 
+	if ( name[strlen(name)-1] == '/' )
+		name[strlen(name)-1]='\0';
+
 	struct name_prefix *np=(struct name_prefix *)malloc(sizeof(struct name_prefix ));
 	np->name=(char *)malloc(strlen(name)+1);
 	memset(np->name,0,strlen(name)+1);
@@ -205,6 +212,9 @@
 	}
 	
 
+	if ( rtr_name[strlen(rtr_name)-1] == '/' )
+		rtr_name[strlen(rtr_name)-1]='\0';
+
 	nlsr->router_name=(char *)malloc(strlen(rtr_name)+1);
 	memset(nlsr->router_name,0,strlen(rtr_name)+1);
 	memcpy(nlsr->router_name,rtr_name,strlen(rtr_name)+1);
@@ -297,6 +307,61 @@
 }
 
 
+void 
+process_command_lsa_refresh_time(char *command)
+{
+	if(command==NULL)
+	{
+		printf(" Wrong Command Format ( lsa-refresh-time 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 ( lsa-refresh-time secs)\n");
+		return;
+	}
+
+	seconds=atoi(secs);
+	if ( seconds >= 240 && seconds <= 3600 )
+	{
+		nlsr->lsa_refresh_time=seconds;
+	}
+
+}
+
+void 
+process_command_router_dead_interval(char *command)
+{
+	if(command==NULL)
+	{
+		printf(" Wrong Command Format ( router-dead-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 ( router-dead-interval secs)\n");
+		return;
+	}
+
+	seconds=atoi(secs);
+	if ( seconds >= 360 && seconds <= 5400 )
+	{
+		nlsr->router_dead_interval=seconds;
+	}
+
+}
 
 void 
 process_conf_command(char *command)
@@ -334,7 +399,15 @@
 	{
 		process_command_interest_resend_time(remainder);
 	}
-	else
+	else if(!strcmp(cmd_type,"lsa-refresh-time") )
+	{
+		process_command_lsa_refresh_time(remainder);
+	}
+	else if(!strcmp(cmd_type,"router-dead-interval") )
+	{
+		process_command_router_dead_interval(remainder);
+	}
+	else 
 	{
 		printf("Wrong configuration Command %s \n",cmd_type);
 	}
@@ -361,7 +434,8 @@
 		len=strlen(buf);
 		if(buf[len-1] == '\n')
 		buf[len-1]='\0';
-		process_conf_command(buf);	
+		if ( buf[0] != '#' && buf[0] != '!') 
+			process_conf_command(buf);	
 	}
 
 	fclose(cfg);
diff --git a/nlsr.h b/nlsr.h
index 941e357..719e91a 100644
--- a/nlsr.h
+++ b/nlsr.h
@@ -7,8 +7,8 @@
 #define INTEREST_RESEND_TIME 15
 #define NLSR_LOCKED 1
 #define NLSR_UNLOCKED 0
-#define LSA_REFRESH_TIME 600
-#define ROUTER_DEAD_INTERVAL 900
+#define LSA_REFRESH_TIME 1800
+#define ROUTER_DEAD_INTERVAL 3600
 
 #define LINK_METRIC 10
 
diff --git a/nlsr_lsdb.c b/nlsr_lsdb.c
index 49b033f..0a88b5e 100644
--- a/nlsr_lsdb.c
+++ b/nlsr_lsdb.c
@@ -204,6 +204,9 @@
 			printf("New Version Number of LSDB: %s \n",nlsr->lsdb->lsdb_version);	
 
 			int next_hop=get_next_hop(new_name_lsa->header->orig_router->name);
+
+			//printf("Next hop: %d \n",next_hop);
+
 			if ( next_hop == NO_NEXT_HOP )
 			{
 				int check=add_npt_entry(new_name_lsa->header->orig_router->name,new_name_lsa->name_prefix->name,NO_FACE);
@@ -1427,7 +1430,6 @@
 				memset(key,0,adj_lsa->header->orig_router->length+2);
 				make_adj_lsa_key(key,adj_lsa);
 				printf("Adjacent LSA key: %s \n",key);				
-
 				nlsr->event = ccn_schedule_event(nlsr->sched, 10, &delete_adj_lsa, (void *)key, 0);
 			}
 		}
diff --git a/todo.txt b/todo.txt
new file mode 100644
index 0000000..77fccea
--- /dev/null
+++ b/todo.txt
@@ -0,0 +1,9 @@
+To Do:
+
+1. Add commenting facility in .conf file -- done, commenting character # or !
+2. Adding configuration command of lsa-refresh-time and router-dead-interval  --- done
+3. Adding trailing "/" remover from the commands if has any -- done 
+4. Multi Path Route Calculation
+5. Writing Log so that need minimal change to status page script
+6. Adding a fib entry for origination router itself 
+6. Providing api to add/delete link/name prefix
