Index: src/main/webapp/newsession.xhtml
===================================================================
--- src/main/webapp/newsession.xhtml	(revision 22)
+++ src/main/webapp/newsession.xhtml	(revision 23)
@@ -40,5 +40,5 @@
 	<br /> Domain/Profile Server:
 	<input type="url" name="url" id="profilesserverurl"
-		value="localhost:8080/profilesserver-1.5.5"
+		value="localhost:8080/profilesserver-1.5.6"
 		pattern=".*:[0-9]+/profilesserver" size="30"
 		onchange="connectDomain()"> </input>
@@ -54,5 +54,5 @@
 		<br /> <b>Participants</b> <br /> Parties Server: <input type="url"
 			name="url" id="partiesserverurl"
-			value="localhost:8080/partiesserver-1.5.5"
+			value="localhost:8080/partiesserver-1.5.6"
 			pattern=".*:[0-9]+/partiesserver" size="30"
 			onchange="connectParties()"> </input> <br /> <br /> <b>Party
@@ -294,13 +294,13 @@
 	 refresh table: copy all parties elements in there.
 	 Typically parties is something like
-	 [{"uri":"http:130.161.180.1:8080/partiesserver/run/randomparty-1.5.5",
+	 [{"uri":"http:130.161.180.1:8080/partiesserver/run/randomparty-1.5.6",
 		 "capabilities":{"protocols":["SAOP"]},
 		 "description":"places random bids until it can accept an offer with utility >0.6",
-		 "id":"randomparty-1.5.5",
+		 "id":"randomparty-1.5.6",
 		 "partyClass":"geniusweb.exampleparties.randomparty.RandomParty"},
 		 		 ...]
 	 */
 	function updateParties(parties) {
-		 updatePartiesCombobox(parties, document.getElementById("partyselection"),['SAOP','AMOP','SHAOP']);
+		 updatePartiesCombobox(parties, document.getElementById("partyselection"),['SAOP','AMOP','SHAOP','MOPAC']);
 		 updatePartiesCombobox(parties, document.getElementById("cobpartyselection"),['COB']);
 	}
@@ -632,6 +632,6 @@
 	function init() {
 		selectProtocol();
-		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-1.5.5"
-		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-1.5.5"
+		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-1.5.6"
+		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-1.5.6"
 		connectDomain();
 		connectParties();
Index: src/main/webapp/newtournament.xhtml
===================================================================
--- src/main/webapp/newtournament.xhtml	(revision 22)
+++ src/main/webapp/newtournament.xhtml	(revision 23)
@@ -585,6 +585,6 @@
 	*/
 	function init() {
-		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-1.5.5";
-		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-1.5.5";
+		document.getElementById("partiesserverurl").value =window.location.hostname+":8080/partiesserver-1.5.6";
+		document.getElementById("profilesserverurl").value =window.location.hostname+":8080/profilesserver-1.5.6";
 
 		selectProtocol();
Index: src/main/webapp/plotlog.xhtml
===================================================================
--- src/main/webapp/plotlog.xhtml	(revision 22)
+++ src/main/webapp/plotlog.xhtml	(revision 23)
@@ -24,5 +24,8 @@
 	<div id="progress">Waiting for log file name</div>
 	<br />
-	<div>Notice, the plotted utilities do not include possible
+	
+	<div>Graph shows utilities of bids in offers and accepts.
+	Points in the graph indicate the party that placed the offer. 
+	Plotted utilities do not include possible
 		elicitation costs.</div>
 	<div style="width: 100%;">
@@ -216,4 +219,7 @@
         @json the log file contents
         @param partyprofiles a dict with key=party id and value a the (linear additive) profile
+        @return a list [utilities, biddingparties] where utilities is a dict with keys: partyID
+        and value: list of utilities . biddingparties is a list [partyid] which is the 
+        bidding party for each round.
         */
         function computeUtils(json, partyprofiles) {
@@ -221,18 +227,25 @@
         	setStatus("Computing utilities.")
         	var utilities={};
+        	var biddingparties=[];
 			for (var party in partyprofiles) {
 				utilities[party]=[];
 			}
         	var actions = json['actions'];
-        	for (var action in actions) {
-        		var offer = actions[action];
-        		if (offer['offer']==undefined)
+        	for (var n in actions) {
+        		var action = actions[n];
+        		var item;
+        		if ('offer' in action) 
+        			action= action['offer'];
+        		else if ('accept' in action)
+        			action= action['accept'];
+        		else 
         			continue;
-        		var issueutilities = offer['offer']['bid']['issuevalues']
+        		var issueutilities = action['bid']['issuevalues']
 				for (var party in partyprofiles) {
 					utilities[party].push(utility(partyprofiles[party],issueutilities));
 				}
-        	}
-        	return utilities;
+        		biddingparties.push(action['actor']);
+        	}
+        	return [utilities, biddingparties];
         	
         	
@@ -254,9 +267,10 @@
         
         /**
-        @param utilities the dict with key=party id  of the utilities of all steps for each party )
+        @param [utilities, parties] utilities=the dict with key=party id  of the utilities of all steps for each party )
+        and parties a list of biddingparty for each value in utilities lists.
         @param isAgreement either Yes, No, Partial or ?
         */
         
-        function plotResults( utilities, isAgreement) {
+        function plotResults( [utilities, biddingparties], isAgreement) {
         	setStatus("Plotting" )
         	
@@ -270,4 +284,8 @@
         	var partynr=0;
         	for (var party in utilities) {
+        		var pointsizes=[];
+        		for (var p of biddingparties) {
+        			pointsizes.push(p==party ? 4:0); 
+        		}
         		var dataset={
    					label: party,
@@ -276,4 +294,5 @@
    					borderColor: color(partynr),
 					data: utilities[party],
+					pointRadius: pointsizes,
 					fill: false
         		};
