diff --git a/__pycache__/kserver.cpython-313.pyc b/__pycache__/kserver.cpython-313.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..401d92341d7bb4d3c2994fd3d5d394df9ea34069
Binary files /dev/null and b/__pycache__/kserver.cpython-313.pyc differ
diff --git a/extract.py b/extract.py
new file mode 100644
index 0000000000000000000000000000000000000000..926a83b8490a81824c55d8a1a8651d2494db7939
--- /dev/null
+++ b/extract.py
@@ -0,0 +1,4 @@
+                    
+            # checks wheter the message comes from the server itself
+            if decoded_message.startswith(f"[{server_id}]"):
+                continue  # if...ignores it
\ No newline at end of file
diff --git a/form_ring.py b/form_ring.py
new file mode 100644
index 0000000000000000000000000000000000000000..c89f34077260faa9a44c00ef4c0f3a6c73df3396
--- /dev/null
+++ b/form_ring.py
@@ -0,0 +1,47 @@
+import socket
+import kserver
+
+my_list = kserver.server_uuids
+print(my_list)
+result = ", ".join([str(x) for x in my_list])  # Listen-Komprehension
+# Alternativ: result = ", ".join(map(str, my_list))
+print(result)  # Ausgabe: 1, 2, 3
+
+
+def form_ring(result):
+ #uuid, address = kserver.server_socket.recvfrom(4096)
+ #print("here uuid or what:", uuid, "and address:", address)
+ #message = uuid.decode()
+ #Convert a 32-bit packed IPv4 address to its standard dotted-quad string representation
+ #sorted()=returns a sorted list of the specified iterable object
+ sorted_binary_ring= sorted([socket.inet_aton(member) for member in result])
+ sorted_ip_ring= [socket.inet_ntoa(node) for node in sorted_binary_ring]
+ return sorted_ip_ring
+
+#dynamic!
+#1.broadcast server uuid everyone
+#listen to broadcast here and 
+#members = ['192.168.0.1', '130.234.204.2', '130.234.203.2', '130.234.204.1', '182.4.3.111'] 
+ring = form_ring(result)
+
+print(ring)
+
+#getting neighbour:
+def get_neighbour(ring, current_node_ip, direction='left'):
+ current_node_index = ring.index(current_node_ip) if current_node_ip in ring else -1
+ if current_node_index != -1:
+  if direction == 'left':
+   if current_node_index + 1 == len(ring):
+    return ring[0]
+   else:
+    return ring[current_node_index + 1]
+  else:
+   if current_node_index == 0:
+    return ring[len(ring) - 1]
+   else:
+    return ring[current_node_index- 1]
+ else:
+  return None
+
+neighbour = get_neighbour(ring, '130.234.203.2', 'left') 
+print(neighbour) 
\ No newline at end of file
diff --git a/kserver.py b/kserver.py
index b82846d8163d56b875c7c270864454652d0b5478..453d229d85ccf671120f836e15ba78637515d2a9 100644
--- a/kserver.py
+++ b/kserver.py
@@ -8,6 +8,9 @@ broadcast_port = 55555
 # create unique server-ID
 server_id = str(uuid.uuid4())
 
+# Set to store UUIDs of other servers
+server_uuids = set()
+
 # create server-socket for broadcast
 server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
 server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
@@ -30,9 +33,19 @@ def listen():
             message, client_address = server_socket.recvfrom(4096)
             decoded_message = message.decode()
 
-            # checks wheter the message comes from the server itself
-            if decoded_message.startswith(f"[{server_id}]"):
-                continue  # if...ignores it
+            # Extract UUID from the message
+            if decoded_message.startswith("[") and "]" in decoded_message:
+                sender_uuid = decoded_message.split("]")[0][1:]
+                
+                # Ignore messages from self
+                if sender_uuid == server_id:
+                    continue
+                
+                # Add the UUID to the set if it's not already known
+                if sender_uuid not in server_uuids:
+                    server_uuids.add(sender_uuid)
+                    print(f"Discovered new server UUID: {sender_uuid} and server set: {server_uuids}")
+                   # print(server_uuids)
             
             #checks if the message containts the string "entered"
             if decoded_message.__contains__("entered"):
@@ -60,3 +73,17 @@ if __name__ == "__main__":
     #print(listen_thread.is_alive())
     #listen()
 
+        # Example of broadcasting your UUID periodically (optional)
+    def periodic_broadcast():
+        import time
+        while True:
+            try:
+                broadcast("Server is running")
+                time.sleep(10)  # Broadcast every 5 seconds
+            except KeyboardInterrupt:
+                break
+
+    broadcast_thread = threading.Thread(target=periodic_broadcast)
+    broadcast_thread.daemon = True  # Stop when main thread stops
+    broadcast_thread.start()
+
diff --git a/sync.py b/sync.py
deleted file mode 100644
index c3b6d25a109362ba0590f80b0010af6bfab8228b..0000000000000000000000000000000000000000
--- a/sync.py
+++ /dev/null
@@ -1,15 +0,0 @@
-import leaderServer
-
-
-def check_arrays(received_server_network, received_leader):
-
-    #aktuellen zustand des servers prüfen:
-    if received_server_network != leaderServer.server_network:
-        print("Unterschiede im Server-Netzwerk gefunden. Aktualisiere das Netzwerk...")
-        leaderServer.server_network = received_server_network  # Update das Netzwerk
-        print(f"new network: {received_server_network} or {leaderServer.server_network}")
-    
-    if received_leader != leaderServer.leader:
-        print("Unterschiede im Leader gefunden. Aktualisiere den Leader...")
-        leaderServer.leader = received_leader  # Update den Leader
-        print(f"new network: {received_leader} or {leaderServer.leader}")
\ No newline at end of file