Index: party/src/test/java/geniusweb/party/inform/ActionDoneTest.java
===================================================================
--- party/src/test/java/geniusweb/party/inform/ActionDoneTest.java	(revision 10)
+++ party/src/test/java/geniusweb/party/inform/ActionDoneTest.java	(revision 21)
@@ -21,10 +21,10 @@
 import geniusweb.actions.Accept;
 import geniusweb.actions.PartyId;
+import geniusweb.inform.ActionDone;
+import geniusweb.inform.Inform;
 import geniusweb.issuevalue.Bid;
 import geniusweb.issuevalue.DiscreteValue;
 import geniusweb.issuevalue.NumberValue;
 import geniusweb.issuevalue.Value;
-import geniusweb.party.inform.ActionDone;
-import geniusweb.party.inform.Inform;
 import tudelft.utilities.junit.GeneralTests;
 
Index: party/src/test/java/geniusweb/party/inform/AgreementsTest.java
===================================================================
--- party/src/test/java/geniusweb/party/inform/AgreementsTest.java	(revision 21)
+++ party/src/test/java/geniusweb/party/inform/AgreementsTest.java	(revision 21)
@@ -0,0 +1,67 @@
+package geniusweb.party.inform;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+
+import org.junit.Test;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import geniusweb.actions.PartyId;
+import geniusweb.inform.Agreements;
+import geniusweb.issuevalue.Bid;
+import geniusweb.issuevalue.DiscreteValue;
+import tudelft.utilities.junit.GeneralTests;
+
+public class AgreementsTest extends GeneralTests<Agreements> {
+	private final ObjectMapper jackson = new ObjectMapper();
+	private String jsonstring = "{\"party2\":{\"issuevalues\":{\"i1\":\"v1\"}},\"party1\":{\"issuevalues\":{\"i1\":\"v1\"}}}";
+
+	private Bid bid1 = new Bid("i1", new DiscreteValue("v1"));
+	private Bid bid2 = new Bid("i1", new DiscreteValue("v2"));
+	private PartyId party1 = new PartyId("party1");
+	private PartyId party2 = new PartyId("party2");
+	private PartyId party3 = new PartyId("party3");
+	private Agreements agree1 = new Agreements().with(bid1,
+			new HashSet<>(Arrays.asList(party1, party2)));
+	private Agreements agree1a = new Agreements().with(bid1,
+			new HashSet<>(Arrays.asList(party1, party2)));
+	private Agreements agree1b = new Agreements().with(bid1,
+			new HashSet<>(Arrays.asList(party2, party1)));
+
+	private Agreements agree2 = new Agreements().with(bid2,
+			new HashSet<>(Arrays.asList(party1, party2)));
+	private Agreements agree3 = new Agreements().with(bid1,
+			new HashSet<>(Arrays.asList(party1, party2, party3)));
+
+	@Override
+	public List<List<Agreements>> getGeneralTestData() {
+		return Arrays.asList(Arrays.asList(agree1, agree1a, agree1b),
+				Arrays.asList(agree2), Arrays.asList(agree3));
+	}
+
+	@Override
+	public List<String> getGeneralTestStrings() {
+		return Arrays.asList(
+				"Agreements.*party2.*Bid.*i1=\"v1\".*party1=Bid.*i1=\"v1\".*",
+				"Agreements.*party2.*Bid.*i1=\"v2\".*party1=Bid.*i1=\"v2\".*",
+				"Agreements.*party2.*Bid.*i1=\"v1\".*party1=Bid.*i1=\"v1\".*party3=Bid.*i1=\\\"v1\\\".*");
+	}
+
+	@Test
+	public void serializeTest() throws JsonProcessingException {
+		System.out.println(jackson.writeValueAsString(agree1));
+		assertEquals(jsonstring, jackson.writeValueAsString(agree1));
+	}
+
+	@Test
+	public void deserializeTest() throws IOException {
+		Agreements act = jackson.readValue(jsonstring, Agreements.class);
+		assertEquals(agree1, act);
+	}
+}
Index: party/src/test/java/geniusweb/party/inform/FinishedTest.java
===================================================================
--- party/src/test/java/geniusweb/party/inform/FinishedTest.java	(revision 10)
+++ party/src/test/java/geniusweb/party/inform/FinishedTest.java	(revision 21)
@@ -8,4 +8,5 @@
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -19,10 +20,12 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import geniusweb.actions.PartyId;
+import geniusweb.inform.Agreements;
+import geniusweb.inform.Finished;
+import geniusweb.inform.Inform;
 import geniusweb.issuevalue.Bid;
 import geniusweb.issuevalue.DiscreteValue;
 import geniusweb.issuevalue.NumberValue;
 import geniusweb.issuevalue.Value;
-import geniusweb.party.inform.Finished;
-import geniusweb.party.inform.Inform;
 import tudelft.utilities.junit.GeneralTests;
 
@@ -31,5 +34,8 @@
 	private Finished finished1, finished1a, finished2, finished3;
 
-	private String asJson = "{\"Finished\":{\"agreedBid\":{\"issuevalues\":{\"issue3\":9012,\"issue2\":1,\"issue1\":\"b\"}}}}";
+	private String asJson = "{\"Finished\":{\"agreements\":{\"party2\":{\"issuevalues\":{\"issue3\":9012,\"issue2\":1,\"issue1\":\"b\"}},\"party1\":{\"issuevalues\":{\"issue3\":9012,\"issue2\":1,\"issue1\":\"b\"}}}}}";
+
+	private PartyId party1 = new PartyId("party1");
+	private PartyId party2 = new PartyId("party2");
 
 	@Before
@@ -57,8 +63,15 @@
 		Bid bidc = new Bid(issuevaluesc);
 
-		finished1 = new Finished(bid);
-		finished1a = new Finished(bid);
-		finished2 = new Finished(bidb);
-		finished3 = new Finished(bidc);
+		Agreements agree = new Agreements().with(bid,
+				new HashSet<>(Arrays.asList(party1, party2)));
+		Agreements agreeb = new Agreements().with(bidb,
+				new HashSet<>(Arrays.asList(party1, party2)));
+		Agreements agreec = new Agreements().with(bidc,
+				new HashSet<>(Arrays.asList(party1, party2)));
+
+		finished1 = new Finished(agree);
+		finished1a = new Finished(agree);
+		finished2 = new Finished(agreeb);
+		finished3 = new Finished(agreec);
 	}
 
@@ -93,4 +106,7 @@
 	public void testDeserialize()
 			throws JsonParseException, JsonMappingException, IOException {
+		// FIXME there seems a disturbing bug in this test,
+		// jackson seems to ignore the @JsonProperty annotation and therefore
+		// this test does not work in some cases.
 		ObjectMapper jackson = new ObjectMapper();
 		Finished p = (Finished) jackson.readValue(asJson, Inform.class);
Index: party/src/test/java/geniusweb/party/inform/OptInTest.java
===================================================================
--- party/src/test/java/geniusweb/party/inform/OptInTest.java	(revision 21)
+++ party/src/test/java/geniusweb/party/inform/OptInTest.java	(revision 21)
@@ -0,0 +1,76 @@
+package geniusweb.party.inform;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+
+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.actions.Vote;
+import geniusweb.actions.Votes;
+import geniusweb.inform.Inform;
+import geniusweb.inform.OptIn;
+import geniusweb.issuevalue.Bid;
+import geniusweb.issuevalue.DiscreteValue;
+import tudelft.utilities.junit.GeneralTests;
+
+public class OptInTest extends GeneralTests<OptIn> {
+
+	private Bid bid1 = new Bid("iss", new DiscreteValue("val1"));
+	private Bid bid2 = new Bid("iss", new DiscreteValue("val2"));
+	private PartyId partyA = new PartyId("partyA");
+	private PartyId partyB = new PartyId("partyB");
+
+	private final Vote voteA1 = new Vote(partyA, bid1, 2);
+	private final Vote voteB1 = new Vote(partyB, bid1, 2);
+	private final Vote voteB2 = new Vote(partyB, bid2, 2);
+
+	private Votes votesA = new Votes(partyA, Arrays.asList(voteA1));
+	private Votes votesB = new Votes(partyB, Arrays.asList(voteB1, voteB2));
+
+	private final OptIn optIn1 = new OptIn(Arrays.asList(votesA, votesB));
+	private final OptIn optIn1a = new OptIn(Arrays.asList(votesA, votesB));
+	private final OptIn optIn2 = new OptIn(Arrays.asList(votesA));
+
+	private String asJson = "{\"OptIn\":{\"votes\":[{\"Votes\":{\"actor\":\"partyA\",\"votes\":[{\"vote\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}},\"minPower\":2}}]}},{\"Votes\":{\"actor\":\"partyB\",\"votes\":[{\"vote\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}},\"minPower\":2}},{\"vote\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val2\"}},\"minPower\":2}}]}}]}}";
+
+	@Override
+	public List<List<OptIn>> getGeneralTestData() {
+		return Arrays.asList(Arrays.asList(optIn1, optIn1a),
+				Arrays.asList(optIn2));
+	}
+
+	@Override
+	public List<String> getGeneralTestStrings() {
+		return Arrays.asList(
+				"OptIn.*Votes.*Vote.*partyA.*iss.*val1.*2.*Votes.*Vote.*partyB.*iss.*val1.*.*2.*Vote.*partyB.*iss.*val2.*2.*",
+				"OptIn.*Votes.*Vote.*partyA.*iss.*val.*2.*");
+	}
+
+	@Test
+	public void testSerialize() throws JsonProcessingException {
+		ObjectMapper jackson = new ObjectMapper();
+
+		String json = jackson.writeValueAsString(optIn1);
+		System.out.println(json);
+		assertEquals(asJson, json);
+	}
+
+	@Test
+	public void testDeserialize()
+			throws JsonParseException, JsonMappingException, IOException {
+		ObjectMapper jackson = new ObjectMapper();
+		Inform p = jackson.readValue(asJson, Inform.class);
+		System.out.println(p);
+		assertEquals(optIn1, p);
+	}
+
+}
Index: party/src/test/java/geniusweb/party/inform/SettingsTest.java
===================================================================
--- party/src/test/java/geniusweb/party/inform/SettingsTest.java	(revision 10)
+++ party/src/test/java/geniusweb/party/inform/SettingsTest.java	(revision 21)
@@ -21,4 +21,6 @@
 
 import geniusweb.actions.PartyId;
+import geniusweb.inform.Inform;
+import geniusweb.inform.Settings;
 import geniusweb.progress.ProgressRounds;
 import geniusweb.references.Parameters;
Index: party/src/test/java/geniusweb/party/inform/VotingTest.java
===================================================================
--- party/src/test/java/geniusweb/party/inform/VotingTest.java	(revision 21)
+++ party/src/test/java/geniusweb/party/inform/VotingTest.java	(revision 21)
@@ -0,0 +1,72 @@
+package geniusweb.party.inform;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+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.inform.Inform;
+import geniusweb.inform.Voting;
+import geniusweb.issuevalue.Bid;
+import geniusweb.issuevalue.DiscreteValue;
+import tudelft.utilities.junit.GeneralTests;
+
+public class VotingTest extends GeneralTests<Voting> {
+
+	private PartyId party1 = new PartyId("party1");
+	private Bid bid1 = new Bid("iss", new DiscreteValue("val1"));
+	private Bid bid2 = new Bid("iss", new DiscreteValue("val2"));
+
+	private Map<PartyId, Integer> powers1 = Collections.singletonMap(party1, 2);
+	private Map<PartyId, Integer> powers2 = Collections.singletonMap(party1, 3);
+
+	private final Voting voting1 = new Voting(Arrays.asList(bid1), powers1);
+	private final Voting voting1a = new Voting(Arrays.asList(bid1), powers1);
+	private final Voting voting2 = new Voting(Arrays.asList(bid2), powers1);
+	private final Voting voting3 = new Voting(Arrays.asList(bid1), powers2);
+
+	private String asJson = "{\"Voting\":{\"bids\":[{\"issuevalues\":{\"iss\":\"val1\"}}],\"powers\":{\"party1\":2}}}";
+
+	@Override
+	public List<List<Voting>> getGeneralTestData() {
+		return Arrays.asList(Arrays.asList(voting1, voting1a),
+				Arrays.asList(voting2), Arrays.asList(voting3));
+	}
+
+	@Override
+	public List<String> getGeneralTestStrings() {
+		return Arrays.asList("Voting.*Bid.*iss.*val1.*party1.*2.*",
+				"Voting.*Bid.*iss.*val2.*party1.*2.*",
+				"Voting.*Bid.*iss.*val1.*party1.*3.*");
+	}
+
+	@Test
+	public void testSerialize() throws JsonProcessingException {
+		ObjectMapper jackson = new ObjectMapper();
+
+		String json = jackson.writeValueAsString(voting1);
+		System.out.println(json);
+		assertEquals(asJson, json);
+	}
+
+	@Test
+	public void testDeserialize()
+			throws JsonParseException, JsonMappingException, IOException {
+		ObjectMapper jackson = new ObjectMapper();
+		Inform p = jackson.readValue(asJson, Inform.class);
+		System.out.println(p);
+		assertEquals(voting1, p);
+	}
+
+}
Index: party/src/test/java/geniusweb/party/inform/YourTurnTest.java
===================================================================
--- party/src/test/java/geniusweb/party/inform/YourTurnTest.java	(revision 10)
+++ party/src/test/java/geniusweb/party/inform/YourTurnTest.java	(revision 21)
@@ -16,6 +16,6 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import geniusweb.party.inform.Inform;
-import geniusweb.party.inform.YourTurn;
+import geniusweb.inform.Inform;
+import geniusweb.inform.YourTurn;
 import tudelft.utilities.junit.GeneralTests;
 
