Index: src/main/java/geniusweb/runserver/Info.java
===================================================================
--- src/main/java/geniusweb/runserver/Info.java	(revision 23)
+++ src/main/java/geniusweb/runserver/Info.java	(revision 24)
@@ -10,6 +10,4 @@
 import javax.servlet.http.HttpServletResponse;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-
 import geniusweb.protocol.NegoSettings;
 
@@ -22,5 +20,4 @@
 @SuppressWarnings("serial")
 public class Info extends HttpServlet {
-	private final static ObjectMapper jackson = new ObjectMapper();
 
 	/**
@@ -38,5 +35,6 @@
 		Map<String, Object> info = new HashMap<>();
 		info.put("version", getClass().getPackage().getImplementationVersion());
-		response.getWriter().append(jackson.writeValueAsString(info));
+		response.getWriter()
+				.append(Jackson.instance().writeValueAsString(info));
 	}
 
Index: src/main/java/geniusweb/runserver/Jackson.java
===================================================================
--- src/main/java/geniusweb/runserver/Jackson.java	(revision 24)
+++ src/main/java/geniusweb/runserver/Jackson.java	(revision 24)
@@ -0,0 +1,22 @@
+package geniusweb.runserver;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * A central generator for the object mapper, so that we can extend the
+ * objectmapper (with custom classes) centrally. Also allows us to cache the
+ * objectmapper.
+ * 
+ * <b> This class should is private to the run server and should not be used by
+ * others.</b>
+ */
+public class Jackson {
+	private static ObjectMapper jackson;
+
+	public static ObjectMapper instance() {
+		if (jackson == null) {
+			jackson = new ObjectMapper();
+		}
+		return jackson;
+	}
+}
Index: src/main/java/geniusweb/runserver/RunNego.java
===================================================================
--- src/main/java/geniusweb/runserver/RunNego.java	(revision 23)
+++ src/main/java/geniusweb/runserver/RunNego.java	(revision 24)
@@ -9,6 +9,4 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
 
 import geniusweb.protocol.NegoSettings;
@@ -25,5 +23,4 @@
 public class RunNego extends HttpServlet {
 	private final Reporter log;
-	private final static ObjectMapper jackson = new ObjectMapper();
 
 	public RunNego() {
@@ -50,5 +47,6 @@
 		NegoSettings settings;
 		try {
-			settings = jackson.readValue(reqstring, NegoSettings.class);
+			settings = Jackson.instance().readValue(reqstring,
+					NegoSettings.class);
 		} catch (IOException e) {
 			response.sendError(HttpServletResponse.SC_BAD_REQUEST,
Index: src/main/java/geniusweb/runserver/RunningNego.java
===================================================================
--- src/main/java/geniusweb/runserver/RunningNego.java	(revision 23)
+++ src/main/java/geniusweb/runserver/RunningNego.java	(revision 24)
@@ -8,6 +8,4 @@
 import java.nio.file.Paths;
 import java.util.logging.Level;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
 
 import geniusweb.events.ProtocolEvent;
@@ -28,5 +26,4 @@
 	private static final Path logdir = getLogDir();
 	private static int negoNr = 1; // generate unique IDs.
-	private static final ObjectMapper jackson = new ObjectMapper();
 
 	private final String sessionid;
@@ -81,5 +78,5 @@
 			PrintWriter out = new PrintWriter(
 					logdir.resolve(sessionid + ".json").toFile());
-			out.print(jackson.writeValueAsString(sessionState));
+			out.print(Jackson.instance().writeValueAsString(sessionState));
 			out.close();
 		} catch (Throwable e) { // also catch outOfMem etc.
Index: src/main/java/geniusweb/runserver/WebSocketProtToPartyConn.java
===================================================================
--- src/main/java/geniusweb/runserver/WebSocketProtToPartyConn.java	(revision 23)
+++ src/main/java/geniusweb/runserver/WebSocketProtToPartyConn.java	(revision 24)
@@ -20,6 +20,4 @@
 import javax.websocket.Session;
 import javax.websocket.WebSocketContainer;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
 
 import geniusweb.actions.Action;
@@ -45,5 +43,4 @@
 public class WebSocketProtToPartyConn extends DefaultListenable<Action>
 		implements ProtocolToPartyConn {
-	private final static ObjectMapper jackson = new ObjectMapper();
 	// 20MB seems reasonable limit?
 	private static final int MAX_MESSAGE_SIZE = 20 * 1024 * 1024;
@@ -150,5 +147,6 @@
 		if (session == null)
 			return;
-		session.getBasicRemote().sendText(jackson.writeValueAsString(info));
+		session.getBasicRemote()
+				.sendText(Jackson.instance().writeValueAsString(info));
 	}
 
@@ -202,5 +200,5 @@
 	public void processMessage(String message) {
 		try {
-			Action act = jackson.readValue(message, Action.class);
+			Action act = Jackson.instance().readValue(message, Action.class);
 			notifyListeners(act);
 		} catch (IOException e) {
Index: src/main/webapp/newsession.xhtml
===================================================================
--- src/main/webapp/newsession.xhtml	(revision 23)
+++ src/main/webapp/newsession.xhtml	(revision 24)
@@ -40,6 +40,6 @@
 	<br /> Domain/Profile Server:
 	<input type="url" name="url" id="profilesserverurl"
-		value="localhost:8080/profilesserver-1.5.6"
-		pattern=".*:[0-9]+/profilesserver" size="30"
+		value="localhost:8080/profilesserver-1.5.7"
+		pattern=".*:[0-9]+/profilesserver.*" size="30"
 		onchange="connectDomain()"> </input>
 	<br /> Domain:
@@ -54,6 +54,6 @@
 		<br /> <b>Participants</b> <br /> Parties Server: <input type="url"
 			name="url" id="partiesserverurl"
-			value="localhost:8080/partiesserver-1.5.6"
-			pattern=".*:[0-9]+/partiesserver" size="30"
+			value="localhost:8080/partiesserver-1.5.7"
+			pattern=".*:[0-9]+/partiesserver.*" size="30"
 			onchange="connectParties()"> </input> <br /> <br /> <b>Party
 			settings</b> <br /> Party : <select id="partyselection">
@@ -294,8 +294,8 @@
 	 refresh table: copy all parties elements in there.
 	 Typically parties is something like
-	 [{"uri":"http:130.161.180.1:8080/partiesserver/run/randomparty-1.5.6",
+	 [{"uri":"http:130.161.180.1:8080/partiesserver/run/randomparty-1.5.7",
 		 "capabilities":{"protocols":["SAOP"]},
 		 "description":"places random bids until it can accept an offer with utility >0.6",
-		 "id":"randomparty-1.5.6",
+		 "id":"randomparty-1.5.7",
 		 "partyClass":"geniusweb.exampleparties.randomparty.RandomParty"},
 		 		 ...]
@@ -632,6 +632,6 @@
 	function init() {
 		selectProtocol();
-		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-1.5.6"
-		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-1.5.6"
+		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-1.5.7"
+		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-1.5.7"
 		connectDomain();
 		connectParties();
Index: src/main/webapp/newtournament.xhtml
===================================================================
--- src/main/webapp/newtournament.xhtml	(revision 23)
+++ src/main/webapp/newtournament.xhtml	(revision 24)
@@ -65,5 +65,5 @@
 		Domain/Profile Server: <input type="url" name="url"
 			id="profilesserverurl" value="localhost:8080/profilesserver-1.3.1"
-			pattern=".*:[0-9]+/profilesserver" size="30"
+			pattern=".*:[0-9]+/profilesserver.*" size="30"
 			onchange="connectDomain()"> </input> <br /> Domain: <select
 			id="domainselection" onchange="selectDomain()">
@@ -98,5 +98,5 @@
 		<br /> Parties Server: <input type="url" name="url"
 			id="partiesserverurl" value="localhost:8080/partiesserver-1.3.1"
-			pattern=".*:[0-9]+/partiesserver" size="30"
+			pattern=".*:[0-9]+/partiesserver.*" size="30"
 			onchange="connectParties()"> </input> <br /> <br />
 		<!-- party  1 selection -->
@@ -585,6 +585,6 @@
 	*/
 	function init() {
-		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-1.5.6";
-		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-1.5.6";
+		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-1.5.7";
+		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-1.5.7";
 
 		selectProtocol();
