Index: bidspace/src/main/java/geniusweb/bidspace/BidsWithUtility.java
===================================================================
--- bidspace/src/main/java/geniusweb/bidspace/BidsWithUtility.java	(revision 9)
+++ bidspace/src/main/java/geniusweb/bidspace/BidsWithUtility.java	(revision 10)
@@ -12,5 +12,5 @@
 import geniusweb.issuevalue.Domain;
 import geniusweb.issuevalue.Value;
-import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
+import geniusweb.profile.utilityspace.LinearAdditive;
 import tudelft.utilities.immutablelist.AbstractImmutableList;
 import tudelft.utilities.immutablelist.FixedList;
@@ -22,11 +22,10 @@
 /**
  * Tool class containing functions dealing with utilities of all bids in a given
- * {@link LinearAdditiveUtilitySpace}. This class caches previously computed
- * values to accelerate the calls and subsequent calls. Re-use the object to
- * keep/reuse the cache.
+ * {@link LinearAdditive}. This class caches previously computed values to
+ * accelerate the calls and subsequent calls. Re-use the object to keep/reuse
+ * the cache.
  * <h1>Rounding</h1> Internally, utilities of bids are rounded to the given
  * precision. This may cause inclusion/exclusion of some bids in the results.
- * See {@link #BidsWithUtility(LinearAdditiveUtilitySpace, int)} for more
- * details
+ * See {@link #BidsWithUtility(LinearAdditive, int)} for more details
  */
 public class BidsWithUtility {
@@ -44,10 +43,10 @@
 	 * Default constructor, uses default precision 6. This value seems practical
 	 * for the common range of issues, utilities and weights. See
-	 * {@link #BidsWithUtil(LinearAdditiveUtilitySpace, int)} for more details
-	 * on the precision.
-	 * 
-	 * @param space the {@link LinearAdditiveUtilitySpace} to analyze
-	 */
-	public BidsWithUtility(LinearAdditiveUtilitySpace space) {
+	 * {@link #BidsWithUtil(LinearAdditive, int)} for more details on the
+	 * precision.
+	 * 
+	 * @param space the {@link LinearAdditive} to analyze
+	 */
+	public BidsWithUtility(LinearAdditive space) {
 		this(space, 6);
 	}
@@ -55,5 +54,5 @@
 	/**
 	 * 
-	 * @param space     the {@link LinearAdditiveUtilitySpace} to analyze
+	 * @param space     the {@link LinearAdditive} to analyze
 	 * @param precision the number of digits to use for computations. In
 	 *                  practice, 6 seems a good default value.
@@ -77,5 +76,5 @@
 	 * 
 	 */
-	public BidsWithUtility(LinearAdditiveUtilitySpace space, int precision) {
+	public BidsWithUtility(LinearAdditive space, int precision) {
 		this(getInfo(space, precision), precision);
 	}
@@ -119,4 +118,18 @@
 	public List<IssueInfo> getInfo() {
 		return Collections.unmodifiableList(issueInfo);
+	}
+
+	/**
+	 * 
+	 * @param isMax the extreme bid required
+	 * @return the extreme bid, either the minimum if isMax=false or maximum if
+	 *         isMax=true
+	 */
+	public Bid getExtremeBid(boolean isMax) {
+		Map<String, Value> map = new HashMap<>();
+		for (IssueInfo info : issueInfo) {
+			map.put(info.getName(), info.getExtreme(isMax));
+		}
+		return new Bid(map);
 	}
 
@@ -154,5 +167,5 @@
 	}
 
-	private static List<IssueInfo> getInfo(LinearAdditiveUtilitySpace space2,
+	private static List<IssueInfo> getInfo(LinearAdditive space2,
 			int precision) {
 		Domain dom = space2.getDomain();
Index: bidspace/src/main/java/geniusweb/bidspace/Interval.java
===================================================================
--- bidspace/src/main/java/geniusweb/bidspace/Interval.java	(revision 9)
+++ bidspace/src/main/java/geniusweb/bidspace/Interval.java	(revision 10)
@@ -137,10 +137,13 @@
 			if (other.max != null)
 				return false;
-		} else if (!max.equals(other.max))
+
+		} else if (max.compareTo(other.max) != 0)
+			// THIS WAS FIXED MANUALLY TO USE COMPARETO
 			return false;
 		if (min == null) {
 			if (other.min != null)
 				return false;
-		} else if (!min.equals(other.min))
+		} else if (min.compareTo(other.min) != 0)
+			// THIS WAS FIXED MANUALLY TO USE COMPARETO
 			return false;
 		return true;
Index: bidspace/src/main/java/geniusweb/bidspace/IssueInfo.java
===================================================================
--- bidspace/src/main/java/geniusweb/bidspace/IssueInfo.java	(revision 9)
+++ bidspace/src/main/java/geniusweb/bidspace/IssueInfo.java	(revision 10)
@@ -49,4 +49,36 @@
 	public Interval getInterval() {
 		return interval;
+	}
+
+	/**
+	 * 
+	 * @param isMax
+	 * @return the extreme value, either the minimum if isMax=false or maximum
+	 *         if isMax=true
+	 */
+	public Value getExtreme(boolean isMax) {
+		BigDecimal extremeutil = null;
+		Value extremeval = null;
+		for (Value val : values) {
+			BigDecimal util = weightedUtils.get(val);
+			if (extremeval == null) {
+				extremeutil = weightedUtils.get(val);
+				extremeval = val;
+			} else {
+				if (isMax) {
+					if (util.compareTo(extremeutil) > 0) {
+						extremeutil = util;
+						extremeval = val;
+					}
+				} else {
+					if (util.compareTo(extremeutil) < 0) {
+						extremeutil = util;
+						extremeval = val;
+					}
+
+				}
+			}
+		}
+		return extremeval;
 	}
 
Index: bidspace/src/main/java/geniusweb/bidspace/pareto/ParetoLinearAdditive.java
===================================================================
--- bidspace/src/main/java/geniusweb/bidspace/pareto/ParetoLinearAdditive.java	(revision 9)
+++ bidspace/src/main/java/geniusweb/bidspace/pareto/ParetoLinearAdditive.java	(revision 10)
@@ -10,13 +10,13 @@
 import geniusweb.issuevalue.Domain;
 import geniusweb.profile.Profile;
-import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
+import geniusweb.profile.utilityspace.LinearAdditive;
 
 /**
- * pareto frontier implementation for {@link LinearAdditiveUtilitySpace}.
- * Simplistic implementation that iterates over all bids.
+ * pareto frontier implementation for {@link LinearAdditive}. Simplistic
+ * implementation that iterates over all bids.
  */
 public class ParetoLinearAdditive implements ParetoFrontier {
 
-	private final List<LinearAdditiveUtilitySpace> utilSpaces;
+	private final List<LinearAdditive> utilSpaces;
 	private Set<Bid> points = null;
 	// all issues in a deterministic order
@@ -24,9 +24,8 @@
 	/**
 	 * 
-	 * @param utilSpaces. Must contain at least two
-	 *                    {@link LinearAdditiveUtilitySpace}s and all must be
-	 *                    defined on the same donain.
+	 * @param utilSpaces. Must contain at least two {@link LinearAdditive}s and
+	 *                    all must be defined on the same donain.
 	 */
-	public ParetoLinearAdditive(List<LinearAdditiveUtilitySpace> utilSpaces) {
+	public ParetoLinearAdditive(List<LinearAdditive> utilSpaces) {
 		if (utilSpaces == null || utilSpaces.size() < 2) {
 			throw new IllegalArgumentException(
@@ -34,5 +33,5 @@
 		}
 		Domain domain = utilSpaces.get(0).getDomain();
-		for (LinearAdditiveUtilitySpace space : utilSpaces) {
+		for (LinearAdditive space : utilSpaces) {
 			if (!space.getDomain().equals(domain)) {
 				throw new IllegalArgumentException(
Index: bidspace/src/main/java/geniusweb/bidspace/pareto/ParetoPoint.java
===================================================================
--- bidspace/src/main/java/geniusweb/bidspace/pareto/ParetoPoint.java	(revision 9)
+++ bidspace/src/main/java/geniusweb/bidspace/pareto/ParetoPoint.java	(revision 10)
@@ -10,5 +10,5 @@
 import geniusweb.issuevalue.Bid;
 import geniusweb.issuevalue.Value;
-import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
+import geniusweb.profile.utilityspace.LinearAdditive;
 
 /**
@@ -26,10 +26,10 @@
 	 * 
 	 * @param bid    a (possibly partial) {@link Bid}
-	 * @param spaces the {@link LinearAdditiveUtilitySpace}s to consider
+	 * @param spaces the {@link LinearAdditive}s to consider
 	 */
-	public ParetoPoint(Bid bid, List<LinearAdditiveUtilitySpace> spaces) {
+	public ParetoPoint(Bid bid, List<LinearAdditive> spaces) {
 		this.bid = bid;
 		utilities = new ArrayList<>();
-		for (LinearAdditiveUtilitySpace space : spaces) {
+		for (LinearAdditive space : spaces) {
 			utilities.add(space.getUtility(bid));
 		}
Index: bidspace/src/main/java/geniusweb/bidspace/pareto/PartialPareto.java
===================================================================
--- bidspace/src/main/java/geniusweb/bidspace/pareto/PartialPareto.java	(revision 9)
+++ bidspace/src/main/java/geniusweb/bidspace/pareto/PartialPareto.java	(revision 10)
@@ -8,5 +8,5 @@
 import geniusweb.issuevalue.Bid;
 import geniusweb.issuevalue.Value;
-import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
+import geniusweb.profile.utilityspace.LinearAdditive;
 
 /**
@@ -28,5 +28,5 @@
 	 * implemented recursively (O(log(#issues))).
 	 * 
-	 * @param utilSpaces the {@link LinearAdditiveUtilitySpace}s
+	 * @param utilSpaces the {@link LinearAdditive}s
 	 * @param issues     the issues (subset of all issues in the space) to be
 	 *                   used for this pareto
@@ -34,6 +34,6 @@
 	 *         given issues.
 	 */
-	public static PartialPareto create(
-			List<LinearAdditiveUtilitySpace> utilSpaces, List<String> issues) {
+	public static PartialPareto create(List<LinearAdditive> utilSpaces,
+			List<String> issues) {
 
 		if (issues.size() == 1) {
Index: bidspace/src/test/java/geniusweb/bidspace/IssueInfoTest.java
===================================================================
--- bidspace/src/test/java/geniusweb/bidspace/IssueInfoTest.java	(revision 10)
+++ bidspace/src/test/java/geniusweb/bidspace/IssueInfoTest.java	(revision 10)
@@ -0,0 +1,68 @@
+package geniusweb.bidspace;
+
+import static org.junit.Assert.assertEquals;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import geniusweb.issuevalue.DiscreteValue;
+import geniusweb.issuevalue.DiscreteValueSet;
+import geniusweb.issuevalue.ValueSet;
+import geniusweb.profile.utilityspace.DiscreteValueSetUtilities;
+import geniusweb.profile.utilityspace.ValueSetUtilities;
+
+public class IssueInfoTest {
+
+	private static final String NAME = "name";
+	private static final DiscreteValue VAL1 = new DiscreteValue("v1"),
+			VAL2 = new DiscreteValue("v2"), VAL3 = new DiscreteValue("v3");
+	private static final BigDecimal N03 = new BigDecimal("0.3");
+	private static final BigDecimal N04 = new BigDecimal("0.4");
+	private static final BigDecimal N05 = new BigDecimal("0.5");
+	private static final BigDecimal N06 = new BigDecimal("0.6");
+	private IssueInfo info;
+
+	@Before
+	public void before() {
+		Set<DiscreteValue> issuevalues = new HashSet<>();
+		issuevalues.add(VAL1);
+		issuevalues.add(VAL2);
+		issuevalues.add(VAL3);
+		ValueSet values = new DiscreteValueSet(issuevalues);
+		Map<DiscreteValue, BigDecimal> valueUtils = new HashMap<>();
+		valueUtils.put(VAL1, N03);
+		valueUtils.put(VAL2, N04);
+		valueUtils.put(VAL3, N05);
+		ValueSetUtilities utils = new DiscreteValueSetUtilities(valueUtils);
+		info = new IssueInfo(NAME, values, utils, N06, 6);
+	}
+
+	@Test
+	public void smokeTest() {
+
+	}
+
+	@Test
+	public void testGetExtremeMin() {
+
+		assertEquals(VAL1, info.getExtreme(false));
+		assertEquals(VAL3, info.getExtreme(true));
+	}
+
+	@Test
+	public void getNameTest() {
+		assertEquals(NAME, info.getName());
+	}
+
+	@Test
+	public void getIntervalTest() {
+		assertEquals(new Interval(N03.multiply(N06), N05.multiply(N06)),
+				info.getInterval());
+	}
+}
Index: bidspace/src/test/java/geniusweb/bidspace/pareto/ParetoE2Etest.java
===================================================================
--- bidspace/src/test/java/geniusweb/bidspace/pareto/ParetoE2Etest.java	(revision 9)
+++ bidspace/src/test/java/geniusweb/bidspace/pareto/ParetoE2Etest.java	(revision 10)
@@ -19,8 +19,6 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import geniusweb.bidspace.pareto.GenericPareto;
-import geniusweb.bidspace.pareto.ParetoFrontier;
-import geniusweb.bidspace.pareto.ParetoLinearAdditive;
 import geniusweb.profile.Profile;
+import geniusweb.profile.utilityspace.LinearAdditive;
 import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
 
@@ -61,5 +59,5 @@
 				.readValue(file2, Profile.class);
 
-		List<LinearAdditiveUtilitySpace> profiles = new LinkedList<>();
+		List<LinearAdditive> profiles = new LinkedList<>();
 		profiles.add(profile1);
 		profiles.add(profile2);
Index: bidspace/src/test/java/geniusweb/bidspace/pareto/ParetoPointTest.java
===================================================================
--- bidspace/src/test/java/geniusweb/bidspace/pareto/ParetoPointTest.java	(revision 9)
+++ bidspace/src/test/java/geniusweb/bidspace/pareto/ParetoPointTest.java	(revision 10)
@@ -15,8 +15,7 @@
 import org.junit.Test;
 
-import geniusweb.bidspace.pareto.ParetoPoint;
 import geniusweb.issuevalue.Bid;
 import geniusweb.issuevalue.Value;
-import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
+import geniusweb.profile.utilityspace.LinearAdditive;
 
 public class ParetoPointTest {
@@ -26,7 +25,6 @@
 	private static final BigDecimal D0_4 = BigDecimal.valueOf(0.4);
 	private static final BigDecimal D0_5 = BigDecimal.valueOf(0.5);
-	private final LinearAdditiveUtilitySpace space1 = mock(
-			LinearAdditiveUtilitySpace.class),
-			space2 = mock(LinearAdditiveUtilitySpace.class);
+	private final LinearAdditive space1 = mock(LinearAdditive.class),
+			space2 = mock(LinearAdditive.class);
 	private final Bid bid11 = mock(Bid.class), bid12 = mock(Bid.class),
 			bid21 = mock(Bid.class), bid22 = mock(Bid.class);
Index: bidspace/src/test/java/geniusweb/bidspace/pareto/PartialParetoTest.java
===================================================================
--- bidspace/src/test/java/geniusweb/bidspace/pareto/PartialParetoTest.java	(revision 9)
+++ bidspace/src/test/java/geniusweb/bidspace/pareto/PartialParetoTest.java	(revision 10)
@@ -16,10 +16,9 @@
 import org.junit.Test;
 
-import geniusweb.bidspace.pareto.PartialPareto;
 import geniusweb.issuevalue.Bid;
 import geniusweb.issuevalue.Domain;
 import geniusweb.issuevalue.Value;
 import geniusweb.issuevalue.ValueSet;
-import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
+import geniusweb.profile.utilityspace.LinearAdditive;
 
 public class PartialParetoTest {
@@ -31,7 +30,6 @@
 	private static final BigDecimal D0_5 = BigDecimal.valueOf(0.5);
 
-	private final LinearAdditiveUtilitySpace space1 = mock(
-			LinearAdditiveUtilitySpace.class),
-			space2 = mock(LinearAdditiveUtilitySpace.class);
+	private final LinearAdditive space1 = mock(LinearAdditive.class),
+			space2 = mock(LinearAdditive.class);
 
 	private Domain domain = mock(Domain.class);
