diff --git a/Neighbours/neighbour-1.yaml b/Neighbours/neighbour-1.yaml
deleted file mode 100644
index 67bc16f1d9ef1dc8ae46e9b805822f735b4c1206..0000000000000000000000000000000000000000
--- a/Neighbours/neighbour-1.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 1
-address: "127.0.0.1"
-neighbours:
-  - id: 2
-    address: "127.0.0.2"
-  - id: 4
-    address: "127.0.0.4"
\ No newline at end of file
diff --git a/Neighbours/neighbour-2.yaml b/Neighbours/neighbour-2.yaml
deleted file mode 100644
index 7ebe96bea6b60fd2df1d4164aa9133fa65bb4f3b..0000000000000000000000000000000000000000
--- a/Neighbours/neighbour-2.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 2
-address: "127.0.0.2"
-neighbours:
-  - id: 1
-    address: "127.0.0.1"
-  - id: 3
-    address: "127.0.0.3"
diff --git a/Neighbours/neighbour-3.yaml b/Neighbours/neighbour-3.yaml
deleted file mode 100644
index 9481b7a11addeca077fabbf08897f21a8f9959dc..0000000000000000000000000000000000000000
--- a/Neighbours/neighbour-3.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-id: 3
-address: "127.0.0.3"
-neighbours:
-  - id: 4
-    address: "127.0.0.4"
-
-  - id: 5
-    address: "127.0.0.5"
-
-  - id: 6
-    address: "127.0.0.6"
diff --git a/Neighbours/neighbour-4.yaml b/Neighbours/neighbour-4.yaml
deleted file mode 100644
index 64533f3003985bafa47c82efb25a8a7cb2829f77..0000000000000000000000000000000000000000
--- a/Neighbours/neighbour-4.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-id: 4
-address: "127.0.0.4"
-neighbours:
-  - id: 1
-    address: "127.0.0.1"
-
-  - id: 5
-    address: "127.0.0.5"
-
-  - id: 6
-    address: "127.0.0.6"
diff --git a/Neighbours/neighbour-5.yaml b/Neighbours/neighbour-5.yaml
deleted file mode 100644
index 166e72fbe0ede954648445661e10dd842231f318..0000000000000000000000000000000000000000
--- a/Neighbours/neighbour-5.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-id: 5
-address: "127.0.0.5"
-neighbours:
-  - id: 6
-    address: "127.0.0.6"
-  
-  - id: 3
-    address: "127.0.0.3"
-
-  - id: 4
-    address: "127.0.0.4"
diff --git a/Neighbours/neighbour-6.yaml b/Neighbours/neighbour-6.yaml
deleted file mode 100644
index 4203a751856098103fa11dcfaf3a6c906bce6560..0000000000000000000000000000000000000000
--- a/Neighbours/neighbour-6.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-id: 6
-address: "127.0.0.6"
-neighbours:
-  - id: 3
-    address: "127.0.0.3"
-
-  - id: 4
-    address: "127.0.0.4"
-
-  - id: 5
-    address: "127.0.0.5"
diff --git a/client/client.go b/client/client.go
index 4853d57214ce4914fa46004e24d9f925ace8249c..0de5bd19567e56fe30d4169570e65c2eca86fe45 100644
--- a/client/client.go
+++ b/client/client.go
@@ -1,8 +1,9 @@
 package main
 
 import (
-	"bufio"
+	"encoding/gob"
 	"fmt"
+	"net"
 	"os"
 )
 
@@ -20,8 +21,40 @@ func createMessage(id int, key int, _type string) Message {
 	}
 }
 
+func sendMessage(address string, port string, msg Message) {
+	conn, err := net.Dial("tcp", address+":"+port)
+	if err != nil {
+		fmt.Println("Error connecting:", err.Error())
+		os.Exit(1)
+	}
+	encoder := gob.NewEncoder(conn)
+	encoder.Encode(msg)
+	rcv := make([]byte, 2048)
+	n, _ := conn.Read(rcv)
+	fmt.Println(string(rcv[:n]))
+	conn.Close()
+}
+
 func main() {
-	reader := bufio.NewReader(os.Stdin)
-	fmt.Print("Quel fichiez recherhez vous ? (ID)")
-	input, _ := reader.ReadString('\n')
+	//reader := bufio.NewReader(os.Stdin)
+	var id = 0
+
+	for {
+		fmt.Println("Quel fichiez recherchez vous ? (ID)")
+		/* input, _ := reader.ReadString('\n')
+		key, err := strconv.Atoi(input)
+		if err != nil {
+			// handle error
+			fmt.Println(err)
+			os.Exit(2)
+		} */
+
+		msg := createMessage(id, 19, "REQUEST")
+		sendMessage("127.0.0.1", "9000", msg)
+		fmt.Println(msg)
+		/* if input == "q" {
+			os.Exit(0)
+		} */
+
+	}
 }
diff --git a/deploy.py b/deploy.py
deleted file mode 100644
index 54be87ec4fad39590aebc82ad66591abded04517..0000000000000000000000000000000000000000
--- a/deploy.py
+++ /dev/null
@@ -1,80 +0,0 @@
-import exoscale
-from pexpect import pxssh
-from time import sleep
-import re
-
-EXOSCALE_API_KEY = 'EXO7945e92f25a038a400b488aa'
-EXOSCALE_API_SECRET = 'smRDVh7H0QO3w9068WlSq_JqBuPPdR7uaps6bSkLEWw'
-
-# Initialise exoscale API
-exo = exoscale.Exoscale(api_key=EXOSCALE_API_KEY, api_secret=EXOSCALE_API_SECRET)
-zone_decix = exo.compute.get_zone("de-fra-1")
-
-security_group_default_ssh = exo.compute.get_security_group(name='default')
-
-###
-# Create instances
-###
-
-nodes = []
-
-for i in range(6):
-    new_instance = exo.compute.create_instance(
-            name="freenet-1"
-            zone=zone_decix,
-            type=exo.compute.get_instance_type("tiny"),
-            template=list(exo.compute.list_instance_templates(
-                    zone_decix,
-                    "Linux Ubuntu 18.04 LTS 64-bit"))[0],
-            volume_size=10,
-            security_groups=[security_group_default_ssh],
-            ssh_key=exo.compute.get_ssh_key("SWARM-cluster-key"),
-            user_data=
-        """#cloud-config
-        package_upgrade: true
-        packages:
-        - golang
-        - git
-        runcmd:
-        - cd /home/ubuntu/
-        - git clone ssh://git@ssh.hesge.ch:10572/jeremy.martinot/tp2_freenet_go_socket.git
-        """
-        )
-    nodes.append(new_instance)
-
-print("SWARM master hosted at {}".format(swarm_master.ipv4_address))
-print("SWARM http hosted at {}".format(swarm_http_slave.ipv4_address))
-print("Swarm slave at {}".format(swarm_slave.ipv4_address))
-
-print("Waiting 60 seconds for cloud-init completion...");
-sleep(60)
-
-print("Setting up docker SWARM...")
-try:
-    s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"})
-    
-    s.login(swarm_master.ipv4_address, username='ubuntu', ssh_key='swarm_key')
-    s.sendline('docker swarm init')
-    s.prompt()
-
-    haystack = s.before.decode('utf-8', 'ignore')
-    join_cmd = re.findall('docker swarm join --token.*$', haystack, re.MULTILINE)[0].strip()
-    
-    s.logout()
-    
-    s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"})
-    s.login(swarm_slave.ipv4_address, username='ubuntu', ssh_key='swarm_key')
-    s.sendline(join_cmd)
-    s.prompt()
-    s.logout()
-    
-    s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"})
-    s.login(swarm_http_slave.ipv4_address, username='ubuntu', ssh_key='swarm_key')
-    s.sendline(join_cmd)
-    s.prompt()
-    s.logout()
-    
-    print("Swarm created on all nodes.")
-except pxssh.ExceptionPxssh as e:
-    print("pxssh failed on login.")
-    print(e)
diff --git a/pyproject.toml b/pyproject.toml
deleted file mode 100644
index 91a3eda7d1c6240db97ec09854f5d82af5d36880..0000000000000000000000000000000000000000
--- a/pyproject.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-[tool.poetry]
-name = "tp2_freenet_go_socket"
-version = "0.1.0"
-description = ""
-authors = ["Julian Rühl <julian.ruhl@etu.hesge.ch>"]
-
-[tool.poetry.dependencies]
-python = "^3.8"
-exoscale = "^0.7.1"
-
-[tool.poetry.dev-dependencies]
-
-[build-system]
-requires = ["poetry-core>=1.0.0"]
-build-backend = "poetry.core.masonry.api"
diff --git a/server.go b/server.go
deleted file mode 100644
index d5a14ef06ecab99db162cea3c30f4298109c4b6c..0000000000000000000000000000000000000000
--- a/server.go
+++ /dev/null
@@ -1,56 +0,0 @@
-package main
-
-import (
-	"fmt"
-	"io/ioutil"
-	"net"
-	"os"
-
-	"gopkg.in/yaml.v3"
-)
-
-type contenu struct {
-	hash [20]byte //sha1 hash
-	file string   //nom du fichier
-	node [4]byte  //addresse IP
-}
-
-func checkError(err error) {
-	if err != nil {
-		fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
-		os.Exit(1)
-	}
-}
-
-func main() {
-	if len(os.Args) != 3 {
-		fmt.Fprintf(os.Stderr, "Utilisation: %s port config.yaml\n", os.Args[0])
-		os.Exit(1)
-	}
-
-	yfile, err := ioutil.ReadFile(os.Args[2])
-	checkError(err)
-
-	data := make(map[interface{}]interface{})
-
-	err = yaml.Unmarshal(yfile, &data)
-	checkError(err)
-
-	service := "127.0.0.1"
-	tcpAddr, err := net.ResolveTCPAddr("tcp4", service)
-	checkError(err)
-
-	conn, err := net.DialTCP("tcp", nil, tcpAddr)
-	checkError(err)
-
-	_, err = conn.Write([]byte("HEAD / HTTP/1.0\r\n\r\n"))
-	checkError(err)
-
-	//result, err := readFully(conn)
-	result, err := ioutil.ReadAll(conn)
-	checkError(err)
-
-	fmt.Println(string(result))
-
-	os.Exit(0)
-}
diff --git a/server/README.md b/server/README.md
deleted file mode 100644
index 4d56d6bcb264c73995b7e98c79fd9cad9a53c130..0000000000000000000000000000000000000000
--- a/server/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# TP2_Freenet_Go_Socket 
-
-Our amazing project !
\ No newline at end of file
diff --git a/server/server.go b/server/server.go
index f09ffa01f8ed096e955150a753c703dbf15f3674..3bc1bffa27ff0c9c93b5c1212e0ea892b8d2c340 100644
--- a/server/server.go
+++ b/server/server.go
@@ -1,11 +1,13 @@
 package main
 
 import (
-	"bufio"
+	"encoding/gob"
 	"fmt"
 	"io/ioutil"
+	"math/rand"
 	"net"
 	"os"
+	"time"
 
 	"gopkg.in/yaml.v3"
 )
@@ -23,10 +25,41 @@ type Node struct {
 }
 
 type Contenu struct {
-	File   string //identifiant du fichier
+	Key    int    //key
 	Origin string //addresse IP
 }
 
+var (
+	thisnode Node
+	port     string
+	contents  []Contenu
+	requests []Message
+)
+
+func createMessage(id int, key int, _type string) Message {
+	return Message{
+		Id:    id,
+		Key:   key,
+		Type_: _type,
+	}
+}
+
+func createContenu(key int, origin string) {
+	return Contenu{
+		Key: key,
+		Origin: origin,
+	}
+}
+
+func fillContents() {
+	rands := [10]int
+    rand.Seed(time.Now().UnixNano())
+    for i:=0; i<len(rands); i++ {
+        rands[i] = rand.Intn(100)
+		contents = append(contents, createContenu(v[i],node.Address))
+    }
+}
+
 func checkError(err error) {
 	if err != nil {
 		fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
@@ -50,12 +83,73 @@ func readYaml(filename string) Node {
 	return nodeFromYaml
 }
 
-func handleConn(conn net.Conn) {
+func sendMessage(msg Message, dst Node) {
+	conn, err := net.Dial("tcp", dst.Address+":"+port)
+	checkError(err)
+
+	defer conn.Close()
+
+	encoder := gob.NewEncoder(conn)
+	encoder.Encode(msg)
+}
+
+func sendMessageAllExcept(msg Message, unsent Node) {
+	for _, node := range thisnode.Neighbours {
+		if node.Address != unsent.Address {
+			go sendMessage(msg, node)
+		}
+	}
+}
+
+func handleNewConn(conn net.Conn) {
 	defer conn.Close()
 
 	fmt.Printf("Connexion établi avec %s...\n", conn.RemoteAddr().String())
-	message, _ := bufio.NewReader(conn).ReadString('\n')
-	fmt.Println(message)
+
+	dec := gob.NewDecoder(conn)
+	msg := &Message{}
+
+	dec.Decode(msg)
+	fmt.Printf("Received : %+v", msg)
+
+	if msg.Type_ == "REQUEST" {
+		handleRequest(msg, conn)
+	} else if msg.Type_ == "POSITIVE" {
+		handlePositiveMessage(msg, conn)
+	} else {
+		handleNegativeMessage(msg, conn)
+	}
+}
+
+func handlePositiveMessage(msg Message, conn net.Conn) {
+	//transmettre message au noeud qui a démandé SAUF si nous étions le demandeur
+}
+
+func handleRequest(msg Message, conn net.Conn) {
+	requests = append(requests, msg)
+	
+	if hasKey(msg.Key) {
+		sendMessage(createMessage(thisnode.Id, msg.Key, "POSITIVE"))
+	} else {
+		//demander aux autres noeuds
+	}
+}
+
+func hasKey(key int) bool {
+	for _, element := range content {
+		if key == element.Key {
+			key_found = true
+		}
+	}
+}
+
+func hasAlreadyRequested(newreq Message) bool {
+	for _, request := range requests {
+		if request.Id == newreq.Id && request.Key == newreq.Key {
+			return true
+		}
+	}
+	return false
 }
 
 func main() {
@@ -64,12 +158,17 @@ func main() {
 		os.Exit(0)
 	}
 
-	node := readYaml(os.Args[2])
+	thisnode := readYaml(os.Args[2])
 	port := os.Args[1]
+	fillContents()
 
-	fmt.Println("Starting server on " + node.Address + ":" + port)
+	fmt.Println("Starting server on " + thisnode.Address + ":" + port)
 
-	listenSocket, err := net.Listen("tcp", node.Address+":"+port)
+	if os.Args[3] == "INIT" {
+
+	}
+
+	listenSocket, err := net.Listen("tcp", thisnode.Address+":"+port)
 	checkError(err)
 
 	defer listenSocket.Close()
@@ -79,7 +178,8 @@ func main() {
 		connection, err := listenSocket.Accept()
 		checkError(err)
 
-		go handleConn(connection)
+		handleNewConn(connection)
 	}
+
 	os.Exit(0)
 }