diff --git a/pwnagotchi/plugins/default/net-pos.py b/pwnagotchi/plugins/default/net-pos.py
index e0fa002..8158437 100644
--- a/pwnagotchi/plugins/default/net-pos.py
+++ b/pwnagotchi/plugins/default/net-pos.py
@@ -1,6 +1,7 @@
 import logging
 import json
 import os
+import threading
 import requests
 import time
 import pwnagotchi.plugins as plugins
@@ -11,7 +12,7 @@ MOZILLA_API_URL = 'https://location.services.mozilla.com/v1/geolocate?key={api}'
 
 class NetPos(plugins.Plugin):
     __author__ = 'zenzen san'
-    __version__ = '2.0.1'
+    __version__ = '2.0.2'
     __license__ = 'GPL3'
     __description__ = """Saves a json file with the access points with more signal
                          whenever a handshake is captured.
@@ -22,6 +23,7 @@ class NetPos(plugins.Plugin):
         self.report = StatusFile('/root/.net_pos_saved', data_format='json')
         self.skip = list()
         self.ready = False
+        self.lock = threading.Lock()
 
     def on_loaded(self):
         if 'api_key' not in self.options or ('api_key' in self.options and self.options['api_key'] is None):
@@ -45,60 +47,64 @@ class NetPos(plugins.Plugin):
                 saved_file.write(x + "\n")
 
     def on_internet_available(self, agent):
-        if self.ready:
-            config = agent.config()
-            display = agent.view()
-            reported = self.report.data_field_or('reported', default=list())
-            handshake_dir = config['bettercap']['handshakes']
+        with self.lock:
+            if self.ready:
+                config = agent.config()
+                display = agent.view()
+                reported = self.report.data_field_or('reported', default=list())
+                handshake_dir = config['bettercap']['handshakes']
 
-            all_files = os.listdir(handshake_dir)
-            all_np_files = [os.path.join(handshake_dir, filename)
-                            for filename in all_files
-                            if filename.endswith('.net-pos.json')]
-            new_np_files = set(all_np_files) - set(reported) - set(self.skip)
+                all_files = os.listdir(handshake_dir)
+                all_np_files = [os.path.join(handshake_dir, filename)
+                                for filename in all_files
+                                if filename.endswith('.net-pos.json')]
+                new_np_files = set(all_np_files) - set(reported) - set(self.skip)
 
-            if new_np_files:
-                logging.info("NET-POS: Found %d new net-pos files. Fetching positions ...", len(new_np_files))
-                display.set('status', f"Found {len(new_np_files)} new net-pos files. Fetching positions ...")
-                display.update(force=True)
-                for idx, np_file in enumerate(new_np_files):
+                if new_np_files:
+                    logging.debug("NET-POS: Found %d new net-pos files. Fetching positions ...", len(new_np_files))
+                    display.set('status', f"Found {len(new_np_files)} new net-pos files. Fetching positions ...")
+                    display.update(force=True)
+                    for idx, np_file in enumerate(new_np_files):
+
+                        geo_file = np_file.replace('.net-pos.json', '.geo.json')
+                        if os.path.exists(geo_file):
+                            # got already the position
+                            reported.append(np_file)
+                            self.report.update(data={'reported': reported})
+                            continue
+
+                        try:
+                            geo_data = self._get_geo_data(np_file)  # returns json obj
+                        except requests.exceptions.RequestException as req_e:
+                            logging.error("NET-POS: %s - RequestException: %s", np_file, req_e)
+                            self.skip += np_file
+                            continue
+                        except json.JSONDecodeError as js_e:
+                            logging.error("NET-POS: %s - JSONDecodeError: %s, removing it...", np_file, js_e)
+                            os.remove(np_file)
+                            continue
+                        except OSError as os_e:
+                            logging.error("NET-POS: %s - OSError: %s", np_file, os_e)
+                            self.skip += np_file
+                            continue
+
+                        with open(geo_file, 'w+t') as sf:
+                            json.dump(geo_data, sf)
 
-                    geo_file = np_file.replace('.net-pos.json', '.geo.json')
-                    if os.path.exists(geo_file):
-                        # got already the position
                         reported.append(np_file)
                         self.report.update(data={'reported': reported})
-                        continue
 
-                    try:
-                        geo_data = self._get_geo_data(np_file)  # returns json obj
-                    except requests.exceptions.RequestException as req_e:
-                        logging.error("NET-POS: %s - RequestException: %s", np_file, req_e)
-                        self.skip += np_file
-                        continue
-                    except json.JSONDecodeError as js_e:
-                        logging.error("NET-POS: %s - JSONDecodeError: %s", np_file, js_e)
-                        self.skip += np_file
-                        continue
-                    except OSError as os_e:
-                        logging.error("NET-POS: %s - OSError: %s", np_file, os_e)
-                        self.skip += np_file
-                        continue
-
-                    with open(geo_file, 'w+t') as sf:
-                        json.dump(geo_data, sf)
-
-                    reported.append(np_file)
-                    self.report.update(data={'reported': reported})
-
-                    display.set('status', f"Fetching positions ({idx + 1}/{len(new_np_files)})")
-                    display.update(force=True)
+                        display.set('status', f"Fetching positions ({idx + 1}/{len(new_np_files)})")
+                        display.update(force=True)
 
     def on_handshake(self, agent, filename, access_point, client_station):
         netpos = self._get_netpos(agent)
+        if not netpos['wifiAccessPoints']:
+            return
+
         netpos["ts"] = int("%.0f" % time.time())
         netpos_filename = filename.replace('.pcap', '.net-pos.json')
-        logging.info("NET-POS: Saving net-location to %s", netpos_filename)
+        logging.debug("NET-POS: Saving net-location to %s", netpos_filename)
 
         try:
             with open(netpos_filename, 'w+t') as net_pos_file:
@@ -106,6 +112,7 @@ class NetPos(plugins.Plugin):
         except OSError as os_e:
             logging.error("NET-POS: %s", os_e)
 
+
     def _get_netpos(self, agent):
         aps = agent.get_access_points()
         netpos = dict()