diff --git a/src/client/Client.java b/src/client/Client.java
index 6a41efdb31f851be05d61e811eca05df86cc039e..e2e755df15f7af6c9c0b7125fa3c16766ccd06ea 100644
--- a/src/client/Client.java
+++ b/src/client/Client.java
@@ -17,6 +17,9 @@ import java.net.SocketException;
 
 import java.net.UnknownHostException;
 import java.util.Random;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
 /**
  *
  * @author LUCKY
@@ -28,9 +31,13 @@ public class Client {
     private final int timeout=15000; //in milliseconds 
     private boolean isProposer;
     private String ipAddress; //ipsendiri
+    private String serverAddress;
     private Random random;
     private int previouskpu;
     private Socket clientSocket;
+    private boolean tempc2s;
+    private boolean tempc2c;
+ 
     
     public Client(int _playerid, int _port){
         playerID = _playerid;
@@ -39,6 +46,9 @@ public class Client {
         isProposer = false;
         random = new Random();
         previouskpu = -1;
+        tempc2s = true;
+        tempc2c = true;
+        serverAddress = "localhost";
     }
     public void setIsProposer(boolean _bool){
         isProposer = _bool;
@@ -67,20 +77,124 @@ public class Client {
         receiverSocket.receive(receivePacket);
         String response = new String(receivePacket.getData());
         System.out.println("RESPONSE:" + response);
-        receiverSocket.close(); 
+        //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 peerAsClient() throws UnknownHostException, SocketException, IOException{
+        byte[] sendData = new byte[1024];
+        byte[] receiveData = new byte[1024];
+        String input,sentence="";
+        while(true){
+            BufferedReader inFromUser =new BufferedReader(new InputStreamReader(System.in));
+            DatagramSocket clientSocket = new DatagramSocket();
+            InetAddress IPAddress = InetAddress.getByName("localhost");
+            peermenu();
+            input = inFromUser.readLine();
+            switch(input){
+                case "1" : sentence = "{\"method\": \"prepare_proposal\",\"proposal_id\": ["+proposalNum+","+playerID+"] }"; break;
+                case "2" : sentence = "{\"method\": \"accept_proposal\",\"proposal_id\": ["+proposalNum+","+playerID+"], \"kpu_id\" : 0 }";break;
+                case "3" : sentence = "{\"method\": \"vote_werewolf\",\"player_id\": 2 }";break;
+                case "4" : sentence = "{\"method\": \"vote_civilian\",\"player_id\": 2 }";break;
+                default : sentence ="";break;
+            }
+            sendData = sentence.getBytes();
+            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
+            clientSocket.send(sendPacket);
+            if (sentence != ""){
+                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
+                clientSocket.receive(receivePacket);                
+                String modifiedSentence = new String(receivePacket.getData());
+                System.out.println("FROM SERVER:" + modifiedSentence);
+            }
+            
+            clientSocket.close(); 
+        }
     }
-    public void receiveMessageFromServer() throws IOException, ClassNotFoundException{
-        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+    void peermenu(){
+        System.out.println("1.prepare proposal");
+        System.out.println("2.accept proposal");
+        System.out.println("3.vote werewolf");
+        System.out.println("4.vote_civillian");
+
         
     }
-
+    public void peerAsServer() throws SocketException, IOException{
+        DatagramSocket serverSocket = new DatagramSocket(port);
+            String response,method;
+            while(tempc2c)
+               {
+                    byte[] receiveData = new byte[1024];
+                    byte[] sendData = new byte[1024];
+                    DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
+                    serverSocket.receive(receivePacket);
+                    String request = new String( receivePacket.getData());
+                    System.out.println("RECEIVED: " + request);
+                    InetAddress IPAddress = receivePacket.getAddress();
+                    int port = receivePacket.getPort();
+                    if (isJSON(request)){
+                        JSONObject j = new JSONObject(request);
+                        method = j.get("method").toString();
+                        switch(method){
+                            case "prepare_proposal" : response = "{\"status\": \"ok\",\"description\":\"accepted\", \"previous_accepted\" : "+previouskpu+"}";break;
+                            case "accept_proposal"  : response = "{\"status\": \"ok\",\"description\":\"accepted\"}";break;
+                            case "vote_werewolf" :  response = "{\"status\": \"ok\",\"description\":\"Vote Accepted\"}";break;
+                            case "vote_civilian": response ="{\"status\": \"ok\",\"description\":\"Vote Accepted\"}";break;
+                            default: response = ""; break;
+                        }
+                        sendData = response.getBytes();
+                        DatagramPacket sendPacket =new DatagramPacket(sendData, sendData.length, IPAddress, port);
+                        
+                    }else{
+                        tempc2c=false;
+                    }
+                    
+               } 
+    }
+    public void client2server() throws IOException{
+        String message="",response="",input;
+        while(tempc2s){
+            client2servermenu();
+            BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
+            clientSocket = new Socket(serverAddress, port);
+            DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
+            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+            input = inFromUser.readLine();
+            switch(input){
+                case "1" : message = "{\"method\": \"join\",\"username\": \"sister\",\"udp_address\": \"192.168.1.3\",\"udp_port\": 9999}";break;
+                case "2" : message = "{\"method\": \"leave\"}";break;
+                case "3" : message = "{\"method\": \"ready\"}";break;
+                case "4" : message = "{\"method\": \"client_address\"}";break;
+                case "5" : message = "{\"method\": \"vote_result_civilian\",\"vote_status\": 1,\"player_killed\": 4,\"vote_result\": [[0, 1], [1, 2]]}";break;
+                default : message = "hua";tempc2s = false;break;
+            }
+            outToServer.writeBytes(message + '\n');
+            if (message == "hua"){}
+            else{
+                response = inFromServer.readLine();
+                System.out.println("response: " + response);
+            }
+            clientSocket.close();
+        }
+    }
+    private boolean isJSON(String test){
+            try{
+                new JSONObject(test);
+            }catch(JSONException ex){
+                try{
+                    new  JSONArray(test);
+                }catch(JSONException ex2){
+                    return false;
+                }
+            }
+            return true;
+        }
+    public void client2servermenu(){
+        System.out.println("1.join");
+        System.out.println("2.leave");
+        System.out.println("3.ready");
+        System.out.println("4.list client");
+        System.out.println("5.civ killed");
+    }
     public int getPlayerID() {
         return playerID;
     }
diff --git a/src/client/SisTerClient.java b/src/client/SisTerClient.java
index 9a7c12ec550b8cc6984011f603a59c193ce174a5..54deb228bc4fc036c674ff6804f130c31531dc7a 100644
--- a/src/client/SisTerClient.java
+++ b/src/client/SisTerClient.java
@@ -24,22 +24,12 @@ public class SisTerClient {
      * @param args the command line arguments
      */
     public static void main(String[] args) throws Exception {
-        /*String sentence;
-        String modifiedSentence;
+        System.out.println("Masukan Port");
         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()+"]}");
+        int port = Integer.parseInt(inFromUser.readLine().toString());
+        Client c = new Client(0,port);
+        c.client2server();
+        //c.peerAsClient();
         
         public void vote(){
             
diff --git a/src/server/Client.java b/src/server/Client.java
index 47c60784a015deaaf4ca91844935510ad8b8d058..e2e755df15f7af6c9c0b7125fa3c16766ccd06ea 100644
--- a/src/server/Client.java
+++ b/src/server/Client.java
@@ -3,7 +3,7 @@
  * To change this template file, choose Tools | Templates
  * and open the template in the editor.
  */
-package sisterserver;
+package sisterclient;
 
 import java.io.BufferedReader;
 import java.io.DataOutputStream;
@@ -17,6 +17,9 @@ import java.net.SocketException;
 
 import java.net.UnknownHostException;
 import java.util.Random;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
 /**
  *
  * @author LUCKY
@@ -28,9 +31,13 @@ public class Client {
     private final int timeout=15000; //in milliseconds 
     private boolean isProposer;
     private String ipAddress; //ipsendiri
+    private String serverAddress;
     private Random random;
     private int previouskpu;
     private Socket clientSocket;
+    private boolean tempc2s;
+    private boolean tempc2c;
+ 
     
     public Client(int _playerid, int _port){
         playerID = _playerid;
@@ -39,6 +46,9 @@ public class Client {
         isProposer = false;
         random = new Random();
         previouskpu = -1;
+        tempc2s = true;
+        tempc2c = true;
+        serverAddress = "localhost";
     }
     public void setIsProposer(boolean _bool){
         isProposer = _bool;
@@ -67,20 +77,124 @@ public class Client {
         receiverSocket.receive(receivePacket);
         String response = new String(receivePacket.getData());
         System.out.println("RESPONSE:" + response);
-        receiverSocket.close(); 
+        //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 peerAsClient() throws UnknownHostException, SocketException, IOException{
+        byte[] sendData = new byte[1024];
+        byte[] receiveData = new byte[1024];
+        String input,sentence="";
+        while(true){
+            BufferedReader inFromUser =new BufferedReader(new InputStreamReader(System.in));
+            DatagramSocket clientSocket = new DatagramSocket();
+            InetAddress IPAddress = InetAddress.getByName("localhost");
+            peermenu();
+            input = inFromUser.readLine();
+            switch(input){
+                case "1" : sentence = "{\"method\": \"prepare_proposal\",\"proposal_id\": ["+proposalNum+","+playerID+"] }"; break;
+                case "2" : sentence = "{\"method\": \"accept_proposal\",\"proposal_id\": ["+proposalNum+","+playerID+"], \"kpu_id\" : 0 }";break;
+                case "3" : sentence = "{\"method\": \"vote_werewolf\",\"player_id\": 2 }";break;
+                case "4" : sentence = "{\"method\": \"vote_civilian\",\"player_id\": 2 }";break;
+                default : sentence ="";break;
+            }
+            sendData = sentence.getBytes();
+            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
+            clientSocket.send(sendPacket);
+            if (sentence != ""){
+                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
+                clientSocket.receive(receivePacket);                
+                String modifiedSentence = new String(receivePacket.getData());
+                System.out.println("FROM SERVER:" + modifiedSentence);
+            }
+            
+            clientSocket.close(); 
+        }
     }
-    public void receiveMessageFromServer() throws IOException, ClassNotFoundException{
-        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+    void peermenu(){
+        System.out.println("1.prepare proposal");
+        System.out.println("2.accept proposal");
+        System.out.println("3.vote werewolf");
+        System.out.println("4.vote_civillian");
+
         
     }
-
+    public void peerAsServer() throws SocketException, IOException{
+        DatagramSocket serverSocket = new DatagramSocket(port);
+            String response,method;
+            while(tempc2c)
+               {
+                    byte[] receiveData = new byte[1024];
+                    byte[] sendData = new byte[1024];
+                    DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
+                    serverSocket.receive(receivePacket);
+                    String request = new String( receivePacket.getData());
+                    System.out.println("RECEIVED: " + request);
+                    InetAddress IPAddress = receivePacket.getAddress();
+                    int port = receivePacket.getPort();
+                    if (isJSON(request)){
+                        JSONObject j = new JSONObject(request);
+                        method = j.get("method").toString();
+                        switch(method){
+                            case "prepare_proposal" : response = "{\"status\": \"ok\",\"description\":\"accepted\", \"previous_accepted\" : "+previouskpu+"}";break;
+                            case "accept_proposal"  : response = "{\"status\": \"ok\",\"description\":\"accepted\"}";break;
+                            case "vote_werewolf" :  response = "{\"status\": \"ok\",\"description\":\"Vote Accepted\"}";break;
+                            case "vote_civilian": response ="{\"status\": \"ok\",\"description\":\"Vote Accepted\"}";break;
+                            default: response = ""; break;
+                        }
+                        sendData = response.getBytes();
+                        DatagramPacket sendPacket =new DatagramPacket(sendData, sendData.length, IPAddress, port);
+                        
+                    }else{
+                        tempc2c=false;
+                    }
+                    
+               } 
+    }
+    public void client2server() throws IOException{
+        String message="",response="",input;
+        while(tempc2s){
+            client2servermenu();
+            BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
+            clientSocket = new Socket(serverAddress, port);
+            DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
+            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+            input = inFromUser.readLine();
+            switch(input){
+                case "1" : message = "{\"method\": \"join\",\"username\": \"sister\",\"udp_address\": \"192.168.1.3\",\"udp_port\": 9999}";break;
+                case "2" : message = "{\"method\": \"leave\"}";break;
+                case "3" : message = "{\"method\": \"ready\"}";break;
+                case "4" : message = "{\"method\": \"client_address\"}";break;
+                case "5" : message = "{\"method\": \"vote_result_civilian\",\"vote_status\": 1,\"player_killed\": 4,\"vote_result\": [[0, 1], [1, 2]]}";break;
+                default : message = "hua";tempc2s = false;break;
+            }
+            outToServer.writeBytes(message + '\n');
+            if (message == "hua"){}
+            else{
+                response = inFromServer.readLine();
+                System.out.println("response: " + response);
+            }
+            clientSocket.close();
+        }
+    }
+    private boolean isJSON(String test){
+            try{
+                new JSONObject(test);
+            }catch(JSONException ex){
+                try{
+                    new  JSONArray(test);
+                }catch(JSONException ex2){
+                    return false;
+                }
+            }
+            return true;
+        }
+    public void client2servermenu(){
+        System.out.println("1.join");
+        System.out.println("2.leave");
+        System.out.println("3.ready");
+        System.out.println("4.list client");
+        System.out.println("5.civ killed");
+    }
     public int getPlayerID() {
         return playerID;
     }
diff --git a/src/server/Server.java b/src/server/Server.java
index 3e370cd0d81594ed35070dd5b003fb2ddb2015e2..485c4aa0ca468a2b0f38fd1ece5f6f821ae84c4e 100644
--- a/src/server/Server.java
+++ b/src/server/Server.java
@@ -10,6 +10,8 @@ import java.io.ObjectOutputStream;
 import java.io.OutputStream;
 import java.net.ServerSocket;
 import java.net.Socket;
+import org.json.JSONArray;
+import org.json.JSONException;
 import org.json.JSONObject;
 
 import java.util.LinkedList;
@@ -17,6 +19,24 @@ import java.util.Stack;
 
 public class Server implements Runnable
 {
+<<<<<<< HEAD
+//private Paxos paxos;
+    private String host;
+    private int port;
+    private Socket socket;
+    private final String DEFAULT_HOST = "localhost";
+    private ServerSocket serverSocket;
+    private int numPlayer;
+    private boolean playing;
+    private boolean temps2c;
+//PrintStream streamToClient;
+    BufferedReader streamFromClient;
+    Socket fromClient;
+    static int count = 0;
+    Thread thread;
+    
+=======
+>>>>>>> 50cd7dce6ca5ad2a4fe6fb38066efe574e692b88
 
 	private int totalProcesses;
 	private int numProposers;
@@ -24,7 +44,41 @@ public class Server implements Runnable
 	private int numLearners;
 	private int decision=-1;
 
+<<<<<<< HEAD
+		try{
+			serverSocket = new ServerSocket(1001);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		
+	}
+        
+        public Server(String _host, int _port){
+            host = _host;
+            port = _port;
+            playing = false;
+            numPlayer= 0;
+            temps2c = true;
+            
+        }
+	public boolean isWerewolf()
+	{
+		boolean yes = false;
+		// for werewolf
+		return yes;
+	}
+
+	public void connect(String host, int port) throws IOException
+	{
+		this.host = host;
+		this.port = port;
+		socket = new Socket(host, port);
+		System.out.println("Game sudah dimulai... V^__^V");
+
+	}
+=======
 	LinkedList<String>[] queues;
+>>>>>>> 50cd7dce6ca5ad2a4fe6fb38066efe574e692b88
 
 	@SuppressWarnings("unchecked")
 	public Server(int numProposers, int numAcceptors, int numLearners){
@@ -46,9 +100,62 @@ public class Server implements Runnable
 		return numProposers;
 	}
 
+<<<<<<< HEAD
+       
+        
+        public void server2client() throws IOException{
+            String response,request,method;
+            ServerSocket serverSocket = new ServerSocket(port);
+            
+            while(temps2c)
+            {
+               Socket connectionSocket = serverSocket.accept();
+               BufferedReader inFromClient =new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
+               DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
+               request = inFromClient.readLine();
+               System.out.println("Received: " + request);
+               
+               if (isJSON(request)){
+                   JSONObject j = new JSONObject(request);
+                   method = j.get("method").toString();
+                    switch(method){
+                        case "join" : response = "{\"status\": \"ok\",\"player_id\":"+numPlayer+"}";numPlayer++;break;
+                        case "leave"  : response = "{\"status\": \"ok\"}";break;
+                        case "ready" :  response = "{\"status\": \"ok\",\"description\":\"Waiting other player to start\"}";break;
+                        case "client_address": response ="not";break;
+                        case "vote_result_civilian": response = "{\"status\": \"ok\",\"description\":\"civ Killed\"}";break;
+                        default: response = ""; break;
+                    }
+                    response = response + '\n';
+                    outToClient.writeBytes(response); 
+               }else{
+                   temps2c=false;
+               }
+               
+
+            }
+        }
+        private boolean isJSON(String test){
+            try{
+                new JSONObject(test);
+            }catch(JSONException ex){
+                try{
+                    new  JSONArray(test);
+                }catch(JSONException ex2){
+                    return false;
+                }
+            }
+            return true;
+        }
+    @Override
+    public void run() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+=======
 	public int getnumLearners(){
 		return numLearners
 	}
+>>>>>>> 50cd7dce6ca5ad2a4fe6fb38066efe574e692b88
        	
     // untuk channel communication dari proses processID
     public Channel getChannel(int processID){
diff --git a/src/server/SisterServer.java b/src/server/SisterServer.java
index c9e81b6da59d4cba74dec9991948be02eaed73a8..f5d08d52cb1288597b6fad08ba7e2379c8b2451b 100644
--- a/src/server/SisterServer.java
+++ b/src/server/SisterServer.java
@@ -26,10 +26,20 @@ 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);
+            System.out.println("Masukan address");
+            BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
+            String address = inFromUser.readLine().toString();
             
+            System.out.println("Masukan Port");
+            inFromUser = new BufferedReader( new InputStreamReader(System.in));
+            int port = Integer.parseInt(inFromUser.readLine().toString());
+            Server s = new Server(address,port);
+            s.server2client();
+            //Client c = new Client(0,9999);
+            //c.peerAsServer();
+            
+<<<<<<< HEAD
+=======
             while(true)
             {
                Socket connectionSocket = welcomeSocket.accept();
@@ -51,6 +61,16 @@ public class SisterServer {
 
             Client c = new Client(1,9999);
             c.receiveMessageFromClient("localhost", 8888);
+<<<<<<< HEAD
+=======
+
+            // creating consensus
+            public void consensus(){
+              
+            }
+
+>>>>>>> 50cd7dce6ca5ad2a4fe6fb38066efe574e692b88
+>>>>>>> 03e8375e6aaa270bdfb4b367153ed7592937748f
     }
     
 }