diff --git a/src/client/Client.java b/src/client/Client.java
index e1ad43a3e9ce814ea328377f57757a4d4158c592..6a41efdb31f851be05d61e811eca05df86cc039e 100644
--- a/src/client/Client.java
+++ b/src/client/Client.java
@@ -5,24 +5,18 @@
  */
 package sisterclient;
 
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
+import java.io.InputStreamReader;
 import java.net.DatagramPacket;
 import java.net.DatagramSocket;
 import java.net.InetAddress;
-import java.net.InetSocketAddress;
 import java.net.Socket;
 import java.net.SocketException;
 
-import java.net.SocketTimeoutException;
 import java.net.UnknownHostException;
-import org.json.JSONObject;
 import java.util.Random;
-import java.util.Scanner;
-import java.util.concurrent.TimeUnit;
 /**
  *
  * @author LUCKY
@@ -72,27 +66,19 @@ public class Client {
         DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
         receiverSocket.receive(receivePacket);
         String response = new String(receivePacket.getData());
-        System.out.println("FROM SERVER:" + response);
+        System.out.println("RESPONSE:" + response);
         receiverSocket.close(); 
     }
     void connectToServer(String _ipAddr, int _port ) throws IOException{
         clientSocket = new Socket(_ipAddr, _port);
     }
-    void sendMessageToServer(Object _objIn) throws IOException{
-        OutputStream out = clientSocket.getOutputStream();
-        ObjectOutputStream oOut = new ObjectOutputStream(out);
-        oOut.writeObject(_objIn);
-    }
-    void receiveMessageFromServer() throws IOException, ClassNotFoundException{
-        Object oTemp = null;
-        InputStream in = clientSocket.getInputStream();
-        ObjectInputStream oIn = new ObjectInputStream(in);
-        oTemp = (Object) oIn.readObject();
-        if(oTemp instanceof JSONObject){
-            System.out.println(((JSONObject)oTemp).toString());
-        }else{
-            System.out.println("error/fail");
-        }
+    void sendMessageToServer(String in) throws IOException{
+        DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream());
+        out.writeBytes(in+'\n');
+    }
+    public void receiveMessageFromServer() throws IOException, ClassNotFoundException{
+        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+        
     }
 
     public int getPlayerID() {
diff --git a/src/client/SisTerClient.java b/src/client/SisTerClient.java
new file mode 100644
index 0000000000000000000000000000000000000000..2aaf16bbca6ac7b245cb41cc037822b5823aa9e0
--- /dev/null
+++ b/src/client/SisTerClient.java
@@ -0,0 +1,46 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package sisterclient;
+
+/**
+ *
+ * @author LUCKY
+ */
+
+import java.io.*;
+import java.net.*;
+import java.util.Map;
+import java.util.Scanner;
+import org.json.JSONObject;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+
+public class SisTerClient {
+    //private static Random random;
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String[] args) throws Exception {
+        /*String sentence;
+        String modifiedSentence;
+        BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
+        Socket clientSocket = new Socket("localhost", 6789);
+        DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
+        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+        sentence = inFromUser.readLine();
+        outToServer.writeBytes(sentence + '\n');
+        modifiedSentence = inFromServer.readLine();
+        System.out.println("FROM SERVER: " + modifiedSentence);
+        clientSocket.close(); */
+        Client c = new Client(0,9999);
+        c.connectToServer("localhost", 9999);
+        c.sendMessageToServer("{\"method\": \"join\",\"username\": \"sister\",\"udp_address\": \"192.168.1.3\",\"udp_port\": 9999}");
+        
+        c.sendMessageToClient("localhost", 8888,"{\"method\":\"prepare_proposal\",\"proposal_id\": ["+c.getProposalNum()+","+c.getPlayerID()+"]}");
+        
+    }
+    
+}
diff --git a/src/server/Client.java b/src/server/Client.java
new file mode 100644
index 0000000000000000000000000000000000000000..47c60784a015deaaf4ca91844935510ad8b8d058
--- /dev/null
+++ b/src/server/Client.java
@@ -0,0 +1,124 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package sisterserver;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.SocketException;
+
+import java.net.UnknownHostException;
+import java.util.Random;
+/**
+ *
+ * @author LUCKY
+ */
+public class Client {
+    private int playerID;
+    private int port;
+    private int proposalNum;
+    private final int timeout=15000; //in milliseconds 
+    private boolean isProposer;
+    private String ipAddress; //ipsendiri
+    private Random random;
+    private int previouskpu;
+    private Socket clientSocket;
+    
+    public Client(int _playerid, int _port){
+        playerID = _playerid;
+        port = _port;
+        proposalNum = 0;
+        isProposer = false;
+        random = new Random();
+        previouskpu = -1;
+    }
+    public void setIsProposer(boolean _bool){
+        isProposer = _bool;
+    }
+    public void setPort(int _port){
+        port = _port;
+    }
+    void sendMessageToClient(String _addr, int port, String message) throws SocketException, UnknownHostException, IOException{
+        DatagramSocket senderSocket = new DatagramSocket();
+        InetAddress IPAddress = InetAddress.getByName(_addr);
+        byte[] sendData = new byte[1024];
+        sendData = message.getBytes();
+        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
+        double rand = random.nextDouble();
+        if (rand < 0.85) {
+            senderSocket.send(sendPacket);
+        }
+        senderSocket.close();
+    }
+    void receiveMessageFromClient(String _addr, int port) throws SocketException, IOException{
+        byte[] receiveData = new byte[1024];  
+        DatagramSocket receiverSocket = new DatagramSocket(port);
+        receiverSocket.setReuseAddress(true);
+        InetAddress IPAddress = InetAddress.getByName(_addr);
+        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
+        receiverSocket.receive(receivePacket);
+        String response = new String(receivePacket.getData());
+        System.out.println("RESPONSE:" + response);
+        receiverSocket.close(); 
+    }
+    void connectToServer(String _ipAddr, int _port ) throws IOException{
+        clientSocket = new Socket(_ipAddr, _port);
+    }
+    void sendMessageToServer(String in) throws IOException{
+        DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream());
+        out.writeBytes(in+'\n');
+    }
+    public void receiveMessageFromServer() throws IOException, ClassNotFoundException{
+        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+        
+    }
+
+    public int getPlayerID() {
+        return playerID;
+    }
+
+    public void setPlayerID(int playerID) {
+        this.playerID = playerID;
+    }
+
+    public int getProposalNum() {
+        return proposalNum;
+    }
+
+    public void setProposalNum(int proposalNum) {
+        this.proposalNum = proposalNum;
+    }
+
+    public String getIpAddress() {
+        return ipAddress;
+    }
+
+    public void setIpAddress(String ipAddress) {
+        this.ipAddress = ipAddress;
+    }
+
+
+    public int getPreviouskpu() {
+        return previouskpu;
+    }
+
+    public void setPreviouskpu(int previouskpu) {
+        this.previouskpu = previouskpu;
+    }
+
+    public Socket getClientSocket() {
+        return clientSocket;
+    }
+
+    public void setClientSocket(Socket clientSocket) {
+        this.clientSocket = clientSocket;
+    }
+}
diff --git a/src/server/Server.java b/src/server/Server.java
index 105a96ebe5007837168d46d9bbaa88664ffb3652..05825d40980fe34870c8c62af1ac30d57214f0af 100644
--- a/src/server/Server.java
+++ b/src/server/Server.java
@@ -1,23 +1,27 @@
-import java.net.URL;
-import java.net.URLConnection;
+package sisterserver;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
 import java.net.ServerSocket;
 import java.net.Socket;
-import java.net.ConnectException;
-import java.net.NoRouteToHostException;
-import java.net.UnknownHostException;
-
-import org.json.JSONArray;
 import org.json.JSONObject;
-import org.json.parser.JSONParser;
 
 public class Server implements Runnable
 {
-	private String host;
+    private String host;
     private int port;
     private Socket socket;
     private final String DEFAULT_HOST = "localhost";
     private ServerSocket serverSocket;
-    PrintStream streamToClient;
+    private int numPlayer;
+    private boolean playing;
+    //PrintStream streamToClient;
     BufferedReader streamFromClient;
     Socket fromClient;
     static int count = 0;
@@ -25,9 +29,9 @@ public class Server implements Runnable
 
 	public Server() 
 	{
-		this.host = host;
-		this.port = port;
-		this.socket = socket;
+		this.host = "localhost";
+		this.port = 9999;
+		this.socket = null;
 
 		try{
 			serverSocket = new ServerSocket(1001);
@@ -36,7 +40,19 @@ public class Server implements Runnable
 		}
 		
 	}
-
+        
+        public Server(String _host, int _port){
+            try{
+                host = _host;
+                port = _port;
+                serverSocket = new ServerSocket(_port);
+                socket = serverSocket.accept();
+                playing = false;
+            }catch(IOException e){
+                
+            }
+            
+        }
 	public boolean isWerewolf()
 	{
 		boolean yes = false;
@@ -56,7 +72,7 @@ public class Server implements Runnable
 	public JSONObject receiveJSON() throws IOException
 	{
 		InputStream in = socket.getInputStream();
-		ObjectInputStream i = new ObjectInputStream();
+		ObjectInputStream i = new ObjectInputStream(in);
 		JSONObject line = null;
 		try {
 			line = (JSONObject) i.readObject();
@@ -65,13 +81,13 @@ public class Server implements Runnable
 		}
 
 		return line;
+            
 	}
 
 	public void sendJSON(JSONObject jsonObj) throws IOException
 	{
 		JSONObject jsonObject2 = new JSONObject();
-		jsonObject2.put("key", new Paper(250,333));
-
+		
 		OutputStream out = socket.getOutputStream();
 		ObjectOutputStream o = new ObjectOutputStream(out);
 		o.writeObject(jsonObject2);
@@ -84,13 +100,13 @@ public class Server implements Runnable
 			while(true){
 				fromClient = serverSocket.accept();
 				count++;
-				streamFromClient = new BufferedReader(fromClient.getInputStream());
+				//streamFromClient = new BufferedReader(fromClient.getInputStream());
 
-				InputStreamReader = new InputStreamReader((fromClient.getInputStream()));
-				PrintStream streamToClient = new PrintStream(fromClient.getInputStream());
+				InputStreamReader in = new InputStreamReader((fromClient.getInputStream()));
+				//PrintStream streamToClient = new PrintStream(fromClient.getInputStream());
 				String str = streamFromClient.readLine();
 				System.out.println(str);
-				streamToClient.println("Halo, "+str);
+				//streamToClient.println("Halo, "+str);
 			}
 		} catch (Exception e){
 			e.printStackTrace();
@@ -102,7 +118,22 @@ public class Server implements Runnable
 			}
 		}
 	}
-
-	
+        
+        public String receiveMessage() throws IOException{
+            String temp = null;
+            BufferedReader inFromClient =new BufferedReader(new InputStreamReader(socket.getInputStream()));
+            temp = inFromClient.readLine();
+            return temp;
+        }
+        public void sendMessage(String out) throws IOException{
+            DataOutputStream outToClient = new DataOutputStream(socket.getOutputStream());
+            String response = out + '\n';
+            outToClient.writeBytes(response); 
+        }
+    @Override
+    public void run() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+       	
 
 }
\ No newline at end of file
diff --git a/src/server/SisterServer.java b/src/server/SisterServer.java
new file mode 100644
index 0000000000000000000000000000000000000000..2edc01783593a060ae8c5c31e7a61a57be248ae8
--- /dev/null
+++ b/src/server/SisterServer.java
@@ -0,0 +1,48 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package sisterserver;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.InputStreamReader;
+import java.net.*;
+import org.json.JSONObject;
+
+/**
+ *
+ * @author LUCKY
+ */
+public class SisterServer {
+
+    /**
+     * @param args the command line arguments
+     */
+        public static void main(String[] args) throws Exception {
+           /* String clientSentence;
+            String capitalizedSentence;
+            ServerSocket welcomeSocket = new ServerSocket(6789);
+            
+            while(true)
+            {
+               Socket connectionSocket = welcomeSocket.accept();
+               BufferedReader inFromClient =new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
+               DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
+               clientSentence = inFromClient.readLine();
+               System.out.println("Received: " + clientSentence);
+               capitalizedSentence = clientSentence.toUpperCase() + '\n';
+               outToClient.writeBytes(capitalizedSentence); 
+
+            }*/
+            /*Server s = new Server("localhost",9999);
+            String request = s.receiveMessage();
+            System.out.println(request);
+            JSONObject j = new JSONObject(request);
+            System.out.println(j.get("method"));*/
+            Client c = new Client(1,9999);
+            c.receiveMessageFromClient("localhost", 8888);
+    }
+    
+}