Index: protocol/src/main/java/geniusweb/protocol/session/SessionState.java
===================================================================
--- protocol/src/main/java/geniusweb/protocol/session/SessionState.java	(revision 10)
+++ protocol/src/main/java/geniusweb/protocol/session/SessionState.java	(revision 11)
@@ -10,4 +10,5 @@
 import geniusweb.protocol.NegoState;
 import geniusweb.protocol.session.saop.SAOPState;
+import geniusweb.protocol.session.shaop.SHAOPState;
 
 /**
@@ -33,5 +34,6 @@
  * the protocol. As uaual, mark non-serializable fields as transient.
  */
-@JsonSubTypes({ @JsonSubTypes.Type(value = SAOPState.class) })
+@JsonSubTypes({ @JsonSubTypes.Type(value = SAOPState.class),
+		@JsonSubTypes.Type(value = SHAOPState.class) })
 
 public interface SessionState extends NegoState {
Index: protocol/src/main/java/geniusweb/protocol/session/shaop/BareSHAOPState.java
===================================================================
--- protocol/src/main/java/geniusweb/protocol/session/shaop/BareSHAOPState.java	(revision 10)
+++ protocol/src/main/java/geniusweb/protocol/session/shaop/BareSHAOPState.java	(revision 11)
@@ -32,5 +32,5 @@
 	protected final ProtocolException error;
 
-	protected final int actorNr;
+	protected final int teamNr;
 
 	protected final Map<PartyId, Integer> partyNumbers;
@@ -43,7 +43,8 @@
 	 *                   list
 	 * @param conns      the currently existing connections. Can be empty/null.
-	 *                   Each connection represents another party. Normally
-	 *                   there is exactly 1 connection for every party. The
-	 *                   protocol should check this.
+	 *                   Each connection represents another party. Normally the
+	 *                   connections are in the order SHAOP1,COB1,SHAOP2,COB2,..
+	 *                   so 2 parties for each team. The protocol should check
+	 *                   this.
 	 * @param progr      the {@link Progress} that governs this session. Can be
 	 *                   null if session did not yet start.
@@ -54,5 +55,6 @@
 	 *                   are bugs (not ProtocolExceptions) and should result in
 	 *                   a throw.
-	 * @param actorNr    the actor that has the turn, index {@link #connections}
+	 * @param teamNr     the teamnr (0,1,2..) that has the turn. 2* gives index
+	 *                   {@link #connections} and settings
 	 * @param partyNrs   a map for each known PartyId to a number. The number is
 	 *                   the index in both {@link SHAOPSettings#getTeams()} and
@@ -64,5 +66,5 @@
 	public BareSHAOPState(List<Action> actions,
 			ProtocolToPartyConnections conns, Progress progr,
-			SHAOPSettings settings, ProtocolException e, int actorNr,
+			SHAOPSettings settings, ProtocolException e, int teamNr,
 			Map<PartyId, Integer> partyNrs, Map<PartyId, Double> spent) {
 		if (conns == null) {
@@ -97,5 +99,5 @@
 		this.settings = settings;
 		this.error = e;
-		this.actorNr = actorNr;
+		this.teamNr = teamNr;
 	}
 
@@ -106,8 +108,8 @@
 	/**
 	 * 
-	 * @return party ID of current actorNr
+	 * @return party ID of current team leader (SHAOP party)
 	 */
-	public PartyId getCurrentActor() {
-		return connections.get(actorNr).getParty();
+	public PartyId getCurrentTeam() {
+		return connections.get(2 * teamNr).getParty();
 	}
 
Index: protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOP.java
===================================================================
--- protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOP.java	(revision 10)
+++ protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOP.java	(revision 11)
@@ -313,5 +313,5 @@
 					.send(new ActionDone(action));
 		} else {
-			if (!partyconn.getParty().equals(state.getCurrentActor()))
+			if (!partyconn.getParty().equals(state.getCurrentTeam()))
 				throw new ProtocolException(
 						"Party acts without having the turn",
@@ -331,5 +331,5 @@
 	 */
 	private synchronized void nextTurn() {
-		PartyId party = state.getCurrentActor();
+		PartyId party = state.getCurrentTeam();
 		try {
 			state.getConnections().get(party).send(new YourTurn());
Index: protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOPSettings.java
===================================================================
--- protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOPSettings.java	(revision 10)
+++ protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOPSettings.java	(revision 11)
@@ -62,13 +62,4 @@
 
 	/**
-	 * 
-	 * @param n an index number into the {@link #getTeams()} list.
-	 * @return true iff that participant is a SHAOP party.
-	 */
-	public boolean isShaopParty(int n) {
-		return (n & 1) == 0;
-	}
-
-	/**
 	 * @return the deadline for this negotiation
 	 */
@@ -83,4 +74,5 @@
 	 *         party.
 	 */
+	@Override
 	public List<PartyWithProfile> getAllParties() {
 		return participants.stream().map(team -> team.getAllParties())
Index: protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOPState.java
===================================================================
--- protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOPState.java	(revision 10)
+++ protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOPState.java	(revision 11)
@@ -41,8 +41,8 @@
 			@JsonProperty("settings") SHAOPSettings settings,
 			@JsonProperty("error") ProtocolException e,
-			@JsonProperty("actorNr") int actorNr,
+			@JsonProperty("teamNr") int teamNr,
 			@JsonProperty("partyNumbers") Map<PartyId, Integer> partytNumbers,
 			@JsonProperty("totalSpent") Map<PartyId, Double> spent) {
-		super(actions, conns, progress, settings, e, actorNr, partytNumbers,
+		super(actions, conns, progress, settings, e, teamNr, partytNumbers,
 				spent);
 	}
@@ -73,5 +73,5 @@
 	 */
 	public boolean isShaopParty(PartyId party) {
-		return settings.isShaopParty(partyNumbers.get(party));
+		return (partyNumbers.get(party) & 1) == 0;
 	}
 
@@ -79,5 +79,5 @@
 	 * 
 	 * @param party a Party Id
-	 * @return the PartyId of the party
+	 * @return the PartyId of the party (COB and SHAOP are partners)
 	 */
 	public PartyId getPartner(PartyId party) {
@@ -132,5 +132,5 @@
 		newNumbers.put(connection.getParty(), connections.size());
 		return new SHAOPState(actions, newconns, progress, settings, null,
-				actorNr, newNumbers, totalSpent);
+				teamNr, newNumbers, totalSpent);
 	}
 
@@ -144,5 +144,5 @@
 	public SHAOPState with(ProtocolException e) {
 		return new SHAOPState(actions, connections, progress, settings, e,
-				actorNr, partyNumbers, totalSpent);
+				teamNr, partyNumbers, totalSpent);
 	}
 
@@ -162,5 +162,5 @@
 		}
 		return new SHAOPState(actions, connections, newprogress, settings,
-				error, actorNr, partyNumbers, totalSpent);
+				error, teamNr, partyNumbers, totalSpent);
 	}
 
@@ -259,5 +259,5 @@
 		List<Action> newactions = new LinkedList<>(getActions());
 		newactions.add(action);
-		int newActor = actorNr;
+		int newTeam = teamNr;
 		if (action instanceof ElicitComparison) {
 			Object cost = getPartyProfile(partyid).getParty().getParameters()
@@ -276,5 +276,5 @@
 		} else {
 			// shaop party does real action, move to next SHAOP party.
-			newActor = (actorNr + 2) % settings.getTeams().size();
+			newTeam = (teamNr + 1) % settings.getTeams().size();
 			if (newprogress instanceof ProgressRounds) {
 				newprogress = ((ProgressRounds) newprogress).advance();
@@ -282,5 +282,5 @@
 		}
 		return new SHAOPState(newactions, connections, newprogress, settings,
-				null, newActor, partyNumbers, newSpent);
+				null, newTeam, partyNumbers, newSpent);
 
 	}
@@ -298,7 +298,7 @@
 		if (!isShaopParty(actor))
 			throw new IllegalArgumentException(
-					"Illegal action for COB party" + action);
+					"Only SHAOP party can execute " + action);
 		// real action only allowed if party has the turn.
-		if (!actor.equals(connections.get(actorNr).getParty())) {
+		if (!actor.equals(connections.get(2 * teamNr).getParty())) {
 			throw new IllegalArgumentException("Party does not have the turn ");
 		}
Index: protocol/src/main/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsSettings.java
===================================================================
--- protocol/src/main/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsSettings.java	(revision 10)
+++ protocol/src/main/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsSettings.java	(revision 11)
@@ -67,4 +67,5 @@
 public class AllPermutationsSettings implements TournamentSettings {
 
+	public static final String COB_PARTY = "comparebids-1.2.0";
 	private final List<PartyWithParameters> parties;
 	private final List<ProfileRef> profiles;
@@ -292,5 +293,5 @@
 			PartyWithParameters cobparty = new PartyWithParameters(new PartyRef(
 					partyuri.getScheme() + "://" + partyuri.getAuthority()
-							+ partypath + "/comparebids-1.0.0"),
+							+ partypath + "/" + COB_PARTY),
 					new Parameters());
 			return new PartyWithProfile(cobparty, cobprof);
