diff --git a/src/client/SisTerClient.java b/src/client/SisTerClient.java
index 51194a38f82ca0c13ee7bf1f517552c0580c9426..54deb228bc4fc036c674ff6804f130c31531dc7a 100644
--- a/src/client/SisTerClient.java
+++ b/src/client/SisTerClient.java
@@ -31,6 +31,12 @@ public class SisTerClient {
         c.client2server();
         //c.peerAsClient();
         
-    }
+        public void vote(){
+            
+        }
+
+        public void send_request(R){
+
+        }
     
 }
diff --git a/src/json-20140107.jar b/src/json-20140107.jar
new file mode 100644
index 0000000000000000000000000000000000000000..40a325dbadf46a178fb60a8251c796dacf1f66be
Binary files /dev/null and b/src/json-20140107.jar differ
diff --git a/src/json-simple-1.1.1.jar b/src/json-simple-1.1.1.jar
new file mode 100644
index 0000000000000000000000000000000000000000..66347a6c86b7d6442358ca7643e4dc484fb01866
Binary files /dev/null and b/src/json-simple-1.1.1.jar differ
diff --git a/src/server/Channel.java b/src/server/Channel.java
new file mode 100644
index 0000000000000000000000000000000000000000..689182d941c2d43dad79bbcbb4c1c3594b50dd97
--- /dev/null
+++ b/src/server/Channel.java
@@ -0,0 +1,48 @@
+import java.util.LinkedList;
+
+public class Chanel {
+	Network network;
+	int index;
+
+	// Send a message
+	public void sendMessage(int destination, String message) {
+		synchronized(network,queues[destination]) {
+			network.queues[destination].push(message);
+		}
+	}
+
+	// Receive a message
+	public String receiveMessage() {
+		synchronized(network.queues[index]) {
+			if (!network.queues[index].isEmpty())
+				return network.queues[index].pop();
+			else
+				return null;
+		}
+	}
+
+	// distinguish?
+	public void decide(int decision) {
+		if (index<(network.getnumProposers() + network.getnumAcceptors()))
+			throw new Error("Tidak dapat menerima value!");
+
+		else if (decision>=network.getnumProposers())
+			throw new Error("Bukan initial value coy.");
+
+		synchronized(network) {
+			if (network.decision==-1)
+				network.decision=decision;
+			else {
+				if (network.decision!=decision)
+					System.out.println("Terdapat disagreement");
+			}
+		}
+	}
+
+	// initial value untuk proposer
+	public int getInitialValue() {
+		if (index >= network.numProposers())
+			throw new Error("Gak usah tanya non-proposer mah");
+		return index;
+	}
+}
\ No newline at end of file
diff --git a/src/server/Paxos.java b/src/server/Paxos.java
index 49dbffea8d471334f18af7ed7e2710b6e01cf2da..ebcc7c442005446581e9cad40aec38245af762ca 100644
--- a/src/server/Paxos.java
+++ b/src/server/Paxos.java
@@ -7,11 +7,24 @@ import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 
+import java.util.HashMap;
+import java.uti.Date;
+
+import java.lang.Thread;
+
+enum MSG_TYPE {PREPARE, PROMISE, ACCEPT, ACCEPTED,LEARN,NACK_PROMISE,NACK_ACCEPTED};
+
 public class Paxos 
 {
+	Server server;
 	DatagramSocket clientSocket;
+	int MAX_PROPNUM = Integer.MAX_VALUE;
 	private int n; // number of request
 
+	public Paxos(){
+		this.server = server;
+	}
+
 	public void sendRequest(String sentence, String host, int port)
 	{
 		clientSocket = new DatagramSocket();
@@ -23,6 +36,313 @@ public class Paxos
 		clientSocket.send(sendPacket);
 	}
 
+	public void runPaxos() {
+		int n_proses = server.getnumProposers() + server.getnumAcceptors() + server.getnumLearners();
+		for (int i=0; i<n_proses; i++){
+			Thread t = new Thread(this, ""+i);
+			t.start();
+		}
+	}	
+
+	public int nextProposalNumber(int PID, int cur_Pnum){
+		int i = 0;
+		while (true) {
+			if (i<=cur_Pnum){
+				i++;
+			} else {
+				if (i%server.getnumProposers()==PID)
+					return i;
+				else
+					i++;
+			}
+			if (i==MAX_PROPNUM)
+				return -1;
+		}
+	}
+
+	public void run() {
+		try {
+			Thread t = Thread.currentThread();
+			int myindex = Integer.parseInt(t.getName());
+			Channel c = server.getChannel(myindex);
+			if(myindex<server.getnumProposers()){
+				int cur_Pnum = 0;
+				int CONSENSUS = 0;
+				Message promise_queue[] = new Message[server.numAcceptors()];
+				int Acceptor_decisions[] = new int[server.numAcceptors()];
+				String guaranteed_value = null;
+				int guaranteed_Pnum = -1;
+				int guaranteed_flag = 0;
+				int TIME_OUT = 5000;
+				Date start_time = new Date();
+				while (true) {
+					if(c.isDistinguished()){
+						while(c.receiveMessage()!=null){}
+
+						cur_Pnum = nextProposalNumber(myindex,cur_Pnum);
+					for(int a = server.getnumProposers(); a<(server.getnumProposers()+server.getnumAcceptors()))
+							Message m_prepare = new Message(MSG_TYPE.PREPARE,myindex,a,cur_Pnum,-1,null);
+							c.sendMessage(a,m_prepare.createMessage());						
+					}
+					while(true){
+						if(!c.isDistinguished())
+							break;
+						String msg = c.receiveMessage();
+						Date cur_time = new Date();
+						long elapsed_time = cur_time.getTime() - start_time.getTime();
+						if(elapsed_time>TIME_OUT){
+							while(c.receiveMessage()!=null){}
+							cur_Pnum = nextProposalNumber(myindex,cur_Pnum);
+								for(int a=server.getnumProposers(); a<(server.getnumProposers() + server.getnumAcceptors());a++){
+									Message m_prepare = new Message(MSG_TYPE.PREPARE,myindex,a,cur_Pnum,-1,null);
+									c.sendMessage(a,m_prepare.createMessage());
+								}
+								start_time = new Date();
+								guaranteed_value = null;
+								guaranteed_Pnum=-1;  
+                				guaranteed_flag=0;
+                				TIME_OUT*=2;
+						}
+						if(msg!=null){
+              			start_time=new Date(); 
+              			Message m=new Message(MSG_TYPE.PREPARE,-1,-1,-1,-1,null); //create a dummy Message object
+              			m.parseMessage(msg); 
+              			//parse the received message to the Message object.
+              			switch(m.msg_type){
+                		case PROMISE: //if the proposer received promise, send a accept only if it contains Pnum=cur_Pnum.
+                  		if(guaranteed_flag==1 && m.Pnum==guaranteed_Pnum){ //We already got a guarantee from majority so just accept what we already agreed
+                    	Message m_accept=new Message(MSG_TYPE.ACCEPT,myindex,m.AID,m.Pnum,-1,guaranteed_value);   
+                    	c.sendMessage(m.AID,m_accept.createMessage());
+                  	}
+                  	if(m.Pnum==cur_Pnum){ 
+                  		f(guaranteed_flag==0){
+                      Message msg_promQ=promise_queue[m.AID-network.numProposers()]; 
+
+                      //Add messages to local queue or discard those messages
+                      if(msg_promQ==null){
+                        promise_queue[m.AID-network.numProposers()]=m; //new PROMISE recvd
+                      }
+                      else{
+                        if(m.Value==null && msg_promQ.Value==null && msg_promQ.Pnum<m.Pnum){
+                          promise_queue[m.AID-network.numProposers()]=m; //new latest PROMISE recvd to replace existing unknown value.
+                        }
+                        if(m.Value!=null && msg_promQ.Value!=null && msg_promQ.Pnum<m.Pnum){
+                          promise_queue[m.AID-network.numProposers()]=m; //new latest PROMISE recvd to replace existing known value.
+                        }
+                        if(m.Value!=null && msg_promQ.Value==null){
+                          promise_queue[m.AID-network.numProposers()]=m; //new latest PROMISE recvd with value to replace existing unknown value.
+                        }
+                      }
+                    //end of adding messages to local queue
+  
+                    //loop through all message in local queue and check for majority
+                      int valid_msg=0;
+                      for(int a=network.numProposers();a<(network.numProposers()+network.numAcceptors());a++){
+                        if(promise_queue[a-network.numProposers()]!=null){
+                          Message m_promise_queue=promise_queue[a-network.numProposers()];//create a dummy Message object
+                          valid_msg++;
+                          if(m_promise_queue.Value!=null) {
+                            if(guaranteed_Pnum<m_promise_queue.Value_Pnum){
+                              guaranteed_value=m_promise_queue.Value;
+                              guaranteed_Pnum=m_promise_queue.Value_Pnum;
+                            }
+                          }
+                        } 
+
+                    	// end main phase
+                  		}
+
+                  		// setelah mendapatkan majority (voting) lalu accept
+                  		if(valid_msg>(network.numAcceptors()/2)){ 
+                        if(guaranteed_value==null){
+                          guaranteed_value=""+c.getInitialValue();
+                          guaranteed_Pnum=cur_Pnum;
+                        }  
+                        if(c.isDistinguished()){                    
+                          for(int a=network.numProposers();a<(network.numProposers()+network.numAcceptors());a++){
+                            if(promise_queue[a-network.numProposers()]!=null){
+                              Message m_accept=new Message(MSG_TYPE.ACCEPT,myindex,a,m.Pnum,-1,guaranteed_value);   
+                              c.sendMessage(a,m_accept.createMessage());
+                            }
+                          } // end for
+                      }
+                      guaranteed_flag=1; // flag set
+					}
+				}
+			}
+			break;
+			case NACK_PROMISE:
+				if(c.isDistinguished() && guaranteed_Pnum <= m.Pnum){
+					cur_Pnum = nextProposalNumber(myindex,cur_Pnum>m.Pnum?cur_Pnum:m.Pnum);
+					// Acceptor should send the highest promised Pnum so far. so that Proposer can generate a even higher Pnum.
+				if(cur_Pnum==-1)
+                      c.sleep();
+                    while(c.receiveMessage()!=null){} //Clear all previous messages and start fresh prepare
+                    for(int a=network.numProposers();a<(network.numProposers()+network.numAcceptors());a++){
+                      Message m_newprepare=new Message(MSG_TYPE.PREPARE,myindex,a,cur_Pnum,-1,null);
+                      c.sendMessage(a,m_newprepare.createMessage());
+                      promise_queue[a-network.numProposers()]=null;
+                    }  
+                  }
+                  break;
+
+            case ACCEPTED: //value has been accepted. Keep quiet.
+                  Acceptor_decisions[m.AID-network.numProposers()]=1;
+                  int decision_made=0;
+                  for(int i=0;i<network.numAcceptors();i++){
+                    if(Acceptor_decisions[m.AID-network.numProposers()]==1)
+                      decision_made++;
+                  }
+                  if(decision_made>network.numAcceptors()/2) 
+                    CONSENSUS=1;
+                  break;
+
+
+                case NACK_ACCEPTED: 
+                  Acceptor_decisions[m.AID-network.numProposers()]=-1;
+                  int rerun=0;
+                  for(int i=0;i<network.numAcceptors();i++){
+                    if(Acceptor_decisions[m.AID-network.numProposers()]==-1)
+                      rerun++;
+                  }
+                  if(rerun>network.numAcceptors()/2){ //now start a new run reset all state variables
+                    CONSENSUS=0; //1->after reaching 
+                    promise_queue=new Message[network.numAcceptors()]; 
+                    Acceptor_decisions=new int[network.numAcceptors()]; //1->Accept , -1->NACK_Accept
+                    guaranteed_value=null;
+                    guaranteed_Pnum=-1;  
+                    guaranteed_flag=0;
+                    cur_Pnum=nextProposalNumber(myindex,cur_Pnum);
+                    if(cur_Pnum==-1)
+                      System.out.println("Reached MAX_PROPNUM, bail out by throwing exception");
+                    c.sleep();
+                    while(c.receiveMessage()!=null){} //Clear all previous messages and start fresh prepare
+
+                    for(int a=network.numProposers();a<(network.numProposers()+network.numAcceptors());a++){
+                      Message m_prepare=new Message(MSG_TYPE.PREPARE,myindex,a,cur_Pnum,-1,null);
+                      c.sendMessage(a,m_prepare.createMessage());
+                    }
+                  }
+                  break;
+                }
+              }  
+              else{ 
+                c.sleep(); //Message queue empty so sleeping.
+              }  
+            }
+          }
+          else{
+            c.sleep();
+          }
+        }
+      }
+      // kode untuk acceptor
+       if(myindex>=network.numProposers() && myindex<(network.numProposers()+network.numAcceptors())) {
+      /* Initialize the highest proposal number received so far
+       * and the value if any proposal has been accepted */
+        
+        int max_pnum = -1;                // highest pnum for which acceptor has send a PROMISE
+        String val = null;                      // value it has accepted
+        int val_pnum = -1;                // corresponding pnum for the accepted value above
+        boolean hasAccepted = false;
+        //Acceptor code goes here
+        while(true) {
+            
+          Message m1 = new Message(MSG_TYPE.PROMISE, -1, -1, -1, -1, null);
+          String msg_st = c.receiveMessage();
+          Message m2;
+          if(msg_st != null) {
+            m1.parseMessage(msg_st);
+            // switch case to handle all msg_type
+            switch (m1.msg_type) {
+            case PREPARE:
+            /*  This is when the message received is PREPARE.
+            *  If the proposal number is greater than highest proposal number this acceptor has PROMISEd,
+            *  it will send a PROMISE message.
+            *
+            *  It will also handle the case when the acceptor has accepted a value but the proposal number
+            *  is greater than it has PROMISEd, by sending a PROMISE with the val and corresponding val_pnum
+            *  set to one it has accepted. */
+              if(m1.Pnum >= max_pnum) {        // change max proposal number promised only when it is greater than current
+                max_pnum = m1.Pnum;
+                m2 = new Message(MSG_TYPE.PROMISE, m1.PID, m1.AID, max_pnum, val_pnum, val);
+                c.sendMessage(m1.PID, m2.createMessage());
+              }
+              else {
+                m2 = new Message(MSG_TYPE.NACK_PROMISE, m1.PID, m1.AID, max_pnum, -1, null);    // sending a NACK_PROMISE when proposal's pnum < max_pnum
+                c.sendMessage(m1.PID, m2.createMessage());
+              }
+              break;
+              
+            case ACCEPT:
+              if(m1.Pnum == max_pnum) {
+                val = m1.Value;
+                val_pnum = m1.Pnum;
+                hasAccepted = true;
+                /* Send the accepted value to learner only when it is accepted for the first time
+                * hasAccepted boolean takes care of this */
+                Message m3 = new Message(MSG_TYPE.LEARN, m1.PID, m1.AID, max_pnum, val_pnum, val);
+                /* send message to all learners */
+                int totalprocess=network.numProposers()+network.numAcceptors()+network.numLearners();
+              
+                for(int i=network.numProposers()+network.numAcceptors(); i<totalprocess; i++) {
+                  c.sendMessage(i, m3.createMessage());
+                }
+
+                m2 = new Message(MSG_TYPE.ACCEPTED, m1.PID, m1.AID, max_pnum, val_pnum, val);
+              }
+              else {
+                /* Send a NACK_ACCEPTED message with current max_pnum when received Pnum in ACCEPT message is less than max_pnum
+                * which was promised by the acceptor. */
+                m2 = new Message(MSG_TYPE.NACK_ACCEPTED, m1.PID, m1.AID, max_pnum, -1,null);
+              }
+              c.sendMessage(m1.PID, m2.createMessage());
+              break;
+            
+            default:
+              break;
+            }
+          }
+        }
+      }
+      if(myindex>=(network.numProposers()+network.numAcceptors())){
+        //Learner code goes here
+        HashMap<String, Integer> learner_map = new HashMap<String, Integer>(); //format : <<AID.PropNum,Value>>
+        HashMap<Integer, Integer> DECIDED = new HashMap<Integer, Integer>(); //DECIDED for each Prop_Num null->not decided and 1->decided
+        while(true){
+          String Msg_Learn=c.receiveMessage();
+          if(Msg_Learn!=null){
+            Message msg_learn=new Message(MSG_TYPE.PREPARE,-1,-1,-1,-1,null); //create a dummy Message object
+            msg_learn.parseMessage(Msg_Learn);
+            //putting decided value in hashmap
+            learner_map.put(msg_learn.AID+"."+msg_learn.Pnum,Integer.parseInt(msg_learn.Value));            
+            HashMap<Integer, Integer> learn_val = new HashMap<Integer, Integer>();
+            for(int i=network.numProposers();i<network.numProposers()+network.numAcceptors()&&DECIDED.get(msg_learn.Pnum)==null;i++){
+              if(learner_map.get(i+"."+msg_learn.Pnum)!=null){
+                int cur_learn_val=learner_map.get(i+"."+msg_learn.Pnum);  
+                if(learn_val.get(cur_learn_val)==null){
+                  learn_val.put(cur_learn_val,1);
+                }  
+                else{ 
+                  learn_val.put(cur_learn_val,learn_val.get(cur_learn_val)+1);
+                  if(learn_val.get(cur_learn_val)>network.numAcceptors()/2){
+                    c.decide(cur_learn_val);
+//                    System.out.println("Value Learnt for Prop_Num:"+msg_learn.Pnum+":"+ cur_learn_val + " by learner " + myindex);
+                    DECIDED.put(msg_learn.Pnum,1); 
+                  }
+                }
+              }
+            } // end for
+          } // end if
+          c.sleep();
+        }
+      }
+    }
+    catch(Exception e){e.printStackTrace();}
+		}
+	}
+
+/*
 	public boolean IsUnique(){
 		// check the uniqueness of ID
 	}
@@ -53,6 +373,6 @@ public class Paxos
 
 	public boolean Fail(){
 
-	}
+	} */
 
 }
\ No newline at end of file
diff --git a/src/server/Server.java b/src/server/Server.java
index 10f8d18c53b81f7c278d9836acae0d9c223dc74a..485c4aa0ca468a2b0f38fd1ece5f6f821ae84c4e 100644
--- a/src/server/Server.java
+++ b/src/server/Server.java
@@ -14,8 +14,12 @@ import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.util.LinkedList;
+import java.util.Stack;
+
 public class Server implements Runnable
 {
+<<<<<<< HEAD
 //private Paxos paxos;
     private String host;
     private int port;
@@ -31,13 +35,16 @@ public class Server implements Runnable
     static int count = 0;
     Thread thread;
     
+=======
+>>>>>>> 50cd7dce6ca5ad2a4fe6fb38066efe574e692b88
 
-	public Server() 
-	{
-		this.host = "localhost";
-		this.port = 9999;
-		this.socket = null;
+	private int totalProcesses;
+	private int numProposers;
+	private int numAcceptors;
+	private int numLearners;
+	private int decision=-1;
 
+<<<<<<< HEAD
 		try{
 			serverSocket = new ServerSocket(1001);
 		} catch (Exception e) {
@@ -69,57 +76,31 @@ public class Server implements Runnable
 		System.out.println("Game sudah dimulai... V^__^V");
 
 	}
+=======
+	LinkedList<String>[] queues;
+>>>>>>> 50cd7dce6ca5ad2a4fe6fb38066efe574e692b88
 
-	public JSONObject receiveJSON() throws IOException
-	{
-		InputStream in = socket.getInputStream();
-		ObjectInputStream i = new ObjectInputStream(in);
-		JSONObject line = null;
-		try {
-			line = (JSONObject) i.readObject();
-		} catch (ClassNotFoundException e){
-			e.printStackTrace();
+	@SuppressWarnings("unchecked")
+	public Server(int numProposers, int numAcceptors, int numLearners){
+		totalProcesses = numProposers + numAcceptors + numLearners;
+		queues = new LinkedList[totalProcesses];
+		for (int i=0; i<totalProcesses; i++) {
+			queues[i] = new LinkedList<String>();
 		}
-
-		return line;
-            
+		this.numProposers = numProposers;
+		this.numAcceptors = numAcceptors;
+		this.numLearners = numLearners;
 	}
 
-	public void sendJSON(JSONObject jsonObj) throws IOException
-	{
-		JSONObject jsonObject2 = new JSONObject();
-		
-		OutputStream out = socket.getOutputStream();
-		ObjectOutputStream o = new ObjectOutputStream(out);
-		o.writeObject(jsonObject2);
-		out.flush();
+	public int getnumAcceptors(){
+		return numAcceptors;
 	}
 
-	public void runServer()
-	{
-		try{
-			while(true){
-				fromClient = serverSocket.accept();
-				count++;
-				//streamFromClient = new BufferedReader(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);
-			}
-		} catch (Exception e){
-			e.printStackTrace();
-		} finally {
-			try {
-				fromClient.close();
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
+	public int getnumProposers(){
+		return numProposers;
 	}
 
+<<<<<<< HEAD
        
         
         public void server2client() throws IOException{
@@ -170,7 +151,22 @@ public class Server implements Runnable
     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){
+    	if (processID <0 || processID >= totalProcesses) {
+    		throw new Error ("Invalid process ID");
+    	}
+    	Channel c = new Channel();
+    	c.index = processID;
+    	c.network = this;
+    	return c;
+    }
 
 
 }
diff --git a/src/server/Server.java.orig b/src/server/Server.java.orig
new file mode 100644
index 0000000000000000000000000000000000000000..16523eeb004b0ab87d3a7a5133771ac862c53ba1
--- /dev/null
+++ b/src/server/Server.java.orig
@@ -0,0 +1,157 @@
+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 org.json.JSONObject;
+
+public class Server implements Runnable
+{
+<<<<<<< HEAD
+
+	private Paxos paxos;
+	private String host;
+
+    private String host;
+
+=======
+	private Paxos paxos;
+    private String host;
+>>>>>>> 69b6100463f19dcd49485fc68a92559c4d2bd04a
+    private int port;
+    private Socket socket;
+    private final String DEFAULT_HOST = "localhost";
+    private ServerSocket serverSocket;
+    private int numPlayer;
+    private boolean playing;
+    //PrintStream streamToClient;
+    BufferedReader streamFromClient;
+    Socket fromClient;
+    static int count = 0;
+    Thread thread;
+
+	public Server() 
+	{
+		this.host = "localhost";
+		this.port = 9999;
+		this.socket = null;
+
+		try{
+			serverSocket = new ServerSocket(1001);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		
+	}
+        
+        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;
+		// 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");
+
+	}
+
+	public JSONObject receiveJSON() throws IOException
+	{
+		InputStream in = socket.getInputStream();
+		ObjectInputStream i = new ObjectInputStream(in);
+		JSONObject line = null;
+		try {
+			line = (JSONObject) i.readObject();
+		} catch (ClassNotFoundException e){
+			e.printStackTrace();
+		}
+
+		return line;
+            
+	}
+
+	public void sendJSON(JSONObject jsonObj) throws IOException
+	{
+		JSONObject jsonObject2 = new JSONObject();
+		
+		OutputStream out = socket.getOutputStream();
+		ObjectOutputStream o = new ObjectOutputStream(out);
+		o.writeObject(jsonObject2);
+		out.flush();
+	}
+
+	public void runServer()
+	{
+		try{
+			while(true){
+				fromClient = serverSocket.accept();
+				count++;
+				//streamFromClient = new BufferedReader(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);
+			}
+		} catch (Exception e){
+			e.printStackTrace();
+		} finally {
+			try {
+				fromClient.close();
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+	}
+<<<<<<< HEAD
+=======
+
+>>>>>>> 69b6100463f19dcd49485fc68a92559c4d2bd04a
+        
+        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.
+    }
+<<<<<<< HEAD
+=======
+       	
+>>>>>>> 69b6100463f19dcd49485fc68a92559c4d2bd04a
+
+
+}
diff --git a/src/server/SisterServer.java b/src/server/SisterServer.java
index 558fc08e20a98fecf88411f0c8b6af668ecd4981..63cfddc5c79f3f426c53ab8526c92b473e87e758 100644
--- a/src/server/SisterServer.java
+++ b/src/server/SisterServer.java
@@ -10,6 +10,11 @@ import java.io.DataOutputStream;
 import java.io.InputStreamReader;
 import java.net.*;
 import org.json.JSONObject;
+import org.json.JSONException;
+
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 /**
  *
@@ -33,6 +38,36 @@ public class SisterServer {
             //Client c = new Client(0,9999);
             //c.peerAsServer();
             
+<<<<<<< HEAD
+=======
+            while(true)
+            {
+               Socket connectionSocket = welcomeSocket.accept();
+               BufferedReasder 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"));*/
+            private int sequenceID;
+            private int processID;
+
+            Client c = new Client(1,9999);
+            c.receiveMessageFromClient("localhost", 8888);
+
+            // creating consensus
+            public void consensus(){
+              
+            }
+
+>>>>>>> 50cd7dce6ca5ad2a4fe6fb38066efe574e692b88
     }
     
 }