diff --git a/nlsr.c b/nlsr.c
index c896fb3..b2b7eb9 100644
--- a/nlsr.c
+++ b/nlsr.c
@@ -30,6 +30,20 @@
 #include "nlsr_route.h"
 
 
+#define ON_ERROR_DESTROY(resval) \
+{           \
+    if ((resval) < 0) { \
+        nlsr_destroy(); \
+    } \
+}
+
+
+#define ON_ERROR_EXIT(resval) \
+{           \
+    if ((resval) < 0) { \
+        exit(-1); \
+    } \
+}
 
 struct option longopts[] =
 {
@@ -73,7 +87,6 @@
 {
 	signal(sig, SIG_IGN);
  	nlsr_destroy();	
-	//exit(0);
 }
 
 void 
@@ -382,23 +395,23 @@
 }
 
 
-void
+int 
 init_nlsr(void)
 {
 	if (signal(SIGQUIT, nlsr_stop_signal_handler ) == SIG_ERR) 
 	{
 		perror("SIGQUIT install error\n");
-		exit(1);
+		return -1;
 	}
 	if (signal(SIGTERM, nlsr_stop_signal_handler ) == SIG_ERR) 
 	{
 		perror("SIGTERM install error\n");
-		exit(1);
+		return -1;
     	}
  	if (signal(SIGINT, nlsr_stop_signal_handler ) == SIG_ERR)
 	{
 		perror("SIGTERM install error\n");
-		exit(1);
+		return -1;
 	}
 
 	nlsr=(struct nlsr *)malloc(sizeof(struct nlsr));
@@ -447,18 +460,21 @@
 	nlsr->interest_resend_time = INTEREST_RESEND_TIME;
 
 	nlsr->semaphor=0;
+
+	return 0;
 }
 
 
 int 
 main(int argc, char *argv[])
 {
-    	int res;
+    	int res, ret;
     	char *config_file;
 	int daemon_mode;
 
-	init_nlsr();	
-    	
+	ret=init_nlsr();	
+    	ON_ERROR_EXIT(ret);
+
 	while ((res = getopt_long(argc, argv, "df:h", longopts, 0)) != -1) 
 	{
         	switch (res) 
@@ -481,7 +497,7 @@
 	if(ccn_connect(nlsr->ccn, NULL) == -1)
 	{
 		fprintf(stderr,"Could not connect to ccnd\n");
-		exit(1);
+		ON_ERROR_DESTROY(-1);
 	}
 	struct ccn_charbuf *router_prefix;	
 	router_prefix=ccn_charbuf_create(); 
@@ -489,7 +505,7 @@
 	if(res<0)
 	{
 		fprintf(stderr, "Bad ccn URI: %s\n",nlsr->router_name);
-		exit(1);
+		ON_ERROR_DESTROY(res);
 	}
 
 	ccn_name_append_str(router_prefix,"nlsr");
@@ -498,7 +514,7 @@
 	if ( res < 0 )
 	{
 		fprintf(stderr,"Failed to register interest for router\n");
-		exit(1);
+		ON_ERROR_DESTROY(res);
 	}
 	ccn_charbuf_destroy(&router_prefix);
 	
diff --git a/nlsr.h b/nlsr.h
index 1bfa8a1..1bfc5b6 100644
--- a/nlsr.h
+++ b/nlsr.h
@@ -79,7 +79,7 @@
 void process_conf_command(char *command);
 int readConfigFile(const char *filename);
 
-void init_nlsr(void);
+int init_nlsr(void);
 void nlsr_destroy( void );
 void nlsr_stop_signal_handler(int sig);
 
