Index: src/main/java/geniusweb/runserver/WebSocketProtToPartyConn.java
===================================================================
--- src/main/java/geniusweb/runserver/WebSocketProtToPartyConn.java	(revision 33)
+++ src/main/java/geniusweb/runserver/WebSocketProtToPartyConn.java	(revision 34)
@@ -54,4 +54,9 @@
 
 	/**
+	 * Buffers incoming text.
+	 */
+	private StringBuffer buffer = new StringBuffer();
+
+	/**
 	 * Constructor that uses default {@link Reporter}
 	 * 
@@ -82,5 +87,7 @@
 
 		container = ContainerProvider.getWebSocketContainer();
-		container.setDefaultMaxTextMessageBufferSize(200000);
+		// #50 disable: might cause large buffer. And why is this a good limit
+		// anyway
+		// container.setDefaultMaxTextMessageBufferSize(200000);
 
 		log.log(Level.INFO,
@@ -179,6 +186,7 @@
 	public void onOpen(Session session) {
 		log.log(Level.INFO, "Party is being connected: " + session);
-		session.setMaxTextMessageBufferSize(MAX_MESSAGE_SIZE);
-		session.setMaxBinaryMessageBufferSize(MAX_MESSAGE_SIZE);
+// #50 we now buffer partial messages
+//		session.setMaxTextMessageBufferSize(MAX_MESSAGE_SIZE);
+//		session.setMaxBinaryMessageBufferSize(MAX_MESSAGE_SIZE);
 		this.session = session;
 	}
@@ -201,13 +209,19 @@
 
 	@OnMessage
-	public void processMessage(String message) {
-		try {
-			Action act = Jackson.instance().readValue(message, Action.class);
-			notifyListeners(act);
-		} catch (IOException e) {
-			log.log(Level.WARNING,
-					"received bad message from client " + reference, e);
-			setError(e);
-			close();
+	public void processMessage(String message, boolean islast) {
+		// #50 avoid fixed (large) buffers
+		buffer.append(message);
+		if (islast) {
+			String msg = buffer.toString();
+			buffer = new StringBuffer();
+			try {
+				Action act = Jackson.instance().readValue(msg, Action.class);
+				notifyListeners(act);
+			} catch (IOException e) {
+				log.log(Level.WARNING,
+						"received bad message from client " + reference, e);
+				setError(e);
+				close();
+			}
 		}
 	}
Index: src/main/webapp/newsession.xhtml
===================================================================
--- src/main/webapp/newsession.xhtml	(revision 33)
+++ src/main/webapp/newsession.xhtml	(revision 34)
@@ -50,5 +50,5 @@
 	<br /> Domain/Profile Server:
 	<input type="url" name="url" id="profilesserverurl"
-		value="localhost:8080/profilesserver-2.0.4"
+		value="localhost:8080/profilesserver-2.0.5"
 		pattern=".*:[0-9]+/profilesserver.*" size="30"
 		onchange="connectDomain()"> </input>
@@ -65,5 +65,5 @@
 		<br /> <b>Participants</b> <br /> Parties Server: <input type="url"
 			name="url" id="partiesserverurl"
-			value="localhost:8080/partiesserver-2.0.4"
+			value="localhost:8080/partiesserver-2.0.5"
 			pattern=".*:[0-9]+/partiesserver.*" size="30"
 			onchange="connectParties()"> </input> <br /> <br /> <b>Party
@@ -356,8 +356,8 @@
 	 refresh table: copy all parties elements in there.
 	 Typically parties is something like
-	 [{"uri":"http:130.161.180.1:8080/partiesserver/run/randomparty-2.0.4",
+	 [{"uri":"http:130.161.180.1:8080/partiesserver/run/randomparty-2.0.5",
 		 "capabilities":{"protocols":["SAOP"]},
 		 "description":"places random bids until it can accept an offer with utility >0.6",
-		 "id":"randomparty-2.0.4",
+		 "id":"randomparty-2.0.5",
 		 "partyClass":"geniusweb.exampleparties.randomparty.RandomParty"},
 		 		 ...]
@@ -454,4 +454,7 @@
 		var profilecombo = document.getElementById("profileselection");
 		var filteroptions = document.getElementById("filter").value;
+		if (filteroptions!="") {
+			filteroptions="?"+filteroptions;
+		}
 		
 		var selectedprofile;
@@ -470,7 +473,4 @@
 		}
 		
-		if (filteroptions!="") {
-			filteroptions="?"+filteroptions;
-		}
 		var newpartyprof = {};
 		newpartyprof["party"]={"partyref":partycombo.options[partycombo.selectedIndex].value , 
@@ -704,8 +704,8 @@
 		var dtypecombo  = document.getElementById("deadlinetype");
 		if (dtypecombo.options[dtypecombo.selectedIndex].value=="TIME") {
-			deadline["deadlinetime"] = { "durationms": 1000*value};
+			deadline["DeadlineTime"] = { "durationms": 1000*value};
 		} else {
 			// ROUNDS
-			deadline["deadlinerounds"] = {"rounds": value, "durationms":10000};
+			deadline["DeadlineRounds"] = {"rounds": value, "durationms":10000};
 		}
 		
@@ -736,6 +736,6 @@
 	function init() {
 		selectProtocol();
-		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-2.0.4"
-		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-2.0.4"
+		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-2.0.5"
+		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-2.0.5"
 		connectDomain();
 		connectParties();
Index: src/main/webapp/newtournament.xhtml
===================================================================
--- src/main/webapp/newtournament.xhtml	(revision 33)
+++ src/main/webapp/newtournament.xhtml	(revision 34)
@@ -683,6 +683,6 @@
 	*/
 	function init() {
-		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-2.0.4";
-		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-2.0.4";
+		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-2.0.5";
+		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-2.0.5";
 
 		selectSessionProtocol();
Index: src/main/webapp/plotlog.xhtml
===================================================================
--- src/main/webapp/plotlog.xhtml	(revision 33)
+++ src/main/webapp/plotlog.xhtml	(revision 34)
@@ -128,5 +128,5 @@
         		var nr= json['partyNumbers'][partyid];
         		if ( (nr & 1 != 0)) continue; // skip COB parties
-        		var shaop=teams[nr/2]['shaop'];
+        		var shaop=teams[nr/2]['TeamInfo']['parties'][0];
         		var profile = withoutPartial(shaop['profile']); // hacky, remove complete query.
         		partyprofiles[partyid]=profile;
