--- a/src/data_al.h
+++ b/src/data_al.h
@@ -35,7 +35,7 @@ extern "C"
 {
 #endif
 
-pthread_mutex_t *data_access;
+extern pthread_mutex_t *data_access;
 
 
 /* Holds each data type total counters */
--- a/src/data_reply.c
+++ b/src/data_reply.c
@@ -43,7 +43,7 @@ struct data_registry *current_reply;
 struct data_counter reply_count;
 
 /* Screen printing buffers */
-char line[300], tline[300];
+extern char line[300], tline[300];
 extern char blank[];
 
 
--- a/src/data_request.c
+++ b/src/data_request.c
@@ -43,7 +43,7 @@ struct data_registry *request_current;
 struct data_counter request_count;
 
 /* Screen printing buffers */
-char line[300], tline[300];
+extern char line[300], tline[300];
 extern char blank[];
 
 
--- a/src/data_unique.c
+++ b/src/data_unique.c
@@ -44,7 +44,7 @@ struct data_registry *current_unique;
 struct data_counter unique_count;
 
 /* Screen printing buffers */
-char line[300], tline[300];
+extern char line[300], tline[300];
 extern char blank[];
 
 
--- a/src/ifaces.c
+++ b/src/ifaces.c
@@ -73,7 +73,7 @@
 pcap_t *inject;
 unsigned char smac[] = { 0xCA, 0xFE, 0xCA, 0xFE, 0xCA, 0xFE };
 struct p_header *temp_header;
-
+char errbuf[PCAP_ERRBUF_SIZE];
 
 /* Start Sniffing on given iface */
 void *start_sniffer(void *args)
--- a/src/ifaces.h
+++ b/src/ifaces.h
@@ -51,7 +51,7 @@ extern "C"
 
 
    /* Shitty globals */
-   char errbuf[PCAP_ERRBUF_SIZE];
+   extern char errbuf[PCAP_ERRBUF_SIZE];
 
    /* Threads data structure */
    struct t_data {
--- a/src/main.c
+++ b/src/main.c
@@ -44,6 +44,7 @@
 #define RPATH  "%s/.netdiscover/ranges"
 #define FPATH  "%s/.netdiscover/fastips"
 
+int continue_listening;
 
 extern void parseable_scan_end();
 void *inject_arp(void *arg);
@@ -52,6 +53,9 @@ void *parsable_screen_refresh(void *arg);
 void scan_range(char *disp, char *sip);
 void usage();
 
+char *current_network;
+int parsable_output;
+pthread_mutex_t *data_access;
 
 /* Last octect of ips scaned in fast mode */
 /* Add new addr if needed here */
--- a/src/screen.c
+++ b/src/screen.c
@@ -56,6 +56,7 @@ int smode, oldmode;
 char line[300], tline[300];
 char blank[] = " ";
 
+struct winsize win_sz;
 
 /* Inits lists with null pointers, sighandlers, etc */
 void init_screen()
--- a/src/screen.h
+++ b/src/screen.h
@@ -51,9 +51,9 @@ extern "C"
 #define KNOWN_COLOR "\33[1m%s\33[0m\n"
 
 /* Ohh no, more globals */
-struct winsize win_sz;
-char *current_network;
-int parsable_output, continue_listening;
+extern struct winsize win_sz;
+extern char *current_network;
+extern int parsable_output, continue_listening;
 
 
 /* Screen functions */