diff --git a/mp3/Readme.md b/mp3/Readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mp3/Server/server.go b/mp3/Server/server.go
index 5a78a00a7cbfb42f7652d242d907aa58a4d853f0..d3fdd3a55cce3f69924e68de26cfe21e410c70d3 100644
--- a/mp3/Server/server.go
+++ b/mp3/Server/server.go
@@ -57,6 +57,7 @@ type Request struct {
 	Branch      string
 	Account     string
 	Amount      int
+	Message     string
 }
 
 type Response struct {
@@ -64,7 +65,7 @@ type Response struct {
 	Message string
 }
 
-var NUM_SERVERS int = 2 // number of servers
+var NUM_SERVERS int = 1 // number of servers
 
 //////////////////////////////
 // CLIENT FUNCTIONS
@@ -272,7 +273,6 @@ func (server *Server) run_commit(clientName string) {
 	fmt.Println("Updated Accounts", server.ClientsAffected[clientName])
 
 	for {
-		fmt.Println("WAITING FOR VOTE ON", clientName)
 		vote := <-server.VoteClientChans[clientName] // get vote
 
 		fmt.Println("Received vote", vote)
@@ -327,6 +327,8 @@ func (server *Server) run_commit(clientName string) {
 					server.handle_transaction(prepareRequest)
 				}
 			}
+			server.send_response_to_client(clientName, true, "COMMIT")
+			server.print_all_balances()
 		}
 	}
 }
@@ -757,7 +759,13 @@ func (server *Server) handle_prepare(request Request) {
 	server.Lock.Unlock()
 
 	if !exists {
-		server.VoteClientChans[request.ClientName] <- "ABORT"
+		request.Transaction = "PLACEMESSAGE"
+		request.Message = "ABORT"
+		if request.PeerName == server.BranchName {
+			server.handle_transaction(request)
+		} else {
+			server.PeerEncs[server.BranchNameToAddress[request.PeerName]].Encode(&request)
+		}
 		return
 	}
 
@@ -765,7 +773,25 @@ func (server *Server) handle_prepare(request Request) {
 
 	entry, ok := account.TW[request.ClientName]
 	if !ok {
-		server.VoteClientChans[request.ClientName] <- "ABORT"
+		request.Transaction = "PLACEMESSAGE"
+		request.Message = "ABORT"
+		if request.PeerName == server.BranchName {
+			server.handle_transaction(request)
+		} else {
+			server.PeerEncs[server.BranchNameToAddress[request.PeerName]].Encode(&request)
+		}
+		account.AccountLock.Unlock()
+		return
+	}
+
+	if account.Balance < 0 {
+		request.Transaction = "PLACEMESSAGE"
+		request.Message = "ABORT"
+		if request.PeerName == server.BranchName {
+			server.handle_transaction(request)
+		} else {
+			server.PeerEncs[server.BranchNameToAddress[request.PeerName]].Encode(&request)
+		}
 		account.AccountLock.Unlock()
 		return
 	}
@@ -782,7 +808,13 @@ func (server *Server) handle_prepare(request Request) {
 
 		if prevAllCommitted {
 			fmt.Println("PLACED COMMIT INTO CHANNEL", request.ClientName)
-			server.VoteClientChans[request.ClientName] <- "COMMIT"
+			request.Transaction = "PLACEMESSAGE"
+			request.Message = "COMMIT"
+			if request.PeerName == server.BranchName {
+				server.handle_transaction(request)
+			} else {
+				server.PeerEncs[server.BranchNameToAddress[request.PeerName]].Encode(&request)
+			}
 			break
 		} else {
 			account.AccountLock.Unlock()
@@ -814,6 +846,11 @@ func (server *Server) handle_transaction(request Request) {
 	case "SEND":
 		fmt.Println("PEER", request.PeerName)
 		go server.send_response_to_client(request.ClientName, request.Amount == 1, request.Account)
+	case "PLACEMESSAGE":
+		server.Lock.Lock()
+		fmt.Println("PUTTING IN", request.Message, "INTO", request.ClientName)
+		server.VoteClientChans[request.ClientName] <- request.Message
+		server.Lock.Unlock()
 	}
 }