diff --git a/de.hftstuttgart.cityunits.model/META-INF/MANIFEST.MF b/de.hftstuttgart.cityunits.model/META-INF/MANIFEST.MF
index bedbe0223bffe0ab67eae804432f8e464f40fb69..824f68a1385553f8ddce068ee9593e04fed22f4d 100644
--- a/de.hftstuttgart.cityunits.model/META-INF/MANIFEST.MF
+++ b/de.hftstuttgart.cityunits.model/META-INF/MANIFEST.MF
@@ -19,4 +19,5 @@ Export-Package: de.hftstuttgart.cityunits.model;
    tech.units.indriya",
  de.hftstuttgart.cityunits.model.quantities;
   uses:="org.eclipse.emf.ecore",
- de.hftstuttgart.cityunits.model.quantities.impl
+ de.hftstuttgart.cityunits.model.quantities.impl,
+ de.hftstuttgart.cityunits.model.quantities.util
diff --git a/de.hftstuttgart.cityunits.model/model/Quantities.genmodel b/de.hftstuttgart.cityunits.model/model/Quantities.genmodel
index d66e4a154e636b2dac792b7362bc97df0450acb0..1371397775f31e48bb469e6b5bf1276695ab0713 100644
--- a/de.hftstuttgart.cityunits.model/model/Quantities.genmodel
+++ b/de.hftstuttgart.cityunits.model/model/Quantities.genmodel
@@ -11,5 +11,6 @@
         convert="return it == null ? null : it.toString();"/>
     <genDataTypes ecoreDataType="Quantities.ecore#//QuantityLong" create="return de.hftstuttgart.cityunits.model.NullableQuantity.create(it);"
         convert="return it == null ? null : it.toString();"/>
+    <genDataTypes ecoreDataType="Quantities.ecore#//Fraction"/>
   </genPackages>
 </genmodel:GenModel>
diff --git a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/QuantitiesPackage.java b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/QuantitiesPackage.java
index 054ca1ffc509edfd1ca1899b5634f91e17674ee5..04ece655807e73cac353fba3da026b16f69f70c7 100644
--- a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/QuantitiesPackage.java
+++ b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/QuantitiesPackage.java
@@ -115,7 +115,7 @@ public interface QuantitiesPackage extends EPackage {
 	 * @return the meta object for data type '<em>Fraction</em>'.
 	 * @see java.lang.Double
 	 * @model instanceClass="java.lang.Double"
-	 *        annotation="https:///org/eclipse/emf/ecore/util/ExtendedMetaData minInclusive='0.0' maxInclusive='1.0'"
+	 *        extendedMetaData="minInclusive='0.0' maxInclusive='1.0'"
 	 * @generated
 	 */
 	EDataType getFraction();
diff --git a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/impl/QuantitiesPackageImpl.java b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/impl/QuantitiesPackageImpl.java
index fe0fe48c4e4266f1ac5547a5991eede4398e9de7..a030ec985def3f8ebfa0a68b48ad1ff421d80c55 100644
--- a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/impl/QuantitiesPackageImpl.java
+++ b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/impl/QuantitiesPackageImpl.java
@@ -6,9 +6,11 @@ import de.hftstuttgart.cityunits.model.NullableQuantity;
 import de.hftstuttgart.cityunits.model.quantities.QuantitiesFactory;
 import de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage;
 
+import de.hftstuttgart.cityunits.model.quantities.util.QuantitiesValidator;
 import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.EPackage;
 
+import org.eclipse.emf.ecore.EValidator;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
 
 /**
@@ -92,6 +94,16 @@ public class QuantitiesPackageImpl extends EPackageImpl implements QuantitiesPac
 		// Initialize created meta-data
 		theQuantitiesPackage.initializePackageContents();
 
+		// Register package validator
+		EValidator.Registry.INSTANCE.put
+			(theQuantitiesPackage,
+			 new EValidator.Descriptor() {
+				 @Override
+				 public EValidator getEValidator() {
+					 return QuantitiesValidator.INSTANCE;
+				 }
+			 });
+
 		// Mark meta-data to indicate it can't be changed
 		theQuantitiesPackage.freeze();
 
@@ -196,18 +208,18 @@ public class QuantitiesPackageImpl extends EPackageImpl implements QuantitiesPac
 		createResource(eNS_URI);
 
 		// Create annotations
-		// https:///org/eclipse/emf/ecore/util/ExtendedMetaData
+		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
 		createExtendedMetaDataAnnotations();
 	}
 
 	/**
-	 * Initializes the annotations for <b>https:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	protected void createExtendedMetaDataAnnotations() {
-		String source = "https:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
 		addAnnotation
 		  (fractionEDataType,
 		   source,
diff --git a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/util/QuantitiesValidator.java b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/util/QuantitiesValidator.java
new file mode 100644
index 0000000000000000000000000000000000000000..a79b6bf8ea17790153e8592b1eb4cc3bd05b2cb4
--- /dev/null
+++ b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/quantities/util/QuantitiesValidator.java
@@ -0,0 +1,186 @@
+/**
+ */
+package de.hftstuttgart.cityunits.model.quantities.util;
+
+import de.hftstuttgart.cityunits.model.NullableQuantity;
+
+import de.hftstuttgart.cityunits.model.quantities.*;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.EObjectValidator;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Validator</b> for the model.
+ * <!-- end-user-doc -->
+ * @see de.hftstuttgart.cityunits.model.quantities.QuantitiesPackage
+ * @generated
+ */
+public class QuantitiesValidator extends EObjectValidator {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final QuantitiesValidator INSTANCE = new QuantitiesValidator();
+
+	/**
+	 * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.common.util.Diagnostic#getSource()
+	 * @see org.eclipse.emf.common.util.Diagnostic#getCode()
+	 * @generated
+	 */
+	public static final String DIAGNOSTIC_SOURCE = "de.hftstuttgart.cityunits.model.quantities";
+
+	/**
+	 * A constant with a fixed name that can be used as the base value for additional hand written constants.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 0;
+
+	/**
+	 * A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QuantitiesValidator() {
+		super();
+	}
+
+	/**
+	 * Returns the package of this validator switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EPackage getEPackage() {
+	  return QuantitiesPackage.eINSTANCE;
+	}
+
+	/**
+	 * Calls <code>validateXXX</code> for the corresponding classifier of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		switch (classifierID) {
+			case QuantitiesPackage.QUANTITY_DOUBLE:
+				return validateQuantityDouble((NullableQuantity)value, diagnostics, context);
+			case QuantitiesPackage.QUANTITY_LONG:
+				return validateQuantityLong((NullableQuantity)value, diagnostics, context);
+			case QuantitiesPackage.FRACTION:
+				return validateFraction((Double)value, diagnostics, context);
+			default:
+				return true;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateQuantityDouble(NullableQuantity quantityDouble, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateQuantityLong(NullableQuantity quantityLong, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateFraction(Double fraction, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		boolean result = validateFraction_Min(fraction, diagnostics, context);
+		if (result || diagnostics != null) result &= validateFraction_Max(fraction, diagnostics, context);
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @see #validateFraction_Min
+	 */
+	public static final Double FRACTION__MIN__VALUE = Double.valueOf(0.0);
+
+	/**
+	 * Validates the Min constraint of '<em>Fraction</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateFraction_Min(Double fraction, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		boolean result = fraction.compareTo(FRACTION__MIN__VALUE) >= 0;
+		if (!result && diagnostics != null)
+			reportMinViolation(QuantitiesPackage.Literals.FRACTION, fraction, FRACTION__MIN__VALUE, true, diagnostics, context);
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @see #validateFraction_Max
+	 */
+	public static final Double FRACTION__MAX__VALUE = Double.valueOf(1.0);
+
+	/**
+	 * Validates the Max constraint of '<em>Fraction</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateFraction_Max(Double fraction, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		boolean result = fraction.compareTo(FRACTION__MAX__VALUE) <= 0;
+		if (!result && diagnostics != null)
+			reportMaxViolation(QuantitiesPackage.Literals.FRACTION, fraction, FRACTION__MAX__VALUE, true, diagnostics, context);
+		return result;
+	}
+
+	/**
+	 * Returns the resource locator that will be used to fetch messages for this validator's diagnostics.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		// TODO
+		// Specialize this to return a resource locator for messages specific to this validator.
+		// Ensure that you remove @generated or mark it @generated NOT
+		return super.getResourceLocator();
+	}
+
+} //QuantitiesValidator