Index: /bidspace/pom.xml
===================================================================
--- /bidspace/pom.xml	(revision 28)
+++ /bidspace/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>bidspace</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,5 +16,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /bidspace/src/main/java/geniusweb/bidspace/pareto/ParetoLinearAdditive.java
===================================================================
--- /bidspace/src/main/java/geniusweb/bidspace/pareto/ParetoLinearAdditive.java	(revision 28)
+++ /bidspace/src/main/java/geniusweb/bidspace/pareto/ParetoLinearAdditive.java	(revision 29)
@@ -13,6 +13,6 @@
 
 /**
- * pareto frontier implementation for {@link LinearAdditive}. Simplistic
- * implementation that iterates over all bids.
+ * pareto frontier implementation for {@link LinearAdditive}. This is a highly
+ * optimized pareto method for {@link LinearAdditive} spaces
  */
 public class ParetoLinearAdditive implements ParetoFrontier {
Index: /boa/pom.xml
===================================================================
--- /boa/pom.xml	(revision 28)
+++ /boa/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>boa</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /collectparties.sh
===================================================================
--- /collectparties.sh	(revision 28)
+++ /collectparties.sh	(revision 29)
@@ -7,5 +7,5 @@
 rm -rf collectedparties
 mkdir collectedparties
-VERSION=1.5.7
+VERSION=1.5.8
 
 cp "exampleparties/anac2019/agentgg/target/agentgg-${VERSION}-jar-with-dependencies.jar" collectedparties
Index: /events/pom.xml
===================================================================
--- /events/pom.xml	(revision 28)
+++ /events/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>events</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/anac2019/agentgg/pom.xml
===================================================================
--- /exampleparties/anac2019/agentgg/pom.xml	(revision 28)
+++ /exampleparties/anac2019/agentgg/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties.anac2019</groupId>
 	<artifactId>agentgg</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/anac2019/winkyagent/pom.xml
===================================================================
--- /exampleparties/anac2019/winkyagent/pom.xml	(revision 28)
+++ /exampleparties/anac2019/winkyagent/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties.anac2019</groupId>
 	<artifactId>winkyagent</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/boulware/pom.xml
===================================================================
--- /exampleparties/boulware/pom.xml	(revision 28)
+++ /exampleparties/boulware/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>boulware</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/comparebids/pom.xml
===================================================================
--- /exampleparties/comparebids/pom.xml	(revision 28)
+++ /exampleparties/comparebids/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>comparebids</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/conceder/pom.xml
===================================================================
--- /exampleparties/conceder/pom.xml	(revision 28)
+++ /exampleparties/conceder/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>conceder</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/hardliner/pom.xml
===================================================================
--- /exampleparties/hardliner/pom.xml	(revision 28)
+++ /exampleparties/hardliner/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>hardliner</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/humangui/pom.xml
===================================================================
--- /exampleparties/humangui/pom.xml	(revision 28)
+++ /exampleparties/humangui/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>humangui</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/linear/pom.xml
===================================================================
--- /exampleparties/linear/pom.xml	(revision 28)
+++ /exampleparties/linear/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>linear</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/randomparty/pom.xml
===================================================================
--- /exampleparties/randomparty/pom.xml	(revision 28)
+++ /exampleparties/randomparty/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>randomparty</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/randompartypy/pom.xml
===================================================================
--- /exampleparties/randompartypy/pom.xml	(revision 28)
+++ /exampleparties/randompartypy/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>randompyparty</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/simpleboa/pom.xml
===================================================================
--- /exampleparties/simpleboa/pom.xml	(revision 28)
+++ /exampleparties/simpleboa/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>simpleboaparty</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/simpleshaop/pom.xml
===================================================================
--- /exampleparties/simpleshaop/pom.xml	(revision 28)
+++ /exampleparties/simpleshaop/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>simpleshaop</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /exampleparties/timedependentparty/pom.xml
===================================================================
--- /exampleparties/timedependentparty/pom.xml	(revision 28)
+++ /exampleparties/timedependentparty/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>timedependentparty</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /issuevalue/pom.xml
===================================================================
--- /issuevalue/pom.xml	(revision 28)
+++ /issuevalue/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>issuevalue</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /opponentmodel/pom.xml
===================================================================
--- /opponentmodel/pom.xml	(revision 28)
+++ /opponentmodel/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>opponentmodel</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /opponentmodel/src/main/java/geniusweb/opponentmodel/FrequencyOpponentModel.java
===================================================================
--- /opponentmodel/src/main/java/geniusweb/opponentmodel/FrequencyOpponentModel.java	(revision 28)
+++ /opponentmodel/src/main/java/geniusweb/opponentmodel/FrequencyOpponentModel.java	(revision 29)
@@ -2,4 +2,5 @@
 
 import java.math.BigDecimal;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -35,4 +36,5 @@
 	private final Map<String, Map<Value, Integer>> bidFrequencies;
 	private final BigDecimal totalBids;
+	private final Bid resBid;
 
 	public FrequencyOpponentModel() {
@@ -40,13 +42,5 @@
 		this.bidFrequencies = null;
 		this.totalBids = BigDecimal.ZERO;
-	}
-
-	@Override
-	public FrequencyOpponentModel with(Domain domain, Bid resBid) {
-		// FIXME merge already available frequencies?
-		return new FrequencyOpponentModel(domain,
-				domain.getIssues().stream().collect(
-						Collectors.toMap(iss -> iss, iss -> new HashMap<>())),
-				BigDecimal.ZERO);
+		this.resBid = null;
 	}
 
@@ -62,17 +56,35 @@
 	 *               {@link #bidFrequencies} for each issue (this is not
 	 *               checked).
+	 * @param resBid the reservation bid. Can be null
 	 */
 	private FrequencyOpponentModel(Domain domain,
-			Map<String, Map<Value, Integer>> freqs, BigDecimal total) {
-		if (domain == null) {
-			throw new NullPointerException("domain=null");
+			Map<String, Map<Value, Integer>> freqs, BigDecimal total,
+			Bid resBid) {
+		if (domain == null) {
+			throw new IllegalStateException("domain is not initialized");
 		}
 		this.domain = domain;
 		this.bidFrequencies = freqs;
 		this.totalBids = total;
+		this.resBid = resBid;
+	}
+
+	@Override
+	public FrequencyOpponentModel with(Domain domain, Bid resBid) {
+		if (domain == null) {
+			throw new NullPointerException("domain is not initialized");
+		}
+		// FIXME merge already available frequencies?
+		return new FrequencyOpponentModel(domain,
+				domain.getIssues().stream().collect(
+						Collectors.toMap(iss -> iss, iss -> new HashMap<>())),
+				BigDecimal.ZERO, resBid);
 	}
 
 	@Override
 	public BigDecimal getUtility(Bid bid) {
+		if (domain == null) {
+			throw new IllegalStateException("domain is not initialized");
+		}
 		String err = domain.isComplete(bid);
 		if (err != null) {
@@ -93,24 +105,8 @@
 	@Override
 	public String getName() {
+		if (domain == null) {
+			throw new IllegalStateException("domain is not initialized");
+		}
 		return "FreqOppModel" + (serial++) + "For" + domain;
-	}
-
-	/**
-	 * 
-	 * @param issue the issue to check
-	 * @param value the value to check
-	 * @return the fraction of the total cases that bids contained given value
-	 *         for the issue.
-	 */
-	private BigDecimal getFraction(String issue, Value value) {
-		if (totalBids == BigDecimal.ZERO) {
-			return BigDecimal.ONE;
-		}
-		Integer freq = bidFrequencies.get(issue).get(value);
-		if (freq == null) {
-			freq = 0;
-		}
-		return new BigDecimal(freq).divide(totalBids, DECIMALS,
-				BigDecimal.ROUND_HALF_UP);
 	}
 
@@ -122,4 +118,8 @@
 	@Override
 	public FrequencyOpponentModel with(Action action, Progress progress) {
+		if (domain == null) {
+			throw new IllegalStateException("domain is not initialized");
+		}
+
 		if (!(action instanceof Offer))
 			return this;
@@ -140,5 +140,41 @@
 
 		return new FrequencyOpponentModel(domain, newFreqs,
-				totalBids.add(BigDecimal.ONE));
+				totalBids.add(BigDecimal.ONE), resBid);
+	}
+
+	/**
+	 * 
+	 * @param issue the issue to get frequency info for
+	 * @return a map containing a map of values and the number of times that
+	 *         value was used in previous bids. Values that are possible but not
+	 *         in the map have frequency 0.
+	 */
+	public Map<Value, Integer> getCounts(String issue) {
+		if (domain == null) {
+			throw new IllegalStateException("domain is not initialized");
+		}
+		if (!(bidFrequencies.containsKey(issue))) {
+			return Collections.emptyMap();
+		}
+		return Collections.unmodifiableMap(bidFrequencies.get(issue));
+	}
+
+	/**
+	 * 
+	 * @param issue the issue to check
+	 * @param value the value to check
+	 * @return the fraction of the total cases that bids contained given value
+	 *         for the issue.
+	 */
+	private BigDecimal getFraction(String issue, Value value) {
+		if (totalBids == BigDecimal.ZERO) {
+			return BigDecimal.ONE;
+		}
+		Integer freq = bidFrequencies.get(issue).get(value);
+		if (freq == null) {
+			freq = 0;
+		}
+		return new BigDecimal(freq).divide(totalBids, DECIMALS,
+				BigDecimal.ROUND_HALF_UP);
 	}
 
@@ -159,6 +195,5 @@
 	@Override
 	public Bid getReservationBid() {
-		// don't throw but we really have no clue.
-		return new Bid(new HashMap<>());
+		return resBid;
 	}
 
Index: /opponentmodel/src/main/java/geniusweb/opponentmodel/OpponentModel.java
===================================================================
--- /opponentmodel/src/main/java/geniusweb/opponentmodel/OpponentModel.java	(revision 28)
+++ /opponentmodel/src/main/java/geniusweb/opponentmodel/OpponentModel.java	(revision 29)
@@ -26,6 +26,9 @@
 	 * constructing an instance. It can also be called later, if there is a
 	 * change in the domain or resBid.
+	 * <p>
+	 * This late-initialization is to support boa models that have late
+	 * initialization.
 	 * 
-	 * @param domain the domain to work with
+	 * @param domain the domain to work with. Must be not null.
 	 * @param resBid the reservation bid, or null if no reservationbid is
 	 *               available.
Index: /opponentmodel/src/test/java/geniusweb/profile/opponentmodel/FrequencyOppModelTest.java
===================================================================
--- /opponentmodel/src/test/java/geniusweb/profile/opponentmodel/FrequencyOppModelTest.java	(revision 28)
+++ /opponentmodel/src/test/java/geniusweb/profile/opponentmodel/FrequencyOppModelTest.java	(revision 29)
@@ -8,4 +8,5 @@
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedList;
@@ -35,4 +36,6 @@
 	private static final DiscreteValue I1V1 = new DiscreteValue("i1v1");
 	private static final DiscreteValue I1V2 = new DiscreteValue("i1v2");
+	private static final DiscreteValue I2V1 = new DiscreteValue("i2v1");
+	private static final DiscreteValue I2V2 = new DiscreteValue("i2v2");
 	private static final DiscreteValue I1V2b = new DiscreteValue("i1v2b");
 	private static final Progress progress = mock(Progress.class);
@@ -162,3 +165,40 @@
 	}
 
+	@Test
+	public void testGetCounts() {
+		assertEquals(Collections.emptyMap(), oppModel1.getCounts(ISS1));
+		assertEquals(Collections.emptyMap(), oppModel1.getCounts(ISS2));
+
+		Map<String, Value> values1 = new HashMap<>();
+		values1.put(ISS1, I1V1);
+		values1.put(ISS2, I2V1);
+		Offer offer1 = new Offer(other, new Bid(values1));
+
+		FrequencyOpponentModel oppmod = oppModel1.with(offer1, progress);
+
+		assertEquals(1, oppmod.getCounts(ISS1).get(I1V1).intValue());
+		assertEquals(null, oppmod.getCounts(ISS1).get(I1V2));
+		assertEquals(1, oppmod.getCounts(ISS2).get(I2V1).intValue());
+		assertEquals(null, oppmod.getCounts(ISS2).get(I2V2));
+
+		// same identical bid. Counts should go to 2
+		oppmod = oppmod.with(offer1, progress);
+
+		assertEquals(2, oppmod.getCounts(ISS1).get(I1V1).intValue());
+		assertEquals(2, oppmod.getCounts(ISS2).get(I2V1).intValue());
+
+		Map<String, Value> values2 = new HashMap<>();
+		values2.put(ISS1, I1V2);
+		values2.put(ISS2, I2V2);
+		Offer offer2 = new Offer(other, new Bid(values2));
+
+		// Other bid. with value2 for both issues
+		oppmod = oppmod.with(offer2, progress);
+
+		assertEquals(2, oppmod.getCounts(ISS1).get(I1V1).intValue());
+		assertEquals(2, oppmod.getCounts(ISS2).get(I2V1).intValue());
+		assertEquals(1, oppmod.getCounts(ISS1).get(I1V2).intValue());
+		assertEquals(1, oppmod.getCounts(ISS2).get(I2V2).intValue());
+
+	}
 }
Index: /party/pom.xml
===================================================================
--- /party/pom.xml	(revision 28)
+++ /party/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>party</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /profile/pom.xml
===================================================================
--- /profile/pom.xml	(revision 28)
+++ /profile/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>profile</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /profileconnection/pom.xml
===================================================================
--- /profileconnection/pom.xml	(revision 28)
+++ /profileconnection/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>profileconnection</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /protocol/pom.xml
===================================================================
--- /protocol/pom.xml	(revision 28)
+++ /protocol/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>protocol</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /pythonadapter/pom.xml
===================================================================
--- /pythonadapter/pom.xml	(revision 28)
+++ /pythonadapter/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>pythonadapter</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /references/pom.xml
===================================================================
--- /references/pom.xml	(revision 28)
+++ /references/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>references</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /simplerunner/pom.xml
===================================================================
--- /simplerunner/pom.xml	(revision 28)
+++ /simplerunner/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>simplerunner</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
@@ -43,7 +43,4 @@
 			<artifactId>randomparty</artifactId>
 			<version>${geniusweb.version}</version>
-			<scope>
-				test
-			</scope>
 		</dependency>
 		<dependency>
Index: /simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerE2ETest.java
===================================================================
--- /simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerE2ETest.java	(revision 28)
+++ /simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerE2ETest.java	(revision 29)
@@ -41,5 +41,6 @@
 						{ "src/test/resources/settings2.json" },
 						{ "src/test/resources/shaoptoursettings.json" },
-						{ "src/test/resources/mopac.json" } });
+						{ "src/test/resources/mopac.json" },
+						{ "src/test/resources/tournament.json" } });
 	}
 
Index: /simplerunner/src/test/resources/party/party.json
===================================================================
--- /simplerunner/src/test/resources/party/party.json	(revision 29)
+++ /simplerunner/src/test/resources/party/party.json	(revision 29)
@@ -0,0 +1,52 @@
+{
+	"name": "party",
+	"issuesValues": {
+		"Food": {
+			"values": [
+				"Chips and Nuts",
+				"Finger-Food",
+				"Handmade Food",
+				"Catering"
+			]
+		},
+		"Drinks": {
+			"values": [
+				"Non-Alcoholic",
+				"Beer Only",
+				"Handmade Cocktails",
+				"Catering"
+			]
+		},
+		"Location": {
+			"values": [
+				"Party Tent",
+				"Your Dorm",
+				"Party Room",
+				"Ballroom"
+			]
+		},
+		"Invitations": {
+			"values": [
+				"Plain",
+				"Photo",
+				"Custom, Handmade",
+				"Custom, Printed"
+			]
+		},
+		"Music": {
+			"values": [
+				"MP3",
+				"DJ",
+				"Band"
+			]
+		},
+		"Cleanup": {
+			"values": [
+				"Water and Soap",
+				"Specialized Materials",
+				"Special Equiment",
+				"Hired Help"
+			]
+		}
+	}
+}
Index: /simplerunner/src/test/resources/party/party1.json
===================================================================
--- /simplerunner/src/test/resources/party/party1.json	(revision 29)
+++ /simplerunner/src/test/resources/party/party1.json	(revision 29)
@@ -0,0 +1,126 @@
+{
+	"LinearAdditiveUtilitySpace": {
+		"name": "party1",
+		"issueUtilities": {
+			"Food": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Chips and Nuts": 0.75,
+						"Finger-Food": 0.52,
+						"Handmade Food": 0.51,
+						"Catering": 0.25
+					}
+				}
+			},
+			"Drinks": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Non-Alcoholic": 0.263,
+						"Beer Only": 0.98,
+						"Handmade Cocktails": 0.672,
+						"Catering": 0.334
+					}
+				}
+			},
+			"Location": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Party Tent": 0.52,
+						"Your Dorm": 0.23,
+						"Party Room": 0.99,
+						"Ballroom": 0.77
+					}
+				}
+			},
+			"Invitations": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Plain": 0.24,
+						"Photo": 0.74,
+						"Custom, Handmade": 1,
+						"Custom, Printed": 0.48
+					}
+				}
+			},
+			"Music": {
+				"discreteutils": {
+					"valueUtilities": {
+						"MP3": 0.65,
+						"DJ": 0.99,
+						"Band": 0.35
+					}
+				}
+			},
+			"Cleanup": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Water and Soap": 0.65,
+						"Specialized Materials": 0.96,
+						"Special Equiment": 0.32,
+						"Hired Help": 0.31
+					}
+				}
+			}
+		},
+		"issueWeights": {
+			"Food": 0.19,
+			"Drinks": 0.28,
+			"Location": 0.19,
+			"Invitations": 0.05,
+			"Music": 0.19,
+			"Cleanup": 0.10
+		},
+		"domain": {
+			"name": "party",
+			"issuesValues": {
+				"Food": {
+					"values": [
+						"Chips and Nuts",
+						"Finger-Food",
+						"Handmade Food",
+						"Catering"
+					]
+				},
+				"Drinks": {
+					"values": [
+						"Non-Alcoholic",
+						"Beer Only",
+						"Handmade Cocktails",
+						"Catering"
+					]
+				},
+				"Location": {
+					"values": [
+						"Party Tent",
+						"Your Dorm",
+						"Party Room",
+						"Ballroom"
+					]
+				},
+				"Invitations": {
+					"values": [
+						"Plain",
+						"Photo",
+						"Custom, Handmade",
+						"Custom, Printed"
+					]
+				},
+				"Music": {
+					"values": [
+						"MP3",
+						"DJ",
+						"Band"
+					]
+				},
+				"Cleanup": {
+					"values": [
+						"Water and Soap",
+						"Specialized Materials",
+						"Special Equiment",
+						"Hired Help"
+					]
+				}
+			}
+		}
+	}
+}
Index: /simplerunner/src/test/resources/party/party2.json
===================================================================
--- /simplerunner/src/test/resources/party/party2.json	(revision 29)
+++ /simplerunner/src/test/resources/party/party2.json	(revision 29)
@@ -0,0 +1,126 @@
+{
+	"LinearAdditiveUtilitySpace": {
+		"name": "party2",
+		"issueUtilities": {
+			"Food": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Chips and Nuts": 0.24,
+						"Finger-Food": 0.52,
+						"Handmade Food": 0.71,
+						"Catering": 0.97
+					}
+				}
+			},
+			"Drinks": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Non-Alcoholic": 0.33,
+						"Beer Only": 0.22,
+						"Handmade Cocktails": 1,
+						"Catering": 0.11
+					}
+				}
+			},
+			"Location": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Party Tent": 0.3,
+						"Your Dorm": 0.23,
+						"Party Room": 0.99,
+						"Ballroom": 0.09
+					}
+				}
+			},
+			"Invitations": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Plain": 0.84,
+						"Photo": 0.24,
+						"Custom, Handmade": 0.12,
+						"Custom, Printed": 0.98
+					}
+				}
+			},
+			"Music": {
+				"discreteutils": {
+					"valueUtilities": {
+						"MP3": 0.94,
+						"DJ": 0.32,
+						"Band": 0.64
+					}
+				}
+			},
+			"Cleanup": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Water and Soap": 1,
+						"Specialized Materials": 0.36,
+						"Special Equiment": 0.12,
+						"Hired Help": 0.21
+					}
+				}
+			}
+		},
+		"issueWeights": {
+			"Food": 0.095,
+			"Drinks": 0.228,
+			"Location": 0.109,
+			"Invitations": 0.214,
+			"Music": 0.108,
+			"Cleanup": 0.246
+		},
+		"domain": {
+			"name": "party",
+			"issuesValues": {
+				"Food": {
+					"values": [
+						"Chips and Nuts",
+						"Finger-Food",
+						"Handmade Food",
+						"Catering"
+					]
+				},
+				"Drinks": {
+					"values": [
+						"Non-Alcoholic",
+						"Beer Only",
+						"Handmade Cocktails",
+						"Catering"
+					]
+				},
+				"Location": {
+					"values": [
+						"Party Tent",
+						"Your Dorm",
+						"Party Room",
+						"Ballroom"
+					]
+				},
+				"Invitations": {
+					"values": [
+						"Plain",
+						"Photo",
+						"Custom, Handmade",
+						"Custom, Printed"
+					]
+				},
+				"Music": {
+					"values": [
+						"MP3",
+						"DJ",
+						"Band"
+					]
+				},
+				"Cleanup": {
+					"values": [
+						"Water and Soap",
+						"Specialized Materials",
+						"Special Equiment",
+						"Hired Help"
+					]
+				}
+			}
+		}
+	}
+}
Index: /simplerunner/src/test/resources/party/party3.json
===================================================================
--- /simplerunner/src/test/resources/party/party3.json	(revision 29)
+++ /simplerunner/src/test/resources/party/party3.json	(revision 29)
@@ -0,0 +1,126 @@
+{
+	"LinearAdditiveUtilitySpace": {
+		"name": "party3",
+		"issueUtilities": {
+			"Food": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Chips and Nuts": 1,
+						"Finger-Food": 0.75,
+						"Handmade Food": 0.6,
+						"Catering": 0.5
+					}
+				}
+			},
+			"Drinks": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Non-Alcoholic": 0.99,
+						"Beer Only": 0.02,
+						"Handmade Cocktails": 0.75,
+						"Catering": 0.03
+					}
+				}
+			},
+			"Location": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Party Tent": 0.98,
+						"Your Dorm": 0.8,
+						"Party Room": 0.4,
+						"Ballroom": 0.9
+					}
+				}
+			},
+			"Invitations": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Plain": 0.99,
+						"Photo": 0.67,
+						"Custom, Handmade": 0.52,
+						"Custom, Printed": 0.8
+					}
+				}
+			},
+			"Music": {
+				"discreteutils": {
+					"valueUtilities": {
+						"MP3": 0.9,
+						"DJ": 0.75,
+						"Band": 1
+					}
+				}
+			},
+			"Cleanup": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Water and Soap": 1,
+						"Specialized Materials": 0.51,
+						"Special Equiment": 0.67,
+						"Hired Help": 0.99
+					}
+				}
+			}
+		},
+		"issueWeights": {
+			"Food": 0.264,
+			"Drinks": 0.190,
+			"Location": 0.223,
+			"Invitations": 0.058,
+			"Music": 0.168,
+			"Cleanup": 0.097
+		},
+		"domain": {
+			"name": "party",
+			"issuesValues": {
+				"Food": {
+					"values": [
+						"Chips and Nuts",
+						"Finger-Food",
+						"Handmade Food",
+						"Catering"
+					]
+				},
+				"Drinks": {
+					"values": [
+						"Non-Alcoholic",
+						"Beer Only",
+						"Handmade Cocktails",
+						"Catering"
+					]
+				},
+				"Location": {
+					"values": [
+						"Party Tent",
+						"Your Dorm",
+						"Party Room",
+						"Ballroom"
+					]
+				},
+				"Invitations": {
+					"values": [
+						"Plain",
+						"Photo",
+						"Custom, Handmade",
+						"Custom, Printed"
+					]
+				},
+				"Music": {
+					"values": [
+						"MP3",
+						"DJ",
+						"Band"
+					]
+				},
+				"Cleanup": {
+					"values": [
+						"Water and Soap",
+						"Specialized Materials",
+						"Special Equiment",
+						"Hired Help"
+					]
+				}
+			}
+		}
+	}
+}
Index: /simplerunner/src/test/resources/party/party4.json
===================================================================
--- /simplerunner/src/test/resources/party/party4.json	(revision 29)
+++ /simplerunner/src/test/resources/party/party4.json	(revision 29)
@@ -0,0 +1,126 @@
+{
+	"LinearAdditiveUtilitySpace": {
+		"name": "party4",
+		"issueUtilities": {
+			"Food": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Chips and Nuts": 0.98,
+						"Finger-Food": 0.75,
+						"Handmade Food": 0.5,
+						"Catering": 0.24
+					}
+				}
+			},
+			"Drinks": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Non-Alcoholic": 0.99,
+						"Beer Only": 0.72,
+						"Handmade Cocktails": 0.55,
+						"Catering": 0.23
+					}
+				}
+			},
+			"Location": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Party Tent": 0.58,
+						"Your Dorm": 0.75,
+						"Party Room": 1,
+						"Ballroom": 0.22
+					}
+				}
+			},
+			"Invitations": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Plain": 0.99,
+						"Photo": 0.47,
+						"Custom, Handmade": 0.72,
+						"Custom, Printed": 0.28
+					}
+				}
+			},
+			"Music": {
+				"discreteutils": {
+					"valueUtilities": {
+						"MP3": 0.65,
+						"DJ": 0.95,
+						"Band": 0.33
+					}
+				}
+			},
+			"Cleanup": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Water and Soap": 0.27,
+						"Specialized Materials": 0.51,
+						"Special Equiment": 0.97,
+						"Hired Help": 0.79
+					}
+				}
+			}
+		},
+		"issueWeights": {
+			"Food": 0.190,
+			"Drinks": 0.238,
+			"Location": 0.095,
+			"Invitations": 0.047,
+			"Music": 0.285,
+			"Cleanup": 0.145
+		},
+		"domain": {
+			"name": "party",
+			"issuesValues": {
+				"Food": {
+					"values": [
+						"Chips and Nuts",
+						"Finger-Food",
+						"Handmade Food",
+						"Catering"
+					]
+				},
+				"Drinks": {
+					"values": [
+						"Non-Alcoholic",
+						"Beer Only",
+						"Handmade Cocktails",
+						"Catering"
+					]
+				},
+				"Location": {
+					"values": [
+						"Party Tent",
+						"Your Dorm",
+						"Party Room",
+						"Ballroom"
+					]
+				},
+				"Invitations": {
+					"values": [
+						"Plain",
+						"Photo",
+						"Custom, Handmade",
+						"Custom, Printed"
+					]
+				},
+				"Music": {
+					"values": [
+						"MP3",
+						"DJ",
+						"Band"
+					]
+				},
+				"Cleanup": {
+					"values": [
+						"Water and Soap",
+						"Specialized Materials",
+						"Special Equiment",
+						"Hired Help"
+					]
+				}
+			}
+		}
+	}
+}
Index: /simplerunner/src/test/resources/tournament.json
===================================================================
--- /simplerunner/src/test/resources/tournament.json	(revision 29)
+++ /simplerunner/src/test/resources/tournament.json	(revision 29)
@@ -0,0 +1,65 @@
+{
+	"AllPermutationsSettings": {
+		"teams": [
+			{
+				"Team": [
+					{
+						"partyref": "classpath:geniusweb.exampleparties.randomparty.RandomParty",
+						"parameters": {
+						}
+					}
+				]
+			},
+			{
+				"Team": [
+					{
+						"partyref": "classpath:geniusweb.exampleparties.randomparty.RandomParty",
+						"parameters": {
+						}
+					}
+				]
+			},
+			{
+				"Team": [
+					{
+						"partyref": "classpath:geniusweb.exampleparties.randomparty.RandomParty",
+						"parameters": {
+						}
+					}
+				]
+			}
+		],
+		"reuseTeams": false,
+		"profileslists": [
+			{
+				"ProfileList": [
+					"file:src/test/resources/party/party1.json"
+				]
+			},
+			{
+				"ProfileList": [
+					"file:src/test/resources/party/party2.json"				
+				]
+			},
+			{
+				"ProfileList": [
+					"file:src/test/resources/party/party3.json"					
+				]
+			}
+		],
+		"teamsPerSession": 2,
+		"sessionsettings": {
+			"SAOPSettings": {
+				"participants": [
+				],
+				"deadline": {
+					"deadlinerounds": {
+						"rounds": 10,
+						"durationms": 1000
+					}
+				}
+			}
+		},
+		"numberTournaments":1
+	}
+}
Index: /timeline/pom.xml
===================================================================
--- /timeline/pom.xml	(revision 28)
+++ /timeline/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>timeline</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,5 +16,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
Index: /voting/pom.xml
===================================================================
--- /voting/pom.xml	(revision 28)
+++ /voting/pom.xml	(revision 29)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>voting</artifactId>
-	<version>1.5.7</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.5.8</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.7</geniusweb.version>
+		<geniusweb.version>1.5.8</geniusweb.version>
 	</properties>
 
