Index: protocol/src/test/java/geniusweb/protocol/session/DefaultSessionStateTest.java
===================================================================
--- protocol/src/test/java/geniusweb/protocol/session/DefaultSessionStateTest.java	(revision 18)
+++ protocol/src/test/java/geniusweb/protocol/session/DefaultSessionStateTest.java	(revision 20)
@@ -139,3 +139,14 @@
 	}
 
+	@Override
+	public SessionResult getResult() {
+
+		List<Double> emptylist = new LinkedList<>();
+		for (int n = 0; n < getConnections().size(); n++)
+			emptylist.add(0d);
+		return new SessionResult(getSettings().getAllParties(), getAgreement(),
+				emptylist, getError());
+
+	}
+
 }
Index: protocol/src/test/java/geniusweb/protocol/session/SessionResultTest.java
===================================================================
--- protocol/src/test/java/geniusweb/protocol/session/SessionResultTest.java	(revision 18)
+++ protocol/src/test/java/geniusweb/protocol/session/SessionResultTest.java	(revision 20)
@@ -19,5 +19,4 @@
 import geniusweb.issuevalue.DiscreteValue;
 import geniusweb.issuevalue.Value;
-import geniusweb.protocol.SessionResult;
 import geniusweb.references.Parameters;
 import geniusweb.references.PartyRef;
@@ -32,8 +31,10 @@
 
 	private final String ISSUE1 = "issue1";
-	private SessionResult result1, result1a, result2, result3;// , result4;
+	private SessionResult result1, result1a, result2, result3, result4;
 	private String errorstring; // created dynamically: eclipse and maven
 								// generate different stacktrace.
-	private String jsonstring = "{\"participants\":[{\"party\":{\"partyref\":\"party1\",\"parameters\":{}},\"profile\":\"profile1\"},{\"party\":{\"partyref\":\"party2\",\"parameters\":{}},\"profile\":\"profile2\"}],\"agreement\":{\"issuevalues\":{\"issue1\":\"a\"}},\"error\":null}";
+	private String jsonstring = "{\"participants\":[{\"party\":{\"partyref\":\"party1\",\"parameters\":{}},\"profile\":\"profile1\"},{\"party\":{\"partyref\":\"party2\",\"parameters\":{}},\"profile\":\"profile2\"}],\"agreement\":{\"issuevalues\":{\"issue1\":\"a\"}},\"penalties\":[0.0,0.0],\"error\":null}";
+	private List<Double> nopenalties = Arrays.asList(0d, 0d);
+	private List<Double> penalties = Arrays.asList(0.1d, 0.2d);
 
 	@Before
@@ -63,11 +64,15 @@
 
 		result1 = new SessionResult(Arrays.asList(partyprofile1, partyprofile2),
-				bid1, null);
+				bid1, nopenalties, null);
 		result1a = new SessionResult(
-				Arrays.asList(partyprofile1, partyprofile2), bid1, null);
+				Arrays.asList(partyprofile1, partyprofile2), bid1, nopenalties,
+				null);
 		result2 = new SessionResult(Arrays.asList(partyprofile1, partyprofile2),
-				bid2, null);
+				bid2, nopenalties, null);
 		result3 = new SessionResult(Arrays.asList(partyprofile2, partyprofile1),
-				bid2, null);
+				bid2, nopenalties, null);
+		result4 = new SessionResult(Arrays.asList(partyprofile2, partyprofile1),
+				bid2, penalties, null);
+
 		// IGNORE ERROR for now, it fails somewhere deep in maven suddenly.
 		// result4 = new SessionResult(Arrays.asList(partyprofile1,
@@ -78,7 +83,6 @@
 	public List<List<SessionResult>> getGeneralTestData() {
 		return Arrays.asList(Arrays.asList(result1, result1a),
-				Arrays.asList(result2), Arrays.asList(result3)
-		// ,Arrays.asList(result4)
-		);
+				Arrays.asList(result2), Arrays.asList(result3),
+				Arrays.asList(result4));
 	}
 
@@ -86,8 +90,8 @@
 	public List<String> getGeneralTestStrings() {
 		return Arrays.asList(
-				"SessionResult.*party1.*profile1.*,.*party2.*profile2.*Bid.*issue1=\"a\".*null.",
-				"SessionResult.*party1.*profile1.*,.*party2.*profile2.*Bid.*issue1=\"b\".*null.*",
-				"SessionResult.*party2.*profile2.*,.*party1.*profile1.*Bid.*issue1=\"b\".*null.*"
-		// ,"SessionResult.*party1.*profile1.*,.*party2.*profile2.*Bid.*issue1=\"a\".*null.*"
+				"SessionResult.*party1.*profile1.*,.*party2.*profile2.*Bid.*issue1=\"a\".*0\\.0.*0\\.0.*null.*",
+				"SessionResult.*party1.*profile1.*,.*party2.*profile2.*Bid.*issue1=\"b\".*0\\.0.*0\\.0.*null.*",
+				"SessionResult.*party2.*profile2.*,.*party1.*profile1.*Bid.*issue1=\"b\".*0\\.0.*0\\.0.*null.*",
+				"SessionResult.*party2.*profile2.*,.*party1.*profile1.*Bid.*issue1=\"b\".*0\\.1.*0\\.2.*null.*"
 
 		);
Index: protocol/src/test/java/geniusweb/protocol/session/shaop/SHAOPStateTest.java
===================================================================
--- protocol/src/test/java/geniusweb/protocol/session/shaop/SHAOPStateTest.java	(revision 18)
+++ protocol/src/test/java/geniusweb/protocol/session/shaop/SHAOPStateTest.java	(revision 20)
@@ -31,4 +31,5 @@
 import geniusweb.protocol.partyconnection.ProtocolToPartyConn;
 import geniusweb.protocol.partyconnection.ProtocolToPartyConnections;
+import geniusweb.protocol.session.SessionResult;
 import geniusweb.protocol.session.TeamOfPartiesAndProfiles;
 import tudelft.utilities.junit.GeneralTests;
@@ -314,3 +315,15 @@
 	}
 
+	@Test
+	public void getResultTest() {
+
+		Map<PartyId, Double> spent = new HashMap<>();
+		spent.put(party1, 0.1d);
+		SHAOPState state = new SHAOPState(actions, connections4,
+				new ProgressRounds(10, 0, null), settings, null, 0, partynrs,
+				spent);
+		SessionResult res = state.getResult();
+
+	}
+
 }
Index: protocol/src/test/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsProtocolTest.java
===================================================================
--- protocol/src/test/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsProtocolTest.java	(revision 18)
+++ protocol/src/test/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsProtocolTest.java	(revision 20)
@@ -23,7 +23,7 @@
 import geniusweb.protocol.CurrentNegoState;
 import geniusweb.protocol.NegoState;
-import geniusweb.protocol.SessionResult;
 import geniusweb.protocol.partyconnection.ProtocolToPartyConnFactory;
 import geniusweb.protocol.session.SessionProtocol;
+import geniusweb.protocol.session.SessionResult;
 import geniusweb.protocol.session.SessionSettings;
 import geniusweb.protocol.session.SessionState;
@@ -46,4 +46,5 @@
 	private Bid agreement = mock(Bid.class);
 	private final long NOW = 1000;
+	private SessionResult finalstate = mock(SessionResult.class);
 
 	@Before
@@ -53,4 +54,6 @@
 		when(finalsessionstate.getSettings()).thenReturn(settings);
 		when(finalsessionstate.getAgreement()).thenReturn(agreement);
+		when(finalsessionstate.getResult()).thenReturn(finalstate);
+		when(finalstate.getAgreement()).thenReturn(agreement);
 		when(state.with(any())).thenReturn(newstate);
 	}
Index: protocol/src/test/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsStateTest.java
===================================================================
--- protocol/src/test/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsStateTest.java	(revision 18)
+++ protocol/src/test/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsStateTest.java	(revision 20)
@@ -13,5 +13,5 @@
 import org.junit.Test;
 
-import geniusweb.protocol.SessionResult;
+import geniusweb.protocol.session.SessionResult;
 import geniusweb.protocol.session.SessionSettings;
 import geniusweb.references.PartyWithProfile;
