Index: party/src/main/java/geniusweb/party/inform/Settings.java
===================================================================
--- party/src/main/java/geniusweb/party/inform/Settings.java	(revision 7)
+++ party/src/main/java/geniusweb/party/inform/Settings.java	(revision 8)
@@ -1,3 +1,5 @@
 package geniusweb.party.inform;
+
+import java.util.HashMap;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
@@ -5,11 +7,14 @@
 
 import geniusweb.actions.PartyId;
+import geniusweb.party.Party;
 import geniusweb.progress.Progress;
+import geniusweb.references.Parameters;
 import geniusweb.references.ProfileRef;
 import geniusweb.references.ProtocolRef;
 
 /**
- * Informs a party about all settings for the upcoming negotiation session. This
- * should be sent to a party one time, so that the party knows the situation.
+ * Informs a {@link Party} about all settings for the upcoming negotiation
+ * session. This should be sent to a party one time, so that the party knows the
+ * situation.
  *
  */
@@ -19,20 +24,41 @@
 	private Progress progress;
 	private PartyId id;
+	private Parameters parameters;
 
+	/**
+	 * 
+	 * @param id         the {@link PartyId} for this party
+	 * @param profile    the profile used for this party in this session
+	 * @param protocol   the protocol used in this session
+	 * @param progress   the {@link Progress} object used for this session
+	 * @param parameters a Map<String, Object> containing initialization
+	 *                   parameters for this party. The Object can be a HashMap,
+	 *                   ArrayList, String, or number (Integer, Double, etc).
+	 *                   The Object should not be just any Object because
+	 *                   deserialization will work only with the mentioned
+	 *                   types.
+	 */
 	@JsonCreator
 	public Settings(@JsonProperty("id") PartyId id,
 			@JsonProperty("profile") ProfileRef profile,
 			@JsonProperty("protocol") ProtocolRef protocol,
-			@JsonProperty("progress") Progress progress) {
-		if (profile == null || protocol == null || progress == null) {
+			@JsonProperty("progress") Progress progress,
+			@JsonProperty("parameters") Parameters parameters) {
+		if (profile == null || protocol == null || progress == null
+				|| parameters == null) {
 			throw new IllegalArgumentException(
-					"party, profile, protocol and progress must be not null.");
+					"party, profile, protocol, parameters and progress must be not null.");
 		}
 		this.profile = profile;
 		this.protocol = protocol;
 		this.progress = progress;
+		this.parameters = parameters;
 		this.id = id;
 	}
 
+	/**
+	 * 
+	 * @return the profile used for this party in this session
+	 */
 	public ProfileRef getProfile() {
 		return profile;
@@ -43,10 +69,26 @@
 	}
 
+	/**
+	 * 
+	 * @return the {@link Progress} object used for this session
+	 */
 	public Progress getProgress() {
 		return progress;
 	}
 
+	/**
+	 * @return the party ID of this party
+	 */
 	public PartyId getID() {
 		return id;
+	}
+
+	/**
+	 * 
+	 * @return a HashMap<String,Object> containing initialization parameters
+	 *         that can be used by the party.
+	 */
+	public HashMap<String, Object> getParemeters() {
+		return parameters;
 	}
 
@@ -54,5 +96,5 @@
 	public String toString() {
 		return "Settings[" + id + "," + profile + "," + protocol + ","
-				+ progress + "]";
+				+ progress + "," + parameters + "]";
 	}
 
@@ -62,4 +104,6 @@
 		int result = 1;
 		result = prime * result + ((id == null) ? 0 : id.hashCode());
+		result = prime * result
+				+ ((parameters == null) ? 0 : parameters.hashCode());
 		result = prime * result + ((profile == null) ? 0 : profile.hashCode());
 		result = prime * result
@@ -84,4 +128,9 @@
 		} else if (!id.equals(other.id))
 			return false;
+		if (parameters == null) {
+			if (other.parameters != null)
+				return false;
+		} else if (!parameters.equals(other.parameters))
+			return false;
 		if (profile == null) {
 			if (other.profile != null)
Index: party/src/test/java/geniusweb/party/inform/SettingsTest.java
===================================================================
--- party/src/test/java/geniusweb/party/inform/SettingsTest.java	(revision 8)
+++ party/src/test/java/geniusweb/party/inform/SettingsTest.java	(revision 8)
@@ -0,0 +1,128 @@
+package geniusweb.party.inform;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import geniusweb.actions.PartyId;
+import geniusweb.progress.ProgressRounds;
+import geniusweb.references.Parameters;
+import geniusweb.references.PartyRef;
+import geniusweb.references.ProfileRef;
+import geniusweb.references.ProtocolRef;
+import tudelft.utilities.junit.GeneralTests;
+
+public class SettingsTest extends GeneralTests<Settings> {
+
+	private PartyId id = new PartyId("party1");
+	private PartyId id2 = new PartyId("party2");
+
+	private final String asJson = "{\"Settings\":"
+			+ "{\"id\":\"party1\",\"profile\":\"ws:profile1\","
+			+ "\"protocol\":\"ws:localhost/protocol1\","
+			+ "\"progress\":{\"rounds\":{\"duration\":10,\"currentRound\":0,\"endtime\":999}},"
+			+ "\"parameters\":{}}}";
+
+	private Settings negoinfo1, negoinfo1a;
+	private Settings negoinfo2, negoinfo3, negoinfo4, negoinfo5;
+	private final Date date = new Date(999);
+	private final static ObjectMapper jackson = new ObjectMapper();
+
+	@Before
+	public void before() throws URISyntaxException, JsonParseException,
+			JsonMappingException, IOException {
+		// we can't mock because we want to test the serializer
+		ProfileRef profile1 = new ProfileRef(new URI("ws:profile1"));
+		// jackson.readValue(serialized, Profile.class);
+
+		ProtocolRef protocol1 = new ProtocolRef(
+				new URI("ws:localhost/protocol1"));
+		ProtocolRef protocol1a = new ProtocolRef(
+				new URI("ws:localhost/protocol1"));
+		ProtocolRef protocol2 = new ProtocolRef(
+				new URI("ws:localhost/protocol2"));
+		ProgressRounds progress1 = new ProgressRounds(10, 0, date);
+		ProgressRounds progress1a = new ProgressRounds(10, 0, date);
+		ProgressRounds progress2 = new ProgressRounds(12, 0, date);
+
+		Parameters settings1 = new Parameters();
+		Parameters settings2 = new Parameters();
+		settings2.put("a", 1);
+
+		negoinfo1 = new Settings(id, profile1, protocol1, progress1, settings1);
+		negoinfo1a = new Settings(id, profile1, protocol1a, progress1a,
+				settings1);
+		negoinfo2 = new Settings(id, profile1, protocol2, progress1, settings1);
+		negoinfo3 = new Settings(id, profile1, protocol1, progress2, settings1);
+		negoinfo4 = new Settings(id2, profile1, protocol1, progress2,
+				settings1);
+		negoinfo5 = new Settings(id, profile1, protocol1, progress1, settings2);
+	}
+
+	@Override
+	public List<List<Settings>> getGeneralTestData() {
+		return Arrays.asList(Arrays.asList(negoinfo1, negoinfo1a),
+				Arrays.asList(negoinfo2), Arrays.asList(negoinfo3),
+				Arrays.asList(negoinfo4), Arrays.asList(negoinfo5));
+	}
+
+	@Override
+	public List<String> getGeneralTestStrings() {
+		return Arrays.asList(
+				"Settings.*party1.*ProtocolRef.*protocol1.*ProgressRounds.*0.*10.*",
+				"Settings.*party1.*ProtocolRef.*protocol2.*ProgressRounds.*0.*10.*",
+				"Settings.*party1.*ProtocolRef.*protocol1.*ProgressRounds.*0.*12.*",
+				"Settings.*party2.*ProtocolRef.*protocol1.*ProgressRounds.*0.*12.*",
+				"Settings.*party1.*ProtocolRef.*protocol1.*ProgressRounds.*0.*10.*");
+	}
+
+	@Test
+	public void smokeTest() throws URISyntaxException {
+		new PartyRef(new URI("ws:localhost"));
+	}
+
+	@Test(expected = IllegalArgumentException.class)
+	public void nullTest() throws URISyntaxException {
+		new PartyRef((URI) null);
+	}
+
+	@Test
+	public void testSerialize() throws JsonProcessingException {
+
+		String json = jackson.writeValueAsString(negoinfo1);
+		System.out.println(json);
+		assertEquals(asJson, json);
+	}
+
+	@Test
+	public void testDeserialize()
+			throws JsonParseException, JsonMappingException, IOException {
+		Settings p = (Settings) jackson.readValue(asJson, Inform.class);
+		System.out.println(p);
+		assertEquals(negoinfo1, p);
+	}
+
+	@Test
+	public void testGeneralDict()
+			throws JsonParseException, JsonMappingException, IOException {
+		Map val = jackson.readValue("{\"a\":0.3,\"b\":{\"x\":3},\"c\":[1,2,3]}",
+				HashMap.class);
+		System.out.println(val);
+	}
+
+}
