diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..f735bee
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,203 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation
+   distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+    i) changes to the Program, and
+   ii) additions to the Program;
+
+   where such changes and/or additions to the Program originate from and are
+   distributed by that particular Contributor. A Contribution 'originates'
+   from a Contributor if it was added to the Program by such Contributor
+   itself or anyone acting on such Contributor's behalf. Contributions do not
+   include additions to the Program which: (i) are separate modules of
+   software distributed in conjunction with the Program under their own
+   license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+  a) Subject to the terms of this Agreement, each Contributor hereby grants
+     Recipient a non-exclusive, worldwide, royalty-free copyright license to
+     reproduce, prepare derivative works of, publicly display, publicly
+     perform, distribute and sublicense the Contribution of such Contributor,
+     if any, and such derivative works, in source code and object code form.
+  b) Subject to the terms of this Agreement, each Contributor hereby grants
+     Recipient a non-exclusive, worldwide, royalty-free patent license under
+     Licensed Patents to make, use, sell, offer to sell, import and otherwise
+     transfer the Contribution of such Contributor, if any, in source code and
+     object code form. This patent license shall apply to the combination of
+     the Contribution and the Program if, at the time the Contribution is
+     added by the Contributor, such addition of the Contribution causes such
+     combination to be covered by the Licensed Patents. The patent license
+     shall not apply to any other combinations which include the Contribution.
+     No hardware per se is licensed hereunder.
+  c) Recipient understands that although each Contributor grants the licenses
+     to its Contributions set forth herein, no assurances are provided by any
+     Contributor that the Program does not infringe the patent or other
+     intellectual property rights of any other entity. Each Contributor
+     disclaims any liability to Recipient for claims brought by any other
+     entity based on infringement of intellectual property rights or
+     otherwise. As a condition to exercising the rights and licenses granted
+     hereunder, each Recipient hereby assumes sole responsibility to secure
+     any other intellectual property rights needed, if any. For example, if a
+     third party patent license is required to allow Recipient to distribute
+     the Program, it is Recipient's responsibility to acquire that license
+     before distributing the Program.
+  d) Each Contributor represents that to its knowledge it has sufficient
+     copyright rights in its Contribution, if any, to grant the copyright
+     license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under
+its own license agreement, provided that:
+
+  a) it complies with the terms and conditions of this Agreement; and
+  b) its license agreement:
+      i) effectively disclaims on behalf of all Contributors all warranties
+         and conditions, express and implied, including warranties or
+         conditions of title and non-infringement, and implied warranties or
+         conditions of merchantability and fitness for a particular purpose;
+     ii) effectively excludes on behalf of all Contributors all liability for
+         damages, including direct, indirect, special, incidental and
+         consequential damages, such as lost profits;
+    iii) states that any provisions which differ from this Agreement are
+         offered by that Contributor alone and not by any other party; and
+     iv) states that source code for the Program is available from such
+         Contributor, and informs licensees how to obtain it in a reasonable
+         manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+  a) it must be made available under this Agreement; and
+  b) a copy of this Agreement must be included with each copy of the Program.
+     Contributors may not remove or alter any copyright notices contained
+     within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution,
+if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore,
+if a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses,
+damages and costs (collectively "Losses") arising from claims, lawsuits and
+other legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such Commercial
+Contributor in connection with its distribution of the Program in a commercial
+product offering. The obligations in this section do not apply to any claims
+or Losses relating to any actual or alleged intellectual property
+infringement. In order to qualify, an Indemnified Contributor must:
+a) promptly notify the Commercial Contributor in writing of such claim, and
+b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such claim at
+its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If
+that Commercial Contributor then makes performance claims, or offers
+warranties related to Product X, those performance claims and warranties are
+such Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using
+and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the
+risks and costs of program errors, compliance with applicable laws, damage to
+or loss of data, programs or equipment, and unavailability or interruption of
+operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
+LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of the
+remainder of the terms of this Agreement, and without further action by the
+parties hereto, such provision shall be reformed to the minimum extent
+necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+(excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted
+under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue
+and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to
+time. No one other than the Agreement Steward has the right to modify this
+Agreement. The Eclipse Foundation is the initial Agreement Steward. The
+Eclipse Foundation may assign the responsibility to serve as the Agreement
+Steward to a suitable separate entity. Each new version of the Agreement will
+be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version of the
+Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly
+stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
+licenses to the intellectual property of any Contributor under this Agreement,
+whether expressly, by implication, estoppel or otherwise. All rights in the
+Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
diff --git a/org.eclipse.osbp.ecview.core.extension.model/model/extension.ecore b/org.eclipse.osbp.ecview.core.extension.model/model/extension.ecore
index 3ad2e2d..fdcea7d 100644
--- a/org.eclipse.osbp.ecview.core.extension.model/model/extension.ecore
+++ b/org.eclipse.osbp.ecview.core.extension.model/model/extension.ecore
@@ -547,15 +547,11 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="emfNsURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeQualifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="YEnumList" eSuperTypes="#//YInput ../../org.eclipse.osbp.ecview.core.common.model/model/core.ecore#//YCollectionBindable ../../org.eclipse.osbp.ecview.core.common.model/model/core.ecore#//YSelectionBindable ../../org.eclipse.osbp.ecview.core.common.model/model/core.ecore#//YMultiSelectionBindable">
+  <eClassifiers xsi:type="ecore:EClass" name="YEnumComboBox" eSuperTypes="#//YInput ../../org.eclipse.osbp.ecview.core.common.model/model/core.ecore#//YCollectionBindable ../../org.eclipse.osbp.ecview.core.common.model/model/core.ecore#//YSelectionBindable">
     <eStructuralFeatures xsi:type="ecore:EReference" name="datadescription" eType="ecore:EClass ../../org.eclipse.osbp.ecview.core.common.model/model/datatypes.ecore#//YDatadescription"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="datatype" eType="ecore:EClass extdatatypes.ecore#//YListDataType"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="selectionType" eType="#//YSelectionType"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="datatype" eType="ecore:EClass extdatatypes.ecore#//YComboBoxDatatype"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="selection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
         transient="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="multiSelection" upperBound="-1"
-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
-        transient="true"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="type">
       <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
         <eTypeArguments/>
@@ -564,11 +560,15 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="emfNsURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeQualifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="YEnumComboBox" eSuperTypes="#//YInput ../../org.eclipse.osbp.ecview.core.common.model/model/core.ecore#//YCollectionBindable ../../org.eclipse.osbp.ecview.core.common.model/model/core.ecore#//YSelectionBindable">
+  <eClassifiers xsi:type="ecore:EClass" name="YEnumList" eSuperTypes="#//YInput ../../org.eclipse.osbp.ecview.core.common.model/model/core.ecore#//YCollectionBindable ../../org.eclipse.osbp.ecview.core.common.model/model/core.ecore#//YSelectionBindable ../../org.eclipse.osbp.ecview.core.common.model/model/core.ecore#//YMultiSelectionBindable">
     <eStructuralFeatures xsi:type="ecore:EReference" name="datadescription" eType="ecore:EClass ../../org.eclipse.osbp.ecview.core.common.model/model/datatypes.ecore#//YDatadescription"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="datatype" eType="ecore:EClass extdatatypes.ecore#//YComboBoxDatatype"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="datatype" eType="ecore:EClass extdatatypes.ecore#//YListDataType"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="selectionType" eType="#//YSelectionType"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="selection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
         transient="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="multiSelection" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
+        transient="true"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="type">
       <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
         <eTypeArguments/>
diff --git a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/ExtensionModelPackage.java b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/ExtensionModelPackage.java
index f95da82..3df3115 100644
--- a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/ExtensionModelPackage.java
+++ b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/ExtensionModelPackage.java
@@ -11786,7 +11786,341 @@
 	 * @see org.eclipse.osbp.ecview.core.extension.model.extension.impl.ExtensionModelPackageImpl#getYEnumList()
 	 * @generated
 	 */
-	int YENUM_LIST = 43;
+	int YENUM_LIST = 44;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.ecview.core.extension.model.extension.impl.YEnumComboBoxImpl <em>YEnum Combo Box</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.ecview.core.extension.model.extension.impl.YEnumComboBoxImpl
+	 * @see org.eclipse.osbp.ecview.core.extension.model.extension.impl.ExtensionModelPackageImpl#getYEnumComboBox()
+	 * @generated
+	 */
+	int YENUM_COMBO_BOX = 43;
+
+	/**
+	 * The feature id for the '<em><b>Tags</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__TAGS = YINPUT__TAGS;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__ID = YINPUT__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__NAME = YINPUT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__PROPERTIES = YINPUT__PROPERTIES;
+
+	/**
+	 * The feature id for the '<em><b>Css Class</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__CSS_CLASS = YINPUT__CSS_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Css ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__CSS_ID = YINPUT__CSS_ID;
+
+	/**
+	 * The feature id for the '<em><b>Initial Visible</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__INITIAL_VISIBLE = YINPUT__INITIAL_VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Visible</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__VISIBLE = YINPUT__VISIBLE;
+
+	/**
+	 * The feature id for the '<em><b>Authorization Group</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__AUTHORIZATION_GROUP = YINPUT__AUTHORIZATION_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Authorization Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__AUTHORIZATION_ID = YINPUT__AUTHORIZATION_ID;
+
+	/**
+	 * The feature id for the '<em><b>Orphan Datatypes</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__ORPHAN_DATATYPES = YINPUT__ORPHAN_DATATYPES;
+
+	/**
+	 * The feature id for the '<em><b>Orphan Datadescriptions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__ORPHAN_DATADESCRIPTIONS = YINPUT__ORPHAN_DATADESCRIPTIONS;
+
+	/**
+	 * The feature id for the '<em><b>Memento Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__MEMENTO_ENABLED = YINPUT__MEMENTO_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Memento Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__MEMENTO_ID = YINPUT__MEMENTO_ID;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__LABEL = YINPUT__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Label I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__LABEL_I1_8N_KEY = YINPUT__LABEL_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Last Context Click</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__LAST_CONTEXT_CLICK = YINPUT__LAST_CONTEXT_CLICK;
+
+	/**
+	 * The feature id for the '<em><b>Initial Editable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__INITIAL_EDITABLE = YINPUT__INITIAL_EDITABLE;
+
+	/**
+	 * The feature id for the '<em><b>Editable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__EDITABLE = YINPUT__EDITABLE;
+
+	/**
+	 * The feature id for the '<em><b>Initial Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__INITIAL_ENABLED = YINPUT__INITIAL_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__ENABLED = YINPUT__ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Layout Idx</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__LAYOUT_IDX = YINPUT__LAYOUT_IDX;
+
+	/**
+	 * The feature id for the '<em><b>Layout Columns</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__LAYOUT_COLUMNS = YINPUT__LAYOUT_COLUMNS;
+
+	/**
+	 * The feature id for the '<em><b>Tab Index</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__TAB_INDEX = YINPUT__TAB_INDEX;
+
+	/**
+	 * The feature id for the '<em><b>Validators</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__VALIDATORS = YINPUT__VALIDATORS;
+
+	/**
+	 * The feature id for the '<em><b>Internal Validators</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__INTERNAL_VALIDATORS = YINPUT__INTERNAL_VALIDATORS;
+
+	/**
+	 * The feature id for the '<em><b>Converter</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__CONVERTER = YINPUT__CONVERTER;
+
+	/**
+	 * The feature id for the '<em><b>Collection Binding Endpoint</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__COLLECTION_BINDING_ENDPOINT = YINPUT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Selection Binding Endpoint</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__SELECTION_BINDING_ENDPOINT = YINPUT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Datadescription</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__DATADESCRIPTION = YINPUT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Datatype</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__DATATYPE = YINPUT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Selection</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__SELECTION = YINPUT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__TYPE = YINPUT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Emf Ns URI</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__EMF_NS_URI = YINPUT_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Type Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX__TYPE_QUALIFIED_NAME = YINPUT_FEATURE_COUNT + 7;
+
+	/**
+	 * The number of structural features of the '<em>YEnum Combo Box</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int YENUM_COMBO_BOX_FEATURE_COUNT = YINPUT_FEATURE_COUNT + 8;
 
 	/**
 	 * The feature id for the '<em><b>Tags</b></em>' attribute list.
@@ -12140,340 +12474,6 @@
 	int YENUM_LIST_FEATURE_COUNT = YINPUT_FEATURE_COUNT + 11;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.ecview.core.extension.model.extension.impl.YEnumComboBoxImpl <em>YEnum Combo Box</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.ecview.core.extension.model.extension.impl.YEnumComboBoxImpl
-	 * @see org.eclipse.osbp.ecview.core.extension.model.extension.impl.ExtensionModelPackageImpl#getYEnumComboBox()
-	 * @generated
-	 */
-	int YENUM_COMBO_BOX = 44;
-
-	/**
-	 * The feature id for the '<em><b>Tags</b></em>' attribute list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__TAGS = YINPUT__TAGS;
-
-	/**
-	 * The feature id for the '<em><b>Id</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__ID = YINPUT__ID;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__NAME = YINPUT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Properties</b></em>' map.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__PROPERTIES = YINPUT__PROPERTIES;
-
-	/**
-	 * The feature id for the '<em><b>Css Class</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__CSS_CLASS = YINPUT__CSS_CLASS;
-
-	/**
-	 * The feature id for the '<em><b>Css ID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__CSS_ID = YINPUT__CSS_ID;
-
-	/**
-	 * The feature id for the '<em><b>Initial Visible</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__INITIAL_VISIBLE = YINPUT__INITIAL_VISIBLE;
-
-	/**
-	 * The feature id for the '<em><b>Visible</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__VISIBLE = YINPUT__VISIBLE;
-
-	/**
-	 * The feature id for the '<em><b>Authorization Group</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__AUTHORIZATION_GROUP = YINPUT__AUTHORIZATION_GROUP;
-
-	/**
-	 * The feature id for the '<em><b>Authorization Id</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__AUTHORIZATION_ID = YINPUT__AUTHORIZATION_ID;
-
-	/**
-	 * The feature id for the '<em><b>Orphan Datatypes</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__ORPHAN_DATATYPES = YINPUT__ORPHAN_DATATYPES;
-
-	/**
-	 * The feature id for the '<em><b>Orphan Datadescriptions</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__ORPHAN_DATADESCRIPTIONS = YINPUT__ORPHAN_DATADESCRIPTIONS;
-
-	/**
-	 * The feature id for the '<em><b>Memento Enabled</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__MEMENTO_ENABLED = YINPUT__MEMENTO_ENABLED;
-
-	/**
-	 * The feature id for the '<em><b>Memento Id</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__MEMENTO_ID = YINPUT__MEMENTO_ID;
-
-	/**
-	 * The feature id for the '<em><b>Label</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__LABEL = YINPUT__LABEL;
-
-	/**
-	 * The feature id for the '<em><b>Label I1 8n Key</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__LABEL_I1_8N_KEY = YINPUT__LABEL_I1_8N_KEY;
-
-	/**
-	 * The feature id for the '<em><b>Last Context Click</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__LAST_CONTEXT_CLICK = YINPUT__LAST_CONTEXT_CLICK;
-
-	/**
-	 * The feature id for the '<em><b>Initial Editable</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__INITIAL_EDITABLE = YINPUT__INITIAL_EDITABLE;
-
-	/**
-	 * The feature id for the '<em><b>Editable</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__EDITABLE = YINPUT__EDITABLE;
-
-	/**
-	 * The feature id for the '<em><b>Initial Enabled</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__INITIAL_ENABLED = YINPUT__INITIAL_ENABLED;
-
-	/**
-	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__ENABLED = YINPUT__ENABLED;
-
-	/**
-	 * The feature id for the '<em><b>Layout Idx</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__LAYOUT_IDX = YINPUT__LAYOUT_IDX;
-
-	/**
-	 * The feature id for the '<em><b>Layout Columns</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__LAYOUT_COLUMNS = YINPUT__LAYOUT_COLUMNS;
-
-	/**
-	 * The feature id for the '<em><b>Tab Index</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__TAB_INDEX = YINPUT__TAB_INDEX;
-
-	/**
-	 * The feature id for the '<em><b>Validators</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__VALIDATORS = YINPUT__VALIDATORS;
-
-	/**
-	 * The feature id for the '<em><b>Internal Validators</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__INTERNAL_VALIDATORS = YINPUT__INTERNAL_VALIDATORS;
-
-	/**
-	 * The feature id for the '<em><b>Converter</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__CONVERTER = YINPUT__CONVERTER;
-
-	/**
-	 * The feature id for the '<em><b>Collection Binding Endpoint</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__COLLECTION_BINDING_ENDPOINT = YINPUT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Selection Binding Endpoint</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__SELECTION_BINDING_ENDPOINT = YINPUT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Datadescription</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__DATADESCRIPTION = YINPUT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Datatype</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__DATATYPE = YINPUT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Selection</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__SELECTION = YINPUT_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Type</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__TYPE = YINPUT_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>Emf Ns URI</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__EMF_NS_URI = YINPUT_FEATURE_COUNT + 6;
-
-	/**
-	 * The feature id for the '<em><b>Type Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX__TYPE_QUALIFIED_NAME = YINPUT_FEATURE_COUNT + 7;
-
-	/**
-	 * The number of structural features of the '<em>YEnum Combo Box</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int YENUM_COMBO_BOX_FEATURE_COUNT = YINPUT_FEATURE_COUNT + 8;
-
-	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.ecview.core.extension.model.extension.YBeanServiceConsumer <em>YBean Service Consumer</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/ExtensionModelFactoryImpl.java b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/ExtensionModelFactoryImpl.java
index f96f867..7e79955 100644
--- a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/ExtensionModelFactoryImpl.java
+++ b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/ExtensionModelFactoryImpl.java
@@ -160,8 +160,8 @@
 			case ExtensionModelPackage.YSPLIT_PANEL: return createYSplitPanel();
 			case ExtensionModelPackage.YSEARCH_PANEL: return createYSearchPanel();
 			case ExtensionModelPackage.YENUM_OPTIONS_GROUP: return createYEnumOptionsGroup();
-			case ExtensionModelPackage.YENUM_LIST: return createYEnumList();
 			case ExtensionModelPackage.YENUM_COMBO_BOX: return createYEnumComboBox();
+			case ExtensionModelPackage.YENUM_LIST: return createYEnumList();
 			case ExtensionModelPackage.YADD_TO_TABLE_COMMAND: return createYAddToTableCommand();
 			case ExtensionModelPackage.YREMOVE_FROM_TABLE_COMMAND: return createYRemoveFromTableCommand();
 			case ExtensionModelPackage.YBROWSER_STREAM_INPUT: return createYBrowserStreamInput();
diff --git a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/ExtensionModelPackageImpl.java b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/ExtensionModelPackageImpl.java
index b9a36e7..9e443d5 100644
--- a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/ExtensionModelPackageImpl.java
+++ b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/ExtensionModelPackageImpl.java
@@ -4591,6 +4591,14 @@
 		createEAttribute(yEnumOptionsGroupEClass, YENUM_OPTIONS_GROUP__EMF_NS_URI);
 		createEAttribute(yEnumOptionsGroupEClass, YENUM_OPTIONS_GROUP__TYPE_QUALIFIED_NAME);
 
+		yEnumComboBoxEClass = createEClass(YENUM_COMBO_BOX);
+		createEReference(yEnumComboBoxEClass, YENUM_COMBO_BOX__DATADESCRIPTION);
+		createEReference(yEnumComboBoxEClass, YENUM_COMBO_BOX__DATATYPE);
+		createEAttribute(yEnumComboBoxEClass, YENUM_COMBO_BOX__SELECTION);
+		createEAttribute(yEnumComboBoxEClass, YENUM_COMBO_BOX__TYPE);
+		createEAttribute(yEnumComboBoxEClass, YENUM_COMBO_BOX__EMF_NS_URI);
+		createEAttribute(yEnumComboBoxEClass, YENUM_COMBO_BOX__TYPE_QUALIFIED_NAME);
+
 		yEnumListEClass = createEClass(YENUM_LIST);
 		createEReference(yEnumListEClass, YENUM_LIST__DATADESCRIPTION);
 		createEReference(yEnumListEClass, YENUM_LIST__DATATYPE);
@@ -4601,14 +4609,6 @@
 		createEAttribute(yEnumListEClass, YENUM_LIST__EMF_NS_URI);
 		createEAttribute(yEnumListEClass, YENUM_LIST__TYPE_QUALIFIED_NAME);
 
-		yEnumComboBoxEClass = createEClass(YENUM_COMBO_BOX);
-		createEReference(yEnumComboBoxEClass, YENUM_COMBO_BOX__DATADESCRIPTION);
-		createEReference(yEnumComboBoxEClass, YENUM_COMBO_BOX__DATATYPE);
-		createEAttribute(yEnumComboBoxEClass, YENUM_COMBO_BOX__SELECTION);
-		createEAttribute(yEnumComboBoxEClass, YENUM_COMBO_BOX__TYPE);
-		createEAttribute(yEnumComboBoxEClass, YENUM_COMBO_BOX__EMF_NS_URI);
-		createEAttribute(yEnumComboBoxEClass, YENUM_COMBO_BOX__TYPE_QUALIFIED_NAME);
-
 		yBeanServiceConsumerEClass = createEClass(YBEAN_SERVICE_CONSUMER);
 		createEAttribute(yBeanServiceConsumerEClass, YBEAN_SERVICE_CONSUMER__USE_BEAN_SERVICE);
 
@@ -4877,13 +4877,13 @@
 		yEnumOptionsGroupEClass.getESuperTypes().add(theCoreModelPackage.getYCollectionBindable());
 		yEnumOptionsGroupEClass.getESuperTypes().add(theCoreModelPackage.getYSelectionBindable());
 		yEnumOptionsGroupEClass.getESuperTypes().add(theCoreModelPackage.getYMultiSelectionBindable());
+		yEnumComboBoxEClass.getESuperTypes().add(this.getYInput());
+		yEnumComboBoxEClass.getESuperTypes().add(theCoreModelPackage.getYCollectionBindable());
+		yEnumComboBoxEClass.getESuperTypes().add(theCoreModelPackage.getYSelectionBindable());
 		yEnumListEClass.getESuperTypes().add(this.getYInput());
 		yEnumListEClass.getESuperTypes().add(theCoreModelPackage.getYCollectionBindable());
 		yEnumListEClass.getESuperTypes().add(theCoreModelPackage.getYSelectionBindable());
 		yEnumListEClass.getESuperTypes().add(theCoreModelPackage.getYMultiSelectionBindable());
-		yEnumComboBoxEClass.getESuperTypes().add(this.getYInput());
-		yEnumComboBoxEClass.getESuperTypes().add(theCoreModelPackage.getYCollectionBindable());
-		yEnumComboBoxEClass.getESuperTypes().add(theCoreModelPackage.getYSelectionBindable());
 		yAddToTableCommandEClass.getESuperTypes().add(theCoreModelPackage.getYCommand());
 		yRemoveFromTableCommandEClass.getESuperTypes().add(theCoreModelPackage.getYCommand());
 		ySetNewBeanInstanceCommandEClass.getESuperTypes().add(theCoreModelPackage.getYCommand());
@@ -5287,6 +5287,17 @@
 		initEAttribute(getYEnumOptionsGroup_EmfNsURI(), ecorePackage.getEString(), "emfNsURI", null, 0, 1, YEnumOptionsGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getYEnumOptionsGroup_TypeQualifiedName(), ecorePackage.getEString(), "typeQualifiedName", null, 0, 1, YEnumOptionsGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		initEClass(yEnumComboBoxEClass, YEnumComboBox.class, "YEnumComboBox", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getYEnumComboBox_Datadescription(), theDatatypesPackage.getYDatadescription(), null, "datadescription", null, 0, 1, YEnumComboBox.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getYEnumComboBox_Datatype(), theExtDatatypesPackage.getYComboBoxDatatype(), null, "datatype", null, 0, 1, YEnumComboBox.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getYEnumComboBox_Selection(), ecorePackage.getEJavaObject(), "selection", null, 0, 1, YEnumComboBox.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		g1 = createEGenericType(ecorePackage.getEJavaClass());
+		g2 = createEGenericType();
+		g1.getETypeArguments().add(g2);
+		initEAttribute(getYEnumComboBox_Type(), g1, "type", null, 0, 1, YEnumComboBox.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getYEnumComboBox_EmfNsURI(), ecorePackage.getEString(), "emfNsURI", null, 0, 1, YEnumComboBox.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getYEnumComboBox_TypeQualifiedName(), ecorePackage.getEString(), "typeQualifiedName", null, 0, 1, YEnumComboBox.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		initEClass(yEnumListEClass, YEnumList.class, "YEnumList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getYEnumList_Datadescription(), theDatatypesPackage.getYDatadescription(), null, "datadescription", null, 0, 1, YEnumList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getYEnumList_Datatype(), theExtDatatypesPackage.getYListDataType(), null, "datatype", null, 0, 1, YEnumList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -5300,17 +5311,6 @@
 		initEAttribute(getYEnumList_EmfNsURI(), ecorePackage.getEString(), "emfNsURI", null, 0, 1, YEnumList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getYEnumList_TypeQualifiedName(), ecorePackage.getEString(), "typeQualifiedName", null, 0, 1, YEnumList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(yEnumComboBoxEClass, YEnumComboBox.class, "YEnumComboBox", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getYEnumComboBox_Datadescription(), theDatatypesPackage.getYDatadescription(), null, "datadescription", null, 0, 1, YEnumComboBox.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getYEnumComboBox_Datatype(), theExtDatatypesPackage.getYComboBoxDatatype(), null, "datatype", null, 0, 1, YEnumComboBox.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getYEnumComboBox_Selection(), ecorePackage.getEJavaObject(), "selection", null, 0, 1, YEnumComboBox.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		g1 = createEGenericType(ecorePackage.getEJavaClass());
-		g2 = createEGenericType();
-		g1.getETypeArguments().add(g2);
-		initEAttribute(getYEnumComboBox_Type(), g1, "type", null, 0, 1, YEnumComboBox.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getYEnumComboBox_EmfNsURI(), ecorePackage.getEString(), "emfNsURI", null, 0, 1, YEnumComboBox.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getYEnumComboBox_TypeQualifiedName(), ecorePackage.getEString(), "typeQualifiedName", null, 0, 1, YEnumComboBox.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-
 		initEClass(yBeanServiceConsumerEClass, YBeanServiceConsumer.class, "YBeanServiceConsumer", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getYBeanServiceConsumer_UseBeanService(), ecorePackage.getEBoolean(), "useBeanService", null, 0, 1, YBeanServiceConsumer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
diff --git a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/YEnumComboBoxImpl.java b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/YEnumComboBoxImpl.java
index 48323e1..3920052 100644
--- a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/YEnumComboBoxImpl.java
+++ b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/impl/YEnumComboBoxImpl.java
@@ -553,17 +553,19 @@
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->.
+	 * Creates a new instance of collection endpoint with a reference to that
+	 * embeddable.
 	 *
 	 * @return the y embeddable collection endpoint
-	 * @generated
+	 * @generated NOT
 	 */
 	public YEmbeddableCollectionEndpoint createCollectionEndpoint() {
-		// TODO: implement this method
-		// Ensure that you remove @generated or mark it @generated NOT
-		throw new UnsupportedOperationException();
+		YEmbeddableCollectionEndpoint ep = CoreModelFactory.eINSTANCE.createYEmbeddableCollectionEndpoint();
+		ep.setElement(this);
+		return ep;
+
 	}
-	
+
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->.
 	 *
diff --git a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/util/ExtensionModelAdapterFactory.java b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/util/ExtensionModelAdapterFactory.java
index ec3c4b6..f46b25e 100644
--- a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/util/ExtensionModelAdapterFactory.java
+++ b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/util/ExtensionModelAdapterFactory.java
@@ -319,14 +319,14 @@
 				return createYEnumOptionsGroupAdapter();
 			}
 			@Override
-			public Adapter caseYEnumList(YEnumList object) {
-				return createYEnumListAdapter();
-			}
-			@Override
 			public Adapter caseYEnumComboBox(YEnumComboBox object) {
 				return createYEnumComboBoxAdapter();
 			}
 			@Override
+			public Adapter caseYEnumList(YEnumList object) {
+				return createYEnumListAdapter();
+			}
+			@Override
 			public Adapter caseYBeanServiceConsumer(YBeanServiceConsumer object) {
 				return createYBeanServiceConsumerAdapter();
 			}
diff --git a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/util/ExtensionModelSwitch.java b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/util/ExtensionModelSwitch.java
index c2ff7cd..c2ee082 100644
--- a/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/util/ExtensionModelSwitch.java
+++ b/org.eclipse.osbp.ecview.core.extension.model/src/org/eclipse/osbp/ecview/core/extension/model/extension/util/ExtensionModelSwitch.java
@@ -877,6 +877,26 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case ExtensionModelPackage.YENUM_COMBO_BOX: {
+				YEnumComboBox yEnumComboBox = (YEnumComboBox)theEObject;
+				T result = caseYEnumComboBox(yEnumComboBox);
+				if (result == null) result = caseYInput(yEnumComboBox);
+				if (result == null) result = caseYCollectionBindable(yEnumComboBox);
+				if (result == null) result = caseYSelectionBindable(yEnumComboBox);
+				if (result == null) result = caseYField(yEnumComboBox);
+				if (result == null) result = caseYBindable(yEnumComboBox);
+				if (result == null) result = caseYEmbeddable(yEnumComboBox);
+				if (result == null) result = caseYEditable(yEnumComboBox);
+				if (result == null) result = caseYEnable(yEnumComboBox);
+				if (result == null) result = caseYFocusable(yEnumComboBox);
+				if (result == null) result = caseYElement(yEnumComboBox);
+				if (result == null) result = caseYCssAble(yEnumComboBox);
+				if (result == null) result = caseYVisibleable(yEnumComboBox);
+				if (result == null) result = caseYAuthorizationable(yEnumComboBox);
+				if (result == null) result = caseYTaggable(yEnumComboBox);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case ExtensionModelPackage.YENUM_LIST: {
 				YEnumList yEnumList = (YEnumList)theEObject;
 				T result = caseYEnumList(yEnumList);
@@ -898,26 +918,6 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case ExtensionModelPackage.YENUM_COMBO_BOX: {
-				YEnumComboBox yEnumComboBox = (YEnumComboBox)theEObject;
-				T result = caseYEnumComboBox(yEnumComboBox);
-				if (result == null) result = caseYInput(yEnumComboBox);
-				if (result == null) result = caseYCollectionBindable(yEnumComboBox);
-				if (result == null) result = caseYSelectionBindable(yEnumComboBox);
-				if (result == null) result = caseYField(yEnumComboBox);
-				if (result == null) result = caseYBindable(yEnumComboBox);
-				if (result == null) result = caseYEmbeddable(yEnumComboBox);
-				if (result == null) result = caseYEditable(yEnumComboBox);
-				if (result == null) result = caseYEnable(yEnumComboBox);
-				if (result == null) result = caseYFocusable(yEnumComboBox);
-				if (result == null) result = caseYElement(yEnumComboBox);
-				if (result == null) result = caseYCssAble(yEnumComboBox);
-				if (result == null) result = caseYVisibleable(yEnumComboBox);
-				if (result == null) result = caseYAuthorizationable(yEnumComboBox);
-				if (result == null) result = caseYTaggable(yEnumComboBox);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
 			case ExtensionModelPackage.YBEAN_SERVICE_CONSUMER: {
 				YBeanServiceConsumer yBeanServiceConsumer = (YBeanServiceConsumer)theEObject;
 				T result = caseYBeanServiceConsumer(yBeanServiceConsumer);
