Index: protocol/src/main/java/geniusweb/protocol/session/mopac/PartyStates.java
===================================================================
--- protocol/src/main/java/geniusweb/protocol/session/mopac/PartyStates.java	(revision 34)
+++ protocol/src/main/java/geniusweb/protocol/session/mopac/PartyStates.java	(revision 35)
@@ -1,4 +1,5 @@
 package geniusweb.protocol.session.mopac;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -41,16 +42,16 @@
 
 	@JsonCreator
-	protected PartyStates(@JsonProperty("notYetActed") Set<PartyId> notYetActed,
+	protected PartyStates(@JsonProperty("powers") Map<PartyId, Integer> powers,
+			@JsonProperty("notYetActed") Set<PartyId> notYetActed,
 			@JsonProperty("actions") List<Action> actions,
 			@JsonProperty("agreements") Agreements agreements,
 			@JsonProperty("walkedAway") List<PartyId> walkedAway,
-			@JsonProperty("exceptions") Map<PartyId, ProtocolException> exceptions,
-			@JsonProperty("powers") Map<PartyId, Integer> powers) {
-		this.notYetActed = notYetActed;
-		this.actions = actions;
+			@JsonProperty("exceptions") Map<PartyId, ProtocolException> exceptions) {
+		this.notYetActed = new HashSet<>(notYetActed);
+		this.actions = new ArrayList<>(actions);
 		this.agreements = agreements;
-		this.walkedAway = walkedAway;
+		this.walkedAway = new ArrayList<>(walkedAway);
 		this.exceptions = exceptions;
-		this.powers = powers;
+		this.powers = new HashMap<>(powers);
 	}
 
@@ -61,10 +62,7 @@
 	 */
 	public PartyStates(Map<PartyId, Integer> powers) {
-		this.notYetActed = new HashSet<>(powers.keySet());
-		this.actions = Collections.emptyList();
-		this.agreements = new Agreements();
-		this.walkedAway = Collections.emptyList();
-		this.exceptions = Collections.emptyMap();
-		this.powers = new HashMap<>(powers);
+		this(powers, new HashSet<>(powers.keySet()), Collections.emptyList(),
+				new Agreements(), Collections.emptyList(),
+				Collections.emptyMap());
 	}
 
@@ -90,6 +88,6 @@
 		List<Action> newActions = new LinkedList<Action>(actions);
 		newActions.add(action);
-		return new PartyStates(removeParty(action.getActor()), newActions,
-				agreements, walkedAway, exceptions, powers);
+		return new PartyStates(powers, removeParty(action.getActor()),
+				newActions, agreements, walkedAway, exceptions);
 	}
 
@@ -107,6 +105,6 @@
 				.filter(act -> !(parties.contains(act.getActor())))
 				.collect(Collectors.toList());
-		return new PartyStates(notYetActed, newActions,
-				agreements.with(newAgree), walkedAway, exceptions, powers);
+		return new PartyStates(powers, notYetActed, newActions,
+				agreements.with(newAgree), walkedAway, exceptions);
 	}
 
@@ -116,6 +114,6 @@
 		LinkedList<PartyId> newWalkAway = new LinkedList<>(walkedAway);
 		newWalkAway.add(actor);
-		return new PartyStates(removeParty(actor), actions, agreements,
-				newWalkAway, exceptions, powers);
+		return new PartyStates(powers, removeParty(actor), actions, agreements,
+				newWalkAway, exceptions);
 	}
 
@@ -136,6 +134,6 @@
 		Map<PartyId, ProtocolException> newExc = new HashMap<>(exceptions);
 		newExc.put(e.getParty(), e);
-		return new PartyStates(removeParty(e.getParty()), actions, agreements,
-				walkedAway, newExc, powers);
+		return new PartyStates(powers, removeParty(e.getParty()), actions,
+				agreements, walkedAway, newExc);
 	}
 
@@ -209,5 +207,5 @@
 	 */
 	public List<PartyId> getWalkedAway() {
-		return walkedAway;
+		return Collections.unmodifiableList(walkedAway);
 	}
 
@@ -241,6 +239,6 @@
 			throw new IllegalStateException(
 					"Some parties did not yet act:" + notYetActed);
-		return new PartyStates(getNegotiatingParties(), Collections.emptyList(),
-				agreements, walkedAway, exceptions, powers);
+		return new PartyStates(powers, getNegotiatingParties(),
+				Collections.emptyList(), agreements, walkedAway, exceptions);
 	}
 
Index: protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACStateTest.java
===================================================================
--- protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACStateTest.java	(revision 34)
+++ protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACStateTest.java	(revision 35)
@@ -4,6 +4,6 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -74,5 +74,5 @@
 	private MOPACState state1, state1a, state2, state3, state4, state5, state6;
 
-	private String serialized = "{\"MOPACState\":{\"phase\":{\"OfferPhase\":{\"partyStates\":{\"notYetActed\":[],\"actions\":[],\"agreements\":{},\"walkedAway\":[],\"exceptions\":{},\"powers\":{}},\"evaluator\":{\"LargestAgreement\":{}},\"deadline\":100}},\"actions\":[],\"progress\":{\"ProgressTime\":{\"duration\":100,\"start\":1001}},\"settings\":{\"MOPACSettings\":{\"participants\":[{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"http://party1\",\"parameters\":{}},\"profile\":\"http://profile1\"}]}},{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"http://party2\",\"parameters\":{}},\"profile\":\"http://profile2\"}]}}],\"deadline\":{\"DeadlineTime\":{\"durationms\":100}},\"votingevaluator\":{\"LargestAgreement\":{}}}},\"partyprofiles\":{}}}";
+	private String serialized = "{\"MOPACState\":{\"phase\":{\"OfferPhase\":{\"partyStates\":{\"powers\":{},\"notYetActed\":[],\"actions\":[],\"agreements\":{},\"walkedAway\":[],\"exceptions\":{}},\"evaluator\":{\"LargestAgreement\":{}},\"deadline\":100}},\"actions\":[],\"progress\":{\"ProgressTime\":{\"duration\":100,\"start\":1001}},\"settings\":{\"MOPACSettings\":{\"participants\":[{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"http://party1\",\"parameters\":{}},\"profile\":\"http://profile1\"}]}},{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"http://party2\",\"parameters\":{}},\"profile\":\"http://profile2\"}]}}],\"deadline\":{\"DeadlineTime\":{\"durationms\":100}},\"votingevaluator\":{\"LargestAgreement\":{}}}},\"partyprofiles\":{}}}";
 
 	@Before
Index: protocol/src/test/java/geniusweb/protocol/session/mopac/PartyStatesTest.java
===================================================================
--- protocol/src/test/java/geniusweb/protocol/session/mopac/PartyStatesTest.java	(revision 34)
+++ protocol/src/test/java/geniusweb/protocol/session/mopac/PartyStatesTest.java	(revision 35)
@@ -31,5 +31,5 @@
 	private final Map<PartyId, Integer> powers = new HashMap<>();
 	private final PartyStates states1, states1a, states2;
-	private final String serialized = "{\"notYetActed\":[\"party2\",\"party1\",\"party3\"],\"actions\":[],\"agreements\":{},\"walkedAway\":[],\"exceptions\":{},\"powers\":{\"party2\":3,\"party1\":2,\"party3\":3}}";
+	private final String serialized = "{\"powers\":{\"party2\":3,\"party1\":2,\"party3\":3},\"notYetActed\":[\"party2\",\"party1\",\"party3\"],\"actions\":[],\"agreements\":{},\"walkedAway\":[],\"exceptions\":{}}";
 
 	public PartyStatesTest() {
Index: protocol/src/test/java/geniusweb/protocol/session/mopac/phase/OfferPhaseTest.java
===================================================================
--- protocol/src/test/java/geniusweb/protocol/session/mopac/phase/OfferPhaseTest.java	(revision 34)
+++ protocol/src/test/java/geniusweb/protocol/session/mopac/phase/OfferPhaseTest.java	(revision 35)
@@ -57,5 +57,5 @@
 	private final Offer offer = new Offer(party1, bid);
 
-	private final String serialized = "{\"OfferPhase\":{\"partyStates\":{\"notYetActed\":[\"party2\",\"party1\",\"party3\"],\"actions\":[],\"agreements\":{},\"walkedAway\":[],\"exceptions\":{},\"powers\":{\"party2\":3,\"party1\":2,\"party3\":3}},\"evaluator\":{\"LargestAgreement\":{}},\"deadline\":10}}";
+	private final String serialized = "{\"OfferPhase\":{\"partyStates\":{\"powers\":{\"party2\":3,\"party1\":2,\"party3\":3},\"notYetActed\":[\"party2\",\"party1\",\"party3\"],\"actions\":[],\"agreements\":{},\"walkedAway\":[],\"exceptions\":{}},\"evaluator\":{\"LargestAgreement\":{}},\"deadline\":10}}";
 
 	public OfferPhaseTest() {
