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": {
