Index: /bidspace/pom.xml
===================================================================
--- /bidspace/pom.xml	(revision 32)
+++ /bidspace/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>bidspace</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -15,6 +15,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -42,6 +42,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 
@@ -124,10 +124,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -178,5 +173,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /bidspace/src/test/java/geniusweb/bidspace/PartialSpaceFromUtilityTest.java
===================================================================
--- /bidspace/src/test/java/geniusweb/bidspace/PartialSpaceFromUtilityTest.java	(revision 32)
+++ /bidspace/src/test/java/geniusweb/bidspace/PartialSpaceFromUtilityTest.java	(revision 33)
@@ -1,5 +1,5 @@
 package geniusweb.bidspace;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
@@ -19,9 +19,14 @@
 	@Test
 	public void createPartialSpaceJobs() throws IOException {
-		String file1 = new String(Files.readAllBytes(Paths.get("src/test/resources/jobs/jobs1.json")));
-		LinearAdditiveUtilitySpace profile = (LinearAdditiveUtilitySpace) jackson.readValue(file1, Profile.class);
-		PartialSpaceFromUtility partial = new PartialSpaceFromUtility(profile, 20);
+		String file1 = new String(Files
+				.readAllBytes(Paths.get("src/test/resources/jobs/jobs1.json")));
+		LinearAdditiveUtilitySpace profile = (LinearAdditiveUtilitySpace) jackson
+				.readValue(file1, Profile.class);
+		PartialSpaceFromUtility partial = new PartialSpaceFromUtility(profile,
+				20);
 		System.out.println(jackson.writeValueAsString(partial));
-		assertEquals(20, partial.getBetter().size());
+		int size = partial.getBetter().size();
+		assertTrue(size >= 20); // sometimes 20, sometimes 21
+		assertTrue(size <= 21);
 	}
 }
Index: /bidspace/src/test/resources/7issues/7issues1.json
===================================================================
--- /bidspace/src/test/resources/7issues/7issues1.json	(revision 32)
+++ /bidspace/src/test/resources/7issues/7issues1.json	(revision 33)
@@ -4,5 +4,5 @@
 		"issueUtilities": {
 			"i1": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.11,
@@ -13,5 +13,5 @@
 			},
 			"i2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.12,
@@ -22,5 +22,5 @@
 			},
 			"i3": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.13,
@@ -31,5 +31,5 @@
 			},
 			"i4": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.14,
@@ -40,5 +40,5 @@
 			},
 			"i5": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.15,
@@ -49,5 +49,5 @@
 			},
 			"i6": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.16,
@@ -58,5 +58,5 @@
 			},
 			"i7": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.16,
@@ -80,23 +80,23 @@
 			"issuesValues": {
 				"i1": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i2": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i3": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i4": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i5": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i6": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i7": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				}
 			}
Index: /bidspace/src/test/resources/7issues/7issues2.json
===================================================================
--- /bidspace/src/test/resources/7issues/7issues2.json	(revision 32)
+++ /bidspace/src/test/resources/7issues/7issues2.json	(revision 33)
@@ -4,5 +4,5 @@
 		"issueUtilities": {
 			"i1": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.51,
@@ -13,5 +13,5 @@
 			},
 			"i2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.92,
@@ -22,5 +22,5 @@
 			},
 			"i3": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.93,
@@ -31,5 +31,5 @@
 			},
 			"i4": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.94,
@@ -40,5 +40,5 @@
 			},
 			"i5": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.95,
@@ -49,5 +49,5 @@
 			},
 			"i6": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.96,
@@ -58,5 +58,5 @@
 			},
 			"i7": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.97,
@@ -80,23 +80,23 @@
 			"issuesValues": {
 				"i1": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i2": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i3": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i4": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i5": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i6": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i7": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				}
 			}
Index: /bidspace/src/test/resources/9issues/9issues1.json
===================================================================
--- /bidspace/src/test/resources/9issues/9issues1.json	(revision 32)
+++ /bidspace/src/test/resources/9issues/9issues1.json	(revision 33)
@@ -4,5 +4,5 @@
 		"issueUtilities": {
 			"i1": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.11,
@@ -13,5 +13,5 @@
 			},
 			"i2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.12,
@@ -22,5 +22,5 @@
 			},
 			"i3": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.13,
@@ -31,5 +31,5 @@
 			},
 			"i4": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.14,
@@ -40,5 +40,5 @@
 			},
 			"i5": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.15,
@@ -49,5 +49,5 @@
 			},
 			"i6": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.16,
@@ -58,5 +58,5 @@
 			},
 			"i7": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.16,
@@ -67,5 +67,5 @@
 			},
 			"i8": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.7664,
@@ -77,5 +77,5 @@
 
 			"i9": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.191,
@@ -102,29 +102,29 @@
 			"issuesValues": {
 				"i1": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i2": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i3": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i4": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i5": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i6": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i7": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i8": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i9": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				}
 
Index: /bidspace/src/test/resources/jobs/jobs1.json
===================================================================
--- /bidspace/src/test/resources/jobs/jobs1.json	(revision 32)
+++ /bidspace/src/test/resources/jobs/jobs1.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"salary": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"2000": 0,
@@ -14,5 +14,5 @@
 			},
 			"fte": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"0.6": 0.25,
@@ -23,5 +23,5 @@
 			},
 			"work from home": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"0": 0.333333333,
@@ -32,5 +32,5 @@
 			},
 			"lease car": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"yes":1,
@@ -40,5 +40,5 @@
 			},
 			"permanent contract": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"yes":1,
@@ -48,5 +48,5 @@
 			},
 			"career development opportunities": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"low":0,
Index: /bidspace/src/test/resources/jobs/jobs2.json
===================================================================
--- /bidspace/src/test/resources/jobs/jobs2.json	(revision 32)
+++ /bidspace/src/test/resources/jobs/jobs2.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"salary": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"2000": 1.0,
@@ -14,5 +14,5 @@
 			},
 			"fte": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"0.6": 0.363636363636363636,
@@ -23,5 +23,5 @@
 			},
 			"work from home": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"0": 1.0,
@@ -32,5 +32,5 @@
 			},
 			"lease car": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"yes":0,
@@ -40,5 +40,5 @@
 			},
 			"permanent contract": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"yes":0.23809523809523808,
@@ -48,5 +48,5 @@
 			},
 			"career development opportunities": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"low":1.0,
Index: /boa/pom.xml
===================================================================
--- /boa/pom.xml	(revision 32)
+++ /boa/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>boa</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -101,10 +101,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -127,4 +122,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-source-plugin</artifactId>
+				<version>3.1.0</version>
 				<executions>
 					<execution>
@@ -166,5 +162,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /boa/src/main/java/geniusweb/boa/BoaState.java
===================================================================
--- /boa/src/main/java/geniusweb/boa/BoaState.java	(revision 32)
+++ /boa/src/main/java/geniusweb/boa/BoaState.java	(revision 33)
@@ -9,11 +9,12 @@
 
 import geniusweb.actions.Action;
+import geniusweb.actions.Offer;
 import geniusweb.actions.PartyId;
 import geniusweb.boa.acceptancestrategy.AcceptanceStrategy;
 import geniusweb.boa.biddingstrategy.BiddingStrategy;
 import geniusweb.inform.Settings;
-import geniusweb.issuevalue.Bid;
 import geniusweb.opponentmodel.OpponentModel;
 import geniusweb.profile.Profile;
+import geniusweb.profile.utilityspace.LinearAdditive;
 import geniusweb.progress.Progress;
 import geniusweb.progress.ProgressRounds;
@@ -32,6 +33,4 @@
 	private final Map<PartyId, OpponentModel> opponentModels;
 	private final List<Action> actionHistory;
-	private final BiddingStrategy biddingStrategy;
-	private final AcceptanceStrategy acceptanceStrategy;
 	private final Reporter reporter;
 
@@ -42,5 +41,5 @@
 	 */
 	public BoaState(Reporter reporter) {
-		this(null, null, null, null, null, null, Collections.emptyList(),
+		this(null, null, null, null, Collections.emptyList(),
 				Collections.emptyMap(), reporter);
 		if (reporter == null) {
@@ -54,5 +53,7 @@
 	 * 
 	 * @param settings      the negoi {@link Settings}
-	 * @param profile       the {@link Profile} to be used
+	 * @param profile       the {@link Profile} to be used. BOA only supports
+	 *                      {@link LinearAdditive} so this can be assumed to be
+	 *                      {@link LinearAdditive}.
 	 * @param progr         the {@link Progress}
 	 * @param bidstrat      the {@link BiddingStrategy}
@@ -68,5 +69,4 @@
 	 */
 	private BoaState(Settings settings, Profile profile, Progress progr,
-			BiddingStrategy bidstrat, AcceptanceStrategy acceptstrat,
 			Class<? extends OpponentModel> omClass, List<Action> actionHistory,
 			Map<PartyId, OpponentModel> oppMods, Reporter reporter) {
@@ -74,6 +74,4 @@
 		this.profile = profile;
 		this.progress = progr;
-		this.biddingStrategy = bidstrat;
-		this.acceptanceStrategy = acceptstrat;
 		this.opponentModelClass = omClass;
 		this.actionHistory = actionHistory;
@@ -86,27 +84,28 @@
 	 * 
 	 * @param newsettings the negoi {@link Settings}
-	 * @param bidstrat    the {@link BiddingStrategy}
-	 * @param acceptstrat the {@link AcceptanceStrategy}
 	 * @param omClass     the class of the {@link OpponentModel}
 	 * @return initialized BoaState
 	 */
-	public BoaState with(Settings newsettings, BiddingStrategy bidstrat,
-			AcceptanceStrategy acceptstrat,
+	public BoaState with(Settings newsettings,
 			Class<? extends OpponentModel> omClass) {
 		if (settings != null)
 			throw new IllegalStateException("settings already set");
-		if (newsettings == null || omClass == null || bidstrat == null
-				|| acceptstrat == null || reporter == null)
+		if (newsettings == null || omClass == null || reporter == null)
 			throw new NullPointerException(
-					"settings, reporter, bidstrat, acceptstrat, omClass and oModels must be not null");
+					"settings, reporter, omClass and oModels must be not null");
 		return new BoaState(newsettings, null, newsettings.getProgress(),
-				bidstrat, acceptstrat, omClass, actionHistory,
-				new HashMap<PartyId, OpponentModel>(), reporter);
-	}
-
+				omClass, actionHistory, new HashMap<PartyId, OpponentModel>(),
+				reporter);
+	}
+
+	/**
+	 * @param newprofile a new profile to be used, replaces old profile.
+	 *                   {@link LinearAdditive} profile (BOA does not support
+	 *                   other types)
+	 * @return new {@link BoaState}
+	 */
 	public BoaState with(Profile newprofile) {
-		return new BoaState(settings, newprofile, progress, biddingStrategy,
-				acceptanceStrategy, opponentModelClass, actionHistory,
-				opponentModels, reporter);
+		return new BoaState(settings, newprofile, progress, opponentModelClass,
+				actionHistory, opponentModels, reporter);
 
 	}
@@ -124,5 +123,7 @@
 	 * 
 	 * @return the {@link Profile} as fetched from the profiles server, or null
-	 *         if no profile was received yet.
+	 *         if no profile was received yet. BOA only supports
+	 *         {@link LinearAdditive} so this can be assumed to be
+	 *         {@link LinearAdditive}.
 	 */
 	public Profile getProfile() {
@@ -155,7 +156,6 @@
 			newmodels = updateModels(action);
 		}
-		return new BoaState(settings, profile, newprogress, biddingStrategy,
-				acceptanceStrategy, opponentModelClass, newactions, newmodels,
-				reporter);
+		return new BoaState(settings, profile, newprogress, opponentModelClass,
+				newactions, newmodels, reporter);
 	}
 
@@ -172,22 +172,4 @@
 	public List<Action> getActionHistory() {
 		return Collections.unmodifiableList(actionHistory);
-	}
-
-	/**
-	 * 
-	 * @param bid the {@link Bid} to check
-	 * @return true iff {@link #acceptanceStrategy} says the bid is acceptable
-	 */
-	public boolean isAcceptable(Bid bid) {
-		return acceptanceStrategy.isAcceptable(bid, this);
-	}
-
-	/**
-	 * 
-	 * @return the next recommended action according to the
-	 *         {@link #biddingStrategy}
-	 */
-	public Action getAction() {
-		return biddingStrategy.getAction(this);
 	}
 
@@ -243,3 +225,16 @@
 	}
 
+	/**
+	 * 
+	 * @return last received Offer, or null if no offer was done.
+	 */
+	public Offer getLastReceivedOffer() {
+		for (int i = actionHistory.size() - 1; i >= 0; i--) {
+			Action act = actionHistory.get(i);
+			if (act instanceof Offer)
+				return (Offer) act;
+		}
+		return null;
+	}
+
 }
Index: /boa/src/main/java/geniusweb/boa/DefaultBoa.java
===================================================================
--- /boa/src/main/java/geniusweb/boa/DefaultBoa.java	(revision 32)
+++ /boa/src/main/java/geniusweb/boa/DefaultBoa.java	(revision 33)
@@ -4,10 +4,7 @@
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.logging.Level;
 
-import geniusweb.actions.Accept;
 import geniusweb.actions.Action;
-import geniusweb.actions.Offer;
 import geniusweb.boa.acceptancestrategy.AcceptanceStrategy;
 import geniusweb.boa.biddingstrategy.BiddingStrategy;
@@ -17,5 +14,4 @@
 import geniusweb.inform.Settings;
 import geniusweb.inform.YourTurn;
-import geniusweb.issuevalue.Bid;
 import geniusweb.opponentmodel.OpponentModel;
 import geniusweb.party.Capabilities;
@@ -31,15 +27,17 @@
 public abstract class DefaultBoa extends DefaultParty {
 
-	private BoaState negoState;
+	private BoaState boaState;
 	private ProfileInterface profileint = null;
+	private BiddingStrategy biddingStrat = null;
+	private AcceptanceStrategy acceptanceStrat = null;
 
 	public DefaultBoa() {
 		super();
-		negoState = initialState();
+		boaState = initialState();
 	}
 
 	public DefaultBoa(Reporter reporter) {
 		super(reporter); // for debugging
-		negoState = initialState();
+		boaState = initialState();
 	}
 
@@ -75,9 +73,7 @@
 				Class<? extends OpponentModel> omClass = getOpponentModel(
 						settings);
-				BiddingStrategy bidStrat = getBiddingStrategy(settings);
-				AcceptanceStrategy acceptStrat = getAccceptanceStrategy(
-						settings);
-				negoState = negoState.with(settings, bidStrat, acceptStrat,
-						omClass);
+				biddingStrat = getBiddingStrategy(settings);
+				acceptanceStrat = getAccceptanceStrategy(settings);
+				boaState = boaState.with(settings, omClass);
 				this.profileint = ProfileConnectionFactory
 						.create(settings.getProfile().getURI(), getReporter());
@@ -86,10 +82,10 @@
 
 			// Beyond this point we should have a profile
-			if (negoState.getProfile() == null) {
-				negoState = negoState.with(this.profileint.getProfile());
+			if (boaState.getProfile() == null) {
+				boaState = boaState.with(this.profileint.getProfile());
 			}
 
 			if (info instanceof ActionDone) {
-				negoState = negoState.with(((ActionDone) info).getAction());
+				boaState = boaState.with(((ActionDone) info).getAction());
 			} else if (info instanceof YourTurn) {
 				getConnection().send(getAction());
@@ -97,9 +93,19 @@
 			} else if (info instanceof Finished) {
 				getReporter().log(Level.INFO, "Final ourcome:" + info);
+				terminate();
 			}
 		} catch (Exception e) {
-			throw new RuntimeException("Failed to handle info " + info, e);
+			getReporter().log(Level.SEVERE, "Failed to handle info " + info, e);
+			// keep running, still hoping to get Finished callback at the end
 		}
 
+	}
+
+	/**
+	 * 
+	 * @return current {@link BoaState}
+	 */
+	public BoaState getState() {
+		return boaState;
 	}
 
@@ -151,25 +157,7 @@
 	}
 
-	/**
-	 * @return the most recent bid that was offered, or null if no offer has
-	 *         been done yet.
-	 */
-	protected Bid getLastBid() {
-		List<Action> actions = negoState.getActionHistory();
-		for (int n = actions.size() - 1; n >= 0; n--) {
-			Action action = actions.get(n);
-			if (action instanceof Offer) {
-				return ((Offer) action).getBid();
-			}
-		}
-		return null;
-	}
-
 	private Action getAction() {
-		Bid lastBid = getLastBid();
-		if (lastBid != null && negoState.isAcceptable(lastBid)) {
-			return new Accept(negoState.getSettings().getID(), lastBid);
-		}
-		return negoState.getAction();
+		Action proposedAction = biddingStrat.getAction(boaState);
+		return acceptanceStrat.filter(proposedAction, boaState);
 	}
 
Index: /boa/src/main/java/geniusweb/boa/acceptancestrategy/AcceptanceStrategy.java
===================================================================
--- /boa/src/main/java/geniusweb/boa/acceptancestrategy/AcceptanceStrategy.java	(revision 32)
+++ /boa/src/main/java/geniusweb/boa/acceptancestrategy/AcceptanceStrategy.java	(revision 33)
@@ -1,34 +1,43 @@
 package geniusweb.boa.acceptancestrategy;
 
+import geniusweb.actions.Action;
 import geniusweb.boa.BoaParty;
 import geniusweb.boa.BoaState;
-import geniusweb.inform.Settings;
-import geniusweb.issuevalue.Bid;
+import geniusweb.boa.biddingstrategy.BiddingStrategy;
 
 /**
  * Determines in which states a bid is acceptable. Typically used as one of the
- * components of a {@link BoaParty}
+ * components of a {@link BoaParty}. The protocol to be supported is SAOP.
  * <p>
  * <em>MUST</em> have an empty constructor.
+ * 
+ * <h2>More info</h2> Baarslag T., Hindriks K.V., Hendrikx M., Dirkzwager A.,
+ * Jonker C.M. Decoupling Negotiating Agents to Explore the Space of Negotiation
+ * Strategies. Proceedings of The Fifth International Workshop on Agent-based
+ * Complex Automated Negotiations (ACAN 2012), 2012.
+ * ​https://homepages.cwi.nl/~baarslag/pub/Decoupling_Negotiating_Agents_to_Explore_the_Space_of_Negotiation_Strategies_ACAN_2012.pdf
  */
 public interface AcceptanceStrategy {
 
 	/**
-	 * determine acceptability of a bid.
+	 * given a candidate action, update the action considering its fitness and
+	 * adjust if Accept would be a better choice. This normally is used to "fix"
+	 * the Offers coming from the {@link BiddingStrategy}.
+	 * 
 	 * <p>
-	 * <b>Note</b> for implementors: The AcceptanceStrategy can extract
-	 * configuration parameters from {@link Settings#getParameters} using
-	 * {@link BoaState#getSettings()}. Generally we recommend to write
+	 * <b>Note</b> for implementors: Previous offers that were done can be
+	 * extracted from the negoState. configuration parameters can be extracted
+	 * from {@link BoaState#getSettings()}. Generally we recommend to write
 	 * implementations such that they can also be hard-configured, for easier
 	 * use of the components in hard-coded settings.
 	 * 
-	 * @param bid       the bid to be checked
-	 * @param negoState the current {@link BoaState}.
+	 * @param proposedAction an action that is proposed (usually by the
+	 *                       {@link BiddingStrategy} as the next action.
+	 * @param boaState       the current {@link BoaState}.
 	 * 
 	 * 
-	 * @return true iff current bid is acceptable at this moment. Notice that in
-	 *         theory a protocol might allow accepting other bids than the
-	 *         latest. But at this moment only SAOP is supported by BOA.
+	 * @return a filtered version of the action. For example, the
+	 *         AcceptanceStrategy may deem an Accept better than a given Offer.
 	 */
-	Boolean isAcceptable(Bid bid, BoaState negoState);
+	Action filter(Action proposedAction, BoaState boaState);
 }
Index: /boa/src/main/java/geniusweb/boa/acceptancestrategy/TimeDependentAcceptanceStrategy.java
===================================================================
--- /boa/src/main/java/geniusweb/boa/acceptancestrategy/TimeDependentAcceptanceStrategy.java	(revision 32)
+++ /boa/src/main/java/geniusweb/boa/acceptancestrategy/TimeDependentAcceptanceStrategy.java	(revision 33)
@@ -1,4 +1,7 @@
 package geniusweb.boa.acceptancestrategy;
 
+import geniusweb.actions.Accept;
+import geniusweb.actions.Action;
+import geniusweb.actions.Offer;
 import geniusweb.bidspace.BidsWithUtility;
 import geniusweb.boa.BoaState;
@@ -12,5 +15,6 @@
 /**
  * Simple implementation similar to the {@link TimeDependentBiddingStrategy}.
- * Uses 4 parameters:
+ * Accepts if the last placed offer is &ge; {@link #p(double)}. Uses 4
+ * parameters:
  * <ul>
  * <li>e: the exponent for the target-utility function. See {@link #f(double)}
@@ -22,8 +26,12 @@
 public class TimeDependentAcceptanceStrategy implements AcceptanceStrategy {
 
-	private Double min = null, max = null, e = null, k = null;
+	private transient Double min = null, max = null, e = null, k = null; // cache
 
 	@Override
-	public Boolean isAcceptable(Bid bid, BoaState state) {
+	public Action filter(Action action, BoaState state) {
+		Offer lastOffer = state.getLastReceivedOffer();
+		if (lastOffer == null || !(action instanceof Offer))
+			return action;
+		Bid bid = lastOffer.getBid();
 		if (min == null || max == null || e == null || k == null) {
 			min = getMin(state);
@@ -35,6 +43,8 @@
 				state.getProgress().get(System.currentTimeMillis()));
 		// we subtract epsilon because of rounding errors in computation.
-		return ((UtilitySpace) state.getProfile()).getUtility(bid)
-				.doubleValue() >= targetUtil - 0.0000001;
+		if (((UtilitySpace) state.getProfile()).getUtility(bid)
+				.doubleValue() >= targetUtil - 0.0000001)
+			return new Accept(state.getSettings().getID(), bid);
+		return action;
 	}
 
Index: /boa/src/main/java/geniusweb/boa/biddingstrategy/BiddingStrategy.java
===================================================================
--- /boa/src/main/java/geniusweb/boa/biddingstrategy/BiddingStrategy.java	(revision 32)
+++ /boa/src/main/java/geniusweb/boa/biddingstrategy/BiddingStrategy.java	(revision 33)
@@ -1,11 +1,16 @@
 package geniusweb.boa.biddingstrategy;
 
+import geniusweb.actions.Accept;
 import geniusweb.actions.Action;
+import geniusweb.actions.EndNegotiation;
+import geniusweb.actions.Offer;
 import geniusweb.boa.BoaParty;
 import geniusweb.boa.BoaState;
+import geniusweb.boa.acceptancestrategy.AcceptanceStrategy;
 import geniusweb.inform.Settings;
 
 /**
- * Determines what action to take in which state.
+ * Determines what action to take in which state. The protocol to be supported
+ * is SAOP.
  * <p>
  * Assumed part of a {@link BoaParty}.
@@ -13,4 +18,9 @@
  * <p>
  * <em>MUST</em> have an empty constructor.
+ * <h2>More info</h2> Baarslag T., Hindriks K.V., Hendrikx M., Dirkzwager A.,
+ * Jonker C.M. Decoupling Negotiating Agents to Explore the Space of Negotiation
+ * Strategies. Proceedings of The Fifth International Workshop on Agent-based
+ * Complex Automated Negotiations (ACAN 2012), 2012.
+ * ​https://homepages.cwi.nl/~baarslag/pub/Decoupling_Negotiating_Agents_to_Explore_the_Space_of_Negotiation_Strategies_ACAN_2012.pdf
  */
 public interface BiddingStrategy {
@@ -28,5 +38,8 @@
 	 * 
 	 * @return the suggested next Action. Should always return a valid action,
-	 *         not null.
+	 *         not null. Typically this generates only {@link Offer}s (and maybe
+	 *         {@link EndNegotiation}. The subsequent {@link AcceptanceStrategy}
+	 *         will replace {@link Offer}s with {@link Accept}s as needed.
+	 * 
 	 */
 	Action getAction(BoaState state);
Index: /boa/src/main/java/geniusweb/boa/biddingstrategy/TimeDependentBiddingStrategy.java
===================================================================
--- /boa/src/main/java/geniusweb/boa/biddingstrategy/TimeDependentBiddingStrategy.java	(revision 32)
+++ /boa/src/main/java/geniusweb/boa/biddingstrategy/TimeDependentBiddingStrategy.java	(revision 33)
@@ -2,5 +2,4 @@
 
 import java.math.BigDecimal;
-import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.logging.Level;
@@ -19,8 +18,9 @@
 
 /**
- * This is an abstract class used to implement a TimeDependentAgent Strategy
- * adapted from S. Shaheen Fatima Michael Wooldridge Nicholas R. Jennings
- * Optimal Negotiation Strategies for Agents with Incomplete Information
- * http://eprints.ecs.soton.ac.uk/6151/1/atal01.pdf
+ * This places offers in a time-dependent-only way, monotonically decreasing the
+ * utility of the offers according to the given parameters. Implements a
+ * TimeDependentAgent Strategy adapted from S. Shaheen Fatima Michael Wooldridge
+ * Nicholas R. Jennings Optimal Negotiation Strategies for Agents with
+ * Incomplete Information http://eprints.ecs.soton.ac.uk/6151/1/atal01.pdf
  * <p>
  * Required: the profile is {@link LinearAdditive}. Does not currently handle
@@ -69,11 +69,11 @@
 
 		if (bidOptions.size().intValue() == 0) {
-			// should not happen, emergency exit
+			// should not happen unless profile is broken, emergency exit
 			state.getReporter().log(Level.WARNING,
 					"No viable bids found around current utility target");
-			Bid lastBid = getLastBid(state.getActionHistory());
-			if (lastBid == null)
+			Offer lastOffer = state.getLastReceivedOffer();
+			if (lastOffer == null)
 				return new EndNegotiation(me);
-			return new Accept(me, lastBid);
+			return new Accept(me, lastOffer.getBid());
 		}
 		Bid pickedBid = bidOptions.get(ThreadLocalRandom.current()
@@ -152,17 +152,17 @@
 	}
 
-	/**
-	 * @return the most recent bid that was offered, or null if no offer has
-	 *         been done yet.
-	 */
-	private Bid getLastBid(List<Action> history) {
-		for (int n = history.size() - 1; n >= 0; n--) {
-			Action action = history.get(n);
-			if (action instanceof Offer) {
-				return ((Offer) action).getBid();
-			}
-		}
-		return null;
-	}
+//	/**
+//	 * @return the most recent bid that was offered, or null if no offer has
+//	 *         been done yet.
+//	 */
+//	private Bid getLastBid(List<Action> history) {
+//		for (int n = history.size() - 1; n >= 0; n--) {
+//			Action action = history.get(n);
+//			if (action instanceof Offer) {
+//				return ((Offer) action).getBid();
+//			}
+//		}
+//		return null;
+//	}
 
 	/**
Index: /boa/src/test/java/geniusweb/boa/BoaPartyTest.java
===================================================================
--- /boa/src/test/java/geniusweb/boa/BoaPartyTest.java	(revision 32)
+++ /boa/src/test/java/geniusweb/boa/BoaPartyTest.java	(revision 33)
@@ -6,4 +6,6 @@
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
@@ -13,4 +15,5 @@
 import java.util.LinkedList;
 import java.util.List;
+import java.util.logging.Level;
 
 import org.junit.Test;
@@ -38,4 +41,6 @@
 import geniusweb.references.Reference;
 import tudelft.utilities.listener.DefaultListenable;
+import tudelft.utilities.logging.ReportToLogger;
+import tudelft.utilities.logging.Reporter;
 
 public class BoaPartyTest {
@@ -56,7 +61,10 @@
 	@Test(expected = RuntimeException.class)
 	public void smokeTestMissingInit() {
-		BoaParty boa = new BoaParty();
+
+		Reporter reporter = spy(new ReportToLogger("test"));
+		BoaParty boa = new BoaParty(reporter);
 		boa.connect(connection);
 		boa.notifyChange(mock(ActionDone.class));
+		verify(reporter, times(1)).log(Level.SEVERE, any());
 	}
 
@@ -83,6 +91,5 @@
 		boa.notifyChange(info);
 		// weird bug in Mockito? Work around with a weird cast...
-		verify(state).with(eq(info), any(bsMock.class), any(asMock.class),
-				eq(omMock.class));
+		verify(state).with(eq(info), eq(omMock.class));
 	}
 
@@ -107,7 +114,7 @@
 		assertEquals(1, connection.getActions().size());
 		System.out.println("party did action:" + connection.getActions());
-		// this should come out of bidding strat as there is no acceptable offer
-		// Because asMock always accepts, this should accept.
-		assertTrue(connection.getActions().get(0) instanceof Accept);
+		// The mock offerstrat gives an offer.
+		// the mock acceptstrat just passes on the offer.
+		assertTrue(connection.getActions().get(0) instanceof Offer);
 	}
 
@@ -121,5 +128,5 @@
 		boa.notifyChange(new ActionDone(othersOffer));
 		boa.notifyChange(new ActionDone(accept));
-		assertEquals(otherBid, boa.getLastBid());
+		assertEquals(otherBid, boa.getState().getLastReceivedOffer().getBid());
 
 	}
@@ -147,6 +154,6 @@
 
 	@Override
-	public Boolean isAcceptable(Bid bid, BoaState negoState) {
-		return true;
+	public Action filter(Action action, BoaState boaState) {
+		return action;
 	}
 
Index: /boa/src/test/java/geniusweb/boa/acceptancestrategy/TimeDepAccStratTest.java
===================================================================
--- /boa/src/test/java/geniusweb/boa/acceptancestrategy/TimeDepAccStratTest.java	(revision 32)
+++ /boa/src/test/java/geniusweb/boa/acceptancestrategy/TimeDepAccStratTest.java	(revision 33)
@@ -13,4 +13,7 @@
 import org.junit.Test;
 
+import geniusweb.actions.Accept;
+import geniusweb.actions.Offer;
+import geniusweb.actions.PartyId;
 import geniusweb.bidspace.BidsWithUtility;
 import geniusweb.bidspace.Interval;
@@ -32,4 +35,5 @@
 	private final Settings settings = mock(Settings.class);
 	private final LinearAdditive linearprofile = mock(LinearAdditive.class);
+	private PartyId party = new PartyId("someparty");
 
 	@Before
@@ -60,5 +64,5 @@
 				.thenReturn(BigDecimal.valueOf(0.4));
 
-		assertFalse(ac.isAcceptable(bid1, state));
+		assertFalse(ac.filter(new Offer(party, bid1), state) instanceof Accept);
 	}
 
@@ -81,6 +85,6 @@
 		when(linearprofile.getUtility(eq(bid1)))
 				.thenReturn(new BigDecimal("0.4")); // now =max util
-
-		assertTrue(ac.isAcceptable(bid1, state));
+		when(state.getLastReceivedOffer()).thenReturn(new Offer(party, bid1));
+		assertTrue(ac.filter(new Offer(party, bid1), state) instanceof Accept);
 	}
 
@@ -100,8 +104,10 @@
 		when(progress.get(any())).thenReturn(1.0d);
 
+		when(state.getLastReceivedOffer()).thenReturn(new Offer(party, bid1));
 		when(linearprofile.getUtility(eq(bid1)))
 				.thenReturn(BigDecimal.valueOf(0.4));
 
-		assertTrue(ac.isAcceptable(bid1, state));
+		when(state.getLastReceivedOffer()).thenReturn(new Offer(party, bid1));
+		assertTrue(ac.filter(new Offer(party, bid1), state) instanceof Accept);
 	}
 
@@ -132,5 +138,6 @@
 
 		// bid1 has util 0.4 which is below res value.
-		assertFalse(ac.isAcceptable(bid1, state));
+		when(state.getLastReceivedOffer()).thenReturn(new Offer(party, bid1));
+		assertFalse(ac.filter(new Offer(party, bid1), state) instanceof Accept);
 	}
 
Index: /boa/src/test/resources/testprofile.json
===================================================================
--- /boa/src/test/resources/testprofile.json	(revision 32)
+++ /boa/src/test/resources/testprofile.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"issue2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 12,
 					"lowUtility": 0.3,
@@ -11,5 +11,5 @@
 			},
 			"issue1": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"issue1value1": 0.2,
@@ -27,9 +27,5 @@
 			"issuesValues": {
 				"issue2": {
-					"range": [
-						"12",
-						"18",
-						"1"
-					]
+					"range": { "low":12,"high":18,"step":1 }
 				},
 				"issue1": {
Index: /collectparties.sh
===================================================================
--- /collectparties.sh	(revision 32)
+++ /collectparties.sh	(revision 33)
@@ -7,5 +7,5 @@
 rm -rf collectedparties
 mkdir collectedparties
-VERSION=1.6.1
+VERSION=2.0.0
 
 cp "exampleparties/anac2019/agentgg/target/agentgg-${VERSION}-jar-with-dependencies.jar" collectedparties
Index: /events/pom.xml
===================================================================
--- /events/pom.xml	(revision 32)
+++ /events/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>events</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -122,10 +122,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -176,5 +171,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /events/src/main/java/geniusweb/actions/Accept.java
===================================================================
--- /events/src/main/java/geniusweb/actions/Accept.java	(revision 32)
+++ /events/src/main/java/geniusweb/actions/Accept.java	(revision 33)
@@ -3,5 +3,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 import geniusweb.issuevalue.Bid;
@@ -12,5 +11,4 @@
  * {@link Offer}ed by some party.
  */
-@JsonTypeName("accept")
 public class Accept extends ActionWithBid {
 
Index: /events/src/main/java/geniusweb/actions/EndNegotiation.java
===================================================================
--- /events/src/main/java/geniusweb/actions/EndNegotiation.java	(revision 32)
+++ /events/src/main/java/geniusweb/actions/EndNegotiation.java	(revision 33)
@@ -3,5 +3,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 /**
@@ -9,5 +8,4 @@
  *
  */
-@JsonTypeName("endnegotiation")
 public class EndNegotiation extends AbstractAction {
 
Index: /events/src/main/java/geniusweb/actions/FileLocation.java
===================================================================
--- /events/src/main/java/geniusweb/actions/FileLocation.java	(revision 32)
+++ /events/src/main/java/geniusweb/actions/FileLocation.java	(revision 33)
@@ -43,11 +43,4 @@
 	@JsonCreator
 	public FileLocation(UUID name) {
-		this.name = name;
-	}
-
-	/**
-	 * Default constructor creates a new "random" FileLocation.
-	 */
-	public FileLocation() {
 		if (!rootfolder.exists()) {
 			rootfolder.mkdir();
@@ -55,9 +48,16 @@
 					.println("created FileLocation root dir at " + rootfolder);
 		}
-		this.name = UUID.randomUUID();
+
+		this.name = name;
 	}
 
 	/**
-	 * 
+	 * Creates a new "random" FileLocation.
+	 */
+	public FileLocation() {
+		this(UUID.randomUUID());
+	}
+
+	/**
 	 * @return the UUID string
 	 */
Index: /events/src/main/java/geniusweb/actions/Offer.java
===================================================================
--- /events/src/main/java/geniusweb/actions/Offer.java	(revision 32)
+++ /events/src/main/java/geniusweb/actions/Offer.java	(revision 33)
@@ -3,5 +3,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 import geniusweb.issuevalue.Bid;
@@ -12,5 +11,4 @@
  * accepts the offer himself.
  */
-@JsonTypeName("offer")
 public class Offer extends ActionWithBid {
 
Index: /events/src/main/java/geniusweb/actions/Vote.java
===================================================================
--- /events/src/main/java/geniusweb/actions/Vote.java	(revision 32)
+++ /events/src/main/java/geniusweb/actions/Vote.java	(revision 33)
@@ -3,5 +3,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 import geniusweb.issuevalue.Bid;
@@ -11,5 +10,4 @@
  * then up to the protocol to determine the outcome.
  */
-@JsonTypeName("vote")
 public class Vote extends ActionWithBid {
 	private final Integer minPower;
Index: /events/src/main/java/geniusweb/actions/VoteWithValue.java
===================================================================
--- /events/src/main/java/geniusweb/actions/VoteWithValue.java	(revision 32)
+++ /events/src/main/java/geniusweb/actions/VoteWithValue.java	(revision 33)
@@ -3,5 +3,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 import geniusweb.issuevalue.Bid;
@@ -11,5 +10,4 @@
  * then up to the protocol to determine the outcome.
  */
-@JsonTypeName("votewithvalue")
 public class VoteWithValue extends ActionWithBid {
 	private final Integer minPower;
Index: /events/src/main/java/geniusweb/events/ActionEvent.java
===================================================================
--- /events/src/main/java/geniusweb/events/ActionEvent.java	(revision 32)
+++ /events/src/main/java/geniusweb/events/ActionEvent.java	(revision 33)
@@ -3,5 +3,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 import geniusweb.actions.Action;
@@ -11,5 +10,4 @@
  *
  */
-@JsonTypeName("actionevent")
 public class ActionEvent extends AbstractEvent {
 
Index: /events/src/main/java/geniusweb/events/SessionStarted.java
===================================================================
--- /events/src/main/java/geniusweb/events/SessionStarted.java	(revision 32)
+++ /events/src/main/java/geniusweb/events/SessionStarted.java	(revision 33)
@@ -5,9 +5,7 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 import geniusweb.actions.PartyId;
 
-@JsonTypeName("sessionstarted")
 public class SessionStarted extends ProtocolEvent {
 	private Long sessionNumber;
Index: /events/src/main/java/geniusweb/events/TournamentStarted.java
===================================================================
--- /events/src/main/java/geniusweb/events/TournamentStarted.java	(revision 32)
+++ /events/src/main/java/geniusweb/events/TournamentStarted.java	(revision 33)
@@ -1,7 +1,4 @@
 package geniusweb.events;
 
-import com.fasterxml.jackson.annotation.JsonTypeName;
-
-@JsonTypeName("tournamentstarted")
 public class TournamentStarted extends ProtocolEvent {
 	private Long numberOfSessions;
Index: /events/src/main/java/geniusweb/inform/Finished.java
===================================================================
--- /events/src/main/java/geniusweb/inform/Finished.java	(revision 32)
+++ /events/src/main/java/geniusweb/inform/Finished.java	(revision 33)
@@ -24,5 +24,5 @@
 	}
 
-	public Agreements getAgreement() {
+	public Agreements getAgreements() {
 		return agreements;
 	}
Index: /events/src/test/java/geniusweb/actions/AcceptTest.java
===================================================================
--- /events/src/test/java/geniusweb/actions/AcceptTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/actions/AcceptTest.java	(revision 33)
@@ -36,5 +36,5 @@
 	private final static Value VALUE2 = new NumberValue("10");
 	// issue 2 is NUMBER and thus serializes with leading '='
-	private final String acceptstring = "{\"accept\":{\"actor\":\"party1\",\"bid\":{\"issuevalues\":{\"issue2\":10,\"issue1\":\"value1\"}}}}";
+	private final String acceptstring = "{\"Accept\":{\"actor\":\"party1\",\"bid\":{\"issuevalues\":{\"issue2\":10,\"issue1\":\"value1\"}}}}";
 
 	private static Accept accept, accept1, accept2, acceptb;
Index: /events/src/test/java/geniusweb/actions/EndNegoTest.java
===================================================================
--- /events/src/test/java/geniusweb/actions/EndNegoTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/actions/EndNegoTest.java	(revision 33)
@@ -24,5 +24,5 @@
 	private final EndNegotiation endnegob = new EndNegotiation(idb);
 
-	private final String endnegostring = "{\"endnegotiation\":{\"actor\":\"party1\"}}";
+	private final String endnegostring = "{\"EndNegotiation\":{\"actor\":\"party1\"}}";
 
 	@Override
Index: /events/src/test/java/geniusweb/actions/OfferTest.java
===================================================================
--- /events/src/test/java/geniusweb/actions/OfferTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/actions/OfferTest.java	(revision 33)
@@ -32,5 +32,5 @@
 	private static final String ISSUE2 = "issue2";
 	private static final Value VALUE2 = new NumberValue("10");
-	private static final String acceptstring = "{\"offer\":{\"actor\":\"party1\",\"bid\":{\"issuevalues\":{\"issue2\":10,\"issue1\":\"value1\"}}}}";
+	private static final String acceptstring = "{\"Offer\":{\"actor\":\"party1\",\"bid\":{\"issuevalues\":{\"issue2\":10,\"issue1\":\"value1\"}}}}";
 
 	private static Offer offer;
Index: /events/src/test/java/geniusweb/actions/VoteTest.java
===================================================================
--- /events/src/test/java/geniusweb/actions/VoteTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/actions/VoteTest.java	(revision 33)
@@ -35,5 +35,5 @@
 	private final static Value VALUE2 = new NumberValue("10");
 	// issue 2 is NUMBER and thus serializes with leading '='
-	private final String votestring = "{\"vote\":{\"actor\":\"party1\",\"bid\":{\"issuevalues\":{\"issue2\":10,\"issue1\":\"value1\"}},\"minPower\":1,\"maxPower\":2}}";
+	private final String votestring = "{\"Vote\":{\"actor\":\"party1\",\"bid\":{\"issuevalues\":{\"issue2\":10,\"issue1\":\"value1\"}},\"minPower\":1,\"maxPower\":2}}";
 
 	private static Vote vote1, vote1a, vote2, vote3, vote4, vote5;
Index: /events/src/test/java/geniusweb/actions/VoteWithValueTest.java
===================================================================
--- /events/src/test/java/geniusweb/actions/VoteWithValueTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/actions/VoteWithValueTest.java	(revision 33)
@@ -35,5 +35,5 @@
 	private final static Value VALUE2 = new NumberValue("10");
 	// issue 2 is NUMBER and thus serializes with leading '='
-	private final String votestring = "{\"votewithvalue\":{\"actor\":\"party1\",\"bid\":{\"issuevalues\":{\"issue2\":10,\"issue1\":\"value1\"}},\"minPower\":1,\"maxPower\":2,\"value\":10}}";
+	private final String votestring = "{\"VoteWithValue\":{\"actor\":\"party1\",\"bid\":{\"issuevalues\":{\"issue2\":10,\"issue1\":\"value1\"}},\"minPower\":1,\"maxPower\":2,\"value\":10}}";
 
 	private static VoteWithValue vote1, vote1a, vote2, vote3, vote4, vote5,
Index: /events/src/test/java/geniusweb/actions/VotesTest.java
===================================================================
--- /events/src/test/java/geniusweb/actions/VotesTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/actions/VotesTest.java	(revision 33)
@@ -22,5 +22,5 @@
 public class VotesTest extends GeneralTests<Votes> {
 	private final ObjectMapper jackson = new ObjectMapper();
-	private final String votestring = "{\"Votes\":{\"actor\":\"partyA\",\"votes\":[{\"vote\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"is1\":\"val1\"}},\"minPower\":2,\"maxPower\":9}},{\"vote\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"is1\":\"val2\"}},\"minPower\":2,\"maxPower\":9}}]}}";
+	private final String votestring = "{\"Votes\":{\"actor\":\"partyA\",\"votes\":[{\"Vote\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"is1\":\"val1\"}},\"minPower\":2,\"maxPower\":9}},{\"Vote\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"is1\":\"val2\"}},\"minPower\":2,\"maxPower\":9}}]}}";
 
 	private PartyId partyA = new PartyId("partyA");
Index: /events/src/test/java/geniusweb/actions/VotesWithValueTest.java
===================================================================
--- /events/src/test/java/geniusweb/actions/VotesWithValueTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/actions/VotesWithValueTest.java	(revision 33)
@@ -22,5 +22,5 @@
 public class VotesWithValueTest extends GeneralTests<VotesWithValue> {
 	private final ObjectMapper jackson = new ObjectMapper();
-	private final String votestring = "{\"VotesWithValue\":{\"actor\":\"partyA\",\"votes\":[{\"votewithvalue\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"is1\":\"val1\"}},\"minPower\":2,\"maxPower\":9,\"value\":30}},{\"votewithvalue\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"is1\":\"val2\"}},\"minPower\":2,\"maxPower\":9,\"value\":70}}]}}";
+	private final String votestring = "{\"VotesWithValue\":{\"actor\":\"partyA\",\"votes\":[{\"VoteWithValue\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"is1\":\"val1\"}},\"minPower\":2,\"maxPower\":9,\"value\":30}},{\"VoteWithValue\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"is1\":\"val2\"}},\"minPower\":2,\"maxPower\":9,\"value\":70}}]}}";
 
 	private PartyId partyA = new PartyId("partyA");
Index: /events/src/test/java/geniusweb/events/ActionEventTest.java
===================================================================
--- /events/src/test/java/geniusweb/events/ActionEventTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/events/ActionEventTest.java	(revision 33)
@@ -21,5 +21,5 @@
 	private static final long NOW = 101l;
 	private final ObjectMapper jackson = new ObjectMapper();
-	private final String string = "{\"actionevent\":{\"action\":{\"endnegotiation\":{\"actor\":\"party1\"}},\"time\":101}}";
+	private final String string = "{\"ActionEvent\":{\"action\":{\"EndNegotiation\":{\"actor\":\"party1\"}},\"time\":101}}";
 	private final PartyId id = new PartyId("party1");
 	private final Action action = new EndNegotiation(id);
Index: /events/src/test/java/geniusweb/events/SessionStartedTest.java
===================================================================
--- /events/src/test/java/geniusweb/events/SessionStartedTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/events/SessionStartedTest.java	(revision 33)
@@ -41,5 +41,5 @@
 			SESSIONNR, parties, NOW);
 	// jackson expected format.
-	private static String sessionstartedstring = "{\"sessionstarted\":{\"sessionNumber\":1,\"parties\":[\"party1\",\"party2\"],\"time\":101}}";
+	private static String sessionstartedstring = "{\"SessionStarted\":{\"sessionNumber\":1,\"parties\":[\"party1\",\"party2\"],\"time\":101}}";
 	// "{\"sessionstarted\":{\"time\":101,\"sessionNumber\":1,\"parties\":[\"party1\",\"party2\"]}}";
 	public static String expectedstring = "SessionStarted.*101.*";
Index: /events/src/test/java/geniusweb/events/TournamentStartedTest.java
===================================================================
--- /events/src/test/java/geniusweb/events/TournamentStartedTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/events/TournamentStartedTest.java	(revision 33)
@@ -33,5 +33,5 @@
 			NSESSIONS, NOW1);
 
-	private String tournamentstartedstring = "{\"tournamentstarted\":{\"time\":101,\"numberOfSessions\":5}}";
+	private String tournamentstartedstring = "{\"TournamentStarted\":{\"time\":101,\"numberOfSessions\":5}}";
 
 	@Override
Index: /events/src/test/java/geniusweb/inform/ActionDoneTest.java
===================================================================
--- /events/src/test/java/geniusweb/inform/ActionDoneTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/inform/ActionDoneTest.java	(revision 33)
@@ -24,5 +24,5 @@
 	private static final PartyId id2 = new PartyId("party2");
 
-	private final String actiondonestr = "{\"ActionDone\":{\"action\":{\"endnegotiation\":{\"actor\":\"party1\"}}}}";
+	private final String actiondonestr = "{\"ActionDone\":{\"action\":{\"EndNegotiation\":{\"actor\":\"party1\"}}}}";
 
 	private final static Action act1 = new EndNegotiation(id);
Index: /events/src/test/java/geniusweb/inform/OptInTest.java
===================================================================
--- /events/src/test/java/geniusweb/inform/OptInTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/inform/OptInTest.java	(revision 33)
@@ -42,5 +42,5 @@
 	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,\"maxPower\":9}}]}},{\"Votes\":{\"actor\":\"partyB\",\"votes\":[{\"vote\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val2\"}},\"minPower\":2,\"maxPower\":9}},{\"vote\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}},\"minPower\":2,\"maxPower\":9}}]}}]}}";
+	private String asJson = "{\"OptIn\":{\"votes\":[{\"Votes\":{\"actor\":\"partyA\",\"votes\":[{\"Vote\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}},\"minPower\":2,\"maxPower\":9}}]}},{\"Votes\":{\"actor\":\"partyB\",\"votes\":[{\"Vote\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val2\"}},\"minPower\":2,\"maxPower\":9}},{\"Vote\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}},\"minPower\":2,\"maxPower\":9}}]}}]}}";
 
 	@Override
Index: /events/src/test/java/geniusweb/inform/OptInWithValueTest.java
===================================================================
--- /events/src/test/java/geniusweb/inform/OptInWithValueTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/inform/OptInWithValueTest.java	(revision 33)
@@ -49,5 +49,5 @@
 			Arrays.asList(votesA));
 
-	private String asJson = "{\"OptInWithValue\":{\"votes\":[{\"VotesWithValue\":{\"actor\":\"partyA\",\"votes\":[{\"votewithvalue\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}},\"minPower\":2,\"maxPower\":9,\"value\":100}}]}},{\"VotesWithValue\":{\"actor\":\"partyB\",\"votes\":[{\"votewithvalue\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}},\"minPower\":2,\"maxPower\":9,\"value\":60}},{\"votewithvalue\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val2\"}},\"minPower\":2,\"maxPower\":9,\"value\":40}}]}}]}}";
+	private String asJson = "{\"OptInWithValue\":{\"votes\":[{\"VotesWithValue\":{\"actor\":\"partyA\",\"votes\":[{\"VoteWithValue\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}},\"minPower\":2,\"maxPower\":9,\"value\":100}}]}},{\"VotesWithValue\":{\"actor\":\"partyB\",\"votes\":[{\"VoteWithValue\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}},\"minPower\":2,\"maxPower\":9,\"value\":60}},{\"VoteWithValue\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val2\"}},\"minPower\":2,\"maxPower\":9,\"value\":40}}]}}]}}";
 
 	@Override
Index: /events/src/test/java/geniusweb/inform/SettingsTest.java
===================================================================
--- /events/src/test/java/geniusweb/inform/SettingsTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/inform/SettingsTest.java	(revision 33)
@@ -36,5 +36,5 @@
 			+ "{\"id\":\"party1\",\"profile\":\"ws:profile1\","
 			+ "\"protocol\":\"ws:localhost/protocol1\","
-			+ "\"progress\":{\"rounds\":{\"duration\":10,\"currentRound\":0,\"endtime\":999}},"
+			+ "\"progress\":{\"ProgressRounds\":{\"duration\":10,\"currentRound\":0,\"endtime\":999}},"
 			+ "\"parameters\":{}}}";
 
Index: /events/src/test/java/geniusweb/inform/VotingTest.java
===================================================================
--- /events/src/test/java/geniusweb/inform/VotingTest.java	(revision 32)
+++ /events/src/test/java/geniusweb/inform/VotingTest.java	(revision 33)
@@ -40,5 +40,5 @@
 			Arrays.asList(new Offer(party1, bid1)), powers2);
 
-	private String asJson = "{\"Voting\":{\"offers\":[{\"offer\":{\"actor\":\"party1\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}}}}],\"powers\":{\"party1\":2}}}";
+	private String asJson = "{\"Voting\":{\"offers\":[{\"Offer\":{\"actor\":\"party1\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}}}}],\"powers\":{\"party1\":2}}}";
 
 	@Override
Index: /exampleparties/anac2019/agentgg/pom.xml
===================================================================
--- /exampleparties/anac2019/agentgg/pom.xml	(revision 32)
+++ /exampleparties/anac2019/agentgg/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties.anac2019</groupId>
 	<artifactId>agentgg</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -58,7 +58,7 @@
 		</dependency>
 		<dependency>
-			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<groupId>tudelft.utilities</groupId> 
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 
@@ -146,10 +146,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -211,5 +206,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/anac2019/agentgg/src/main/java/geniusweb/exampleparties/agentgg/AgentGG.java
===================================================================
--- /exampleparties/anac2019/agentgg/src/main/java/geniusweb/exampleparties/agentgg/AgentGG.java	(revision 32)
+++ /exampleparties/anac2019/agentgg/src/main/java/geniusweb/exampleparties/agentgg/AgentGG.java	(revision 33)
@@ -100,4 +100,5 @@
 			} else if (info instanceof Finished) {
 				getReporter().log(Level.INFO, "Final ourcome:" + info);
+				terminate(); // stop this party and free resources.
 			}
 		} catch (Exception e) {
Index: /exampleparties/anac2019/winkyagent/pom.xml
===================================================================
--- /exampleparties/anac2019/winkyagent/pom.xml	(revision 32)
+++ /exampleparties/anac2019/winkyagent/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties.anac2019</groupId>
 	<artifactId>winkyagent</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -59,6 +59,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 
@@ -145,10 +145,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -210,5 +205,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/anac2019/winkyagent/src/main/java/geniusweb/exampleparties/anac2019/winkyagent/WinkyAgent.java
===================================================================
--- /exampleparties/anac2019/winkyagent/src/main/java/geniusweb/exampleparties/anac2019/winkyagent/WinkyAgent.java	(revision 32)
+++ /exampleparties/anac2019/winkyagent/src/main/java/geniusweb/exampleparties/anac2019/winkyagent/WinkyAgent.java	(revision 33)
@@ -100,4 +100,5 @@
 			} else if (info instanceof Finished) {
 				getReporter().log(Level.INFO, "Final ourcome:" + info);
+				terminate(); // stop this party and free resources.
 			}
 		} catch (Exception e) {
Index: /exampleparties/boulware/pom.xml
===================================================================
--- /exampleparties/boulware/pom.xml	(revision 32)
+++ /exampleparties/boulware/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>boulware</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -58,10 +58,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -125,5 +120,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/comparebids/pom.xml
===================================================================
--- /exampleparties/comparebids/pom.xml	(revision 32)
+++ /exampleparties/comparebids/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>comparebids</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -54,6 +54,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 
@@ -140,10 +140,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -207,5 +202,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/comparebids/src/main/java/geniusweb/exampleparties/comparebids/CompareBids.java
===================================================================
--- /exampleparties/comparebids/src/main/java/geniusweb/exampleparties/comparebids/CompareBids.java	(revision 32)
+++ /exampleparties/comparebids/src/main/java/geniusweb/exampleparties/comparebids/CompareBids.java	(revision 33)
@@ -57,4 +57,5 @@
 				}
 			} else if (info instanceof Finished) {
+				terminate(); // stop this party and free resources.
 			} else {
 				reporter.log(Level.WARNING, "COB party ignores " + info);
Index: /exampleparties/comparebids/src/test/resources/testprofile.json
===================================================================
--- /exampleparties/comparebids/src/test/resources/testprofile.json	(revision 32)
+++ /exampleparties/comparebids/src/test/resources/testprofile.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"issue2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 12,
 					"lowUtility": 0.3,
@@ -11,5 +11,5 @@
 			},
 			"issue1": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"issue1value1": 0.2,
@@ -27,9 +27,5 @@
 			"issuesValues": {
 				"issue2": {
-					"range": [
-						"12",
-						"18",
-						"1"
-					]
+					"range": { "low":12,"high":18,"step":1 }
 				},
 				"issue1": {
Index: /exampleparties/conceder/pom.xml
===================================================================
--- /exampleparties/conceder/pom.xml	(revision 32)
+++ /exampleparties/conceder/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>conceder</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -58,10 +58,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -125,5 +120,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/hardliner/pom.xml
===================================================================
--- /exampleparties/hardliner/pom.xml	(revision 32)
+++ /exampleparties/hardliner/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>hardliner</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -58,10 +58,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -125,5 +120,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/humangui/pom.xml
===================================================================
--- /exampleparties/humangui/pom.xml	(revision 32)
+++ /exampleparties/humangui/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>humangui</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -134,10 +134,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -200,5 +195,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/humangui/src/test/resources/testprofile.json
===================================================================
--- /exampleparties/humangui/src/test/resources/testprofile.json	(revision 32)
+++ /exampleparties/humangui/src/test/resources/testprofile.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"issue2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 12,
 					"lowUtility": 0.3,
@@ -11,5 +11,5 @@
 			},
 			"issue1": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"issue1value1": 0.2,
@@ -27,9 +27,5 @@
 			"issuesValues": {
 				"issue2": {
-					"range": [
-						"12",
-						"18",
-						"1"
-					]
+					"range": { "low":12,"high":18,"step":1 }
 				},
 				"issue1": {
Index: /exampleparties/humangui/src/test/resources/testprofile2.json
===================================================================
--- /exampleparties/humangui/src/test/resources/testprofile2.json	(revision 32)
+++ /exampleparties/humangui/src/test/resources/testprofile2.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"issue2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 12,
 					"lowUtility": 0.3,
@@ -11,5 +11,5 @@
 			},
 			"issue3": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"issue3value1": 0.2,
@@ -27,9 +27,5 @@
 			"issuesValues": {
 				"issue2": {
-					"range": [
-						"12",
-						"18",
-						"1"
-					]
+					"range": 	{"low":12,"high":18,"step":1}
 				},
 				"issue3": {
Index: /exampleparties/linear/pom.xml
===================================================================
--- /exampleparties/linear/pom.xml	(revision 32)
+++ /exampleparties/linear/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>linear</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -58,10 +58,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -82,4 +77,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-source-plugin</artifactId>
+				<version>3.1.0</version>
 				<executions>
 					<execution>
@@ -122,5 +118,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/randomparty/pom.xml
===================================================================
--- /exampleparties/randomparty/pom.xml	(revision 32)
+++ /exampleparties/randomparty/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>randomparty</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -54,6 +54,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 
@@ -140,10 +140,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -206,5 +201,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java
===================================================================
--- /exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java	(revision 32)
+++ /exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java	(revision 33)
@@ -85,14 +85,14 @@
 		try {
 			if (info instanceof Settings) {
-				Settings settings = (Settings) info;
-				this.me = settings.getID();
-				this.progress = settings.getProgress();
-				this.settings = settings;
-				this.protocol = settings.getProtocol().getURI().getPath();
+				Settings sett = (Settings) info;
+				this.me = sett.getID();
+				this.progress = sett.getProgress();
+				this.settings = sett;
+				this.protocol = sett.getProtocol().getURI().getPath();
 				if ("Learn".equals(protocol)) {
 					getConnection().send(new LearningDone(me));
 				} else {
 					this.profileint = ProfileConnectionFactory.create(
-							settings.getProfile().getURI(), getReporter());
+							sett.getProfile().getURI(), getReporter());
 				}
 			} else if (info instanceof ActionDone) {
@@ -130,6 +130,6 @@
 	@Override
 	public Capabilities getCapabilities() {
-		return new Capabilities(
-				new HashSet<>(Arrays.asList("SAOP", "AMOP", "MOPAC", "MOPAC2")),
+		return new Capabilities(new HashSet<>(
+				Arrays.asList("SAOP", "AMOP", "MOPAC", "MOPAC2", "Learn")),
 				Collections.singleton(Profile.class));
 	}
Index: /exampleparties/randomparty/src/test/resources/testprofile.json
===================================================================
--- /exampleparties/randomparty/src/test/resources/testprofile.json	(revision 32)
+++ /exampleparties/randomparty/src/test/resources/testprofile.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"issue2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 12,
 					"lowUtility": 0.3,
@@ -11,5 +11,5 @@
 			},
 			"issue1": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"issue1value1": 0.2,
@@ -27,9 +27,5 @@
 			"issuesValues": {
 				"issue2": {
-					"range": [
-						"12",
-						"18",
-						"1"
-					]
+					"range": { "low":12,"high":18,"step":1 }
 				},
 				"issue1": {
Index: /exampleparties/randompartypy/pom.xml
===================================================================
--- /exampleparties/randompartypy/pom.xml	(revision 32)
+++ /exampleparties/randompartypy/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>randompyparty</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -47,6 +47,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 
@@ -131,10 +131,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -185,5 +180,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/randompartypy/src/test/resources/testprofile.json
===================================================================
--- /exampleparties/randompartypy/src/test/resources/testprofile.json	(revision 32)
+++ /exampleparties/randompartypy/src/test/resources/testprofile.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"issue2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 12,
 					"lowUtility": 0.3,
@@ -11,5 +11,5 @@
 			},
 			"issue1": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"issue1value1": 0.2,
@@ -27,9 +27,5 @@
 			"issuesValues": {
 				"issue2": {
-					"range": [
-						"12",
-						"18",
-						"1"
-					]
+					"range": { "low":12,"high":18,"step":1 }
 				},
 				"issue1": {
Index: /exampleparties/simpleboa/pom.xml
===================================================================
--- /exampleparties/simpleboa/pom.xml	(revision 32)
+++ /exampleparties/simpleboa/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>simpleboaparty</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -78,10 +78,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -143,5 +138,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/simpleboa/src/test/resources/testprofile.json
===================================================================
--- /exampleparties/simpleboa/src/test/resources/testprofile.json	(revision 32)
+++ /exampleparties/simpleboa/src/test/resources/testprofile.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"issue2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 12,
 					"lowUtility": 0.3,
@@ -11,5 +11,5 @@
 			},
 			"issue1": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"issue1value1": 0.2,
@@ -27,9 +27,5 @@
 			"issuesValues": {
 				"issue2": {
-					"range": [
-						"12",
-						"18",
-						"1"
-					]
+					"range": { "low":12,"high":18,"step":1 }
 				},
 				"issue1": {
Index: /exampleparties/simpleshaop/pom.xml
===================================================================
--- /exampleparties/simpleshaop/pom.xml	(revision 32)
+++ /exampleparties/simpleshaop/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>simpleshaop</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -54,6 +54,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 
@@ -140,10 +140,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -205,5 +200,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/simpleshaop/src/main/java/geniusweb/exampleparties/simpleshaop/ShaopParty.java
===================================================================
--- /exampleparties/simpleshaop/src/main/java/geniusweb/exampleparties/simpleshaop/ShaopParty.java	(revision 32)
+++ /exampleparties/simpleshaop/src/main/java/geniusweb/exampleparties/simpleshaop/ShaopParty.java	(revision 33)
@@ -84,4 +84,5 @@
 			} else if (info instanceof Finished) {
 				getReporter().log(Level.INFO, "Final ourcome:" + info);
+				terminate(); // stop this party and free resources.
 			}
 		} catch (Exception e) {
Index: /exampleparties/timedependentparty/pom.xml
===================================================================
--- /exampleparties/timedependentparty/pom.xml	(revision 32)
+++ /exampleparties/timedependentparty/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>timedependentparty</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -54,6 +54,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 
@@ -140,10 +140,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -207,5 +202,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /exampleparties/timedependentparty/src/test/resources/7issues/7issues1.json
===================================================================
--- /exampleparties/timedependentparty/src/test/resources/7issues/7issues1.json	(revision 32)
+++ /exampleparties/timedependentparty/src/test/resources/7issues/7issues1.json	(revision 33)
@@ -4,5 +4,5 @@
 		"issueUtilities": {
 			"i1": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.11,
@@ -13,5 +13,5 @@
 			},
 			"i2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.12,
@@ -22,5 +22,5 @@
 			},
 			"i3": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.13,
@@ -31,5 +31,5 @@
 			},
 			"i4": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.14,
@@ -40,5 +40,5 @@
 			},
 			"i5": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.15,
@@ -49,5 +49,5 @@
 			},
 			"i6": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.16,
@@ -58,5 +58,5 @@
 			},
 			"i7": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.16,
@@ -80,23 +80,23 @@
 			"issuesValues": {
 				"i1": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i2": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i3": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i4": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i5": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i6": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i7": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				}
 			}
Index: /exampleparties/timedependentparty/src/test/resources/9issues/9issues1.json
===================================================================
--- /exampleparties/timedependentparty/src/test/resources/9issues/9issues1.json	(revision 32)
+++ /exampleparties/timedependentparty/src/test/resources/9issues/9issues1.json	(revision 33)
@@ -4,5 +4,5 @@
 		"issueUtilities": {
 			"i1": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.11,
@@ -13,5 +13,5 @@
 			},
 			"i2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.12,
@@ -22,5 +22,5 @@
 			},
 			"i3": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.13,
@@ -31,5 +31,5 @@
 			},
 			"i4": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.14,
@@ -40,5 +40,5 @@
 			},
 			"i5": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.15,
@@ -49,5 +49,5 @@
 			},
 			"i6": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.16,
@@ -58,5 +58,5 @@
 			},
 			"i7": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.16,
@@ -67,5 +67,5 @@
 			},
 			"i8": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.7664,
@@ -77,5 +77,5 @@
 
 			"i9": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 0,
 					"lowUtility": 0.191,
@@ -102,29 +102,29 @@
 			"issuesValues": {
 				"i1": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i2": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i3": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i4": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i5": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i6": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i7": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i8": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				},
 				"i9": {
-					"range": ["0", "9", "1"]
+					"range": {"low":0,"high":9,"step":1}
 				}
 
Index: /exampleparties/timedependentparty/src/test/resources/jobs/jobs1.json
===================================================================
--- /exampleparties/timedependentparty/src/test/resources/jobs/jobs1.json	(revision 32)
+++ /exampleparties/timedependentparty/src/test/resources/jobs/jobs1.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"salary": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"2000": 0,
@@ -14,5 +14,5 @@
 			},
 			"fte": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"0.6": 0.25,
@@ -23,5 +23,5 @@
 			},
 			"work from home": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"0": 0.333333333,
@@ -32,5 +32,5 @@
 			},
 			"lease car": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"yes":1,
@@ -40,5 +40,5 @@
 			},
 			"permanent contract": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"yes":1,
@@ -48,5 +48,5 @@
 			},
 			"career development opportunities": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"low":0,
Index: /exampleparties/timedependentparty/src/test/resources/testprofile.json
===================================================================
--- /exampleparties/timedependentparty/src/test/resources/testprofile.json	(revision 32)
+++ /exampleparties/timedependentparty/src/test/resources/testprofile.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"issue2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 12,
 					"lowUtility": 0.3,
@@ -11,5 +11,5 @@
 			},
 			"issue1": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"issue1value1": 0.2,
@@ -27,9 +27,5 @@
 			"issuesValues": {
 				"issue2": {
-					"range": [
-						"12",
-						"18",
-						"1"
-					]
+					"range": { "low":12,"high":18,"step":1 }
 				},
 				"issue1": {
Index: /ip/pom.xml
===================================================================
--- /ip/pom.xml	(revision 32)
+++ /ip/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>ip</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -57,10 +57,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -101,5 +96,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /issuevalue/pom.xml
===================================================================
--- /issuevalue/pom.xml	(revision 32)
+++ /issuevalue/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>issuevalue</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -92,6 +92,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 
@@ -112,10 +112,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -166,5 +161,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /issuevalue/src/main/java/geniusweb/issuevalue/DiscreteValueSet.java
===================================================================
--- /issuevalue/src/main/java/geniusweb/issuevalue/DiscreteValueSet.java	(revision 32)
+++ /issuevalue/src/main/java/geniusweb/issuevalue/DiscreteValueSet.java	(revision 33)
@@ -11,5 +11,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 import com.fasterxml.jackson.databind.JsonDeserializer;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@@ -20,5 +19,4 @@
  * set of discrete values
  */
-@JsonTypeName("discreteset")
 // disable the inherited deserializer to prevent getting into infinite loop...
 @JsonDeserialize(using = JsonDeserializer.None.class)
Index: /issuevalue/src/main/java/geniusweb/issuevalue/Domain.java
===================================================================
--- /issuevalue/src/main/java/geniusweb/issuevalue/Domain.java	(revision 32)
+++ /issuevalue/src/main/java/geniusweb/issuevalue/Domain.java	(revision 33)
@@ -12,7 +12,5 @@
 
 /**
- * A dmain description. Two domains are equal if they have the same issues in
- * the same order.
- *
+ * A dmain description.
  */
 @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
@@ -27,5 +25,6 @@
 	 * @param shortName a short name for display/toString. This name must
 	 *                  contain simple characters only (a-z, A-Z, 0-9).
-	 * @param issues    the issues, list because order may be important.
+	 * @param issues    the issues, Map with key: the issue name and value:
+	 *                  {@link ValueSet} with the allowed values for the issue.
 	 */
 	@JsonCreator
Index: /issuevalue/src/main/java/geniusweb/issuevalue/NumberValue.java
===================================================================
--- /issuevalue/src/main/java/geniusweb/issuevalue/NumberValue.java	(revision 32)
+++ /issuevalue/src/main/java/geniusweb/issuevalue/NumberValue.java	(revision 33)
@@ -50,5 +50,6 @@
 			if (other.value != null)
 				return false;
-		} else if (!value.equals(other.value))
+		} else if (value.compareTo(other.value) != 0)
+			// MANUAL FIX, DO NOT USE value.equals
 			return false;
 		return true;
Index: /issuevalue/src/main/java/geniusweb/issuevalue/NumberValueSet.java
===================================================================
--- /issuevalue/src/main/java/geniusweb/issuevalue/NumberValueSet.java	(revision 32)
+++ /issuevalue/src/main/java/geniusweb/issuevalue/NumberValueSet.java	(revision 33)
@@ -9,5 +9,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 import com.fasterxml.jackson.databind.JsonDeserializer;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@@ -18,5 +17,4 @@
  * number range from low to high with given step size
  */
-@JsonTypeName("numberset")
 // disable the inherited deserializer to prevent getting into infinite loop...
 @JsonDeserialize(using = JsonDeserializer.None.class)
Index: /issuevalue/src/test/java/geniusweb/issuevalue/DiscreteValueSetTest.java
===================================================================
--- /issuevalue/src/test/java/geniusweb/issuevalue/DiscreteValueSetTest.java	(revision 32)
+++ /issuevalue/src/test/java/geniusweb/issuevalue/DiscreteValueSetTest.java	(revision 33)
@@ -19,7 +19,4 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import geniusweb.issuevalue.DiscreteValue;
-import geniusweb.issuevalue.DiscreteValueSet;
-
 public class DiscreteValueSetTest {
 
@@ -35,5 +32,6 @@
 			valuesReverse);
 	private static final String asString = "{\"values\":[\"a\",\"b\"]}";
-	// private static final String asString = "{\"discreteset\":[\"a\",\"b\"]}";
+	// private static final String asString = "{\"DiscreteValueSet
+	// \":[\"a\",\"b\"]}";
 	private static final String asString1 = "[\"a\",\"b\"]";
 
Index: /issuevalue/src/test/java/geniusweb/issuevalue/DomainTest.java
===================================================================
--- /issuevalue/src/test/java/geniusweb/issuevalue/DomainTest.java	(revision 32)
+++ /issuevalue/src/test/java/geniusweb/issuevalue/DomainTest.java	(revision 33)
@@ -36,5 +36,5 @@
 	private static final String ISSUE3 = "issue3";
 	private static final ObjectMapper jackson = new ObjectMapper();
-	private static final String domainstring = "{\"name\":\"testdomain\",\"issuesValues\":{\"issue2\":{\"range\":[2,3,0.22]},\"issue1\":{\"values\":[\"i1v1\",\"i1v2\"]}}}";
+	private static final String domainstring = "{\"name\":\"testdomain\",\"issuesValues\":{\"issue2\":{\"range\":{\"low\":2,\"high\":3,\"step\":0.22}},\"issue1\":{\"values\":[\"i1v1\",\"i1v2\"]}}}";
 
 	private static final String jobsstring = "{\"name\":\"jobs\","
Index: /issuevalue/src/test/java/geniusweb/issuevalue/NumberValueSetTest.java
===================================================================
--- /issuevalue/src/test/java/geniusweb/issuevalue/NumberValueSetTest.java	(revision 32)
+++ /issuevalue/src/test/java/geniusweb/issuevalue/NumberValueSetTest.java	(revision 33)
@@ -23,14 +23,16 @@
 	private static final BigDecimal TWELVE_SIX = new BigDecimal("12.6");
 	private static final BigDecimal TWELVE_TWO = new BigDecimal("12.2");
-	private final static NumberValueSet set = new NumberValueSet(TWELVE_TWO, TWELVE_SIX, ZERO_THREE);
-	private final static NumberValueSet set1 = new NumberValueSet(TWELVE_TWO, TWELVE_SIX, ZERO_THREE);
-	private final static NumberValueSet setb = new NumberValueSet(TWELVE_TWO, new BigDecimal("12.6000000000001"),
-			ZERO_THREE);
-	private final static NumberValueSet set10 = new NumberValueSet(BigDecimal.ZERO, BigDecimal.ONE,
-			new BigDecimal("0.1"));
+	private final static NumberValueSet set = new NumberValueSet(TWELVE_TWO,
+			TWELVE_SIX, ZERO_THREE);
+	private final static NumberValueSet set1 = new NumberValueSet(TWELVE_TWO,
+			TWELVE_SIX, ZERO_THREE);
+	private final static NumberValueSet setb = new NumberValueSet(TWELVE_TWO,
+			new BigDecimal("12.6000000000001"), ZERO_THREE);
+	private final static NumberValueSet set10 = new NumberValueSet(
+			BigDecimal.ZERO, BigDecimal.ONE, new BigDecimal("0.1"));
 
-	private final String asString = "{\"range\":[12.2,12.6,0.3]}";
-	private final static NumberValueSet bigset = new NumberValueSet(BigDecimal.ZERO, BigDecimal.TEN,
-			new BigDecimal("0.00003"));
+	private final String asString = "{\"range\":{\"low\":12.2,\"high\":12.6,\"step\":0.3}}";
+	private final static NumberValueSet bigset = new NumberValueSet(
+			BigDecimal.ZERO, BigDecimal.TEN, new BigDecimal("0.00003"));
 
 	@Test(expected = IllegalArgumentException.class)
@@ -41,10 +43,12 @@
 	@Test(expected = IllegalArgumentException.class)
 	public void testConstructor2() {
-		new NumberValueSet(BigDecimal.ZERO, BigDecimal.TEN, new BigDecimal("-1"));
+		new NumberValueSet(BigDecimal.ZERO, BigDecimal.TEN,
+				new BigDecimal("-1"));
 	}
 
 	@Test
 	public void testIterator() {
-		assertEquals(new NumberValue(BigDecimal.ZERO), bigset.iterator().next());
+		assertEquals(new NumberValue(BigDecimal.ZERO),
+				bigset.iterator().next());
 	}
 
@@ -59,5 +63,6 @@
 
 	@Test
-	public void testDeserialize() throws JsonParseException, JsonMappingException, IOException {
+	public void testDeserialize()
+			throws JsonParseException, JsonMappingException, IOException {
 		ObjectMapper jackson = new ObjectMapper();
 		ValueSet p = jackson.readValue(asString, NumberValueSet.class);
@@ -92,5 +97,6 @@
 	@Test
 	public void getRangeTest() {
-		assertEquals(new Range(TWELVE_TWO, TWELVE_SIX, ZERO_THREE), set.getRange());
+		assertEquals(new Range(TWELVE_TWO, TWELVE_SIX, ZERO_THREE),
+				set.getRange());
 	}
 
@@ -99,5 +105,6 @@
 		assertEquals(new NumberValue(TWELVE_TWO), set.get(BigInteger.ZERO));
 		assertEquals(new NumberValue(TWELVE_TWO), set.get(0));
-		assertEquals(new NumberValue(TWELVE_TWO.add(ZERO_THREE)), set.get(BigInteger.ONE));
+		assertEquals(new NumberValue(TWELVE_TWO.add(ZERO_THREE)),
+				set.get(BigInteger.ONE));
 	}
 
Index: /issuevalue/src/test/java/geniusweb/issuevalue/NumberValueTest.java
===================================================================
--- /issuevalue/src/test/java/geniusweb/issuevalue/NumberValueTest.java	(revision 32)
+++ /issuevalue/src/test/java/geniusweb/issuevalue/NumberValueTest.java	(revision 33)
@@ -126,3 +126,13 @@
 	}
 
+	@Test
+	public void testDeserializeScientificNotation()
+			throws JsonParseException, JsonMappingException, IOException {
+		ObjectMapper jackson = new ObjectMapper();
+		String valstr = "9E+2";
+		Value val = jackson.readValue(valstr, Value.class);
+		assertEquals(valstr, val.toString());
+		assertEquals(val, new NumberValue(new BigDecimal("900")));
+	}
+
 }
Index: /opponentmodel/pom.xml
===================================================================
--- /opponentmodel/pom.xml	(revision 32)
+++ /opponentmodel/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>opponentmodel</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -133,10 +133,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -157,4 +152,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-source-plugin</artifactId>
+				<version>3.1.0</version>
 				<executions>
 					<execution>
@@ -184,5 +180,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /party/pom.xml
===================================================================
--- /party/pom.xml	(revision 32)
+++ /party/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>party</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -51,6 +51,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>listener</artifactId>
-			<version>1.1.1</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 		<dependency>
@@ -138,10 +138,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -191,5 +186,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /profile/pom.xml
===================================================================
--- /profile/pom.xml	(revision 32)
+++ /profile/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>profile</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -41,6 +41,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 
@@ -123,10 +123,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -148,4 +143,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-source-plugin</artifactId>
+				<version>3.1.0</version>
 				<executions>
 					<execution>
@@ -175,5 +171,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /profile/src/main/java/geniusweb/profile/utilityspace/DiscreteValueSetUtilities.java
===================================================================
--- /profile/src/main/java/geniusweb/profile/utilityspace/DiscreteValueSetUtilities.java	(revision 32)
+++ /profile/src/main/java/geniusweb/profile/utilityspace/DiscreteValueSetUtilities.java	(revision 33)
@@ -9,5 +9,4 @@
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 import geniusweb.issuevalue.DiscreteValue;
@@ -25,5 +24,4 @@
  * </ul>
  */
-@JsonTypeName("discreteutils")
 @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
 public class DiscreteValueSetUtilities implements ValueSetUtilities {
Index: /profile/src/main/java/geniusweb/profile/utilityspace/NumberValueSetUtilities.java
===================================================================
--- /profile/src/main/java/geniusweb/profile/utilityspace/NumberValueSetUtilities.java	(revision 32)
+++ /profile/src/main/java/geniusweb/profile/utilityspace/NumberValueSetUtilities.java	(revision 33)
@@ -8,5 +8,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 import geniusweb.issuevalue.NumberValue;
@@ -21,5 +20,4 @@
  *
  */
-@JsonTypeName("numberutils")
 @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
 public class NumberValueSetUtilities implements ValueSetUtilities {
Index: /profile/src/main/java/geniusweb/profile/utilityspace/PartsUtilities.java
===================================================================
--- /profile/src/main/java/geniusweb/profile/utilityspace/PartsUtilities.java	(revision 32)
+++ /profile/src/main/java/geniusweb/profile/utilityspace/PartsUtilities.java	(revision 33)
@@ -12,5 +12,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 import geniusweb.issuevalue.Value;
@@ -31,5 +30,4 @@
  */
 @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE)
-@JsonTypeName("partsutils")
 public class PartsUtilities implements ValueSetUtilities {
 	private final List<String> issues;
Index: /profile/src/test/java/geniusweb/profile/utilityspace/DiscreteValueSetUtilitiesTest.java
===================================================================
--- /profile/src/test/java/geniusweb/profile/utilityspace/DiscreteValueSetUtilitiesTest.java	(revision 32)
+++ /profile/src/test/java/geniusweb/profile/utilityspace/DiscreteValueSetUtilitiesTest.java	(revision 33)
@@ -199,5 +199,5 @@
 		// Notice, party tent has extra single quote in the valuesstr.
 		String valuesstr = "{\"values\": [\"Party Tent'\",\"Your Dorm\", \"Party Room\", \"Ballroom\" ]}";
-		String utilstring = "{\"discreteutils\": {\"valueUtilities\": {\"Party Tent\": 0.52,\"Your Dorm\": 0.23,\"Party Room\": 0.99,\"Ballroom\": 0.77}}}";
+		String utilstring = "{\"DiscreteValueSetUtilities\": {\"valueUtilities\": {\"Party Tent\": 0.52,\"Your Dorm\": 0.23,\"Party Room\": 0.99,\"Ballroom\": 0.77}}}";
 		ValueSetUtilities valueutils = jackson.readValue(utilstring,
 				ValueSetUtilities.class);
@@ -213,5 +213,5 @@
 		// Check that DiscreteValueSetUtilities properly deserializes
 		// discreteutils.
-		String utilstring = "{\"discreteutils\": {\"valueUtilities\": {\"Party Tent\": 0.52,\"Your Dorm\": 0.23,\"Party Room\": 0.99,\"Ballroom\": 0.77}}}";
+		String utilstring = "{\"DiscreteValueSetUtilities\": {\"valueUtilities\": {\"Party Tent\": 0.52,\"Your Dorm\": 0.23,\"Party Room\": 0.99,\"Ballroom\": 0.77}}}";
 		DiscreteValueSetUtilities valueutils = jackson.readValue(utilstring,
 				DiscreteValueSetUtilities.class);
Index: /profile/src/test/java/geniusweb/profile/utilityspace/LinearAdditiveSerializationTest.java
===================================================================
--- /profile/src/test/java/geniusweb/profile/utilityspace/LinearAdditiveSerializationTest.java	(revision 32)
+++ /profile/src/test/java/geniusweb/profile/utilityspace/LinearAdditiveSerializationTest.java	(revision 33)
@@ -14,5 +14,5 @@
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
+import com.fasterxml.jackson.databind.exc.ValueInstantiationException;
 
 import geniusweb.issuevalue.Bid;
@@ -50,13 +50,13 @@
 	private LinearAdditiveUtilitySpace space;
 
-	private String serialized = "{\"LinearAdditiveUtilitySpace\":{\"domain\":{\"name\":\"test\",\"issuesValues\":{\"issue2\":{\"range\":[12,18,1]},\"issue1\":{\"values\":[\"issue1value1\",\"issue1value2\"]}}},\"name\":\"testprofile\",\"issueUtilities\":{\"issue2\":{\"numberutils\":{\"lowValue\":12,\"lowUtility\":0.3,\"highValue\":18,\"highUtility\":0.6}},\"issue1\":{\"discreteutils\":{\"valueUtilities\":{\"issue1value1\":0.2,\"issue1value2\":0.3}}}},\"issueWeights\":{\"issue2\":0.4,\"issue1\":0.6},\"reservationBid\":{\"issuevalues\":{\"issue2\":15,\"issue1\":\"issue1value2\"}}}}";
+	private String serialized = "{\"LinearAdditiveUtilitySpace\":{\"domain\":{\"name\":\"test\",\"issuesValues\":{\"issue2\":{\"range\":{\"low\":12,\"high\":18,\"step\":1}},\"issue1\":{\"values\":[\"issue1value1\",\"issue1value2\"]}}},\"name\":\"testprofile\",\"issueUtilities\":{\"issue2\":{\"NumberValueSetUtilities\":{\"lowValue\":12,\"lowUtility\":0.3,\"highValue\":18,\"highUtility\":0.6}},\"issue1\":{\"DiscreteValueSetUtilities\":{\"valueUtilities\":{\"issue1value1\":0.2,\"issue1value2\":0.3}}}},\"issueWeights\":{\"issue2\":0.4,\"issue1\":0.6},\"reservationBid\":{\"issuevalues\":{\"issue2\":15,\"issue1\":\"issue1value2\"}}}}";
 
 	private String jobsjson = "{\"LinearAdditiveUtilitySpace\":{\"issueUtilities\":{"
-			+ "\"lease car\":{\"discreteutils\":{\"valueUtilities\":{\"no\":0,\"yes\":1}}},"
-			+ "\"permanent contract\":{\"discreteutils\":{\"valueUtilities\":{\"no\":0,\"yes\":1}}},"
-			+ "\"career development opportunities\":{\"discreteutils\":{\"valueUtilities\":{\"high\":1,\"low\":0,\"medium\":0.5}}},"
-			+ "\"fte\":{\"discreteutils\":{\"valueUtilities\":{\"1.0\":0.75,\"0.6\":0.25,\"0.8\":0.5}}},"
-			+ "\"salary\":{\"discreteutils\":{\"valueUtilities\":{\"4000\":1.0,\"2500\":0.25,\"3500\":0.75,\"2000\":0,\"3000\":0.3}}},"
-			+ "\"work from home\":{\"discreteutils\":{\"valueUtilities\":{\"1\":0.5,\"2\":0.666666666666,\"0\":0.333333333}}}},"
+			+ "\"lease car\":{\"DiscreteValueSetUtilities\":{\"valueUtilities\":{\"no\":0,\"yes\":1}}},"
+			+ "\"permanent contract\":{\"DiscreteValueSetUtilities\":{\"valueUtilities\":{\"no\":0,\"yes\":1}}},"
+			+ "\"career development opportunities\":{\"DiscreteValueSetUtilities\":{\"valueUtilities\":{\"high\":1,\"low\":0,\"medium\":0.5}}},"
+			+ "\"fte\":{\"DiscreteValueSetUtilities\":{\"valueUtilities\":{\"1.0\":0.75,\"0.6\":0.25,\"0.8\":0.5}}},"
+			+ "\"salary\":{\"DiscreteValueSetUtilities\":{\"valueUtilities\":{\"4000\":1.0,\"2500\":0.25,\"3500\":0.75,\"2000\":0,\"3000\":0.3}}},"
+			+ "\"work from home\":{\"DiscreteValueSetUtilities\":{\"valueUtilities\":{\"1\":0.5,\"2\":0.666666666666,\"0\":0.333333333}}}},"
 			+ "\"issueWeights\":{\"lease car\":0.06,\"permanent contract\":0.16,"
 			+ "\"career development opportunities\":0.04,\"fte\":0.32,\"salary\":0.24,\"work from home\":0.18},"
@@ -71,6 +71,6 @@
 			+ "\"issue3\":{\"values\":[\"issue1value1\",\"issue1value2\"]}}},"
 			+ "\"name\":\"testprofile\"," + "\"issueUtilities\":"
-			+ "{\"issue2\":{\"numberutils\":{\"lowValue\":12,\"lowUtility\":0.3,\"highValue\":18,\"highUtility\":0.6}},"
-			+ "\"issue1\":{\"discreteutils\":{\"valueUtilities\":{\"issue1value1\":0.2,\"issue1value2\":0.3}}}},"
+			+ "{\"issue2\":{\"NumberValueSetUtilities\":{\"lowValue\":12,\"lowUtility\":0.3,\"highValue\":18,\"highUtility\":0.6}},"
+			+ "\"issue1\":{\"DiscreteValueSetUtilities\":{\"valueUtilities\":{\"issue1value1\":0.2,\"issue1value2\":0.3}}}},"
 			+ "\"issueWeights\":{\"issue2\":0.4,\"issue1\":0.6},"
 			+ "\"reservationBid\":{\"issuevalues\":{\"issue2\":\"issue2value1\",\"issue1\":\"issue1value2\"}}"
@@ -117,5 +117,5 @@
 	}
 
-	@Test(expected = InvalidDefinitionException.class)
+	@Test(expected = ValueInstantiationException.class)
 	public void testDeserializeWrongIssues() throws IOException {
 		jackson.readValue(serializedWrongIssues, Profile.class);
Index: /profile/src/test/java/geniusweb/profile/utilityspace/NumberValueSetUtilTest.java
===================================================================
--- /profile/src/test/java/geniusweb/profile/utilityspace/NumberValueSetUtilTest.java	(revision 32)
+++ /profile/src/test/java/geniusweb/profile/utilityspace/NumberValueSetUtilTest.java	(revision 33)
@@ -41,5 +41,5 @@
 			lowval1, low1util, highvalb, highutil);
 	private static final BigDecimal ZERO_1 = new BigDecimal("0.1");
-	private final String utilstring = "{\"numberutils\":{\"lowValue\":12.5,\"lowUtility\":0.5,\"highValue\":18.5,\"highUtility\":0.9}}";
+	private final String utilstring = "{\"NumberValueSetUtilities\":{\"lowValue\":12.5,\"lowUtility\":0.5,\"highValue\":18.5,\"highUtility\":0.9}}";
 
 	private static final ObjectMapper jackson = new ObjectMapper();
Index: /profile/src/test/java/geniusweb/profile/utilityspace/PartsUtilitiesTest.java
===================================================================
--- /profile/src/test/java/geniusweb/profile/utilityspace/PartsUtilitiesTest.java	(revision 32)
+++ /profile/src/test/java/geniusweb/profile/utilityspace/PartsUtilitiesTest.java	(revision 33)
@@ -37,5 +37,5 @@
 	private final static DiscreteValue high = new DiscreteValue("high");
 
-	private final static String jsontext = "{\"partsutils\":{\"issues\":[\"issue1\",\"issue2\"],\"utilslist\":[{\"values\":[\"low\",\"low\"],\"util\":0.3},{\"values\":[\"high\",\"high\"],\"util\":0.9}]}}";
+	private final static String jsontext = "{\"PartsUtilities\":{\"issues\":[\"issue1\",\"issue2\"],\"utilslist\":[{\"values\":[\"low\",\"low\"],\"util\":0.3},{\"values\":[\"high\",\"high\"],\"util\":0.9}]}}";
 
 	private PartsUtilities parts1, parts1a, parts2, parts3;
Index: /profile/src/test/java/geniusweb/profile/utilityspace/SumOfGroupsUtilitySpaceTest.java
===================================================================
--- /profile/src/test/java/geniusweb/profile/utilityspace/SumOfGroupsUtilitySpaceTest.java	(revision 32)
+++ /profile/src/test/java/geniusweb/profile/utilityspace/SumOfGroupsUtilitySpaceTest.java	(revision 33)
@@ -50,5 +50,5 @@
 	private Domain domain;
 	private PartsUtilities putils12, putils3;
-	private String serialized = "{\"SumOfGroupsUtilitySpace\":{\"domain\":{\"name\":\"domain\",\"issuesValues\":{\"issue3\":{\"values\":[\"low\",\"high\"]},\"issue2\":{\"values\":[\"low\",\"high\"]},\"issue1\":{\"values\":[\"low\",\"high\"]}}},\"name\":\"testspace\",\"partUtilities\":{\"1and2\":{\"partsutils\":{\"issues\":[\"issue1\",\"issue2\"],\"utilslist\":[{\"values\":[\"low\",\"low\"],\"util\":0.16},{\"values\":[\"high\",\"high\"],\"util\":0.72},{\"values\":[\"low\",\"high\"],\"util\":0.16},{\"values\":[\"high\",\"low\"],\"util\":0.16}]}},\"3\":{\"partsutils\":{\"issues\":[\"issue3\"],\"utilslist\":[{\"values\":[\"low\"],\"util\":0.16},{\"values\":[\"high\"],\"util\":0.14}]}}},\"reservationbid\":{\"issuevalues\":{\"issue1\":\"high\"}}}}";
+	private String serialized = "{\"SumOfGroupsUtilitySpace\":{\"domain\":{\"name\":\"domain\",\"issuesValues\":{\"issue3\":{\"values\":[\"low\",\"high\"]},\"issue2\":{\"values\":[\"low\",\"high\"]},\"issue1\":{\"values\":[\"low\",\"high\"]}}},\"name\":\"testspace\",\"partUtilities\":{\"1and2\":{\"PartsUtilities\":{\"issues\":[\"issue1\",\"issue2\"],\"utilslist\":[{\"values\":[\"low\",\"low\"],\"util\":0.16},{\"values\":[\"high\",\"high\"],\"util\":0.72},{\"values\":[\"low\",\"high\"],\"util\":0.16},{\"values\":[\"high\",\"low\"],\"util\":0.16}]}},\"3\":{\"PartsUtilities\":{\"issues\":[\"issue3\"],\"utilslist\":[{\"values\":[\"low\"],\"util\":0.16},{\"values\":[\"high\"],\"util\":0.14}]}}},\"reservationbid\":{\"issuevalues\":{\"issue1\":\"high\"}}}}";
 
 	@Before
Index: /profile/src/test/resources/party1.json
===================================================================
--- /profile/src/test/resources/party1.json	(revision 32)
+++ /profile/src/test/resources/party1.json	(revision 33)
@@ -4,5 +4,5 @@
 		"issueUtilities": {
 			"Food": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Chips and Nuts": 0.75,
@@ -14,5 +14,5 @@
 			},
 			"Drinks": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Non-Alcoholic": 0.263,
@@ -24,5 +24,5 @@
 			},
 			"Location": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Party Tent": 0.52,
@@ -34,5 +34,5 @@
 			},
 			"Invitations": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Plain": 0.24,
@@ -44,5 +44,5 @@
 			},
 			"Music": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"MP3": 0.65,
@@ -53,5 +53,5 @@
 			},
 			"Cleanup": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Water and Soap": 0.65,
Index: /profileconnection/pom.xml
===================================================================
--- /profileconnection/pom.xml	(revision 32)
+++ /profileconnection/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>profileconnection</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -127,10 +127,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -180,5 +175,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /profileconnection/src/test/resources/testprofile.json
===================================================================
--- /profileconnection/src/test/resources/testprofile.json	(revision 32)
+++ /profileconnection/src/test/resources/testprofile.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"issue2": {
-				"numberutils": {
+				"NumberValueSetUtilities": {
 					"lowValue": 12,
 					"lowUtility": 0.3,
@@ -11,5 +11,5 @@
 			},
 			"issue1": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"issue1value1": 0.2,
@@ -27,5 +27,5 @@
 			"issuesValues": {
 				"issue2": {
-					"range": ["12", "18", "1"]
+					"range": {"low":12,"high":18,"step":1} 
 				},
 				"issue1": {
Index: /protocol/pom.xml
===================================================================
--- /protocol/pom.xml	(revision 32)
+++ /protocol/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>protocol</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -55,6 +55,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 		<dependency>
@@ -62,9 +62,4 @@
 			<artifactId>logging</artifactId>
 			<version>1.0.1</version>
-		</dependency>
-		<dependency>
-			<groupId>tudelft.utilities</groupId>
-			<artifactId>listener</artifactId>
-			<version>1.1.1</version>
 		</dependency>
 
@@ -147,10 +142,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -218,5 +208,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /protocol/src/main/java/geniusweb/protocol/session/learn/Learn.java
===================================================================
--- /protocol/src/main/java/geniusweb/protocol/session/learn/Learn.java	(revision 32)
+++ /protocol/src/main/java/geniusweb/protocol/session/learn/Learn.java	(revision 33)
@@ -231,5 +231,5 @@
 							"BUG. Deadline timer has triggered but state is not final");
 				}
-				log.log(Level.WARNING,
+				log.log(Level.INFO,
 						"SAOP deadline reached. Terminating session.");
 				finish();
Index: /protocol/src/main/java/geniusweb/protocol/session/saop/SAOP.java
===================================================================
--- /protocol/src/main/java/geniusweb/protocol/session/saop/SAOP.java	(revision 32)
+++ /protocol/src/main/java/geniusweb/protocol/session/saop/SAOP.java	(revision 33)
@@ -210,5 +210,5 @@
 							"BUG. Deadline timer has triggered but state is not final");
 				}
-				log.log(Level.WARNING,
+				log.log(Level.INFO,
 						"SAOP deadline reached. Terminating session.");
 				finish();
Index: /protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOP.java
===================================================================
--- /protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOP.java	(revision 32)
+++ /protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOP.java	(revision 33)
@@ -207,5 +207,5 @@
 							"BUG. Deadline timer has triggered but state is not final");
 				}
-				log.log(Level.WARNING,
+				log.log(Level.INFO,
 						"SHAOP deadline reached. Terminating session.");
 				finish();
Index: /protocol/src/test/java/geniusweb/protocol/session/amop/AMOPSettingsTest.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/session/amop/AMOPSettingsTest.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/session/amop/AMOPSettingsTest.java	(revision 33)
@@ -48,5 +48,5 @@
 
 	private AMOPSettings sersettings;
-	private final String serialized = "{\"AMOPSettings\":{\"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}}}}";
+	private final String serialized = "{\"AMOPSettings\":{\"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}}}}";
 	private List<TeamInfo> participants;
 	private PartyWithProfile partywithprof1, partywithprof2;
Index: /protocol/src/test/java/geniusweb/protocol/session/learn/LearnSettingsTest.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/session/learn/LearnSettingsTest.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/session/learn/LearnSettingsTest.java	(revision 33)
@@ -34,5 +34,5 @@
 	private Parameters params;
 
-	private final String serialized = "{\"LearnSettings\":{\"participants\":[{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"party1\",\"parameters\":{\"persistentstate\":\"6bb5f909-0079-43ac-a8ac-a31794391074\",\"negotiationdata\":[\"12b5f909-0079-43ac-a8ac-a31794391012\"]}},\"profile\":\"http://prof1\"}]}}],\"deadline\":{\"deadlinerounds\":{\"rounds\":10,\"durationms\":10000}}}}";
+	private final String serialized = "{\"LearnSettings\":{\"participants\":[{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"party1\",\"parameters\":{\"persistentstate\":\"6bb5f909-0079-43ac-a8ac-a31794391074\",\"negotiationdata\":[\"12b5f909-0079-43ac-a8ac-a31794391012\"]}},\"profile\":\"http://prof1\"}]}}],\"deadline\":{\"DeadlineRounds\":{\"rounds\":10,\"durationms\":10000}}}}";
 
 	@Before
Index: /protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACSettingsTest.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACSettingsTest.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACSettingsTest.java	(revision 33)
@@ -57,5 +57,5 @@
 
 	private MOPACSettings sersettings;
-	private final String serialized = "{\"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\":{}}}}";
+	private final String serialized = "{\"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\":{}}}}";
 	private List<TeamInfo> participants;
 	private PartyWithProfile partywithprof1;
Index: /protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACStateTest.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACStateTest.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACStateTest.java	(revision 33)
@@ -62,5 +62,5 @@
 	// copy from MopacSettingsTest. We need settings here but don't want to mock
 	// this large structure.
-	private final String mopacsettingstr = "{\"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\":{}}}}";
+	private final String mopacsettingstr = "{\"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\":{}}}}";
 	// create real objects for the GeneralTests and for serialization tests
 	private PartyStates partyStates = new PartyStates(Collections.emptyMap());
@@ -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\":{\"time\":{\"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\":{\"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\":{}}}";
 
 	@Before
Index: /protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACTest.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACTest.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/session/mopac/MOPACTest.java	(revision 33)
@@ -50,5 +50,5 @@
 			+ "{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"http://party2\",\"parameters\":{}},\"profile\":\"http://profile2\"}]}},"
 			+ "{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"http://party3\",\"parameters\":{}},\"profile\":\"http://profile3\"}]}}],"
-			+ "\"deadline\":{\"deadlinetime\":{\"durationms\":100}},\"votingevaluator\":{\"LargestAgreement\":{}}}}";
+			+ "\"deadline\":{\"DeadlineTime\":{\"durationms\":100}},\"votingevaluator\":{\"LargestAgreement\":{}}}}";
 
 	private MOPACSettings settings;
Index: /protocol/src/test/java/geniusweb/protocol/session/mopac2/MOPAC2SettingsTest.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/session/mopac2/MOPAC2SettingsTest.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/session/mopac2/MOPAC2SettingsTest.java	(revision 33)
@@ -57,5 +57,5 @@
 
 	private MOPAC2Settings sersettings;
-	private final String serialized = "{\"MOPAC2Settings\":{\"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\":{\"LargestAgreementWithValue\":{}}}}";
+	private final String serialized = "{\"MOPAC2Settings\":{\"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\":{\"LargestAgreementWithValue\":{}}}}";
 	private List<TeamInfo> participants;
 	private PartyWithProfile partywithprof1, partywithprof2;
Index: /protocol/src/test/java/geniusweb/protocol/session/mopac2/MOPAC2StateTest.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/session/mopac2/MOPAC2StateTest.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/session/mopac2/MOPAC2StateTest.java	(revision 33)
@@ -66,5 +66,5 @@
 			+ "{\"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\":{\"LargestAgreementWithValue\":{}}}}";;
+			+ "\"deadline\":{\"DeadlineTime\":{\"durationms\":100}},\"votingevaluator\":{\"LargestAgreementWithValue\":{}}}}";;
 	// create real objects for the GeneralTests and for serialization tests
 	private PartyStates partyStates = new PartyStates(Collections.emptyMap());
@@ -78,5 +78,5 @@
 	private MOPAC2State state1, state1a, state2, state3, state4, state5, state6;
 
-	private String serialized = "{\"MOPAC2State\":{\"phase\":{\"OfferPhase\":{\"partyStates\":{\"notYetActed\":[],\"actions\":[],\"agreements\":{},\"walkedAway\":[],\"exceptions\":{},\"powers\":{}},\"evaluator\":{\"LargestAgreementWithValue\":{}},\"deadline\":100}},\"actions\":[],\"progress\":{\"time\":{\"duration\":100,\"start\":1001}},\"settings\":{\"MOPAC2Settings\":{\"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\":{\"LargestAgreementWithValue\":{}}}},\"partyprofiles\":{}}}";
+	private String serialized = "{\"MOPAC2State\":{\"phase\":{\"OfferPhase\":{\"partyStates\":{\"notYetActed\":[],\"actions\":[],\"agreements\":{},\"walkedAway\":[],\"exceptions\":{},\"powers\":{}},\"evaluator\":{\"LargestAgreementWithValue\":{}},\"deadline\":100}},\"actions\":[],\"progress\":{\"ProgressTime\":{\"duration\":100,\"start\":1001}},\"settings\":{\"MOPAC2Settings\":{\"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\":{\"LargestAgreementWithValue\":{}}}},\"partyprofiles\":{}}}";
 
 	@Before
Index: /protocol/src/test/java/geniusweb/protocol/session/mopac2/MOPAC2Test.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/session/mopac2/MOPAC2Test.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/session/mopac2/MOPAC2Test.java	(revision 33)
@@ -51,5 +51,5 @@
 			+ "{\"TeamInfo\":{\"parties\":[ {\"party\":{\"partyref\":\"http://party2\",\"parameters\":{}},\"profile\":\"http://profile2\"}]}},"
 			+ "{\"TeamInfo\":{\"parties\":[ {\"party\":{\"partyref\":\"http://party3\",\"parameters\":{}},\"profile\":\"http://profile3\"} ]}}  ],"
-			+ "\"deadline\":{\"deadlinetime\":{\"durationms\":100}},\"votingevaluator\":{\"LargestAgreementWithValue\":{}}}}";
+			+ "\"deadline\":{\"DeadlineTime\":{\"durationms\":100}},\"votingevaluator\":{\"LargestAgreementWithValue\":{}}}}";
 
 	// {"MOPAC2Settings":{"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":{"LargestAgreementWithValue":{}}}}
Index: /protocol/src/test/java/geniusweb/protocol/session/saop/SAOPSettingsTest.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/session/saop/SAOPSettingsTest.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/session/saop/SAOPSettingsTest.java	(revision 33)
@@ -47,5 +47,5 @@
 
 	private SAOPSettings sersettings;
-	private final String serialized = "{\"SAOPSettings\":{\"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}}}}";
+	private final String serialized = "{\"SAOPSettings\":{\"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}}}}";
 
 	@Before
Index: /protocol/src/test/java/geniusweb/protocol/session/shaop/SHAOPSettingsTest.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/session/shaop/SHAOPSettingsTest.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/session/shaop/SHAOPSettingsTest.java	(revision 33)
@@ -29,5 +29,5 @@
 	private final ObjectMapper jackson = new ObjectMapper();
 	private Parameters params = new Parameters();
-	private final String serialized = "{\"SHAOPSettings\":{\"participants\":[{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"party1\",\"parameters\":{}},\"profile\":\"profile1\"},{\"party\":{\"partyref\":\"party2\",\"parameters\":{}},\"profile\":\"profile1\"}]}},{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"party3\",\"parameters\":{}},\"profile\":\"profile1\"},{\"party\":{\"partyref\":\"party4\",\"parameters\":{}},\"profile\":\"profile1\"}]}}],\"deadline\":{\"deadlinetime\":{\"durationms\":1000}}}}";
+	private final String serialized = "{\"SHAOPSettings\":{\"participants\":[{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"party1\",\"parameters\":{}},\"profile\":\"profile1\"},{\"party\":{\"partyref\":\"party2\",\"parameters\":{}},\"profile\":\"profile1\"}]}},{\"TeamInfo\":{\"parties\":[{\"party\":{\"partyref\":\"party3\",\"parameters\":{}},\"profile\":\"profile1\"},{\"party\":{\"partyref\":\"party4\",\"parameters\":{}},\"profile\":\"profile1\"}]}}],\"deadline\":{\"DeadlineTime\":{\"durationms\":1000}}}}";
 	private SHAOPSettings settings1, settings1a, settings2, settings3;
 	private TeamInfo pair1, pair2, pair3;
Index: /protocol/src/test/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsSettingsTest.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsSettingsTest.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsSettingsTest.java	(revision 33)
@@ -34,5 +34,5 @@
 	private final ObjectMapper jackson = new ObjectMapper();
 
-	private final String serialized = "{\"AllPermutationsSettings\":{\"teams\":[{\"Team\":[{\"partyref\":\"party1\",\"parameters\":{}}]},{\"Team\":[{\"partyref\":\"party2\",\"parameters\":{}}]}],\"profileslists\":[{\"ProfileList\":[\"profile1\"]},{\"ProfileList\":[\"profile2\"]},{\"ProfileList\":[\"profile3\"]}],\"reuseTeams\":false,\"teamsPerSession\":2,\"sessionsettings\":{\"SAOPSettings\":{\"participants\":[],\"deadline\":{\"deadlinetime\":{\"durationms\":10000}}}},\"numberTournaments\":1}}";
+	private final String serialized = "{\"AllPermutationsSettings\":{\"teams\":[{\"Team\":[{\"partyref\":\"party1\",\"parameters\":{}}]},{\"Team\":[{\"partyref\":\"party2\",\"parameters\":{}}]}],\"profileslists\":[{\"ProfileList\":[\"profile1\"]},{\"ProfileList\":[\"profile2\"]},{\"ProfileList\":[\"profile3\"]}],\"reuseTeams\":false,\"teamsPerSession\":2,\"sessionsettings\":{\"SAOPSettings\":{\"participants\":[],\"deadline\":{\"DeadlineTime\":{\"durationms\":10000}}}},\"numberTournaments\":1}}";
 	private AllPermutationsSettings settings, settings1a, settings2, settings3,
 			settings4, settings5;
Index: /protocol/src/test/java/geniusweb/protocol/tournament/allpermutationslearn/AllPermutationsLearnSettingsTest.java
===================================================================
--- /protocol/src/test/java/geniusweb/protocol/tournament/allpermutationslearn/AllPermutationsLearnSettingsTest.java	(revision 32)
+++ /protocol/src/test/java/geniusweb/protocol/tournament/allpermutationslearn/AllPermutationsLearnSettingsTest.java	(revision 33)
@@ -37,5 +37,5 @@
 	private final ObjectMapper jackson = new ObjectMapper();
 
-	private final String serialized = "{\"AllPermutationsLearnSettings\":{\"teams\":[{\"Team\":[{\"partyref\":\"party1\",\"parameters\":{\"persistentstate\":\"a48b8bc9-4275-4a4e-bee9-6c0a734dc99a\",\"negotiationdata\":[]}}]},{\"Team\":[{\"partyref\":\"party2\",\"parameters\":{\"persistentstate\":\"12b6af6c-b8a0-4731-8b37-0454cafeb7f4\",\"negotiationdata\":[]}}]}],\"profileslists\":[{\"ProfileList\":[\"profile1\"]},{\"ProfileList\":[\"profile2\"]},{\"ProfileList\":[\"profile3\"]}],\"reuseTeams\":false,\"teamsPerSession\":2,\"sessionsettings\":{\"SAOPSettings\":{\"participants\":[],\"deadline\":{\"deadlinetime\":{\"durationms\":10000}}}},\"numberTournaments\":1,\"learnSettings\":{\"LearnSettings\":{\"participants\":[],\"deadline\":{\"deadlinetime\":{\"durationms\":99000}}}}}}";
+	private final String serialized = "{\"AllPermutationsLearnSettings\":{\"teams\":[{\"Team\":[{\"partyref\":\"party1\",\"parameters\":{\"persistentstate\":\"a48b8bc9-4275-4a4e-bee9-6c0a734dc99a\",\"negotiationdata\":[]}}]},{\"Team\":[{\"partyref\":\"party2\",\"parameters\":{\"persistentstate\":\"12b6af6c-b8a0-4731-8b37-0454cafeb7f4\",\"negotiationdata\":[]}}]}],\"profileslists\":[{\"ProfileList\":[\"profile1\"]},{\"ProfileList\":[\"profile2\"]},{\"ProfileList\":[\"profile3\"]}],\"reuseTeams\":false,\"teamsPerSession\":2,\"sessionsettings\":{\"SAOPSettings\":{\"participants\":[],\"deadline\":{\"DeadlineTime\":{\"durationms\":10000}}}},\"numberTournaments\":1,\"learnSettings\":{\"LearnSettings\":{\"participants\":[],\"deadline\":{\"DeadlineTime\":{\"durationms\":99000}}}}}}";
 	private AllPermutationsLearnSettings settings, settings1a, settings2,
 			settings3, settings4, settings5;
Index: /pythonadapter/pom.xml
===================================================================
--- /pythonadapter/pom.xml	(revision 32)
+++ /pythonadapter/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>pythonadapter</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -59,10 +59,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -99,4 +94,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-source-plugin</artifactId>
+				<version>3.1.0</version>
 				<executions>
 					<execution>
@@ -112,5 +108,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /references/pom.xml
===================================================================
--- /references/pom.xml	(revision 32)
+++ /references/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>references</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -31,12 +31,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>listener</artifactId>
-			<version>1.1.1</version>
-		</dependency>
-
-		<dependency>
-			<groupId>tudelft.utilities</groupId>
-			<artifactId>repository</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 		<!-- the core, which includes Streaming API, shared low-level abstractions 
@@ -119,9 +113,4 @@
 			<url>https://repo1.maven.org/</url>
 		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
-		</pluginRepository>
 	</pluginRepositories>
 
@@ -169,5 +158,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /simplerunner/pom.xml
===================================================================
--- /simplerunner/pom.xml	(revision 32)
+++ /simplerunner/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>simplerunner</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -97,10 +97,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -168,5 +163,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /simplerunner/src/main/java/geniusweb/simplerunner/BasicConnection.java
===================================================================
--- /simplerunner/src/main/java/geniusweb/simplerunner/BasicConnection.java	(revision 32)
+++ /simplerunner/src/main/java/geniusweb/simplerunner/BasicConnection.java	(revision 33)
@@ -3,9 +3,10 @@
 import java.io.IOException;
 import java.net.URI;
+import java.util.List;
 import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import geniusweb.connection.ConnectionEnd;
 import geniusweb.references.Reference;
-import tudelft.utilities.listener.DefaultListenable;
 import tudelft.utilities.listener.Listener;
 
@@ -17,12 +18,15 @@
  * @param <OUT> the type of outgoing data
  */
-public class BasicConnection<IN, OUT> extends DefaultListenable<IN>
-		implements ConnectionEnd<IN, OUT> {
+public class BasicConnection<IN, OUT> implements ConnectionEnd<IN, OUT> {
+	private List<Listener<IN>> listeners = new CopyOnWriteArrayList<Listener<IN>>();
+
+	private final Info<OUT> EOS = new EOS<OUT>();
 	private final Reference reference;
 	private final URI uri;
 	// to be initialized
 	private Listener<OUT> handler = null;
-	private Thread handlerThread;
-	private ArrayBlockingQueue<OUT> messages = new ArrayBlockingQueue<OUT>(4);
+	private ArrayBlockingQueue<Info<OUT>> messages = new ArrayBlockingQueue<>(
+			4);
+	private Throwable error;
 
 	/**
@@ -36,6 +40,4 @@
 		this.reference = reference;
 		this.uri = uri;
-		System.out.println("opening " + this);
-
 	}
 
@@ -53,5 +55,5 @@
 		this.handler = newhandler;
 
-		handlerThread = new Thread(new Runnable() {
+		Thread handlerThread = new Thread(new Runnable() {
 
 			@Override
@@ -59,13 +61,31 @@
 				try {
 					while (true) {
-						handler.notifyChange(messages.take());
+						Info<OUT> mess = messages.take();
+						if (mess instanceof EOS)
+							break;
+						handler.notifyChange(((Data<OUT>) mess).get());
 					}
-				} catch (InterruptedException e) {
-					System.out.println("connection handler interrupted");
+				} catch (Exception e) {
+					setError(e);
 				}
+				handler = null;
+				System.out.println("BasicConnection closed");
 			}
 		});
+		handlerThread.start();
+	}
 
-		handlerThread.start();
+	/**
+	 * Error condition occurs. Record error and close connection
+	 * 
+	 * @param e
+	 */
+	protected synchronized void setError(Throwable e) {
+		if (error != null) {
+			// maybe log instead?
+			e.printStackTrace();
+			error = e;
+			close();
+		}
 	}
 
@@ -74,10 +94,10 @@
 		if (handler == null) {
 			throw new IllegalStateException(
-					"BasicConnection has not been initialized");
+					"BasicConnection has not been initialized or was closed");
 		}
 		try {
-			messages.put(data);
+			messages.put(new Data<OUT>(data));
 		} catch (InterruptedException e) {
-			throw new IOException(e);
+			setError(e);
 		}
 	}
@@ -95,14 +115,81 @@
 	@Override
 	public void close() {
-		System.out.println("closing " + this);
-		handlerThread.interrupt();
-		handlerThread = null;
-		handler = null;
+		System.out.println("flushing and terminating " + this);
+		if (handler == null || messages.contains(EOS))
+			return;
+		try {
+			messages.put(EOS);
+		} catch (InterruptedException e) {
+			setError(e);
+		}
 	}
 
 	@Override
-	public Error getError() {
-		return null;
+	public String toString() {
+		return "BasicConnection[" + reference + "]";
+	}
+
+	@Override
+	public Throwable getError() {
+		return error;
+	}
+
+	/**
+	 * 
+	 * @return true iff this connection is open
+	 */
+	public boolean isOpen() {
+		return handler != null;
+	}
+
+	/****************** implements listenable ****************/
+	// override because notifyListeners should throw exceptions.
+	@Override
+	public void addListener(Listener<IN> l) {
+		listeners.add(l);
+	}
+
+	@Override
+	public void removeListener(Listener<IN> l) {
+		listeners.remove(l);
+	}
+
+	public void notifyListeners(IN data) {
+		for (Listener<IN> l : listeners) {
+			l.notifyChange(data);
+		}
 	}
 
 }
+
+/**
+ * Wrapper around data so that we can put Null end EOS in a
+ * {@link ArrayBlockingQueue}
+ *
+ * @param <S> the type of contained data.
+ */
+
+interface Info<S> {
+
+}
+
+class Data<S> implements Info<S> {
+	private final S data;
+
+	public Data(S data) {
+		this.data = data;
+	}
+
+	public S get() {
+		return data;
+	}
+}
+
+/**
+ * End of stream.
+ * 
+ * @author wouter
+ *
+ */
+class EOS<S> implements Info<S> {
+}
Index: /simplerunner/src/main/java/geniusweb/simplerunner/ClassPathConnectionFactory.java
===================================================================
--- /simplerunner/src/main/java/geniusweb/simplerunner/ClassPathConnectionFactory.java	(revision 32)
+++ /simplerunner/src/main/java/geniusweb/simplerunner/ClassPathConnectionFactory.java	(revision 33)
@@ -24,34 +24,133 @@
  */
 public class ClassPathConnectionFactory implements ProtocolToPartyConnFactory {
+	private List<ConnectionPair> allConnections = new LinkedList<>();
+
+	/**
+	 * @param reference the party class path reference4
+	 */
+	@Override
+	public ProtocolToPartyConn connect(Reference reference) {
+		ConnectionPair connpair = new ConnectionPair(reference);
+		allConnections.add(connpair);
+		return connpair.getProtocolToPartyConn();
+	}
+
+	@Override
+	public List<ProtocolToPartyConn> connect(List<Reference> references)
+			throws IOException, NoResourcesNowException {
+		List<ProtocolToPartyConn> connections = new LinkedList<>();
+		for (Reference partyref : references) {
+			connections.add(connect(partyref));
+		}
+		return connections;
+	}
+
+	/**
+	 * @return list of connections that are still open.
+	 */
+	public List<BasicConnection> getOpenConnections() {
+		List<BasicConnection> open = new LinkedList<>();
+		for (ConnectionPair connpair : allConnections) {
+			open.addAll(connpair.getOpenConnections());
+		}
+		return open;
+	}
+
+}
+
+class BasicConnectionWithParty extends BasicConnection<Action, Inform>
+		implements ProtocolToPartyConn {
+
+	private PartyId id;
+
+	public BasicConnectionWithParty(Reference reference, URI uri) {
+		super(reference, uri);
+		this.id = new PartyId(uri.toString().replace("classpath:", "")
+				.replaceAll("\\.", "_"));
+	}
+
+	@Override
+	public PartyId getParty() {
+		return id;
+	}
+
+	@Override
+	public String toString() {
+		return "WP" + super.toString();
+	}
+
+}
+
+/**
+ * Contains the connection from protocol to party and from party to protocol.
+ * These two are dependent on each other, and must close together.
+ *
+ */
+class ConnectionPair {
+	private static int serialcounter = 1;
 	private static final String SCHEME = "classpath";
-	private static int serialcounter = 1;
 	private final static URI PROTOCOLURI = uri("protocol:protocol");
 
-	@Override
-	public ProtocolToPartyConn connect(Reference reference) {
+	private final BasicConnection<Inform, Action> party2protocol;
+	private final BasicConnectionWithParty protocol2party;
+
+	/**
+	 * 
+	 * @param reference the party class path reference4
+	 * 
+	 */
+	public ConnectionPair(Reference reference) {
 		// set up the whole other party including the connection to it.
 		String classpath = getClassPath(reference.getURI());
 		Party party = instantiate(classpath);
 
-		BasicConnection<Inform, Action> party2protocol = new BasicConnection<Inform, Action>(
-				reference, PROTOCOLURI);
-		BasicConnectionWithParty protocol2party = new BasicConnectionWithParty(
-				reference,
+		// if call to protocol would fail, we should also close the
+		// protocol2party connection. But we assume that will work fine.
+		party2protocol = new BasicConnection<Inform, Action>(reference,
+				PROTOCOLURI) {
+			@Override
+			protected synchronized void setError(Throwable e) {
+				super.setError(e); // closes party2protocol
+				protocol2party.close();
+			}
+
+		};
+
+		// if callback from protocol to party fails, then also close the
+		// other direction.
+		protocol2party = new BasicConnectionWithParty(reference,
 				uri("classpath:" + reference.getURI().getSchemeSpecificPart()
-						+ "." + (serialcounter++)));
+						+ "." + (serialcounter++))) {
+			@Override
+			protected synchronized void setError(Throwable e) {
+				super.setError(e); // closes protocol2party
+				party2protocol.close();
+			}
+
+		};
+
 		party2protocol.init(action -> protocol2party.notifyListeners(action));
+
 		protocol2party.init(info -> party2protocol.notifyListeners(info));
 
 		party.connect(party2protocol);
 
+	}
+
+	/**
+	 * 
+	 * @return the open connections
+	 */
+	public List<BasicConnection> getOpenConnections() {
+		List<BasicConnection> open = new LinkedList<>();
+		if (party2protocol.isOpen())
+			open.add(party2protocol);
+		if (protocol2party.isOpen())
+			open.add(protocol2party);
+		return open;
+	}
+
+	public ProtocolToPartyConn getProtocolToPartyConn() {
 		return protocol2party;
-	}
-
-	private static URI uri(String ref) {
-		try {
-			return new URI(ref);
-		} catch (URISyntaxException e) {
-			throw new IllegalStateException("failed to create basic URI", e);
-		}
 	}
 
@@ -81,7 +180,15 @@
 				| InvocationTargetException e) {
 			throw new IllegalArgumentException(
-					"Failed to create party connection", e);
-		}
-
+					"Failed to create connection to party " + classpath, e);
+		}
+
+	}
+
+	private static URI uri(String ref) {
+		try {
+			return new URI(ref);
+		} catch (URISyntaxException e) {
+			throw new IllegalStateException("failed to create basic URI", e);
+		}
 	}
 
@@ -99,31 +206,3 @@
 	}
 
-	@Override
-	public List<ProtocolToPartyConn> connect(List<Reference> references)
-			throws IOException, NoResourcesNowException {
-		List<ProtocolToPartyConn> connections = new LinkedList<>();
-		for (Reference partyref : references) {
-			connections.add(connect(partyref));
-		}
-		return connections;
-	}
-
 }
-
-class BasicConnectionWithParty extends BasicConnection<Action, Inform>
-		implements ProtocolToPartyConn {
-
-	private PartyId id;
-
-	public BasicConnectionWithParty(Reference reference, URI uri) {
-		super(reference, uri);
-		this.id = new PartyId(uri.toString().replace("classpath:", "")
-				.replaceAll("\\.", "_"));
-	}
-
-	@Override
-	public PartyId getParty() {
-		return id;
-	}
-
-}
Index: /simplerunner/src/main/java/geniusweb/simplerunner/NegoRunner.java
===================================================================
--- /simplerunner/src/main/java/geniusweb/simplerunner/NegoRunner.java	(revision 32)
+++ /simplerunner/src/main/java/geniusweb/simplerunner/NegoRunner.java	(revision 33)
@@ -5,4 +5,5 @@
 import java.nio.file.Files;
 import java.nio.file.Paths;
+import java.util.List;
 import java.util.logging.Level;
 
@@ -22,14 +23,26 @@
  * All referred files and classes need to be stored locally (or be in the
  * dependency list if you use maven).
- * 
+ * <p>
+ * <em>IMPORTANT</em> SimpleRunner has a number of restrictions, compared to a
+ * run using a runserver and partyserver
+ * <ul>
+ * <li>With stand-alone runner, your parties are run together in a single
+ * classloader. The main implication is that there may arise version conflicts
+ * between parties.
+ * <li>Stand-alone runner does NOT enforce the time deadline. Parties may
+ * continue running indefinitely and thus bog down the JVM and stalling
+ * tournaments.
+ * </ul>
  */
 public class NegoRunner implements Runnable {
+	private final static ObjectMapper jackson = new ObjectMapper();
+
 	private final NegoSettings settings;
 	private final NegoProtocol protocol;
-	private final ProtocolToPartyConnFactory connectionfactory;
+	private final ClassPathConnectionFactory connectionfactory;
 	protected final Reporter log;
 	private boolean properlyStopped = false;
-	private final static ObjectMapper jackson = new ObjectMapper();
 	private final int LOOPTIME = 200;// ms
+	private final int FINALWAITTIME = 5000;// ms
 	private long maxruntime;
 
@@ -42,5 +55,5 @@
 	 */
 	public NegoRunner(NegoSettings settings,
-			ProtocolToPartyConnFactory connectionfactory, Reporter logger,
+			ClassPathConnectionFactory connectionfactory, Reporter logger,
 			long maxruntime) {
 		if (settings == null || connectionfactory == null) {
@@ -75,5 +88,21 @@
 			}
 		}
-		System.out.println("end run");
+		log.log(Level.INFO, "Waiting for connection closure");
+
+		remainingtime = FINALWAITTIME;
+		while (remainingtime > 0
+				&& !connectionfactory.getOpenConnections().isEmpty()) {
+			try {
+				Thread.sleep(LOOPTIME);
+				remainingtime -= LOOPTIME;
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+		}
+		List<BasicConnection> openconn = connectionfactory.getOpenConnections();
+		if (!openconn.isEmpty())
+			log.log(Level.WARNING, "Connections " + openconn
+					+ " did not close properly at end of run");
+		log.log(Level.INFO, "end run");
 	}
 
@@ -146,13 +175,15 @@
 
 class StdOutReporter implements Reporter {
-
 	@Override
-	public void log(Level arg0, String arg1) {
-		System.out.println(arg0 + ":" + arg1);
+	public void log(Level level, String msg) {
+		if (level == Level.WARNING || level == Level.SEVERE)
+			System.err.println(level + ":" + msg);
+		else
+			System.out.println(level + ":" + msg);
 	}
 
 	@Override
-	public void log(Level arg0, String arg1, Throwable arg2) {
-		System.out.println(arg0 + ">" + arg1);
+	public void log(Level arg0, String msg, Throwable arg2) {
+		log(arg0, msg);
 	}
 
Index: /simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerE2ETest.java
===================================================================
--- /simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerE2ETest.java	(revision 32)
+++ /simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerE2ETest.java	(revision 33)
@@ -2,4 +2,9 @@
 
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 
 import java.io.IOException;
@@ -9,4 +14,5 @@
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.logging.Level;
 
 import org.junit.Before;
@@ -32,5 +38,5 @@
 	private final ObjectMapper jackson = new ObjectMapper();
 	private NegoRunner runner;
-	private Reporter logger = new ReportToLogger("test");
+	private Reporter logger = spy(new ReportToLogger("test"));
 	private String filename;
 
@@ -40,4 +46,5 @@
 				.asList(new Object[][] { { "src/test/resources/settings.json" },
 						{ "src/test/resources/settings2.json" },
+						{ "src/test/resources/settingsbadprofile.json" },
 						{ "src/test/resources/shaoptoursettings.json" },
 						{ "src/test/resources/mopac.json" },
@@ -69,6 +76,8 @@
 	public void runTest() throws IOException {
 		runner.run();
+		System.out.println("Final state:\n" + runner.getProtocol().getState());
 		assertTrue(runner.isProperlyStopped());
-		System.out.println("Final state:\n" + runner.getProtocol().getState());
+		verify(logger, times(0)).log(eq(Level.WARNING), any());
+		verify(logger, times(0)).log(eq(Level.SEVERE), any());
 	}
 
Index: /simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerTest.java
===================================================================
--- /simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerTest.java	(revision 32)
+++ /simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerTest.java	(revision 33)
@@ -20,5 +20,4 @@
 import geniusweb.protocol.NegoState;
 import geniusweb.protocol.ProtocolException;
-import geniusweb.protocol.partyconnection.ProtocolToPartyConnFactory;
 import geniusweb.protocol.session.SessionProtocol;
 import geniusweb.protocol.session.SessionSettings;
@@ -48,5 +47,5 @@
 	public void smokeTest() {
 		new NegoRunner(mock(SessionSettings.class),
-				mock(ProtocolToPartyConnFactory.class), logger, 5000);
+				mock(ClassPathConnectionFactory.class), logger, 5000);
 	}
 
@@ -57,6 +56,6 @@
 		when(settings.getProtocol(logger)).thenReturn(protocol);
 		@SuppressWarnings("unchecked")
-		ProtocolToPartyConnFactory factory = mock(
-				ProtocolToPartyConnFactory.class);
+		ClassPathConnectionFactory factory = mock(
+				ClassPathConnectionFactory.class);
 
 		NegoRunner runner = spy(
@@ -80,6 +79,6 @@
 		Reporter logger = mock(Reporter.class);
 		@SuppressWarnings("unchecked")
-		ProtocolToPartyConnFactory factory = mock(
-				ProtocolToPartyConnFactory.class);
+		ClassPathConnectionFactory factory = mock(
+				ClassPathConnectionFactory.class);
 		NegoRunner runner = spy(
 				new NegoRunner(settings, factory, logger, 5000) {
@@ -98,5 +97,5 @@
 		listener.getValue().notifyChange(finishedEvent);
 		verify(runner, times(1)).stop();
-		verify(logger, times(1)).log(eq(Level.INFO), any(String.class));
+		verify(logger, times(0)).log(eq(Level.WARNING), any(String.class));
 
 	}
@@ -111,6 +110,6 @@
 		when(protocol.getState()).thenReturn(state);
 		@SuppressWarnings("unchecked")
-		ProtocolToPartyConnFactory factory = mock(
-				ProtocolToPartyConnFactory.class);
+		ClassPathConnectionFactory factory = mock(
+				ClassPathConnectionFactory.class);
 		NegoRunner runner = spy(
 				new NegoRunner(settings, factory, logger, 5000) {
Index: /simplerunner/src/test/resources/jobs/jobs1.json
===================================================================
--- /simplerunner/src/test/resources/jobs/jobs1.json	(revision 32)
+++ /simplerunner/src/test/resources/jobs/jobs1.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"salary": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"2000": 0,
@@ -14,5 +14,5 @@
 			},
 			"fte": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"0.6": 0.25,
@@ -23,5 +23,5 @@
 			},
 			"work from home": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"0": 0.333333333,
@@ -32,5 +32,5 @@
 			},
 			"lease car": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"yes": 1,
@@ -40,5 +40,5 @@
 			},
 			"permanent contract": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"yes": 1,
@@ -48,5 +48,5 @@
 			},
 			"career development opportunities": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"low": 0,
Index: /simplerunner/src/test/resources/jobs/jobs2.json
===================================================================
--- /simplerunner/src/test/resources/jobs/jobs2.json	(revision 32)
+++ /simplerunner/src/test/resources/jobs/jobs2.json	(revision 33)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"salary": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"2000": 1.0,
@@ -14,5 +14,5 @@
 			},
 			"fte": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"0.6": 0.363636363636363636,
@@ -23,5 +23,5 @@
 			},
 			"work from home": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"0": 1.0,
@@ -32,5 +32,5 @@
 			},
 			"lease car": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"yes": 0,
@@ -40,5 +40,5 @@
 			},
 			"permanent contract": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"yes": 0.23809523809523808,
@@ -48,5 +48,5 @@
 			},
 			"career development opportunities": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"low": 1.0,
Index: /simplerunner/src/test/resources/mopac.json
===================================================================
--- /simplerunner/src/test/resources/mopac.json	(revision 32)
+++ /simplerunner/src/test/resources/mopac.json	(revision 33)
@@ -14,5 +14,5 @@
 		} ]}} ],
 		"deadline": {
-			"deadlinetime": {
+			"DeadlineTime": {
 				"durationms": 2000000
 			}
Index: /simplerunner/src/test/resources/party/party1.json
===================================================================
--- /simplerunner/src/test/resources/party/party1.json	(revision 32)
+++ /simplerunner/src/test/resources/party/party1.json	(revision 33)
@@ -4,5 +4,5 @@
 		"issueUtilities": {
 			"Food": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Chips and Nuts": 0.75,
@@ -14,5 +14,5 @@
 			},
 			"Drinks": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Non-Alcoholic": 0.263,
@@ -24,5 +24,5 @@
 			},
 			"Location": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Party Tent": 0.52,
@@ -34,5 +34,5 @@
 			},
 			"Invitations": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Plain": 0.24,
@@ -44,5 +44,5 @@
 			},
 			"Music": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"MP3": 0.65,
@@ -53,5 +53,5 @@
 			},
 			"Cleanup": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Water and Soap": 0.65,
Index: /simplerunner/src/test/resources/party/party2.json
===================================================================
--- /simplerunner/src/test/resources/party/party2.json	(revision 32)
+++ /simplerunner/src/test/resources/party/party2.json	(revision 33)
@@ -4,5 +4,5 @@
 		"issueUtilities": {
 			"Food": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Chips and Nuts": 0.24,
@@ -14,5 +14,5 @@
 			},
 			"Drinks": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Non-Alcoholic": 0.33,
@@ -24,5 +24,5 @@
 			},
 			"Location": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Party Tent": 0.3,
@@ -34,5 +34,5 @@
 			},
 			"Invitations": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Plain": 0.84,
@@ -44,5 +44,5 @@
 			},
 			"Music": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"MP3": 0.94,
@@ -53,5 +53,5 @@
 			},
 			"Cleanup": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Water and Soap": 1,
Index: /simplerunner/src/test/resources/party/party3.json
===================================================================
--- /simplerunner/src/test/resources/party/party3.json	(revision 32)
+++ /simplerunner/src/test/resources/party/party3.json	(revision 33)
@@ -4,5 +4,5 @@
 		"issueUtilities": {
 			"Food": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Chips and Nuts": 1,
@@ -14,5 +14,5 @@
 			},
 			"Drinks": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Non-Alcoholic": 0.99,
@@ -24,5 +24,5 @@
 			},
 			"Location": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Party Tent": 0.98,
@@ -34,5 +34,5 @@
 			},
 			"Invitations": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Plain": 0.99,
@@ -44,5 +44,5 @@
 			},
 			"Music": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"MP3": 0.9,
@@ -53,5 +53,5 @@
 			},
 			"Cleanup": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Water and Soap": 1,
Index: /simplerunner/src/test/resources/party/party4.json
===================================================================
--- /simplerunner/src/test/resources/party/party4.json	(revision 32)
+++ /simplerunner/src/test/resources/party/party4.json	(revision 33)
@@ -4,5 +4,5 @@
 		"issueUtilities": {
 			"Food": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Chips and Nuts": 0.98,
@@ -14,5 +14,5 @@
 			},
 			"Drinks": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Non-Alcoholic": 0.99,
@@ -24,5 +24,5 @@
 			},
 			"Location": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Party Tent": 0.58,
@@ -34,5 +34,5 @@
 			},
 			"Invitations": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Plain": 0.99,
@@ -44,5 +44,5 @@
 			},
 			"Music": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"MP3": 0.65,
@@ -53,5 +53,5 @@
 			},
 			"Cleanup": {
-				"discreteutils": {
+				"DiscreteValueSetUtilities": {
 					"valueUtilities": {
 						"Water and Soap": 0.27,
Index: /simplerunner/src/test/resources/settings.json
===================================================================
--- /simplerunner/src/test/resources/settings.json	(revision 32)
+++ /simplerunner/src/test/resources/settings.json	(revision 33)
@@ -14,5 +14,5 @@
 		],
 		"deadline": {
-			"deadlinetime": {
+			"DeadlineTime": {
 				"durationms": 100
 			}
Index: /simplerunner/src/test/resources/settings2.json
===================================================================
--- /simplerunner/src/test/resources/settings2.json	(revision 32)
+++ /simplerunner/src/test/resources/settings2.json	(revision 33)
@@ -15,5 +15,5 @@
 		],
 		"deadline": {
-			"deadlinetime": {
+			"DeadlineTime": {
 				"durationms": 100
 			}
Index: /simplerunner/src/test/resources/settingsbadprofile.json
===================================================================
--- /simplerunner/src/test/resources/settingsbadprofile.json	(revision 33)
+++ /simplerunner/src/test/resources/settingsbadprofile.json	(revision 33)
@@ -0,0 +1,23 @@
+{
+	"SAOPSettings": {
+		"participants": [
+		{"TeamInfo":{"parties":[
+		{
+			"party": {"partyref":"classpath:geniusweb.exampleparties.randomparty.RandomParty", "parameters":{}},
+			"profile": "file:src/test/resources/jobs/jobs1.json"
+		} ]}}
+		, 
+		{"TeamInfo":{"parties":[
+		{
+			"party": {"partyref":"classpath:geniusweb.exampleparties.randomparty.RandomParty","parameters":{}},
+			"profile": "file:src/test/resources/jobs/nosuchprofile.json"
+		} ]}}
+		],
+		"deadline": {
+			"DeadlineTime": {
+				"durationms": 100
+			}
+		}
+		
+	}
+}
Index: /simplerunner/src/test/resources/shaoptoursettings.json
===================================================================
--- /simplerunner/src/test/resources/shaoptoursettings.json	(revision 32)
+++ /simplerunner/src/test/resources/shaoptoursettings.json	(revision 33)
@@ -53,5 +53,5 @@
 				],
 				"deadline": {
-					"deadlinerounds": {
+					"DeadlineRounds": {
 						"rounds": 10,
 						"durationms": 1000
Index: /simplerunner/src/test/resources/tournament.json
===================================================================
--- /simplerunner/src/test/resources/tournament.json	(revision 32)
+++ /simplerunner/src/test/resources/tournament.json	(revision 33)
@@ -54,5 +54,5 @@
 				],
 				"deadline": {
-					"deadlinerounds": {
+					"DeadlineRounds": {
 						"rounds": 10,
 						"durationms": 1000
Index: /timeline/pom.xml
===================================================================
--- /timeline/pom.xml	(revision 32)
+++ /timeline/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>timeline</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -15,6 +15,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -105,10 +105,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -157,5 +152,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
Index: /timeline/src/main/java/geniusweb/deadline/DeadlineRounds.java
===================================================================
--- /timeline/src/main/java/geniusweb/deadline/DeadlineRounds.java	(revision 32)
+++ /timeline/src/main/java/geniusweb/deadline/DeadlineRounds.java	(revision 33)
@@ -3,5 +3,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 /**
@@ -11,5 +10,4 @@
  * the protocol.
  */
-@JsonTypeName("deadlinerounds")
 public class DeadlineRounds extends DeadlineTime {
 	private final Integer rounds;
Index: /timeline/src/main/java/geniusweb/deadline/DeadlineTime.java
===================================================================
--- /timeline/src/main/java/geniusweb/deadline/DeadlineTime.java	(revision 32)
+++ /timeline/src/main/java/geniusweb/deadline/DeadlineTime.java	(revision 33)
@@ -3,10 +3,8 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 /**
  * How long a session will be allowed to run
  */
-@JsonTypeName("deadlinetime")
 public class DeadlineTime implements Deadline {
 
Index: /timeline/src/main/java/geniusweb/progress/ProgressRounds.java
===================================================================
--- /timeline/src/main/java/geniusweb/progress/ProgressRounds.java	(revision 32)
+++ /timeline/src/main/java/geniusweb/progress/ProgressRounds.java	(revision 33)
@@ -5,5 +5,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 /**
@@ -11,5 +10,4 @@
  * user of this class, calling {@link #advance()}. immutable.
  */
-@JsonTypeName("rounds")
 public class ProgressRounds implements Progress {
 
Index: /timeline/src/main/java/geniusweb/progress/ProgressTime.java
===================================================================
--- /timeline/src/main/java/geniusweb/progress/ProgressTime.java	(revision 32)
+++ /timeline/src/main/java/geniusweb/progress/ProgressTime.java	(revision 33)
@@ -5,5 +5,4 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
 
 import geniusweb.deadline.DeadlineTime;
@@ -15,5 +14,4 @@
  *
  */
-@JsonTypeName("time")
 public class ProgressTime implements Progress {
 
Index: /timeline/src/test/java/geniusweb/deadline/DeadlineTest.java
===================================================================
--- /timeline/src/test/java/geniusweb/deadline/DeadlineTest.java	(revision 32)
+++ /timeline/src/test/java/geniusweb/deadline/DeadlineTest.java	(revision 33)
@@ -18,10 +18,10 @@
 public class DeadlineTest extends GeneralTests<Deadline> {
 	private final ObjectMapper jackson = new ObjectMapper();
-	private final String deadlinestring = "{\"deadlinerounds\":{\"rounds\":100,\"durationms\":999}}";
+	private final String deadlinestring = "{\"DeadlineRounds\":{\"rounds\":100,\"durationms\":999}}";
 	private final DeadlineRounds deadlineRounds = new DeadlineRounds(100, 999);
 	private final DeadlineRounds deadlineRounds1 = new DeadlineRounds(100, 999);
 	private final DeadlineRounds deadlineRounds2 = new DeadlineRounds(100,
 			9999);
-	private final String deadlinetimestring = "{\"deadlinetime\":{\"durationms\":2000}}";
+	private final String deadlinetimestring = "{\"DeadlineTime\":{\"durationms\":2000}}";
 	private final DeadlineTime deadlineTime = new DeadlineTime(2000);
 
Index: /timeline/src/test/java/geniusweb/progress/ProgressRoundsTest.java
===================================================================
--- /timeline/src/test/java/geniusweb/progress/ProgressRoundsTest.java	(revision 32)
+++ /timeline/src/test/java/geniusweb/progress/ProgressRoundsTest.java	(revision 33)
@@ -39,5 +39,5 @@
 	private ProgressRounds progress;
 	private final ObjectMapper jackson = new ObjectMapper();
-	private final String progressstring = "{\"rounds\":{\"duration\":10,\"currentRound\":0,\"endtime\":999}}";
+	private final String progressstring = "{\"ProgressRounds\":{\"duration\":10,\"currentRound\":0,\"endtime\":999}}";
 
 	private final long start = 1234;
Index: /timeline/src/test/java/geniusweb/progress/ProgressTimeTest.java
===================================================================
--- /timeline/src/test/java/geniusweb/progress/ProgressTimeTest.java	(revision 32)
+++ /timeline/src/test/java/geniusweb/progress/ProgressTimeTest.java	(revision 33)
@@ -29,5 +29,5 @@
 
 	private final ObjectMapper jackson = new ObjectMapper();
-	private final String progressstring = "{\"time\":{\"duration\":10,\"start\":0}}";
+	private final String progressstring = "{\"ProgressTime\":{\"duration\":10,\"start\":0}}";
 
 	private final long start = 1234;
Index: /voting/pom.xml
===================================================================
--- /voting/pom.xml	(revision 32)
+++ /voting/pom.xml	(revision 33)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb</groupId>
 	<artifactId>voting</artifactId>
-	<version>1.6.1</version> <!-- must equal ${geniusweb.version} -->
+	<version>2.0.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -16,6 +16,6 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.6.1</geniusweb.version>
+		<jackson-2-version>2.12.3</jackson-2-version>
+		<geniusweb.version>2.0.0</geniusweb.version>
 	</properties>
 
@@ -41,6 +41,6 @@
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>immutablelist</artifactId>
-			<version>1.1.2</version>
+			<artifactId>utilities</artifactId>
+			<version>1.1.0</version>
 		</dependency>
 		<!-- the core, which includes Streaming API, shared low-level abstractions 
@@ -122,10 +122,5 @@
 		<pluginRepository>
 			<id>central</id>
-			<url>https://repo1.maven.org/</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>jfrog-plugins-release</id>
-			<name>plugins-release</name>
-			<url>https://oss.jfrog.org/artifactory/plugins-release</url>
+			<url>https://repo1.maven.org/maven2</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -192,5 +187,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>2.6.1</version>
+				<version>3.2.3</version>
 				<executions>
 					<execution>
