diff --git a/ov9/test_files/bensin.csv b/ov9/test_files/bensin.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e21432bc524d3f6ceabf63a1f0c014151c5c495f
--- /dev/null
+++ b/ov9/test_files/bensin.csv
@@ -0,0 +1,10 @@
+63.8813596,-16.6455209
+63.9903364,-16.8955556
+63.7945675,-18.0385077
+64.313597,-15.2297097
+64.2502585,-15.1949877
+63.4175347,-18.9933282
+63.4179445,-19.0012901
+64.6561578,-14.2858315
+63.7515328,-20.2356732
+64.1971287,-19.2852893
diff --git a/ov9/test_files/path.csv b/ov9/test_files/path.csv
new file mode 100644
index 0000000000000000000000000000000000000000..45c3cb3156def97bb6e1cc9b8a9fae47865a07c0
--- /dev/null
+++ b/ov9/test_files/path.csv
@@ -0,0 +1,93 @@
+63.9080694,-16.7247592
+63.9058785,-16.7175168
+63.9053932,-16.7164037
+63.8984011,-16.7045815
+63.8958595,-16.7006431
+63.8788854,-16.6651085
+63.8792685,-16.6591009
+63.8794908,-16.6573676
+63.8795259,-16.657084
+63.8799829,-16.6536394
+63.8809548,-16.6463462
+63.8810457,-16.6441901
+63.8807691,-16.6417122
+63.8970268,-16.6095471
+63.8999179,-16.6034102
+63.9015935,-16.5988398
+63.9023605,-16.5962541
+63.9032713,-16.5926439
+63.9041303,-16.5883577
+63.9049538,-16.5836906
+63.9064261,-16.575349
+63.9064199,-16.5751942
+63.9085433,-16.5630039
+63.9097247,-16.5562989
+63.9097825,-16.5559677
+63.9110282,-16.5486619
+63.9149785,-16.5261211
+63.9150235,-16.5258561
+63.9169339,-16.5148584
+63.9186839,-16.5090143
+63.9368728,-16.435842
+63.9370849,-16.4352787
+63.9375038,-16.4342226
+63.9377556,-16.4335838
+63.9670962,-16.421953
+63.9671789,-16.4219303
+63.9702458,-16.4210221
+63.970349,-16.4209937
+63.9728414,-16.4202795
+63.9886289,-16.3949099
+63.9980515,-16.3778152
+63.9983779,-16.377229
+63.999214,-16.3757345
+64.0038366,-16.3682666
+64.0049154,-16.3666422
+64.0082142,-16.36195
+64.0134973,-16.3554615
+64.0333107,-16.2947833
+64.038132,-16.2753317
+64.0408405,-16.2271325
+64.0414318,-16.210348
+64.0419552,-16.2030044
+64.0442611,-16.188184
+64.0447244,-16.1853663
+64.045077,-16.18327
+64.0452331,-16.1823756
+64.0459113,-16.1782831
+64.046234,-16.1763095
+64.0467697,-16.1734513
+64.0468423,-16.1730869
+64.0775564,-16.1095094
+64.1013533,-16.0985618
+64.1042143,-16.0972793
+64.1104545,-16.0925534
+64.1148614,-16.086098
+64.1151636,-16.0855979
+64.1159302,-16.0843098
+64.1178375,-16.0810708
+64.1182334,-16.0803977
+64.1283951,-16.0631721
+64.1307222,-16.0574631
+64.1294137,-16.0268267
+64.1308707,-16.0190398
+64.1377904,-15.9788655
+64.1391655,-15.9750754
+64.1478335,-15.9590389
+64.157832,-15.9382984
+64.1581111,-15.9375419
+64.1582809,-15.9370867
+64.1588947,-15.9354365
+64.1592013,-15.9346244
+64.1625567,-15.9256263
+64.1687298,-15.9088622
+64.1752083,-15.8885745
+64.175332,-15.8877376
+64.1774706,-15.8752666
+64.1782483,-15.8705538
+64.1784346,-15.868437
+64.1788698,-15.8526315
+64.1788447,-15.8512749
+64.1788146,-15.8506283
+64.1785192,-15.8476394
+64.1782867,-15.8352699
diff --git a/ov9/test_files/set_test.py b/ov9/test_files/set_test.py
index ec5a2901e9c61f9b155ac0f882fbe18444bc9256..ade277aff1e93e274f158afb0e29d93f41c5ed97 100644
--- a/ov9/test_files/set_test.py
+++ b/ov9/test_files/set_test.py
@@ -1,6 +1,6 @@
 import sys
 from queue import PriorityQueue
-
+import timeit 
 
 class int_points (object):
     def __init__(self, id, type, name):
@@ -32,45 +32,51 @@ class results(object):
 
 
 #prep nodes
+node_arr = []
+start = timeit.default_timer()
 with open('./noder.txt','r') as file:
-    node_file = file.read()
+    for i in file:
+        i = i.split()
+        if len(i) == 1:
+            num_of_nodes = int(i[0])
+        else:
+            node_arr.append(nodes(int(i[0]), float(i[1]), float(i[2])))
 
-node_file = node_file.split()
-num_of_nodes = int(node_file[0])
-node_file.pop(0)
+slutt = timeit.default_timer()
+print('nodes loaded correct in: ', slutt - start)
 
-node_arr = []
-for i in range(0, len(node_file), 3):
-    #nodenr breddegrad lengdegrad
-    node_arr.append(nodes(int(node_file[i]), float(node_file[i+1]), float(node_file[i+2])))
 
+edge_arr = []
 #prep edges
+start = timeit.default_timer()
 with open('./kanter.txt','r') as file:
-    edge_file = file.read()
-
-edge_file = edge_file.split()
-num_of_edges = int(edge_file[0])
-edge_file.pop(0)
+    for i in file:
+        i = i.split()
+        if len(i) == 1:
+            num_of_edges= int(i[0])
+        else: 
+            edge_arr.append(edges(int(i[0]), int(i[1]), int(i[2]), int(i[3]), int(i[4])))
+           
+slutt = timeit.default_timer()
+print('edges loaded correct in: ', slutt - start)
 
-edge_arr = []
-for i in range(0, len(edge_file), 5):
-    #franode tilnode kjøretid lengde fartsgrense
-    edge_arr.append(edges(int(edge_file[i]), int(edge_file[i+1]), int(edge_file[i+2]), int(edge_file[i+3]), int(edge_file[i+4])))
 
 #prep intresting 
-with open('./interessepkt.txt','r') as file:
-    intresting_file = file.read()
-
-intresting_file = intresting_file.split('\n')
-num_of_intresting = int(intresting_file[0])
-intresting_file.pop(0)
-
 intresting_arr = []
-for i in range(len(intresting_file)):
-    #nodenr kode "Navn på stedet"
-    tmp_values = intresting_file[i].split()
-    intresting_arr.append(int_points(int(tmp_values[0]), int(tmp_values[1]), ' '.join(tmp_values[2:])))
-
+start = timeit.default_timer()
+with open('./interessepkt.txt','r') as file:
+    for i in file:
+        i = i.split()
+        if len(i) == 1:
+            num_of_intresting= int(i[0])
+        else: 
+            try:
+                intresting_arr.append(int_points(int(i[0]), int(i[1]), ' '.join(i[2:])))
+            except:
+                print(i)
+                exit()
+slutt = timeit.default_timer()
+print('int_points loaded correct in: ', slutt - start)
 
 max_num = max(edge_arr,key=lambda item:item.time)
 res_arr = []
@@ -78,28 +84,8 @@ def init_table():
     for i in range(num_of_nodes):
         res_arr.append(results(i, max_num.time+1, False, False, None))
 
-
-
 print('prep done, files loaded to lists')
 
-# def rec_func(node, counter, global_fra, end_switch):
-#     if not end_switch:
-#         counter += node.time
-#         if node.node == global_fra:
-#             return counter
-#         else:
-#             node = [a for a in res_arr if a.node == node.prev][0]
-#             return rec_func(node, counter, global_fra, end_switch)
-#     elif end_switch:
-#         counter += node.time
-#         path.append(node.node)
-#         if node.node == global_fra:
-#             return counter, path
-#         else:
-#             node = [a for a in res_arr if a.node == node.prev][0]
-#             return rec_func(node, counter, global_fra, end_switch)
-
-
 def rec_func2(node, global_fra):
     path=[]
     while node.node != global_fra:
@@ -108,87 +94,93 @@ def rec_func2(node, global_fra):
     path.append(node.node)
     return path
 
-
-
-# def calculate_shortest_path(current_node, time, current_neighbour, slutt):
-#     count_a = 0
-#     count_a, _ = rec_func2(current_neighbour, count_a, slutt)
-#     count_b = 0
-#     count_b, _ = rec_func2(current_node, count_b, slutt)
-#     count_b += time
-#     if count_b < count_a:
-#         return True
-#     else: 
-#         return False
-
-
-
-# def update_que(que):
-#     tmp_arr = [a for a in res_arr if a.node in que]
-#     tmp_arr.sort(key=lambda x: x.total_time, reverse=True)
-#     que = [a.node for a in tmp_arr if a in tmp_arr]
-#     return que
-
-
+def find_bensin(arr):
+    with open('./bensin.csv', 'w') as file:
+        print('bensin to be found on disse benserne: ')
+        for u in arr:
+            a = next(a for a in node_arr if str(a.node) == str(u.id))
+            print(u.name)
+            file.write(f'{a.bredde},{a.lengde}\n')
+    return
 
 end_que = PriorityQueue()
 queue = PriorityQueue()
 we_soon_to_be_done = False
-def dijkstras(slutt, start):
+def dijkstras(slutt, start, bensin):
     global we_soon_to_be_done
     global queue
-    if we_soon_to_be_done:
-        tmp_que_item = end_que.get()
-        current_node = [b for b in res_arr if b.node == tmp_que_item][0]
-    else:
-        tmp_que_item = queue.get()
-        current_node = [b for b in res_arr if b.total_time == tmp_que_item and b.in_que][0]
-    for tmp_edge in edge_arr:
-        if tmp_edge.fra == current_node.node:
-            current_neighbour = [a for a in res_arr if a.node == tmp_edge.til][0]
-            if not current_neighbour.visited and not current_neighbour.in_que:
-                current_neighbour.total_time = current_node.total_time + tmp_edge.time
-                current_neighbour.prev = current_node.node
-                if tmp_edge.til == slutt:
-                    current_node.visited = True
-                    current_node.in_que = False
-                    we_soon_to_be_done = True
-                    end_que.put(tmp_edge.til)
-                else:
-                    if tmp_edge.fra == slutt:
+    node_count= 0
+    bensin_arr = []
+    while queue or not end_que.empty: 
+        node_count +=1 
+        if node_count % (num_of_nodes//100) == 0:
+            print(f'searched {node_count/(num_of_nodes//100)}% of nodes')
+        if we_soon_to_be_done:
+            tmp_que_item = end_que.get()
+            current_node = [b for b in res_arr if b.node == tmp_que_item][0]
+        else:
+            tmp_que_item = queue.get()
+            current_node = [b for b in res_arr if b.total_time == tmp_que_item and b.in_que][0]
+
+        for tmp_edge in edge_arr:
+            if tmp_edge.fra == current_node.node:
+                current_neighbour = [a for a in res_arr if a.node == tmp_edge.til][0]
+                if not current_neighbour.visited and not current_neighbour.in_que:
+                    current_neighbour.total_time = current_node.total_time + tmp_edge.time
+                    current_neighbour.prev = current_node.node
+                    if bensin:
+                        a = next((a for a in intresting_arr if a.id == current_neighbour.node), -1)
+                        if a != -1:
+                            if a.type == 2:
+                                print(f'en benser er funnet: {a.name}')
+                                bensin_arr.append(a)
+                                if len(bensin_arr) >= 10:
+                                    find_bensin(bensin_arr)
+                                    break 
+                    if tmp_edge.til == slutt and not bensin:
+                        current_node.visited = True
+                        current_node.in_que = False
+                        we_soon_to_be_done = True
                         end_que.put(tmp_edge.til)
                     else:
-                        current_neighbour.in_que = True 
-                        queue.put(current_neighbour.total_time)
-
-            elif current_neighbour.node != start:
-                if current_node.total_time + tmp_edge.time < current_neighbour.total_time:
-                    index_in_que = queue.queue.index(current_neighbour.total_time)
-                    current_neighbour.total_time = tmp_edge.time + current_node.total_time
-                    current_neighbour.prev = current_node.node
-                    queue.queue[index_in_que] = current_neighbour.total_time
-        
-    if we_soon_to_be_done and end_que.empty(): 
-        end_node = [b for b in res_arr if b.node == slutt][0]
-        travel_arr = rec_func2(end_node, start)
-        travel_arr = reversed(travel_arr)
-        print(f'total time: {end_node.total_time}\nshortest path: {"->".join(str(v) for v in travel_arr)}')
-        count = 0
-        for i in res_arr:
-            if i.total_time != max_num.time +1:
-                count +=1 
-        print('total nodes added to map: ', count)
-        exit()
-    else:
-        if we_soon_to_be_done:
-            current_node.visited = True
-            current_node.in_que = False
-            dijkstras(slutt,start)
+                        if tmp_edge.fra == slutt and not bensin:
+                            end_que.put(tmp_edge.til)
+                        else:
+                            current_neighbour.in_que = True 
+                            queue.put(current_neighbour.total_time)
+                           
+                elif current_neighbour.node != start:
+                    if current_node.total_time + tmp_edge.time < current_neighbour.total_time:
+                        old_time = current_neighbour.total_time
+                        current_neighbour.total_time = tmp_edge.time + current_node.total_time
+                        current_neighbour.prev = current_node.node
+                        if old_time in queue.queue:
+                            index_in_que = queue.queue.index(old_time)
+                            queue.queue[index_in_que] = current_neighbour.total_time
+            
+        if we_soon_to_be_done and end_que.empty(): 
+            print('Done mapping, calcualting result')
+            end_node = [b for b in res_arr if b.node == slutt][0]
+            travel_arr = rec_func2(end_node, start)
+            travel_arr = list(reversed(travel_arr))
+            print(f'total time: {end_node.total_time}\nshortest path: {"->".join(str(v) for v in travel_arr)}')
+            count = 0
+            for i in res_arr:
+                if i.total_time != max_num.time +1:
+                    count +=1 
+            print('total nodes added to map: ', count)
+            with open('./path.csv', 'w') as file:
+                for noob in travel_arr:
+                    a = next(a for a in node_arr if str(a.node) == str(noob))
+                    file.write(f'{a.bredde},{a.lengde}\n')
+            break 
         else:
-            current_node.visited = True
-            current_node.in_que = False
-            #queue = update_que(queue)  
-            dijkstras(slutt,start)
+            if we_soon_to_be_done:
+                current_node.visited = True
+                current_node.in_que = False
+            else:
+                current_node.visited = True
+                current_node.in_que = False
              
 
 
@@ -198,13 +190,24 @@ def init_things():
         if sys.argv[1] == '-d':
             #node_id
             start = 20
-            slutt = 30
+            slutt = 400
             init_table()
             queue.put(0)
             start_node = next(a for a in res_arr if a.node == start)
             start_node.total_time = 0
             start_node.in_que = True
-            dijkstras(slutt, start)
+            if len(sys.argv) > 2:
+                if sys.argv[2] == '-b':
+                    print('les go bensin')
+                    start = timeit.default_timer()
+                    dijkstras(slutt, start, True)
+                    slutt = timeit.default_timer()
+                    print(f'total time for locating bensin is: {slutt-start}')
+            else: 
+                start = timeit.default_timer()
+                dijkstras(slutt, start, False)
+                slutt = timeit.default_timer()
+                print(f'total time for locating path is: {slutt-start}')
         elif sys.argv[1] == '-a':
             print('A* not yet implemented')
         else:
diff --git a/ov9/test_files/test.py b/ov9/test_files/test.py
index 466155924dae5bf81a391ceb1c35a155f6bd405b..c9c8ddf3b7a8518afb0f43877f3b5e5c443e2173 100644
--- a/ov9/test_files/test.py
+++ b/ov9/test_files/test.py
@@ -12,12 +12,26 @@ class results(object):
         self.in_que = in_que
         self.prev = prev
 
-    
+
+arr1 = []
 arr = PriorityQueue()
 
+
+
 for i in range(10):
-    arr.put((i ,results(i*10, i, False, True, 0)))
+    arr1.append(results(i*10, i, False, True, 0))
+
+
+for i in arr1:
+    arr.put((i.total_time, i))
+
+elem = arr1[1]
+index = arr.queue.index((elem.total_time,elem))
+elem.total_time = 50
+arr.queue[index] = (50, elem)
+
 
 while not arr.empty():
-    b = arr.get()
-    print(b)
+    b = arr.get()[1]
+    print(b.total_time)
+