diff --git a/src/main/java/fi/utu/tech/telephonegame/ClientManager.java b/src/main/java/fi/utu/tech/telephonegame/ClientManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..bbc9ee05b69f420e950991934aaedeafe4af3eb1
--- /dev/null
+++ b/src/main/java/fi/utu/tech/telephonegame/ClientManager.java
@@ -0,0 +1,5 @@
+package fi.utu.tech.telephonegame;
+
+public class ClientManager {
+
+}
diff --git a/src/main/java/fi/utu/tech/telephonegame/ServerManager.java b/src/main/java/fi/utu/tech/telephonegame/ServerManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..ba964529785323eeb593d8821f9fa901d2aa2b1d
--- /dev/null
+++ b/src/main/java/fi/utu/tech/telephonegame/ServerManager.java
@@ -0,0 +1,42 @@
+package fi.utu.tech.telephonegame;
+import java.net.*;
+import java.io.*;
+
+public class ServerManager {
+
+	private int port; 
+    private Socket socket = null;
+    private ObjectInputStream inputStream = null; 
+    private ObjectOutputStream outputStream = null; 
+    
+    
+    public ServerManager(int port){
+        this.port = port;
+    }
+    
+    public static void init(int port) throws Exception {
+    	try (ServerSocket ss = new ServerSocket(port)) {
+    		while (true) {
+    			Socket cs = ss.accept();
+    			System.out.println(
+    					"Connection from " + cs.getInetAddress() + " port " + cs.getPort());
+    			new MyHandler(cs).start();
+    		} 
+    	}
+    } 
+    
+    static class MyHandler extends Thread {
+    	private Socket client;
+    	
+    	public MyHandler(Socket s) {
+    		client = s;
+    	}
+    	
+    	@Override
+    	public void run() {
+    		//TODO
+    	}
+    	
+    }
+    
+}
diff --git a/src/main/java/fi/utu/tech/telephonegame/network/NetworkService.java b/src/main/java/fi/utu/tech/telephonegame/network/NetworkService.java
index 500f03432baedc105c15c6989bcddb5b220b7d9f..bf8e687d4bb0c21526a71a0199aac9c67cbb32c7 100644
--- a/src/main/java/fi/utu/tech/telephonegame/network/NetworkService.java
+++ b/src/main/java/fi/utu/tech/telephonegame/network/NetworkService.java
@@ -2,10 +2,7 @@ package fi.utu.tech.telephonegame.network;
 
 
 import java.net.NetworkInterface;
-import java.net.ServerSocket;
-import java.net.Socket;
 import java.net.SocketException;
-import java.net.SocketTimeoutException;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Enumeration;
@@ -13,13 +10,11 @@ import java.util.UUID;
 import java.util.concurrent.LinkedTransferQueue;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TransferQueue;
+
+import fi.utu.tech.telephonegame.ServerManager;
 import fi.utu.tech.telephonegame.util.ConcurrentExpiringHashSet;
 
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+
 import java.net.Inet6Address;
 import java.net.InetAddress;
 
@@ -31,7 +26,6 @@ public class NetworkService extends Thread implements Network {
 	private TransferQueue<Object> outQueue = new LinkedTransferQueue<Object>();
 	private TransferQueue<Object> inQueue = new LinkedTransferQueue<Object>();
 	private Resolver resolver;
-	private ServerSocket serverSocket;
 	
 
 	/*
@@ -48,29 +42,13 @@ public class NetworkService extends Thread implements Network {
 	 */
 
 	public void initialize(int serverport) {
-		while(true) {
-			try {
-				serverSocket = new ServerSocket(serverport);
-				serverSocket.setSoTimeout(20000);
-				System.out.println("Server in port " + serverport + " established.");
-				System.out.println("Waiting for client on port " + serverSocket.getLocalPort() + "...");
-				Socket server = serverSocket.accept();
-				System.out.println("Just connected to " + server.getRemoteSocketAddress());
-				DataInputStream in = new DataInputStream(server.getInputStream());
-	            System.out.println(in.readUTF());
-	            DataOutputStream out = new DataOutputStream(server.getOutputStream());
-	            out.writeUTF("Thank you for connecting to " + server.getLocalSocketAddress()
-	               + "\nGoodbye!");
-				server.close();
-		
-			} catch (SocketTimeoutException s) {
-				System.out.println("Socket timed out!");
-	            break;
-				
-			} catch (IOException e) {
-				e.printStackTrace();
-			}
-		}	
+		ServerManager manager = new ServerManager(serverport);
+		try {
+			manager.init(serverport);
+		} catch (Exception e) {
+			
+			e.printStackTrace();
+		}
 	}
 
 	
@@ -80,24 +58,7 @@ public class NetworkService extends Thread implements Network {
 	 */
 	
 	public void connect(String clientIP, int clientPort) {
-		try {
-			System.out.println("Connecting to " + clientIP + " on port " + clientPort);
-			Socket client = new Socket(clientIP, clientPort);
-			System.out.println("Just connected to " + client.getRemoteSocketAddress());
-			OutputStream outToServer = client.getOutputStream();
-	        DataOutputStream out = new DataOutputStream(outToServer);
-	         
-	        out.writeUTF("Hello from " + client.getLocalSocketAddress());
-	        InputStream inFromServer = client.getInputStream();
-	        DataInputStream in = new DataInputStream(inFromServer);
-	         
-	         System.out.println("Server says " + in.readUTF());
-			client.close();
-		}
-		
-		catch(IOException e) {
-			e.printStackTrace();
-		}
+		//TODO
 	}
 
 	/*