diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyAmount.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyAmount.java
index 624bed7..56a1617 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyAmount.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyAmount.java
@@ -136,7 +136,7 @@
 	 */
 	public static MoneyAmount of(QuantityAmount<IMoney> amount) {
 		// MoneyAmount amountSI = amount.toSI();
-		return MoneyAmount.of(BigDecimal.valueOf(amount.getNumber()
+		return MoneyAmount.of(BigDecimal.valueOf(amount.getValue()
 				.doubleValue()), amount.unit().getSystemUnit());
 	}
 
diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/QuantityAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/QuantityAmount.java
index 0f5a02e..94f3dff 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/QuantityAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/QuantityAmount.java
@@ -13,6 +13,7 @@
 import java.math.BigDecimal;
 import java.math.MathContext;
 
+import org.eclipse.uomo.units.internal.MeasureAmount;
 import org.unitsofmeasurement.quantity.Dimensionless;
 import org.unitsofmeasurement.quantity.Quantity;
 import org.unitsofmeasurement.unit.IncommensurableException;
@@ -36,9 +37,11 @@
  *          Sep 2011) $ XXX rename to Amount, AbstractAmount or MeasureAmount?
  *          FIXME Bug 338334 overwrite equals()
  */
-public abstract class QuantityAmount<Q extends Quantity<Q>> extends Measure
+public abstract class QuantityAmount<Q extends Quantity<Q>>
 		implements IMeasure<Q> {
-
+	
+	private final Measure measure;
+	
 	/**
 	 * Holds a dimensionless measure of one (exact).
 	 */
@@ -99,9 +102,17 @@
 	// private double _maximum;
 
 	protected QuantityAmount(Number number, MeasureUnit unit) {
-		super(number, unit);
+		measure = MeasureAmount.of(number, unit);
 	}
 
+	/**
+	 * Returns the <b>ICU4J</b> <type>Measure</type> object.
+	 * @return the backing measure.
+	 */
+	public Measure getMeasure() {
+		return measure;
+	}
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -153,7 +164,7 @@
 	public Unit<Q> unit() {
 		return internalUnit();
 	}
-
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -176,6 +187,14 @@
 	public boolean isExact() {
 		return isExact;
 	}
+	
+	public Number getValue() {
+		return getNumber();
+	}
+	
+	public Unit<Q> getUnit() {
+		return internalUnit();
+	}
 
 	// ////////////////////
 	// Factory Creation //
@@ -203,6 +222,10 @@
 	 */
 	@SuppressWarnings("unchecked")
 	private final AbstractUnit<Q> internalUnit() {
-		return (AbstractUnit<Q>) super.getUnit();
+		return (AbstractUnit<Q>) measure.getUnit();
+	}
+	
+	protected final Number getNumber() {
+		return measure.getNumber();
 	}
 }
diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/TimeAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/TimeAmount.java
index 7883872..6f19a41 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/TimeAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/TimeAmount.java
@@ -97,13 +97,13 @@
 
 	public TimeAmount add(IMeasure<Time> that) {
 		return new TimeAmount(super.getNumber().doubleValue()
-				+ ((BaseAmount<Time>) that).getNumber().doubleValue(),
+				+ ((BaseAmount<Time>) that).getValue().doubleValue(),
 				that.unit());
 	}
 
 	public TimeAmount substract(IMeasure<Time> that) {
 		return new TimeAmount(super.getNumber().doubleValue()
-				- ((BaseAmount<Time>) that).getNumber().doubleValue(),
+				- ((BaseAmount<Time>) that).getValue().doubleValue(),
 				that.unit());
 	}
 	
diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/internal/MeasureAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/internal/MeasureAmount.java
new file mode 100644
index 0000000..8807532
--- /dev/null
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/internal/MeasureAmount.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2005, 2014, Werner Keil and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Werner Keil - initial API and implementation
+ */
+package org.eclipse.uomo.units.internal;
+
+import com.ibm.icu.util.Measure;
+import com.ibm.icu.util.MeasureUnit;
+
+/**
+ * Wrapper for ICU4J Measure type
+ * @author Werner Keil
+ *
+ */
+public class MeasureAmount extends Measure {
+
+	protected MeasureAmount(Number number, MeasureUnit unit) {
+		super(number, unit);
+	}
+	
+	/**
+	 * Returns a new <type>MeasureAmount</type> with the given number and unit.
+	 * @param number the given number
+	 * @param unit the given unit
+	 * @return a new instance of <type>MeasureAmount</type>
+	 */
+	public static Measure of(Number number, MeasureUnit unit) {
+		return new MeasureAmount(number, unit);
+	}
+}
diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/HelloUnits.java b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/HelloUnits.java
index ae7faab..3d68c32 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/HelloUnits.java
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/HelloUnits.java
@@ -44,11 +44,11 @@
 		System.out.println(" " + USCustomary.FOOT);
 //		System.out.println(length.doubleValue(USCustomary.POUND)); // this won't work either.
 		UnitConverter inchConverter = lenUnit.getConverterTo(USCustomary.INCH);
-		System.out.print(inchConverter.convert(length.getNumber().doubleValue()));		
+		System.out.print(inchConverter.convert(length.getValue().doubleValue()));		
 		System.out.println(" " + USCustomary.INCH);
 		
 		@SuppressWarnings("unchecked")
-		AreaAmount area = new AreaAmount(length.getNumber().doubleValue() * length.getNumber().doubleValue(), 
+		AreaAmount area = new AreaAmount(length.getValue().doubleValue() * length.getValue().doubleValue(), 
 				(Unit<Area>) length.unit().multiply(SI.METRE));
 		System.out.println(area);
 		
diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/SeismicExample.java b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/SeismicExample.java
index 8550256..3f5430d 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/SeismicExample.java
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/SeismicExample.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
+ * Copyright (c) 2005, 2014, Werner Keil and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,8 +11,9 @@
 package org.eclipse.uomo.examples.units.console.sandbox;
 
 import org.eclipse.uomo.examples.units.types.Seismic;
+import org.eclipse.uomo.units.IMeasure;
 import org.eclipse.uomo.units.impl.quantity.EnergyAmount;
-import com.ibm.icu.util.Measure;
+import org.unitsofmeasurement.quantity.Energy;
 
 /**
  * @author Werner Keil
@@ -24,7 +25,7 @@
 	 * @param args
 	 */
 	public static void main(String[] args) {
-		Measure e = new EnergyAmount(8.3, Seismic.RICHTER_MAGNITUDE);
+		IMeasure<Energy> e = new EnergyAmount(8.3, Seismic.RICHTER_MAGNITUDE);
 		System.out.println(e);
 	}
 
