diff --git a/data.py b/data.py
index c996a5c3075d6496cf1cd44b9f192529270139ca..2189edf050b26cfcf8f116d6e14ac07c8774f9ed 100644
--- a/data.py
+++ b/data.py
@@ -76,15 +76,20 @@ if __name__ == '__main__':
         type=float,
         nargs=4,
         metavar=('lat_nw', 'lon_nw', 'lat_se', 'lon_se'),
-        default=[None, None, None, None],
         help='Use only those charging stations that are located with in a '
              'rectangle defined by the north-west and south-east coordinates.'
     )
 
     args = parser.parse_args()
 
+    nw_corner = None
+    se_corner = None
+    if args.cut:
+        nw_corner = args.cut[:2]
+        se_corner = args.cut[2:]
+
     parse_charging_stations_csv(
         args.input_path,
-        nw_corner=args.cut[:2],
-        se_corner=args.cut[2:]
+        nw_corner=nw_corner,
+        se_corner=se_corner
     ).to_json(args.dest_path, orient='records')
diff --git a/evrouting/gasstation/routing.py b/evrouting/gasstation/routing.py
index 7171caa21f0249252eb217fc3115991a3695b356..a89866971e5f9554a067715a24645d6fb4209fb1 100644
--- a/evrouting/gasstation/routing.py
+++ b/evrouting/gasstation/routing.py
@@ -101,6 +101,9 @@ def contract_graph(G: nx.Graph, charging_stations: Set[Node], capacity: SoC,
     """
     H: nx.Graph = nx.Graph()
 
+    if not charging_stations:
+        return H
+
     all_cs = list(charging_stations)
     for i in range(len(all_cs) - 1):
         cs = all_cs[i]
diff --git a/evrouting/osm/imports.py b/evrouting/osm/imports.py
index 06d2bd7a537d80297d33b720b4b31d76306c4aa9..e14d10cfab9099160aee3afeeeafd9d9db732437 100644
--- a/evrouting/osm/imports.py
+++ b/evrouting/osm/imports.py
@@ -39,13 +39,17 @@ def query_url(service, coordinates, osrm_config: OsrmConf):
 
 
 def insert_charging_stations(G, charging_stations):
+    """Insert Charging Stations"""
+    S = set()
     for s in charging_stations:
         lon = s['lon']
         lat = s['lat']
-        n = find_nearest(G, (lat, lon))
-        G.nodes[n][CHARGING_COEFFICIENT_KEY] = s['power']
+        n = find_nearest(G, (lat, lon), distance_limit=500)
+        if n:
+            G.nodes[n][CHARGING_COEFFICIENT_KEY] = s['power']
+            S.add(n)
 
-    return G
+    return S
 
 
 class OsrmDistance:
diff --git a/evrouting/osm/routing.py b/evrouting/osm/routing.py
index e030986328b6f2005e45dda0234698e52d931845..fbf877a085c12fcf543feea745e49ed7633f3180 100644
--- a/evrouting/osm/routing.py
+++ b/evrouting/osm/routing.py
@@ -30,7 +30,11 @@ def haversine_distance(lon1, lat1, lon2, lat2, unit_m=True):
     return c * r
 
 
-def find_nearest(G, v: point):
+def find_nearest(G, v: point, distance_limit=None):
+    """
+    Find nearest point to location v within radius
+    of distance_limit.
+    """
     min_dist = None
     closest_node = None
 
@@ -48,7 +52,10 @@ def find_nearest(G, v: point):
             closest_node = n
             min_dist = d
 
-    return closest_node
+    if distance_limit:
+        return closest_node if min_dist <= distance_limit else None
+    else:
+        return closest_node
 
 
 def shortest_path(G, s: point, t: point, profile):