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"
 			}
 		}
+		
 	}
 }
