diff --git a/app/server.go b/app/server.go
index ce238a1e58b154ce9b31635e28c46e2ca172c54e..e6e1c1de6923ccb3c55a2686e2b5864c3b58a095 100644
--- a/app/server.go
+++ b/app/server.go
@@ -3,9 +3,14 @@ package main
 import (
 	"fmt"
 	"gopkg.in/yaml.v3"
+	"net"
+	"node/connection"
+	object_storage "node/object-storage"
 	. "node/types"
 	"node/utilities"
 	"os"
+	"strconv"
+	"sync"
 )
 
 /**
@@ -16,6 +21,33 @@ import (
  * @version 1.3
  */
 
+func listenForConnections(serverConfig Config, objectStorage Blob, addressToListenOn string, amIRoot bool) {
+	port := strconv.FormatInt(int64(serverConfig.Port), 10)
+	completeAddress := addressToListenOn + ":" + port
+
+	server, err := net.Listen("tcp", completeAddress)
+	if err != nil {
+		fmt.Println("Error while creating the server :", err)
+		os.Exit(1)
+	}
+
+	fmt.Println("Server is ready to accept connections")
+	fmt.Println("listening on ", completeAddress)
+
+	ServerReady = true
+
+	var mu sync.Mutex
+	for {
+		// Listening for connections
+		conn, err := server.Accept()
+		if err != nil {
+			fmt.Println("Error accepting: ", err.Error())
+		} else {
+			go connection.ProcessClient(conn, server, serverConfig, amIRoot, &mu)
+		}
+	}
+}
+
 func main() {
 	argsLen := len(os.Args)
 	isThereEnoughArgs := argsLen <= 1
@@ -36,13 +68,13 @@ func main() {
 		os.Exit(1)
 	}
 
-	var c Config
-	err = yaml.Unmarshal(buf, &c)
+	var serverConfig Config
+	err = yaml.Unmarshal(buf, &serverConfig)
 	if err != nil {
 		os.Exit(1)
 	}
 
-	utilities.PrintConfig(c)
+	utilities.PrintConfig(serverConfig)
 
 	amIRoot := argsLen == 3
 	if amIRoot {
@@ -55,5 +87,13 @@ func main() {
 	}
 
 	fmt.Println("Launching server loop")
+	addressToListenOn := "0.0.0.0"
+
+	azureCreds := object_storage.InitAzureCredentials("hepiadistributedsystems")
+	blobName := "blockchain" + "-" + "database" + "" + strconv.Itoa(serverConfig.ID)
+	objectStorage := object_storage.InitializeBlobFromObjectStorageCreds(blobName, azureCreds)
+
+	go listenForConnections(serverConfig, objectStorage, addressToListenOn, amIRoot)
+
 	fmt.Println("Launching user input command line")
 }