Index: exampleparties/pom.xml
===================================================================
--- exampleparties/pom.xml	(revision 52)
+++ exampleparties/pom.xml	(revision 1)
@@ -12,5 +12,5 @@
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<jackson-2-version>2.12.3</jackson-2-version>
+		<jackson-2-version>2.9.6</jackson-2-version>
 	</properties>
 
@@ -18,14 +18,4 @@
 		<module>randomparty</module>
 		<module>randompartypy</module>
-		<module>timedependentparty</module>
-		<module>conceder</module>
-		<module>hardliner</module>
-		<module>boulware</module>
-		<module>humangui</module>
-		<module>linear</module>
-		<module>simpleshaop</module>
-		<module>comparebids</module>
-		<module>anac2019</module>
-		<module>simpleboa</module>
 	</modules>
 </project>
Index: exampleparties/randomparty/pom.xml
===================================================================
--- exampleparties/randomparty/pom.xml	(revision 52)
+++ exampleparties/randomparty/pom.xml	(revision 1)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>randomparty</artifactId>
-	<version>2.1.6</version>  <!-- equals the geniusweb version -->
+	<version>1.0.0</version>
 	<packaging>jar</packaging>
 
@@ -16,6 +16,5 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.12.3</jackson-2-version>
-		<geniusweb.version>${project.version}</geniusweb.version>
+		<jackson-2-version>2.9.6</jackson-2-version>
 	</properties>
 
@@ -23,5 +22,5 @@
 		<repository>
 			<id>artifactory.ewi.tudelft.nl</id>
-			<url>https://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
 		</repository>
 	</distributionManagement>
@@ -34,5 +33,5 @@
 			<groupId>geniusweb</groupId>
 			<artifactId>party</artifactId>
-			<version>${geniusweb.version}</version>
+			<version>1.0.0</version>
 		</dependency>
 
@@ -40,20 +39,20 @@
 			<groupId>geniusweb</groupId>
 			<artifactId>bidspace</artifactId>
-			<version>${geniusweb.version}</version>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>tudelft.utilities</groupId>
+			<artifactId>logging</artifactId>
+			<version>1.0.0</version>
 		</dependency>
 		<dependency>
 			<groupId>geniusweb</groupId>
 			<artifactId>profileconnection</artifactId>
-			<version>${geniusweb.version}</version>
+			<version>1.0.0</version>
 		</dependency>
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>logging</artifactId>
-			<version>1.0.1</version>
-		</dependency>
-		<dependency>
-			<groupId>tudelft.utilities</groupId>
-			<artifactId>utilities</artifactId>
-			<version>1.2.1</version>
+			<artifactId>immutablelist</artifactId>
+			<version>1.0.0</version>
 		</dependency>
 
@@ -113,6 +112,6 @@
 		<dependency>
 			<groupId>org.mockito</groupId>
-			<artifactId>mockito-core</artifactId>
-			<version>3.11.2</version>
+			<artifactId>mockito-all</artifactId>
+			<version>1.9.5</version>
 			<scope>test</scope>
 		</dependency>
@@ -120,5 +119,5 @@
 			<groupId>tudelft.utilities</groupId>
 			<artifactId>junit</artifactId>
-			<version>1.0.5</version>
+			<version>1.0.1</version>
 			<scope>test</scope>
 		</dependency>
@@ -130,19 +129,16 @@
 		<repository>
 			<id>artifactory.ewi.tudelft.nl</id>
-			<url>https://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
 			<snapshots>
 				<enabled>false</enabled>
 			</snapshots>
 		</repository>
+
 	</repositories>
 
 	<pluginRepositories>
 		<pluginRepository>
-			<id>central</id>
-			<url>https://repo1.maven.org/maven2</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>artifactory.ewi.tudelft.nl</id>
-			<url>https://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<id>jcenter</id>
+			<url>http://jcenter.bintray.com</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -161,22 +157,8 @@
 				</configuration>
 			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-source-plugin</artifactId>
-				<version>3.1.0</version>
-				<executions>
-					<execution>
-						<id>attach-sources</id>
-						<goals>
-							<goal>jar</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
 
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
-				<version>3.2.0</version>
 				<configuration>
 					<archive>
@@ -191,5 +173,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-javadoc-plugin</artifactId>
-				<version>3.2.0</version>
+				<version>2.10.1</version>
 				<executions>
 					<execution>
@@ -198,4 +180,8 @@
 							<goal>jar</goal>
 						</goals>
+						<configuration>
+							<additionalparam>${javadoc.opts}</additionalparam>
+							<additionalparam>-Xdoclint:none</additionalparam>
+						</configuration>
 					</execution>
 				</executions>
@@ -205,5 +191,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>3.2.3</version>
+				<version>2.6.1</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 52)
+++ exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java	(revision 1)
@@ -3,62 +3,35 @@
 import java.io.IOException;
 import java.math.BigInteger;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Random;
-import java.util.Set;
 import java.util.logging.Level;
-import java.util.stream.Collectors;
 
 import geniusweb.actions.Accept;
 import geniusweb.actions.Action;
-import geniusweb.actions.LearningDone;
 import geniusweb.actions.Offer;
 import geniusweb.actions.PartyId;
-import geniusweb.actions.Vote;
-import geniusweb.actions.VoteWithValue;
-import geniusweb.actions.Votes;
-import geniusweb.actions.VotesWithValue;
 import geniusweb.bidspace.AllPartialBidsList;
-import geniusweb.inform.ActionDone;
-import geniusweb.inform.Finished;
-import geniusweb.inform.Inform;
-import geniusweb.inform.OptIn;
-import geniusweb.inform.OptInWithValue;
-import geniusweb.inform.Settings;
-import geniusweb.inform.Voting;
-import geniusweb.inform.YourTurn;
 import geniusweb.issuevalue.Bid;
 import geniusweb.party.Capabilities;
 import geniusweb.party.DefaultParty;
-import geniusweb.profile.PartialOrdering;
-import geniusweb.profile.Profile;
-import geniusweb.profile.utilityspace.UtilitySpace;
+import geniusweb.party.inform.ActionDone;
+import geniusweb.party.inform.Finished;
+import geniusweb.party.inform.Inform;
+import geniusweb.party.inform.Settings;
+import geniusweb.party.inform.YourTurn;
+import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
 import geniusweb.profileconnection.ProfileConnectionFactory;
 import geniusweb.profileconnection.ProfileInterface;
 import geniusweb.progress.Progress;
 import geniusweb.progress.ProgressRounds;
+import geniusweb.references.ProtocolRef;
 import tudelft.utilities.logging.Reporter;
 
 /**
- * A party that places random bids and accepts when it receives an offer with
- * sufficient utility. This party is also a demo on how to support the various
- * protocols, which causes this party to look a bit complex.
- * 
- * <h2>parameters</h2>
- * <table >
- * <caption>parameters</caption>
- * <tr>
- * <td>minPower</td>
- * <td>This value is used as minPower for placed {@link Vote}s. Default value is
- * 2.</td>
- * </tr>
- * <tr>
- * <td>maxPower</td>
- * <td>This value is used as maxPower for placed {@link Vote}s. Default value is
- * infinity.</td>
- * </tr>
- * </table>
+ * A simple party that places random bids and accepts when it receives an offer
+ * with sufficient utility.
  */
 public class RandomParty extends DefaultParty {
@@ -67,10 +40,6 @@
 	private PartyId me;
 	private final Random random = new Random();
-	protected ProfileInterface profileint = null;
+	protected ProfileInterface profileint;
 	private Progress progress;
-	private Settings settings;
-	private Votes lastvotes;
-	private VotesWithValue lastvoteswithvalue;
-	private String protocol;
 
 	public RandomParty() {
@@ -85,15 +54,9 @@
 		try {
 			if (info instanceof Settings) {
-				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(sett.getProfile().getURI(), getReporter());
-				}
+				Settings settings = (Settings) info;
+				this.profileint = ProfileConnectionFactory
+						.create(settings.getProfile().getURI(), getReporter());
+				this.me = settings.getID();
+				this.progress = settings.getProgress();
 			} else if (info instanceof ActionDone) {
 				Action otheract = ((ActionDone) info).getAction();
@@ -102,94 +65,36 @@
 				}
 			} else if (info instanceof YourTurn) {
-				makeOffer();
+				myTurn();
+				if (progress instanceof ProgressRounds) {
+					progress = ((ProgressRounds) progress).advance();
+				}
 			} else if (info instanceof Finished) {
 				getReporter().log(Level.INFO, "Final ourcome:" + info);
-				terminate(); // stop this party and free resources.
-			} else if (info instanceof Voting) {
-				switch (protocol) {
-				case "MOPAC":
-					lastvotes = vote((Voting) info);
-					getConnection().send(lastvotes);
-					break;
-				case "MOPAC2":
-					lastvoteswithvalue = voteWithValue((Voting) info);
-					getConnection().send(lastvoteswithvalue);
-				}
-			} else if (info instanceof OptIn) {
-				// just repeat our last vote.
-				getConnection().send(lastvotes);
-			} else if (info instanceof OptInWithValue) {
-				getConnection().send(lastvoteswithvalue);
 			}
 		} catch (Exception e) {
-			throw new RuntimeException("Failed to handle info", e);
+			getReporter().log(Level.SEVERE, "Failed to handle info", e);
 		}
-		updateRound(info);
 	}
 
 	@Override
 	public Capabilities getCapabilities() {
-		return new Capabilities(new HashSet<>(
-				Arrays.asList("SAOP", "AMOP", "MOPAC", "MOPAC2", "Learn")),
-				Collections.singleton(Profile.class));
+		try {
+			return new Capabilities(new HashSet<>(
+					Arrays.asList(new ProtocolRef(new URI("SAOP")))));
+		} catch (URISyntaxException e) {
+			getReporter().log(Level.SEVERE, "Failed to create capabilities URI",
+					e);
+			return null;
+		}
 	}
 
 	@Override
 	public String getDescription() {
-		return "places random bids until it can accept an offer with utility >0.6. "
-				+ "Parameters minPower and maxPower can be used to control voting behaviour.";
+		return "places random bids until it can accept an offer with utility >0.6";
 	}
 
-	@Override
-	public void terminate() {
-		super.terminate();
-		if (this.profileint != null) {
-			this.profileint.close();
-			this.profileint = null;
-		}
-	}
-
-	/******************* private support funcs ************************/
-
-	/**
-	 * Update {@link #progress}
-	 * 
-	 * @param info the received info. Used to determine if this is the last info
-	 *             of the round
-	 */
-	private void updateRound(Inform info) {
-		if (protocol == null)
-			return;
-		switch (protocol) {
-		case "SAOP":
-		case "SHAOP":
-			if (!(info instanceof YourTurn))
-				return;
-			break;
-		case "MOPAC":
-			if (!(info instanceof OptIn))
-				return;
-			break;
-		case "MOPAC2":
-			if (!(info instanceof OptInWithValue))
-				return;
-			break;
-		default:
-			return;
-		}
-		// if we get here, round must be increased.
-		if (progress instanceof ProgressRounds) {
-			progress = ((ProgressRounds) progress).advance();
-		}
-
-	}
-
-	/**
-	 * send our next offer
-	 */
-	private void makeOffer() throws IOException {
+	private void myTurn() throws IOException {
 		Action action;
-		if ((protocol.equals("SAOP") || protocol.equals("SHAOP"))
-				&& isGood(lastReceivedBid)) {
+		if (isGood(lastReceivedBid)) {
 			action = new Accept(me, lastReceivedBid);
 		} else {
@@ -208,74 +113,8 @@
 	}
 
-	/**
-	 * @param bid the bid to check
-	 * @return true iff bid is good for us.
-	 */
 	private boolean isGood(Bid bid) {
-		if (bid == null)
-			return false;
-		Profile profile;
-		try {
-			profile = profileint.getProfile();
-		} catch (IOException e) {
-			throw new IllegalStateException(e);
-		}
-		if (profile instanceof UtilitySpace)
-			return ((UtilitySpace) profile).getUtility(bid).doubleValue() > 0.6;
-		if (profile instanceof PartialOrdering) {
-			return ((PartialOrdering) profile).isPreferredOrEqual(bid,
-					profile.getReservationBid());
-		}
-		return false;
-	}
-
-	/**
-	 * @param voting the {@link Voting} object containing the options
-	 * 
-	 * @return our next Votes.
-	 */
-	private Votes vote(Voting voting) throws IOException {
-		Object val = settings.getParameters().get("minPower");
-		Integer minpower = (val instanceof Integer) ? (Integer) val : 2;
-		val = settings.getParameters().get("maxPower");
-		Integer maxpower = (val instanceof Integer) ? (Integer) val
-				: Integer.MAX_VALUE;
-
-		Set<Vote> votes = voting.getOffers().stream().distinct()
-				.filter(offer -> isGood(offer.getBid()))
-				.map(offer -> new Vote(me, offer.getBid(), minpower, maxpower))
-				.collect(Collectors.toSet());
-		return new Votes(me, votes);
-	}
-
-	/**
-	 * @param voting the {@link Voting} object containing the options
-	 * 
-	 * @return our next Votes. Returns only votes on good bids and tries to
-	 *         distribute vote values evenly over all good bids.
-	 */
-	private VotesWithValue voteWithValue(Voting voting) throws IOException {
-		Object val = settings.getParameters().get("minPower");
-		Integer minpower = (val instanceof Integer) ? (Integer) val : 2;
-		val = settings.getParameters().get("maxPower");
-		Integer maxpower = (val instanceof Integer) ? (Integer) val
-				: Integer.MAX_VALUE;
-
-		List<Bid> goodbids = voting.getOffers().stream().distinct()
-				.filter(offer -> isGood(offer.getBid()))
-				.map(offer -> offer.getBid()).collect(Collectors.toList());
-
-		if (goodbids.isEmpty()) {
-			return new VotesWithValue(me, Collections.emptySet());
-		}
-		// extra difficulty now is to have the utility sum to exactly 100
-		int mostvalues = 100 / goodbids.size();
-		int value = 100 - mostvalues * (goodbids.size() - 1);
-		Set<VoteWithValue> votes = new HashSet<>();
-		for (Bid bid : goodbids) {
-			votes.add(new VoteWithValue(me, bid, minpower, maxpower, value));
-			value = mostvalues;
-		}
-		return new VotesWithValue(me, votes);
+		return bid != null
+				&& ((LinearAdditiveUtilitySpace) profileint.getProfile())
+						.getUtility(bid).doubleValue() > 0.6;
 	}
 
Index: exampleparties/randomparty/src/test/java/geniusweb/exampleparties/randomparty/RandomPartyTest.java
===================================================================
--- exampleparties/randomparty/src/test/java/geniusweb/exampleparties/randomparty/RandomPartyTest.java	(revision 52)
+++ exampleparties/randomparty/src/test/java/geniusweb/exampleparties/randomparty/RandomPartyTest.java	(revision 1)
@@ -7,7 +7,5 @@
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 
 import java.io.IOException;
@@ -18,6 +16,4 @@
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
@@ -36,22 +32,16 @@
 import geniusweb.actions.Offer;
 import geniusweb.actions.PartyId;
-import geniusweb.actions.Votes;
-import geniusweb.actions.VotesWithValue;
 import geniusweb.bidspace.AllBidsList;
-import geniusweb.connection.ConnectionEnd;
-import geniusweb.inform.ActionDone;
-import geniusweb.inform.Agreements;
-import geniusweb.inform.Finished;
-import geniusweb.inform.Inform;
-import geniusweb.inform.OptIn;
-import geniusweb.inform.Settings;
-import geniusweb.inform.Voting;
-import geniusweb.inform.YourTurn;
+import geniusweb.connection.Connection;
 import geniusweb.issuevalue.Bid;
 import geniusweb.party.Capabilities;
+import geniusweb.party.inform.ActionDone;
+import geniusweb.party.inform.Finished;
+import geniusweb.party.inform.Inform;
+import geniusweb.party.inform.Settings;
+import geniusweb.party.inform.YourTurn;
 import geniusweb.profile.Profile;
-import geniusweb.profile.utilityspace.LinearAdditive;
+import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
 import geniusweb.progress.ProgressRounds;
-import geniusweb.references.Parameters;
 import geniusweb.references.ProfileRef;
 import geniusweb.references.ProtocolRef;
@@ -62,6 +52,5 @@
 public class RandomPartyTest {
 
-	private static final PartyId PARTY1 = new PartyId("party1");
-	private static final String SAOP = "SAOP";
+	private static final ProtocolRef SAOP = new ProtocolRef("SAOP");
 	private static final PartyId otherparty = new PartyId("other");
 	private static final String PROFILE = "src/test/resources/testprofile.json";
@@ -69,12 +58,9 @@
 
 	private RandomParty party;
-	private final TestConnection connection = new TestConnection();
-	private final ProtocolRef protocol = new ProtocolRef(SAOP);
-	private final ProtocolRef mopacProtocol = new ProtocolRef("MOPAC");
-	private final ProtocolRef mopac2Protocol = new ProtocolRef("MOPAC2");
-	private final ProgressRounds progress = mock(ProgressRounds.class);
-	private Settings settings, mopacSettings, mopac2Settings;
-	private LinearAdditive profile;
-	private final Parameters parameters = new Parameters();
+	private TestConnection connection = new TestConnection();
+	private ProtocolRef protocol = mock(ProtocolRef.class);
+	private ProgressRounds progress = mock(ProgressRounds.class);
+	private Settings settings;
+	private LinearAdditiveUtilitySpace profile;
 
 	@Before
@@ -82,17 +68,11 @@
 			IOException, URISyntaxException {
 		party = new RandomParty();
-		settings = new Settings(PARTY1,
-				new ProfileRef(new URI("file:" + PROFILE)), protocol, progress,
-				parameters);
-		mopacSettings = new Settings(PARTY1,
-				new ProfileRef(new URI("file:" + PROFILE)), mopacProtocol,
-				progress, parameters);
-		mopac2Settings = new Settings(PARTY1,
-				new ProfileRef(new URI("file:" + PROFILE)), mopac2Protocol,
-				progress, parameters);
+		settings = new Settings(new PartyId("party1"),
+				new ProfileRef(new URI("file:" + PROFILE)), protocol, progress);
 
 		String serialized = new String(Files.readAllBytes(Paths.get(PROFILE)),
 				StandardCharsets.UTF_8);
-		profile = (LinearAdditive) jackson.readValue(serialized, Profile.class);
+		profile = (LinearAdditiveUtilitySpace) jackson.readValue(serialized,
+				Profile.class);
 
 	}
@@ -111,5 +91,5 @@
 		Capabilities capabilities = party.getCapabilities();
 		assertFalse("party does not define protocols",
-				capabilities.getBehaviours().isEmpty());
+				capabilities.getProtocols().isEmpty());
 	}
 
@@ -124,5 +104,5 @@
 	public void testInformSettings() {
 		party.connect(connection);
-		connection.notifyListeners(settings);
+		connection.notifyChange(settings);
 		assertEquals(0, connection.getActions().size());
 	}
@@ -176,14 +156,12 @@
 		party.connect(connection);
 		party.notifyChange(settings);
-		Agreements agreements = mock(Agreements.class);
-		when(agreements.toString()).thenReturn("agree");
-		party.notifyChange(new Finished(agreements));
+		party.notifyChange(new Finished(null));
 
 		verify(reporter).log(eq(Level.INFO),
-				eq("Final ourcome:Finished[agree]"));
-	}
-
-	@Test
-	public void testAgentsUpdatesSAOPProgress() {
+				eq("Final ourcome:Finished[null]"));
+	}
+
+	@Test
+	public void testAgentsUpdatesProgress() {
 		party.connect(connection);
 		party.notifyChange(settings);
@@ -194,20 +172,6 @@
 
 	@Test
-	public void testAgentsUpdatesMOPACProgress() {
-		party.connect(connection);
-		party.notifyChange(mopacSettings);
-		// in mopac, progress happens only after optin phase
-		party.notifyChange(new YourTurn());
-		verify(progress, times(0)).advance();
-		party.notifyChange(
-				new Voting(Collections.emptyList(), Collections.emptyMap()));
-		verify(progress, times(0)).advance();
-		party.notifyChange(new OptIn(Collections.emptyList()));
-		verify(progress, times(1)).advance();
-	}
-
-	@Test
 	public void testGetCapabilities() {
-		assertTrue(party.getCapabilities().getBehaviours().contains(SAOP));
+		assertTrue(party.getCapabilities().getProtocols().contains(SAOP));
 	}
 
@@ -223,37 +187,4 @@
 	}
 
-	@Test
-	public void testVoting() throws URISyntaxException {
-		party.connect(connection);
-		party.notifyChange(mopacSettings);
-
-		Bid bid = findGoodBid();
-		Offer offer = new Offer(PARTY1, bid);
-		party.notifyChange(new Voting(Arrays.asList(offer),
-				Collections.singletonMap(PARTY1, 1)));
-		assertEquals(1, connection.getActions().size());
-		Action action = connection.getActions().get(0);
-		assertTrue(action instanceof Votes);
-		assertEquals(1, ((Votes) action).getVotes().size());
-		assertEquals(bid,
-				((Votes) action).getVotes().iterator().next().getBid());
-	}
-
-	@Test
-	public void testVotingWithValue() throws URISyntaxException {
-		party.connect(connection);
-		party.notifyChange(mopac2Settings);
-
-		Bid bid = findGoodBid();
-		Offer offer = new Offer(PARTY1, bid);
-		party.notifyChange(new Voting(Arrays.asList(offer),
-				Collections.singletonMap(PARTY1, 1)));
-		assertEquals(1, connection.getActions().size());
-		Action action = connection.getActions().get(0);
-		assertTrue(action instanceof VotesWithValue);
-		assertEquals(1, ((VotesWithValue) action).getVotes().size());
-		assertEquals(bid, ((VotesWithValue) action).getVotes().iterator().next()
-				.getBid());
-	}
 }
 
@@ -265,5 +196,5 @@
  */
 class TestConnection extends DefaultListenable<Inform>
-		implements ConnectionEnd<Inform, Action> {
+		implements Connection<Inform, Action> {
 	private List<Action> actions = new LinkedList<>();
 
Index: exampleparties/randomparty/src/test/resources/testprofile.json
===================================================================
--- exampleparties/randomparty/src/test/resources/testprofile.json	(revision 52)
+++ exampleparties/randomparty/src/test/resources/testprofile.json	(revision 1)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"issue2": {
-				"NumberValueSetUtilities": {
+				"numberutils": {
 					"lowValue": 12,
 					"lowUtility": 0.3,
@@ -11,5 +11,5 @@
 			},
 			"issue1": {
-				"DiscreteValueSetUtilities": {
+				"discreteutils": {
 					"valueUtilities": {
 						"issue1value1": 0.2,
@@ -27,21 +27,19 @@
 			"issuesValues": {
 				"issue2": {
-					"range": { "low":12,"high":18,"step":1 }
+					"range": ["12", "18", "1"]
 				},
 				"issue1": {
-					"values": [
-						"issue1value1",
-						"issue1value2"
-					]
+					"values": ["issue1value1", "issue1value2"]
 				}
 			}
 		},
 		"name": "testprofile",
-		"reservationBid": {
+				"reservationBid": {
 			"issuevalues": {
-				"issue1": "issue1value1",
-				"issue2": 12
+				"issue1": "issuevalue1",
+				"issue2": "12"
 			}
 		}
+		
 	}
 }
Index: exampleparties/randompartypy/bin/.pydevproject
===================================================================
--- exampleparties/randompartypy/bin/.pydevproject	(revision 1)
+++ exampleparties/randompartypy/bin/.pydevproject	(revision 1)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?eclipse-pydev version="1.0"?><pydev_project>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python interpreter</pydev_property>
+</pydev_project>
Index: exampleparties/randompartypy/bin/pom.xml
===================================================================
--- exampleparties/randompartypy/bin/pom.xml	(revision 1)
+++ exampleparties/randompartypy/bin/pom.xml	(revision 1)
@@ -0,0 +1,254 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>genius2.exampleparties</groupId>
+	<artifactId>randompyparty</artifactId>
+	<version>1.0.0</version>
+	<packaging>jar</packaging>
+
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<maven.compiler.target>1.8</maven.compiler.target>
+		<maven.compiler.source>1.8</maven.compiler.source>
+		<basedir>.</basedir>
+		<passwd>${env.ARTIFACTORY_PASS}</passwd>
+		<jackson-2-version>2.9.6</jackson-2-version>
+	</properties>
+
+	<distributionManagement>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+		</repository>
+	</distributionManagement>
+
+
+	<dependencies>
+		<dependency>
+			<groupId>genius2</groupId>
+			<artifactId>pythonadapter</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>genius2</groupId>
+			<artifactId>bidspace</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>genius2</groupId>
+			<artifactId>profileconnection</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>tudelft.utilities</groupId>
+			<artifactId>immutablelist</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+
+
+		<!-- the core, which includes Streaming API, shared low-level abstractions 
+			(but NOT data-binding) -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-core</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+		<!-- Just the annotations; use this dependency if you want to attach annotations 
+			to classes without connecting them to the code. -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-annotations</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+		<!-- databinding; ObjectMapper, JsonNode and related classes are here -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+
+		<!-- smile (binary JSON). Other artifacts in this group do other formats. -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.dataformat</groupId>
+			<artifactId>jackson-dataformat-smile</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+		<!-- JAX-RS provider -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.jaxrs</groupId>
+			<artifactId>jackson-jaxrs-json-provider</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+		<!-- Support for JAX-B annotations as additional configuration -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.module</groupId>
+			<artifactId>jackson-module-jaxb-annotations</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.12</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-all</artifactId>
+			<version>1.9.5</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>tudelft.utilities</groupId>
+			<artifactId>junit</artifactId>
+			<version>1.0.1</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+
+
+	<repositories>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+
+	</repositories>
+
+	<pluginRepositories>
+		<pluginRepository>
+			<id>jcenter</id>
+			<url>http://jcenter.bintray.com</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+
+	<build>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.8.0</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.10.1</version>
+				<executions>
+					<execution>
+						<id>attach-javadocs</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+						<configuration>
+							<additionalparam>${javadoc.opts}</additionalparam>
+							<additionalparam>-Xdoclint:none</additionalparam>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.jfrog.buildinfo</groupId>
+				<artifactId>artifactory-maven-plugin</artifactId>
+				<version>2.6.1</version>
+				<executions>
+					<execution>
+						<id>build-info</id>
+						<goals>
+							<goal>publish</goal>
+						</goals>
+						<configuration>
+							<publisher>
+								<contextUrl>http://artifactory.ewi.tudelft.nl/artifactory</contextUrl>
+								<repoKey>libs-release</repoKey>
+								<username>wouter</username>
+								<password>${passwd}</password>
+							</publisher>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.4.1</version>
+				<configuration>
+					<!-- get all project dependencies -->
+					<descriptorRefs>
+						<descriptorRef>jar-with-dependencies</descriptorRef>
+					</descriptorRefs>
+					<archive>
+						<manifest>
+							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+							<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+							<mainClass>geniusweb.exampleparties.randompartypy.PartyAdapter</mainClass>
+						</manifest>
+					</archive>
+				</configuration>
+				<executions>
+					<execution>
+						<id>make-assembly</id>
+						<!-- bind to the packaging phase -->
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+
+		</plugins>
+
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>org.jfrog.buildinfo</groupId>
+										<artifactId>artifactory-maven-plugin</artifactId>
+										<versionRange>[1.0.0,)</versionRange>
+										<goals>
+											<goal>publish</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore />
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+
+
+	</build>
+</project>
Index: exampleparties/randompartypy/bin/src/main/resources/RandomParty.py
===================================================================
--- exampleparties/randompartypy/bin/src/main/resources/RandomParty.py	(revision 1)
+++ exampleparties/randompartypy/bin/src/main/resources/RandomParty.py	(revision 1)
@@ -0,0 +1,94 @@
+import time
+import traceback
+
+import geniusweb.party.inform.ActionDone as ActionDone
+import geniusweb.party.inform.Inform as Inform
+import geniusweb.party.inform.Settings as Settings
+import geniusweb.party.inform.YourTurn as YourTurn
+
+
+import java.math.BigInteger as BigInteger
+import java.net.URI as URI
+import java.util.Arrays as Arrays
+import java.util.HashSet as HashSet
+import java.util.Random as Random
+ 
+import geniusweb.actions.Accept as Accept
+import geniusweb.actions.Action as Action
+import geniusweb.actions.Offer as Offer
+import geniusweb.actions.PartyId as PartyId
+import geniusweb.bidspace.AllPartialBidsList as AllPartialBidsList
+import geniusweb.issuevalue.Bid as Bid
+import geniusweb.party.Capabilities as Capabilities
+import geniusweb.party.DefaultParty as DefaultParty
+import geniusweb.profile.Profile as Profile
+import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace as LinearAdditiveUtilitySpace
+import genius2.references.ProfileRef as ProfileRef
+import genius2.references.ProtocolRef as ProtocolRef
+import geniusweb.profileconnection.ProfileConnectionFactory as ProfileConnectionFactory
+import geniusweb.profileconnection.ProfileInterface as ProfileInterface
+import genius2.progress.ProgressRounds as ProgressRounds
+
+import com.fasterxml.jackson.databind.ObjectMapper as ObjectMapper
+
+class RandomParty (DefaultParty):
+	"""
+	A simple party that places random bids and accepts when it receives an offer
+	with sufficient utility.
+	"""
+
+	jackson = ObjectMapper()
+	random = Random();
+
+	def __init__(self):
+		self.profile = None
+		self.lastReceivedBid = None
+
+	# Override
+	def notifyChange(self, info):
+		if isinstance(info, Settings) :
+			self.profile = ProfileConnectionFactory.create(info.getProfile().getURI(), self.getReporter());
+			self.me = info.getID()
+			self.progress = info.getProgress()
+		elif isinstance(info , ActionDone): 
+			self.lastActor = info.getAction().getActor()
+			otheract = info.getAction()
+			if isinstance(otheract, Offer):
+				self.lastReceivedBid = otheract.getBid()
+		elif isinstance(info , YourTurn):
+			self._myTurn()
+			if isinstance(self.progress, ProgressRounds) :
+				self.progress = self.progress.advance();
+
+	# Override
+	def getCapabilities(self): # -> Capabilities
+		try:
+			return Capabilities(HashSet([ ProtocolRef(URI("SAOP"))]))
+		except:
+			getReporter().log(Level.SEVERE, "Failed to create capabilities URI",e);
+		return None
+
+	# Override
+	def getDescription(self):
+		return "places random bids until it can accept an offer with utility >0.6. Python version"
+
+	def _myTurn(self):
+		if self.lastReceivedBid != None and self.profile.getProfile().getUtility(self.lastReceivedBid).doubleValue() > 0.6:
+			action = Accept(self.me, self.lastReceivedBid)
+		else:
+			bidspace = AllPartialBidsList(self.profile.getProfile().getDomain())
+			bid = None
+			for attempt in range(20):
+				i = self.random.nextInt(bidspace.size()) # warning: jython implicitly converts BigInteger to long.
+				bid = bidspace.get(BigInteger.valueOf(i))
+				if self._isGood(bid):
+					break
+			action = Offer(self.me, bid);
+		try:
+			self.getConnection().send(action)
+		except:
+			print 'failed to send action '+action.toString()
+			traceback.print_exc()
+
+	def _isGood(self, bid):
+		return bid != None and self.profile.getProfile().getUtility(bid).doubleValue() > 0.6;
Index: exampleparties/randompartypy/bin/src/test/resources/testprofile.json
===================================================================
--- exampleparties/randompartypy/bin/src/test/resources/testprofile.json	(revision 1)
+++ exampleparties/randompartypy/bin/src/test/resources/testprofile.json	(revision 1)
@@ -0,0 +1,45 @@
+{
+	"LinearAdditiveUtilitySpace": {
+		"issueUtilities": {
+			"issue2": {
+				"numberutils": {
+					"lowValue": 12,
+					"lowUtility": 0.3,
+					"highValue": 18,
+					"highUtility": 0.9
+				}
+			},
+			"issue1": {
+				"discreteutils": {
+					"valueUtilities": {
+						"issue1value1": 0.2,
+						"issue1value2": 0.8
+					}
+				}
+			}
+		},
+		"issueWeights": {
+			"issue2": 0.4,
+			"issue1": 0.6
+		},
+		"domain": {
+			"name": "test",
+			"issuesValues": {
+				"issue2": {
+					"range": ["12", "18", "1"]
+				},
+				"issue1": {
+					"values": ["issue1value1", "issue1value2"]
+				}
+			}
+		},
+		"name": "testprofile",
+				"reservationBid": {
+			"issuevalues": {
+				"issue1": "issuevalue1",
+				"issue2": "12"
+			}
+		}
+		
+	}
+}
Index: exampleparties/randompartypy/pom.xml
===================================================================
--- exampleparties/randompartypy/pom.xml	(revision 52)
+++ exampleparties/randompartypy/pom.xml	(revision 1)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>randompyparty</artifactId>
-	<version>2.1.6</version>  <!-- equals the geniusweb version -->
+	<version>1.0.0</version>
 	<packaging>jar</packaging>
 
@@ -16,6 +16,5 @@
 		<basedir>.</basedir>
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
-		<jackson-2-version>2.12.3</jackson-2-version>
-		<geniusweb.version>${project.version}</geniusweb.version>
+		<jackson-2-version>2.9.6</jackson-2-version>
 	</properties>
 
@@ -23,5 +22,5 @@
 		<repository>
 			<id>artifactory.ewi.tudelft.nl</id>
-			<url>https://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
 		</repository>
 	</distributionManagement>
@@ -32,5 +31,5 @@
 			<groupId>geniusweb</groupId>
 			<artifactId>pythonadapter</artifactId>
-			<version>${geniusweb.version}</version>
+			<version>1.0.0</version>
 		</dependency>
 
@@ -38,15 +37,15 @@
 			<groupId>geniusweb</groupId>
 			<artifactId>bidspace</artifactId>
-			<version>${geniusweb.version}</version>
+			<version>1.0.0</version>
 		</dependency>
 		<dependency>
 			<groupId>geniusweb</groupId>
 			<artifactId>profileconnection</artifactId>
-			<version>${geniusweb.version}</version>
+			<version>1.0.0</version>
 		</dependency>
 		<dependency>
 			<groupId>tudelft.utilities</groupId>
-			<artifactId>utilities</artifactId>
-			<version>1.1.1</version>
+			<artifactId>immutablelist</artifactId>
+			<version>1.0.0</version>
 		</dependency>
 
@@ -105,6 +104,6 @@
 		<dependency>
 			<groupId>org.mockito</groupId>
-			<artifactId>mockito-core</artifactId>
-			<version>3.11.2</version>
+			<artifactId>mockito-all</artifactId>
+			<version>1.9.5</version>
 			<scope>test</scope>
 		</dependency>
@@ -112,5 +111,5 @@
 			<groupId>tudelft.utilities</groupId>
 			<artifactId>junit</artifactId>
-			<version>1.0.5</version>
+			<version>1.0.1</version>
 			<scope>test</scope>
 		</dependency>
@@ -121,19 +120,16 @@
 		<repository>
 			<id>artifactory.ewi.tudelft.nl</id>
-			<url>https://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
 			<snapshots>
 				<enabled>false</enabled>
 			</snapshots>
 		</repository>
+
 	</repositories>
 
 	<pluginRepositories>
 		<pluginRepository>
-			<id>central</id>
-			<url>https://repo1.maven.org/maven2</url>
-		</pluginRepository>
-		<pluginRepository>
-			<id>artifactory.ewi.tudelft.nl</id>
-			<url>https://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<id>jcenter</id>
+			<url>http://jcenter.bintray.com</url>
 		</pluginRepository>
 	</pluginRepositories>
@@ -152,22 +148,9 @@
 				</configuration>
 			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-source-plugin</artifactId>
-				<version>3.1.0</version>
-				<executions>
-					<execution>
-						<id>attach-sources</id>
-						<goals>
-							<goal>jar</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
 
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-javadoc-plugin</artifactId>
-				<version>3.2.0</version>
+				<version>2.10.1</version>
 				<executions>
 					<execution>
@@ -176,4 +159,8 @@
 							<goal>jar</goal>
 						</goals>
+						<configuration>
+							<additionalparam>${javadoc.opts}</additionalparam>
+							<additionalparam>-Xdoclint:none</additionalparam>
+						</configuration>
 					</execution>
 				</executions>
@@ -183,5 +170,5 @@
 				<groupId>org.jfrog.buildinfo</groupId>
 				<artifactId>artifactory-maven-plugin</artifactId>
-				<version>3.2.3</version>
+				<version>2.6.1</version>
 				<executions>
 					<execution>
Index: exampleparties/randompartypy/src/main/resources/RandomParty.py
===================================================================
--- exampleparties/randompartypy/src/main/resources/RandomParty.py	(revision 52)
+++ exampleparties/randompartypy/src/main/resources/RandomParty.py	(revision 1)
@@ -2,9 +2,8 @@
 import traceback
 
-import geniusweb.inform.ActionDone as ActionDone
-import geniusweb.inform.Inform as Inform
-import geniusweb.inform.Settings as Settings
-import geniusweb.inform.YourTurn as YourTurn
-import geniusweb.inform.Finished as Finished
+import geniusweb.party.inform.ActionDone as ActionDone
+import geniusweb.party.inform.Inform as Inform
+import geniusweb.party.inform.Settings as Settings
+import geniusweb.party.inform.YourTurn as YourTurn
 
 
@@ -14,6 +13,4 @@
 import java.util.HashSet as HashSet
 import java.util.Random as Random
-import java.util.Collections as Collections
-import java.util.logging.Level as Level
  
 import geniusweb.actions.Accept as Accept
@@ -26,6 +23,5 @@
 import geniusweb.party.DefaultParty as DefaultParty
 import geniusweb.profile.Profile as Profile
-import geniusweb.profile.PartialOrdering as PartialOrdering
-import geniusweb.profile.utilityspace.UtilitySpace as UtilitySpace
+import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace as LinearAdditiveUtilitySpace
 import geniusweb.references.ProfileRef as ProfileRef
 import geniusweb.references.ProtocolRef as ProtocolRef
@@ -33,5 +29,4 @@
 import geniusweb.profileconnection.ProfileInterface as ProfileInterface
 import geniusweb.progress.ProgressRounds as ProgressRounds
-
 
 import com.fasterxml.jackson.databind.ObjectMapper as ObjectMapper
@@ -65,24 +60,16 @@
 			if isinstance(self.progress, ProgressRounds) :
 				self.progress = self.progress.advance();
-		elif isinstance(info,Finished) :
-			self.getReporter().log(Level.INFO, "Final ourcome:" + info.toString())
-			self.terminate()
-		
 
 	# Override
 	def getCapabilities(self): # -> Capabilities
-			return Capabilities(HashSet([ "SAOP"]), Collections.singleton(Profile));
+		try:
+			return Capabilities(HashSet([ ProtocolRef(URI("SAOP"))]))
+		except:
+			getReporter().log(Level.SEVERE, "Failed to create capabilities URI",e);
+		return None
 
 	# Override
 	def getDescription(self):
 		return "places random bids until it can accept an offer with utility >0.6. Python version"
-
-	# Override
-	def terminate(self):
-		super(RandomParty,self).terminate()
-		if self.profile != None:
-			self.profile.close()
-			self.profile = None
-
 
 	def _myTurn(self):
@@ -105,11 +92,3 @@
 
 	def _isGood(self, bid):
-		if bid == None:
-			return false
-		profile = self.profile.getProfile()
-		if isinstance(profile, UtilitySpace):
-			return profile.getUtility(bid).doubleValue() > 0.6;
-		if isinstance(profile, PartialOrdering):
-			return profile.isPreferredOrEqual(bid, profile.getReservationBid())
-		raise Exception("Can not handle this type of profile")
-
+		return bid != None and self.profile.getProfile().getUtility(bid).doubleValue() > 0.6;
Index: exampleparties/randompartypy/src/test/java/geniusweb/exampleparties/randompartypy/RandomPartyTest.java
===================================================================
--- exampleparties/randompartypy/src/test/java/geniusweb/exampleparties/randompartypy/RandomPartyTest.java	(revision 52)
+++ exampleparties/randompartypy/src/test/java/geniusweb/exampleparties/randompartypy/RandomPartyTest.java	(revision 1)
@@ -31,18 +31,15 @@
 import geniusweb.actions.PartyId;
 import geniusweb.bidspace.AllBidsList;
-import geniusweb.connection.ConnectionEnd;
-import geniusweb.inform.ActionDone;
-import geniusweb.inform.Agreements;
-import geniusweb.inform.Finished;
-import geniusweb.inform.Inform;
-import geniusweb.inform.Settings;
-import geniusweb.inform.YourTurn;
+import geniusweb.connection.Connection;
 import geniusweb.issuevalue.Bid;
 import geniusweb.party.Capabilities;
+import geniusweb.party.inform.ActionDone;
+import geniusweb.party.inform.Inform;
+import geniusweb.party.inform.Settings;
+import geniusweb.party.inform.YourTurn;
 import geniusweb.profile.Profile;
-import geniusweb.profile.utilityspace.LinearAdditive;
+import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
 import geniusweb.progress.ProgressRounds;
 import geniusweb.pythonadapter.PythonPartyAdapter;
-import geniusweb.references.Parameters;
 import geniusweb.references.ProfileRef;
 import geniusweb.references.ProtocolRef;
@@ -53,5 +50,5 @@
 
 	private static final String PROFILE = "src/test/resources/testprofile.json";
-	private static final String SAOP = "SAOP";
+	private static final ProtocolRef SAOP = new ProtocolRef("SAOP");
 	private static final PartyId otherparty = new PartyId("other");
 	private final static ObjectMapper jackson = new ObjectMapper();
@@ -59,10 +56,9 @@
 	private PythonPartyAdapter party;
 	private TestConnection connection = new TestConnection();
-	private final ProtocolRef protocol = mock(ProtocolRef.class);
-	private final ProgressRounds progress = mock(ProgressRounds.class);
+	private ProtocolRef protocol = mock(ProtocolRef.class);
+	private ProgressRounds progress = mock(ProgressRounds.class);
 	private Settings settings;
-	private final Parameters parameters = new Parameters();
-
-	private LinearAdditive profile; // the real profile
+
+	private LinearAdditiveUtilitySpace profile; // the real profile
 
 	@Before
@@ -78,9 +74,9 @@
 		};
 		settings = new Settings(new PartyId("party1"),
-				new ProfileRef(new URI("file:" + PROFILE)), protocol, progress,
-				parameters);
+				new ProfileRef(new URI("file:" + PROFILE)), protocol, progress);
 		String serialized = new String(Files.readAllBytes(Paths.get(PROFILE)),
 				StandardCharsets.UTF_8);
-		profile = (LinearAdditive) jackson.readValue(serialized, Profile.class);
+		profile = (LinearAdditiveUtilitySpace) jackson.readValue(serialized,
+				Profile.class);
 
 	}
@@ -99,5 +95,5 @@
 		Capabilities capabilities = party.getCapabilities();
 		assertFalse("party does not define protocols",
-				capabilities.getBehaviours().isEmpty());
+				capabilities.getProtocols().isEmpty());
 	}
 
@@ -112,5 +108,5 @@
 	public void testInformSettings() {
 		party.connect(connection);
-		connection.notifyListeners(settings);
+		connection.notifyChange(settings);
 		assertEquals(0, connection.getActions().size());
 	}
@@ -129,15 +125,4 @@
 
 		party.notifyChange(new ActionDone(new EndNegotiation(otherparty)));
-
-		// party should not act at this point
-		assertEquals(0, connection.getActions().size());
-	}
-
-	@Test
-	public void testFinished() {
-		party.connect(connection);
-		party.notifyChange(settings);
-
-		party.notifyChange(new Finished(new Agreements()));
 
 		// party should not act at this point
@@ -179,5 +164,5 @@
 	@Test
 	public void testGetCapabilities() {
-		assertTrue(party.getCapabilities().getBehaviours().contains(SAOP));
+		assertTrue(party.getCapabilities().getProtocols().contains(SAOP));
 	}
 
@@ -202,5 +187,5 @@
  */
 class TestConnection extends DefaultListenable<Inform>
-		implements ConnectionEnd<Inform, Action> {
+		implements Connection<Inform, Action> {
 	private List<Action> actions = new LinkedList<>();
 
Index: exampleparties/randompartypy/src/test/resources/testprofile.json
===================================================================
--- exampleparties/randompartypy/src/test/resources/testprofile.json	(revision 52)
+++ exampleparties/randompartypy/src/test/resources/testprofile.json	(revision 1)
@@ -3,5 +3,5 @@
 		"issueUtilities": {
 			"issue2": {
-				"NumberValueSetUtilities": {
+				"numberutils": {
 					"lowValue": 12,
 					"lowUtility": 0.3,
@@ -11,5 +11,5 @@
 			},
 			"issue1": {
-				"DiscreteValueSetUtilities": {
+				"discreteutils": {
 					"valueUtilities": {
 						"issue1value1": 0.2,
@@ -27,21 +27,19 @@
 			"issuesValues": {
 				"issue2": {
-					"range": { "low":12,"high":18,"step":1 }
+					"range": ["12", "18", "1"]
 				},
 				"issue1": {
-					"values": [
-						"issue1value1",
-						"issue1value2"
-					]
+					"values": ["issue1value1", "issue1value2"]
 				}
 			}
 		},
 		"name": "testprofile",
-		"reservationBid": {
+				"reservationBid": {
 			"issuevalues": {
-				"issue1": "issue1value1",
-				"issue2": 12
+				"issue1": "issuevalue1",
+				"issue2": "12"
 			}
 		}
+		
 	}
 }
