commit 23783f7af11e37d8388c85e026da3700ff41ef8d
Author: n.hoffmann <n.hoffmann@localhost>
Date:   Mon Jan 30 11:40:42 2012 +0000

    Refactoring of selection elements. Additional minor refactoring. Fixed a bug with Translation Editor (#2752)

diff --git a/.gitattributes b/.gitattributes
index 2d48b6164..2245934e3 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1221,6 +1221,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/sele
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PersonSelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/PolytomousKeySelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/ReferenceSelectionDialog.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonBaseSelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionDialog.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TeamSelectionDialog.java -text
@@ -1249,6 +1250,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/Key
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyValueViewerElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LabelElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LanguageStringWithLabelElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LayoutConstants.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/NumberWithLabelElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/PartialElement.java -text
@@ -1447,30 +1449,10 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/voc
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/NamedAreaLevelDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailSection.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/AbstractSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/AgentSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/ClassificationSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/CollectionSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/DerivedUnitBaseSelectionElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FeatureSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FeatureTreeSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FieldObservationSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/GroupSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/InstitutionSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NameSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NamedAreaSelectionElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NomenclaturalAuthorTeamSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PersonSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PolytomousKeyNodeSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PolytomousKeySelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/ReferenceSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/SynonymSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonBaseSelectionElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonNodeSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TeamSelectionElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/UserSelectionElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/GoogleLanguageApiWrapper.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/ITranslationServiceWrapper.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/LanguageNotSupportedException.java -text
diff --git a/eu.etaxonomy.taxeditor.cdmlib/.classpath b/eu.etaxonomy.taxeditor.cdmlib/.classpath
index 6b053d545..4bce4adba 100644
--- a/eu.etaxonomy.taxeditor.cdmlib/.classpath
+++ b/eu.etaxonomy.taxeditor.cdmlib/.classpath
@@ -1,119 +1,119 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry exported="true" kind="lib" path="lib/activation-1.1.jar" sourcepath="lib/activation-1.1src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/antlr-2.7.6.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/aopalliance-1.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/asm-attrs.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/asm.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/aspectjrt-1.6.3.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/aspectjweaver-1.6.3.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/avalon-framework-4.2.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/batik-all-1.7.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/c3p0-0.9.1.jar" sourcepath="lib/c3p0-0.9.1src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/cglib-2.1.3.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.7.0.jar" sourcepath="lib/commons-beanutils-1.7.0src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/commons-collections-3.2.jar" sourcepath="lib/commons-collections-3.2src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/commons-dbcp-1.2.2.jar" sourcepath="lib/commons-dbcp-1.2.2src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/commons-io-1.3.1.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/commons-io-1.4.jar" sourcepath="lib/commons-io-1.4src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/commons-lang-2.4.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/commons-logging-1.0.4.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/commons-pool-1.3.jar" sourcepath="lib/commons-pool-1.3src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/dom4j-1.6.1.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/dozer-5.3.0.jar" sourcepath="lib/dozer-5.3.0src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ehcache-1.2.3.jar" sourcepath="lib/ehcache-1.2.3src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ejb3-persistence.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/ezmorph-1.0.4.jar" sourcepath="lib/ezmorph-1.0.4src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/fop.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/google-api-translate-java-0.92.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/h2-1.1.115.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/hibernate-annotations-3.4.0-SNAPSHOT.jar" sourcepath="lib/hibernate-annotations-3.4.0-SNAPSHOTsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/hibernate-commons-annotations-3.4.0-SNAPSHOT.jar" sourcepath="lib/hibernate-commons-annotations-3.4.0-SNAPSHOTsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/hibernate-core-3.4.0-SNAPSHOT.jar" sourcepath="lib/hibernate-core-3.4.0-SNAPSHOTsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/hibernate-search-3.1.0.GA.jar" sourcepath="lib/hibernate-search-3.1.0.GAsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/hibernate-tools-3.2.0.ga.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/hibernate-validator-4.0.0.CR1.jar" sourcepath="lib/hibernate-validator-4.0.0.CR1src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/hsqldb.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/httpclient-4.0.1.jar" sourcepath="lib/httpclient-4.0.1src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/httpcore-4.0.1.jar" sourcepath="lib/httpcore-4.0.1src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/javassist.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/jaxb-api-2.1.6.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/jaxb-impl-2.1.6.jar" sourcepath="lib/jaxb-impl-2.1.6src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/jaxen-1.1.2.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/jdbc-1.2.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/jdbc2_0-stdext.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/jdom.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/joda-time-1.5.jar" sourcepath="lib/joda-time-1.5src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/joda-time-hibernate-1.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/json-lib-2.2.3-jdk15.jar" sourcepath="lib/json-lib-2.2.3-jdk15src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/jsr250-api-1.0.jar" sourcepath="lib/jsr250-api-1.0src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/jta.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/jtds-1.2.2.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/junit-4.8.1.jar" sourcepath="lib/junit-4.8.1src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/log4j-1.2.14.jar" sourcepath="lib/log4j-1.2.14src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/lsid-client-1.1.2.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/lsid-server-1.1.2.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/lucene-core-2.4.0.jar" sourcepath="lib/lucene-core-2.4.0src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/lucene-spellchecker-2.4.0.jar" sourcepath="lib/lucene-spellchecker-2.4.0src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/mail-1.4.jar" sourcepath="lib/mail-1.4src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/msbase-2000.3.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/mssqlserver-2000.3.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/msutil-2000.3.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/mysql-connector-java-5.0.5.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/odfdom-0.8.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/opencsv-1.8.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.apache.commons.codec-1.3.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.eclipse.equinox.common-3.6.0.v20100503.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.eclipse.osgi-3.6.2.R36x_v20110210.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.aop-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.aop-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.asm-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.asm-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.aspects-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.aspects-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.beans-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.beans-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.context-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.context-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.context.support-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.context.support-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.core-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.core-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.expression-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.expression-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.jdbc-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.jdbc-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.orm-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.orm-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.oxm-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.oxm-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.transaction-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.transaction-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.web-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.web-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/org.springframework.web.servlet-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.web.servlet-3.0.4.RELEASEsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/poi-3.6.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/postgresql-8.2-504.jdbc4.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/sanselan-0.97-incubator.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/saxon9he.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/serializer-2.7.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/servlet-2.5.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/servlet-api-2.5.jar" sourcepath="lib/servlet-api-2.5src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.5.2.jar" sourcepath="lib/slf4j-api-1.5.2src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/slf4j-log4j12-1.5.2.jar" sourcepath="lib/slf4j-log4j12-1.5.2src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/spring-modules-cache-0.7.jar" sourcepath="lib/spring-modules-cache-0.7src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/spring-modules-lucene-0.8a.jar" sourcepath="lib/spring-modules-lucene-0.8asrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/spring-security-config-3.0.5.RELEASE.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/spring-security-core-3.0.5.RELEASE.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/wsdl4j-1.6.1.jar" sourcepath="lib/wsdl4j-1.6.1src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/xalan-2.7.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xercesImpl-2.7.1.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xercesImpl.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xml-apis-1.3.04.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xml-apis-ext-1.3.04.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xml-apis.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xml-resolver-1.2.jar" sourcepath="lib/xml-resolver-1.2src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/xmlgraphics-commons-1.3.1.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xom-1.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xsltc.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/xstream-1.3.1.jar" sourcepath="lib/xstream-1.3.1src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-3.0.9-SNAPSHOT.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-3.0.9-SNAPSHOT.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/cdmlib-io-3.0.9-SNAPSHOT.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/cdmlib-model-3.0.9-SNAPSHOT.jar" sourcepath="C:/Users/l.morris/.m2/repository/eu/etaxonomy/cdmlib-model/3.0.9-SNAPSHOT/cdmlib-model-3.0.9-SNAPSHOT-sources.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-3.0.9-SNAPSHOT.jar" sourcepath="C:/Users/l.morris/.m2/repository/eu/etaxonomy/cdmlib-persistence/3.0.9-SNAPSHOT/cdmlib-persistence-3.0.9-SNAPSHOT-sources.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/cdmlib-print-3.0.9-SNAPSHOT.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-3.0.9-SNAPSHOT.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/cdmlib-services-3.0.9-SNAPSHOT.jar" sourcepath="/cdmlib-services"/>
-	<classpathentry exported="true" kind="lib" path="lib/hibernate-envers-3.4.0-SNAPSHOT.jar" sourcepath="lib/hibernate-envers-3.4.0-SNAPSHOTsrc.zip"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry exported="true" kind="lib" path="lib/activation-1.1.jar" sourcepath="lib/activation-1.1src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/antlr-2.7.6.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/aopalliance-1.0.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/asm-attrs.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/asm.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/aspectjrt-1.6.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/aspectjweaver-1.6.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/avalon-framework-4.2.0.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/batik-all-1.7.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/c3p0-0.9.1.jar" sourcepath="lib/c3p0-0.9.1src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/cglib-2.1.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.7.0.jar" sourcepath="lib/commons-beanutils-1.7.0src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-collections-3.2.jar" sourcepath="lib/commons-collections-3.2src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-dbcp-1.2.2.jar" sourcepath="lib/commons-dbcp-1.2.2src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-io-1.3.1.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-io-1.4.jar" sourcepath="lib/commons-io-1.4src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-lang-2.4.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-logging-1.0.4.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-pool-1.3.jar" sourcepath="lib/commons-pool-1.3src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/dom4j-1.6.1.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/dozer-5.3.0.jar" sourcepath="lib/dozer-5.3.0src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/ehcache-1.2.3.jar" sourcepath="lib/ehcache-1.2.3src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/ejb3-persistence.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/ezmorph-1.0.4.jar" sourcepath="lib/ezmorph-1.0.4src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/fop.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/google-api-translate-java-0.92.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/h2-1.1.115.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/hibernate-annotations-3.4.0-SNAPSHOT.jar" sourcepath="lib/hibernate-annotations-3.4.0-SNAPSHOTsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/hibernate-commons-annotations-3.4.0-SNAPSHOT.jar" sourcepath="lib/hibernate-commons-annotations-3.4.0-SNAPSHOTsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/hibernate-core-3.4.0-SNAPSHOT.jar" sourcepath="lib/hibernate-core-3.4.0-SNAPSHOTsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/hibernate-search-3.1.0.GA.jar" sourcepath="lib/hibernate-search-3.1.0.GAsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/hibernate-tools-3.2.0.ga.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/hibernate-validator-4.0.0.CR1.jar" sourcepath="lib/hibernate-validator-4.0.0.CR1src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/hsqldb.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/httpclient-4.0.1.jar" sourcepath="lib/httpclient-4.0.1src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/httpcore-4.0.1.jar" sourcepath="lib/httpcore-4.0.1src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/javassist.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/jaxb-api-2.1.6.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/jaxb-impl-2.1.6.jar" sourcepath="lib/jaxb-impl-2.1.6src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/jaxen-1.1.2.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/jdbc-1.2.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/jdbc2_0-stdext.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/jdom.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/joda-time-1.5.jar" sourcepath="lib/joda-time-1.5src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/joda-time-hibernate-1.0.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/json-lib-2.2.3-jdk15.jar" sourcepath="lib/json-lib-2.2.3-jdk15src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/jsr250-api-1.0.jar" sourcepath="lib/jsr250-api-1.0src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/jta.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/jtds-1.2.2.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/junit-4.8.1.jar" sourcepath="lib/junit-4.8.1src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/log4j-1.2.14.jar" sourcepath="lib/log4j-1.2.14src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/lsid-client-1.1.2.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/lsid-server-1.1.2.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/lucene-core-2.4.0.jar" sourcepath="lib/lucene-core-2.4.0src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/lucene-spellchecker-2.4.0.jar" sourcepath="lib/lucene-spellchecker-2.4.0src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/mail-1.4.jar" sourcepath="lib/mail-1.4src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/msbase-2000.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/mssqlserver-2000.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/msutil-2000.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/mysql-connector-java-5.0.5.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/odfdom-0.8.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/opencsv-1.8.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.apache.commons.codec-1.3.0.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.eclipse.equinox.common-3.6.0.v20100503.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.eclipse.osgi-3.6.2.R36x_v20110210.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.aop-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.aop-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.asm-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.asm-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.aspects-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.aspects-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.beans-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.beans-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.context-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.context-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.context.support-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.context.support-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.core-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.core-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.expression-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.expression-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.jdbc-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.jdbc-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.orm-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.orm-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.oxm-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.oxm-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.transaction-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.transaction-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.web-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.web-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.springframework.web.servlet-3.0.4.RELEASE.jar" sourcepath="lib/org.springframework.web.servlet-3.0.4.RELEASEsrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/poi-3.6.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/postgresql-8.2-504.jdbc4.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/sanselan-0.97-incubator.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/saxon9he.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/serializer-2.7.0.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/servlet-2.5.0.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/servlet-api-2.5.jar" sourcepath="lib/servlet-api-2.5src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.5.2.jar" sourcepath="lib/slf4j-api-1.5.2src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/slf4j-log4j12-1.5.2.jar" sourcepath="lib/slf4j-log4j12-1.5.2src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/spring-modules-cache-0.7.jar" sourcepath="lib/spring-modules-cache-0.7src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/spring-modules-lucene-0.8a.jar" sourcepath="lib/spring-modules-lucene-0.8asrc.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/spring-security-config-3.0.5.RELEASE.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/spring-security-core-3.0.5.RELEASE.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/wsdl4j-1.6.1.jar" sourcepath="lib/wsdl4j-1.6.1src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/xalan-2.7.0.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xercesImpl-2.7.1.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xercesImpl.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xml-apis-1.3.04.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xml-apis-ext-1.3.04.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xml-apis.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xml-resolver-1.2.jar" sourcepath="lib/xml-resolver-1.2src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/xmlgraphics-commons-1.3.1.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xom-1.0.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xsltc.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xstream-1.3.1.jar" sourcepath="lib/xstream-1.3.1src.zip"/>
+	<classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-3.0.9-SNAPSHOT.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-3.0.9-SNAPSHOT.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/cdmlib-io-3.0.9-SNAPSHOT.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/cdmlib-model-3.0.9-SNAPSHOT.jar" sourcepath="lib/cdmlib-model-3.0.9-SNAPSHOT-sources.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-3.0.9-SNAPSHOT.jar" sourcepath="lib/cdmlib-persistence-3.0.9-SNAPSHOT-sources.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/cdmlib-print-3.0.9-SNAPSHOT.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-3.0.9-SNAPSHOT.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/cdmlib-services-3.0.9-SNAPSHOT.jar" sourcepath="/cdmlib-services"/>
+	<classpathentry exported="true" kind="lib" path="lib/hibernate-envers-3.4.0-SNAPSHOT.jar" sourcepath="lib/hibernate-envers-3.4.0-SNAPSHOTsrc.zip"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListItem.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListItem.java
index 13a137f39..1d414416e 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListItem.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListItem.java
@@ -31,6 +31,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
  * @author n.hoffmann
@@ -66,7 +67,7 @@ public class PolytomousKeyListItem extends AbstractCdmFormElement implements
 
 		Label label_statement = new Label(getLayoutComposite(), SWT.NULL);
 		label_statement.setText(getItemStatement());
-		label_statement.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		label_statement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 
 		Link link = new Link(getLayoutComposite(), SWT.NONE);
 		link.setText("<a>" + getItemLink() + "</a>");
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermEditor.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermEditor.java
index 97762bf38..31a3165ba 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermEditor.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermEditor.java
@@ -47,7 +47,7 @@ import eu.etaxonomy.taxeditor.editor.definedterm.input.AbstractDefinedTermEditor
 import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
  * @author l.morris
@@ -87,7 +87,7 @@ public class DefinedTermEditor extends EditorPart implements IConversationEnable
 			
 			parent.setLayout(layout);
 			viewer = new TreeViewer(parent);
-			viewer.getControl().setLayoutData(CdmFormFactory.FILL());
+			viewer.getControl().setLayoutData(LayoutConstants.FILL());
 			viewer.setContentProvider(new TermContentProvider());
 			viewer.setLabelProvider(new TermLabelProvider());
 			viewer.setSorter(new ViewerSorter());
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/NamedAreaEditorInput.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/NamedAreaEditorInput.java
index 5ce6ae394..2b9a52933 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/NamedAreaEditorInput.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/NamedAreaEditorInput.java
@@ -12,9 +12,6 @@ package eu.etaxonomy.taxeditor.editor.definedterm.input;
 import java.util.Arrays;
 import java.util.List;
 
-import org.eclipse.ui.IEditorInput;
-
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.location.Continent;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.location.TdwgArea;
@@ -57,7 +54,4 @@ public class NamedAreaEditorInput extends AbstractDefinedTermEditorInput<NamedAr
 	public NamedArea createTermInstance() {
 		 return NamedArea.NewInstance();
 	}
-	
-		
-
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/ExternalReferenceServiceWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/ExternalReferenceServiceWizardPage.java
index ae38d15c9..1348b2a67 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/ExternalReferenceServiceWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/ExternalReferenceServiceWizardPage.java
@@ -34,6 +34,7 @@ import eu.etaxonomy.cdm.ext.ipni.IpniService;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
  * <p>ExternalReferenceServiceWizardPage class.</p>
@@ -79,19 +80,19 @@ public class ExternalReferenceServiceWizardPage extends WizardPage implements Se
 	public void createControl(Composite parent) {
 		control = formFactory.createComposite(parent);
 		
-		control.setLayout(CdmFormFactory.LAYOUT(2, false));
+		control.setLayout(LayoutConstants.LAYOUT(2, false));
 		
 		text_query = new Text(control, SWT.SINGLE | SWT.BORDER);
-		text_query.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		text_query.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 		
 		button_search = new Button(control, SWT.PUSH);
-		button_search.setLayoutData(CdmFormFactory.RIGHT());
+		button_search.setLayoutData(LayoutConstants.RIGHT());
 		button_search.setText("Search");
 		
 		button_search.addSelectionListener(this);
 		
 		viewer = new ListViewer(control);
-		viewer.getControl().setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2,1));
+		viewer.getControl().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
 		
 		viewer.setContentProvider(new IStructuredContentProvider(){
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java
index 913ec484c..addb64ae5 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java
@@ -33,6 +33,7 @@ import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
  * <p>
@@ -123,7 +124,7 @@ public class EnumComboElement<T extends IDefinedTerm> extends
 		// create combo
 		combo = new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY);
 		addControl(combo);
-		combo.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 		setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
 
 		populateTypes();
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java
index 9f59f9668..c19921f36 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java
@@ -31,6 +31,7 @@ import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
  * <p>
@@ -100,7 +101,7 @@ public class TermComboElement<T extends DefinedTermBase>
 		// create combo
 		combo = new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY);
 		addControl(combo);
-		combo.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 		combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
 
 		populateTerms(getPreferredTerms());
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/ClassificationSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/ClassificationSelectionDialog.java
index 1b102a402..46cdcaa5e 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/ClassificationSelectionDialog.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/ClassificationSelectionDialog.java
@@ -44,10 +44,11 @@ public class ClassificationSelectionDialog extends
 	 * @param conversation
 	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
 	 *            object.
+	 * @param curentSelection 
 	 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonomicTree} object.
 	 */
 	public static Classification select(Shell shell,
-			ConversationHolder conversation) {
+			ConversationHolder conversation, Classification curentSelection) {
 		ClassificationSelectionDialog dialog = new ClassificationSelectionDialog(
 				shell, conversation, "Choose a Classification", false, "", null);
 		return getSelectionFromDialog(dialog);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java
new file mode 100644
index 000000000..2cab21215
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java
@@ -0,0 +1,117 @@
+// $Id$
+/**
+* Copyright (C) 2009 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.dialog.selection;
+
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.agent.Institution;
+import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.ICdmBase;
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.description.PolytomousKey;
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
+import eu.etaxonomy.cdm.model.occurrence.FieldObservation;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+
+/**
+ * @author n.hoffmann
+ * @date Jan 25, 2012
+ *
+ */
+public class SelectionDialogFactory {
+
+	public static <T extends ICdmBase> T getSelectionFromDialog(Class<T> clazz, Shell shell, ConversationHolder conversation, T curentSelection){
+		
+		if(clazz.equals(Taxon.class)){
+			return (T) TaxonBaseSelectionDialog.selectTaxon(shell, conversation, (Taxon) curentSelection);
+		}
+		if(clazz.equals(Synonym.class)){
+			return (T) TaxonBaseSelectionDialog.selectSynonym(shell, conversation);
+		}
+		if(clazz.equals(TaxonBase.class)){
+			return (T) TaxonBaseSelectionDialog.selectTaxonBase(shell, conversation);
+		}
+		if(clazz.equals(Classification.class)){
+			return (T) ClassificationSelectionDialog.select(shell, conversation, (Classification) curentSelection);
+		}
+		if(clazz.equals(TaxonNode.class)){
+			return (T) TaxonNodeSelectionDialog.select(shell, conversation, null, null, (TaxonNode) curentSelection, null);
+		}
+		if(clazz.equals(Reference.class)){
+			return (T) ReferenceSelectionDialog.select(shell, conversation, (Reference) curentSelection);
+		}
+		if(clazz.equals(TaxonNameBase.class)){
+			return (T) NameSelectionDialog.select(shell, conversation, (TaxonNameBase) curentSelection);
+		}
+		if(clazz.equals(Team.class)){
+			return (T) TeamSelectionDialog.select(shell, conversation, (Team) curentSelection);
+		}
+		if(clazz.equals(AgentBase.class)){
+			return (T) AgentSelectionDialog.select(shell, conversation, (AgentBase) curentSelection);
+		}
+		if(clazz.equals(Feature.class)){
+			return (T) FeatureSelectionDialog.select(shell, conversation, (Feature) curentSelection);
+		}
+		if(clazz.equals(FeatureTree.class)){
+			return (T) FeatureTreeSelectionDialog.select(shell, conversation, (FeatureTree) curentSelection);
+		}
+		if(clazz.equals(PolytomousKey.class)){
+			return (T) PolytomousKeySelectionDialog.select(shell, conversation, (PolytomousKey) curentSelection);
+		}
+		if(clazz.equals(PolytomousKeyNode.class)){
+			StoreUtil.warningDialog("Not implemented yet", SelectionDialogFactory.class,
+					"This functionality is not implemented yet.");
+			return null;
+		}
+		if(clazz.equals(DerivedUnitBase.class)){
+			return (T) DerivedUnitSelectionDialog.select(shell, conversation, (DerivedUnitBase) curentSelection);
+		}
+		if(clazz.equals(FieldObservation.class)){
+			return (T) FieldObservationSelectionDialog.select(shell, conversation, (FieldObservation) curentSelection);
+		}
+		if(clazz.equals(NamedArea.class)){
+			return (T) NamedAreaSelectionDialog.select(shell, conversation, (NamedArea) curentSelection);
+		}
+		if(clazz.equals(Collection.class)){
+			return (T) CollectionSelectionDialog.select(shell, conversation, (Collection) curentSelection);
+		}
+		if(clazz.equals(User.class)){
+			return (T) UserSelectionDialog.select(shell, conversation, (User) curentSelection);
+		}
+		if (clazz.equals(Person.class)){
+			return (T) PersonSelectionDialog.select(shell, conversation, (Person) curentSelection);
+		}
+		if(clazz.equals(Group.class)){
+			return (T) GroupSelectionDialog.select(shell, conversation, (Group) curentSelection);
+		}
+		if(clazz.equals(Institution.class)){
+			return (T) InstitutionSelectionDialog.select(shell, conversation, (Institution) curentSelection);
+		}
+				
+		return null;
+	}
+	
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionDialog.java
index 6c4044bc3..e2e864bce 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionDialog.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionDialog.java
@@ -58,10 +58,7 @@ public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelecti
 
 	private List<Classification> classifications;
 	
-	private Classification selectedClassification;
-
-	private final Classification defaultClassification;
-	
+	private Classification selectedClassification;	
 
 	/**
 	 * <p>Constructor for FilteredTaxonNodeSelectionDialog.</p>
@@ -84,7 +81,6 @@ public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelecti
 		if(classification != null){
 			selectedClassification = classification;
 		}
-		defaultClassification = classification;
 	}
 
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractCdmEntityWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractCdmEntityWizardPage.java
index 97dfe1a89..e04928fa8 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractCdmEntityWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractCdmEntityWizardPage.java
@@ -91,12 +91,12 @@ public abstract class AbstractCdmEntityWizardPage<T> extends WizardPage
 	@Override
 	public void createControl(Composite parent) {
 		ScrolledForm scrolledForm = formFactory.createScrolledForm(parent);
-		scrolledForm.getBody().setLayout(CdmFormFactory.LAYOUT());
+		scrolledForm.getBody().setLayout(LayoutConstants.LAYOUT());
 
 		Composite control = formFactory.createComposite(scrolledForm.getBody());
-		control.setLayoutData(CdmFormFactory.FILL());
+		control.setLayoutData(LayoutConstants.FILL());
 
-		control.setLayout(CdmFormFactory.LAYOUT(2, false));
+		control.setLayout(LayoutConstants.LAYOUT(2, false));
 		WizardPageRootElement rootElement = new WizardPageRootElement(
 				formFactory, control, getConversationHolder());
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractFormSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractFormSection.java
index 783fa2407..b245498e9 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractFormSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractFormSection.java
@@ -89,12 +89,12 @@ public abstract class AbstractFormSection<ENTITY> extends Section implements
 
 		this.formFactory = formFactory;
 
-		this.setLayoutData(CdmFormFactory.FILL());
+		this.setLayoutData(LayoutConstants.FILL());
 
 		Composite client = formFactory.createComposite(this, SWT.WRAP);
 		client.setBackgroundMode(SWT.INHERIT_DEFAULT);
 
-		TableWrapLayout layout = CdmFormFactory.LAYOUT();
+		TableWrapLayout layout = LayoutConstants.LAYOUT();
 		layout.bottomMargin = 10;
 		layout.rightMargin = 5;
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/BrowserElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/BrowserElement.java
index 0d5ec5ab3..3664ed528 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/BrowserElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/BrowserElement.java
@@ -40,7 +40,7 @@ public class BrowserElement extends AbstractCdmFormElement implements ControlLis
 		browser = new Browser(getLayoutComposite(), SWT.NONE);
 		addControl(browser);
 		
-		getLayoutComposite().setLayoutData(CdmFormFactory.FILL());
+		getLayoutComposite().setLayoutData(LayoutConstants.FILL());
 		
 
 		layoutBrowser();
@@ -55,7 +55,7 @@ public class BrowserElement extends AbstractCdmFormElement implements ControlLis
 	 * 
 	 */
 	private void layoutBrowser() {
-		TableWrapData layoutData = CdmFormFactory.FILL();
+		TableWrapData layoutData = LayoutConstants.FILL();
 		layoutData.heightHint = 1000;
 		
 		browser.setLayoutData(layoutData);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
index fb9519ca5..ab220662e 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
@@ -35,18 +35,14 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.forms.IFormColors;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.forms.widgets.Section;
-import org.eclipse.ui.forms.widgets.TableWrapData;
-import org.eclipse.ui.forms.widgets.TableWrapLayout;
 import org.eclipse.ui.internal.forms.widgets.FormFonts;
 import org.joda.time.Partial;
 import org.springframework.security.core.GrantedAuthority;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
-import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Credit;
@@ -54,7 +50,6 @@ import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.common.Extension;
 import eu.etaxonomy.cdm.model.common.Group;
-import eu.etaxonomy.cdm.model.common.IAnnotatableEntity;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IDefinedTerm;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
@@ -69,12 +64,9 @@ import eu.etaxonomy.cdm.model.description.CommonTaxonName;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
 import eu.etaxonomy.cdm.model.description.KeyStatement;
 import eu.etaxonomy.cdm.model.description.Modifier;
-import eu.etaxonomy.cdm.model.description.PolytomousKey;
-import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.description.QuantitativeData;
 import eu.etaxonomy.cdm.model.description.Scope;
 import eu.etaxonomy.cdm.model.description.StateData;
@@ -93,18 +85,11 @@ import eu.etaxonomy.cdm.model.name.NameRelationship;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
-import eu.etaxonomy.cdm.model.occurrence.FieldObservation;
 import eu.etaxonomy.cdm.model.occurrence.Specimen;
 import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.model.taxon.Classification;
-import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
@@ -258,29 +243,9 @@ import eu.etaxonomy.taxeditor.ui.section.vocabulary.DefinedTermDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.NamedAreaDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermVocabularyDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermVocabularyDetailSection;
-import eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.ClassificationSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.CollectionSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.DerivedUnitBaseSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.FeatureSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.FeatureTreeSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.FieldObservationSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.GroupSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.InstitutionSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.NameSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.NomenclaturalAuthorTeamSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.PersonSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.PolytomousKeyNodeSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.PolytomousKeySelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.SynonymSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.TaxonBaseSelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.TaxonNodeSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.TeamSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.UserSelectionElement;
 
 /**
  * <p>
@@ -304,124 +269,6 @@ public class CdmFormFactory extends FormToolkit {
 	private final int orientation = Window.getDefaultOrientation();
 	private ISelectionProvider selectionProvider;
 
-	/**
-	 * <p>
-	 * LAYOUT
-	 * </p>
-	 * 
-	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapLayout} object.
-	 */
-	public static final TableWrapLayout LAYOUT() {
-		return LAYOUT(1, false);
-	}
-
-	/**
-	 * <p>
-	 * LAYOUT
-	 * </p>
-	 * 
-	 * @param columns
-	 *            a int.
-	 * @param equalWidth
-	 *            a boolean.
-	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapLayout} object.
-	 */
-	public static final TableWrapLayout LAYOUT(int columns, boolean equalWidth) {
-		TableWrapLayout layout = new TableWrapLayout();
-		layout.topMargin = 0;
-		layout.rightMargin = 0;
-		layout.bottomMargin = 0;
-		layout.leftMargin = 0;
-		layout.numColumns = columns;
-		layout.makeColumnsEqualWidth = equalWidth;
-		layout.verticalSpacing = 0;
-		layout.horizontalSpacing = 0;
-		return layout;
-	}
-
-	/**
-	 * <p>
-	 * FILL
-	 * </p>
-	 * 
-	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
-	 */
-	public static final TableWrapData FILL() {
-		return FILL(1, 1);
-	}
-
-	/**
-	 * <p>
-	 * FILL
-	 * </p>
-	 * 
-	 * @param horizontalSpan
-	 *            a int.
-	 * @param verticalSpan
-	 *            a int.
-	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
-	 */
-	public static final TableWrapData FILL(int horizontalSpan, int verticalSpan) {
-		TableWrapData layoutData = new TableWrapData(TableWrapData.FILL_GRAB,
-				TableWrapData.FILL_GRAB);
-		layoutData.colspan = horizontalSpan;
-		layoutData.rowspan = verticalSpan;
-		return layoutData;
-	}
-
-	/**
-	 * <p>
-	 * LEFT
-	 * </p>
-	 * 
-	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
-	 */
-	public static final TableWrapData LEFT() {
-		return new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP);
-	}
-
-	/**
-	 * <p>
-	 * RIGHT
-	 * </p>
-	 * 
-	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
-	 */
-	public static final TableWrapData RIGHT() {
-		return new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP);
-	}
-
-	/**
-	 * <p>
-	 * FILL_HORIZONTALLY
-	 * </p>
-	 * 
-	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
-	 */
-	public static final TableWrapData FILL_HORIZONTALLY() {
-		return FILL_HORIZONTALLY(1, 1);
-	}
-
-	/**
-	 * <p>
-	 * FILL_HORIZONTALLY
-	 * </p>
-	 * 
-	 * @param horizontalSpan
-	 *            a int.
-	 * @param verticalSpan
-	 *            a int.
-	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
-	 */
-	public static final TableWrapData FILL_HORIZONTALLY(int horizontalSpan,
-			int verticalSpan) {
-		TableWrapData layoutData = new TableWrapData(TableWrapData.FILL_GRAB,
-				TableWrapData.TOP);
-		layoutData.colspan = horizontalSpan;
-		layoutData.rowspan = verticalSpan;
-		return layoutData;
-	}
-
 	/** Constant <code>EMPTY_SELECTION</code> */
 	public static ISelection EMPTY_SELECTION = new ISelection() {
 		@Override
@@ -430,6 +277,12 @@ public class CdmFormFactory extends FormToolkit {
 		}
 	};
 	
+	/**
+	 * 
+	 * @author n.hoffmann
+	 * @date Jan 25, 2010
+	 *
+	 */
 	private class SelectionMouseHandler extends MouseAdapter {
 		@Override
 		public void mouseDown(MouseEvent e) {
@@ -437,6 +290,12 @@ public class CdmFormFactory extends FormToolkit {
 		}
 	}
 
+	/**
+	 * 
+	 * @author n.hoffmann
+	 * @date Jan 25, 2010
+	 *
+	 */
 	private class SelectionFocusHandler extends FocusAdapter {
 		@Override
 		public void focusGained(FocusEvent e) {
@@ -1060,16 +919,6 @@ public class CdmFormFactory extends FormToolkit {
 		return element;
 	}
 
-	/**
-	 * 
-	 * @author n.hoffmann
-	 * @created Mar 5, 2010
-	 * @version 1.0
-	 */
-	public static enum SelectionType {
-		AGENT, INSTITUTION, NAME, REFERENCE, TAXON_BASE, TAXON, SYNONYM, TEAM, AUTHOR_TEAM, PERSON, DERIVED_UNIT, FIELD_OBSERVATION, FEATURE_TREE, CLASSIFICATION, TAXON_NODE, COLLECTION, FEATURE, POLYTOMOUS_KEY, POLYTOMOUS_KEY_NODE, USER, GROUP
-	}
-
 	/**
 	 * <p>
 	 * createCheckbox
@@ -1371,7 +1220,7 @@ public class CdmFormFactory extends FormToolkit {
 			int style) {
 		Label separator = this.createSeparator(
 				parentElement.getLayoutComposite(), SWT.HORIZONTAL | style);
-		separator.setLayoutData(FILL_HORIZONTALLY());
+		separator.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 		return separator;
 	}
 
@@ -2262,179 +2111,65 @@ public class CdmFormFactory extends FormToolkit {
 
 	/**
 	 * <p>
-	 * createSelectionElement
+	 * Creates a selection element for the given type T.
+	 * </p>
+	 * <p>
+	 * 	<strong>Selection elements not handled by this method:</strong>
+	 * 	<ul>
+	 * 		<li>{@link TaxonNodeSelectionElement} see {@link #createTaxonNodeSelectionElement(ConversationHolder, ICdmFormElement, String, TaxonNode, int, int)}</li>
+	 * 		<li>{@link NomenclaturalAuthorTeamSelectionElement} see {@link #createNomenclaturalAuthorTeamSelectionElement(ConversationHolder, ICdmFormElement, String, Team, int, int)}</li>
+	 * 	</ul>	
 	 * </p>
 	 * 
-	 * @param selectionType
-	 *            a
-	 *            {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType}
-	 *            object.
+	 * @param clazz
+	 * 			  a {@link Class} object of the type that you want the selection element to handle
 	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+	 *            a {@link ICdmFormElement}
 	 *            object.
 	 * @param labelString
-	 *            a {@link java.lang.String} object.
+	 *            a {@link String} object.
 	 * @param selectionType
 	 * @param selection
-	 *            a {@link eu.etaxonomy.cdm.model.common.IAnnotatableEntity}
-	 *            object.
+	 *            a {@link ICdmBase} object.
 	 * @param style
 	 *            a int.
 	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
+	 *            a {@link ConversationHolder} object.
 	 * @return a
-	 *         {@link eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement}
+	 *         {@link EntitySelectionElement}
 	 *         object.
 	 */
-	public AbstractSelectionElement createSelectionElement(
-			SelectionType selectionType, ConversationHolder conversation,
+	public <T extends ICdmBase> EntitySelectionElement<T> createSelectionElement(
+			Class<T> clazz, ConversationHolder conversation,
 			ICdmFormElement parentElement, String labelString,
-			ICdmBase selection, int mode, int style) {
-		AbstractSelectionElement element = null;
-
-		IAnnotatableEntity entity = (IAnnotatableEntity) HibernateProxyHelper
-				.deproxy(selection);
-
-		switch (selectionType) {
-		case AGENT:
-			element = new AgentSelectionElement(this, conversation,
-					parentElement, labelString, (TeamOrPersonBase) entity,
-					mode, style);
-			break;
-		case PERSON:
-			element = new PersonSelectionElement(this, conversation,
-					parentElement, labelString, (Person) entity, mode, style);
-			break;
-		case TEAM:
-			element = new TeamSelectionElement(this, conversation,
-					parentElement, labelString, (Team) entity, mode, style);
-			break;
-		case AUTHOR_TEAM:
-			element = new NomenclaturalAuthorTeamSelectionElement(this,
-					conversation, parentElement, labelString, (Team) entity,
-					mode, style);
-			break;
-		case INSTITUTION:
-			element = new InstitutionSelectionElement(this, conversation,
-					parentElement, labelString, (Institution) entity, mode,
-					style);
-			break;
-		case NAME:
-			element = new NameSelectionElement(this, conversation,
-					parentElement, labelString, (TaxonNameBase) entity, mode,
-					style);
-			break;
-		case REFERENCE:
-			element = new ReferenceSelectionElement(this, conversation,
-					parentElement, labelString, (Reference) entity, mode, style);
-			break;
-		case TAXON_BASE:
-			element = new TaxonBaseSelectionElement(this, conversation,
-					parentElement, labelString, (TaxonBase) entity, mode, style);
-			break;
-		case TAXON:
-			element = new TaxonSelectionElement(this, conversation,
-					parentElement, labelString, (Taxon) entity, mode, style);
-			break;
-		case SYNONYM:
-			element = new SynonymSelectionElement(this, conversation,
-					parentElement, labelString, (Synonym) entity, mode, style);
-			break;
-		case DERIVED_UNIT:
-			element = new DerivedUnitBaseSelectionElement(this, conversation,
-					parentElement, labelString, (DerivedUnitBase) entity, mode,
-					style);
-			break;
-		case FIELD_OBSERVATION:
-			element = new FieldObservationSelectionElement(this, conversation,
-					parentElement, labelString, (FieldObservation) entity,
-					mode, style);
-			break;
-		case FEATURE_TREE:
-			element = new FeatureTreeSelectionElement(this, conversation,
-					parentElement, labelString, (FeatureTree) entity, mode,
-					style);
-			break;
-		case CLASSIFICATION:
-			element = new ClassificationSelectionElement(this, conversation,
-					parentElement, labelString, (Classification) entity, mode,
-					style);
-			break;
-		case TAXON_NODE:
-			element = new TaxonNodeSelectionElement(this, conversation,
-					parentElement, labelString, (TaxonNode) entity, mode, style);
-			break;
-		case COLLECTION:
-			element = new CollectionSelectionElement(this, conversation,
-					parentElement, labelString, (Collection) entity, mode,
-					style);
-			break;
-		case FEATURE:
-			element = new FeatureSelectionElement(this, conversation,
-					parentElement, labelString, (Feature) entity, mode, style);
-			break;
-		case POLYTOMOUS_KEY:
-			element = new PolytomousKeySelectionElement(this, conversation,
-					parentElement, labelString, (PolytomousKey) entity, mode,
-					style);
-			break;
-		case POLYTOMOUS_KEY_NODE:
-			element = new PolytomousKeyNodeSelectionElement(this, conversation,
-					parentElement, labelString, (PolytomousKeyNode) entity,
-					mode, style);
-			break;
-		case USER:
-			element = new UserSelectionElement(this, conversation,
-					parentElement, labelString, (User) entity, mode, style);
-			break;
-		case GROUP:
-			element = new GroupSelectionElement(this, conversation,
-					parentElement, labelString, (Group) entity, mode, style);
-			break;
-		default:
-			new RuntimeException(
-					"There is no selection composite for the desired selection type.");
-			break;
-		}
-
+			T selection, int mode, int style) {
+		EntitySelectionElement<T> element = new EntitySelectionElement<T>(this, conversation, parentElement, clazz, labelString, selection, mode, style);
 		adapt(element);
 		parentElement.addElement(element);
 		return element;
 	}
-
-	/**
-	 * <p>
-	 * createNamedAreaSelectionElement
-	 * </p>
-	 * 
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param selection
-	 *            a {@link eu.etaxonomy.cdm.model.location.NamedArea} object.
-	 * @param style
-	 *            a int.
-	 * @return a
-	 *         {@link eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement}
-	 *         object.
-	 */
-	public NamedAreaSelectionElement createNamedAreaSelectionElement(
-			ICdmFormElement parentElement, ConversationHolder conversation,
-			String labelString, NamedArea selection, int style) {
-		NamedAreaSelectionElement element = new NamedAreaSelectionElement(this,
-				conversation, parentElement, labelString, selection,
-				AbstractSelectionElement.NOTHING, style);
+	
+	public TaxonNodeSelectionElement createTaxonNodeSelectionElement(
+			ConversationHolder conversation,
+			ICdmFormElement parentElement, String labelString,
+			TaxonNode selection, int mode, int style) {
+		TaxonNodeSelectionElement element = new TaxonNodeSelectionElement(this, conversation, parentElement, labelString, selection, mode, style);
 		adapt(element);
 		parentElement.addElement(element);
 		return element;
 	}
-
+	
+	public NomenclaturalAuthorTeamSelectionElement createNomenclaturalAuthorTeamSelectionElement(
+			ConversationHolder conversation,
+			ICdmFormElement parentElement, String labelString,
+			Team selection, int mode, int style) {
+		NomenclaturalAuthorTeamSelectionElement element = new NomenclaturalAuthorTeamSelectionElement(this, conversation, parentElement, labelString, selection, mode, style);
+		adapt(element);
+		parentElement.addElement(element);
+		return element;
+	}
+	
+	
 	/** {@inheritDoc} */
 	public LabelElement createLabel(ICdmFormElement parentElement, String text) {
 		LabelElement labelElement = new LabelElement(this, parentElement, text);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CheckboxElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CheckboxElement.java
index 789e12884..7863f78fd 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CheckboxElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CheckboxElement.java
@@ -51,7 +51,7 @@ public class CheckboxElement extends AbstractCdmFormElement implements Selection
 		}
 		
 		checkbox = formFactory.createButton(getLayoutComposite(), null, SWT.CHECK | style);
-		checkbox.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		checkbox.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 		
 		checkbox.setSelection(initialState);
 		
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/DateDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/DateDetailSection.java
index 1c0cf1c6d..c54e04d03 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/DateDetailSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/DateDetailSection.java
@@ -60,12 +60,12 @@ public class DateDetailSection extends AbstractFormSection<TimePeriod> {
 		text_parseText = formFactory.createTextWithLabelElement(this, "Parse",
 				null, style);
 		text_parseText.getMainControl().setLayoutData(
-				CdmFormFactory.FILL_HORIZONTALLY(6, 1));
+				LayoutConstants.FILL_HORIZONTALLY(6, 1));
 
 		text_freeText = formFactory.createTextWithLabelElement(this,
 				"Freetext", null, style);
 		text_freeText.getMainControl().setLayoutData(
-				CdmFormFactory.FILL_HORIZONTALLY(6, 1));
+				LayoutConstants.FILL_HORIZONTALLY(6, 1));
 
 		formFactory.addPropertyChangeListener(this);
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ImageElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ImageElement.java
index 0f7302fa1..92944ecea 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ImageElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ImageElement.java
@@ -60,7 +60,7 @@ public class ImageElement extends AbstractCdmFormElement implements PaintListene
 		super(formFactory, parentElement);
 				
 		container = new Composite(getLayoutComposite(), style);
-		container.setLayoutData(CdmFormFactory.FILL(2, 1));
+		container.setLayoutData(LayoutConstants.FILL(2, 1));
 		
 		container.addPaintListener(this);
 	}
@@ -193,7 +193,7 @@ public class ImageElement extends AbstractCdmFormElement implements PaintListene
 	/** {@inheritDoc} */
 	@Override
 	public void paintControl(PaintEvent e) {
-		TableWrapData layoutData = CdmFormFactory.FILL(2, 1);
+		TableWrapData layoutData = LayoutConstants.FILL(2, 1);
 		Control control = (Control) e.widget;
 		if(image != null){
 			Rectangle imageMaxBounds = calculateImageBounds(image, control);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyValueViewerElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyValueViewerElement.java
index deb875321..ec76a288c 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyValueViewerElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyValueViewerElement.java
@@ -43,7 +43,7 @@ public class KeyValueViewerElement extends AbstractCdmFormElement {
 		super(formFactory, formElement);
 		
 		label = formFactory.createLabel(getLayoutComposite(), "Meta Data");
-		label.setLayoutData(CdmFormFactory.FILL(2, 1));
+		label.setLayoutData(LayoutConstants.FILL(2, 1));
 		addControl(label);
 		
 		tableViewer = new TableViewer(formElement.getLayoutComposite(), SWT.MULTI | SWT.H_SCROLL
@@ -52,7 +52,7 @@ public class KeyValueViewerElement extends AbstractCdmFormElement {
 		
 		createColumns(tableViewer, keyHeading, valueHeading);
 		
-		TableWrapData layoutData = CdmFormFactory.FILL(2, 1);
+		TableWrapData layoutData = LayoutConstants.FILL(2, 1);
 		layoutData.heightHint = 100;
 		
 		tableViewer.getControl().setLayoutData(layoutData);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LabelElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LabelElement.java
index 3ac59a4f3..1405ece32 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LabelElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LabelElement.java
@@ -37,7 +37,7 @@ public class LabelElement extends AbstractCdmFormElement {
 		super(formFactory, formElement);
 		
 		label = formFactory.createLabel(getLayoutComposite(), text, SWT.WRAP);
-		label.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		label.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		addControl(label);
 	}
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LayoutConstants.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LayoutConstants.java
new file mode 100644
index 000000000..48945dc5e
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LayoutConstants.java
@@ -0,0 +1,140 @@
+// $Id$
+/**
+* Copyright (C) 2009 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.element;
+
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+/**
+ * @author n.hoffmann
+ * @date Jan 25, 2012
+ *
+ */
+public class LayoutConstants {
+
+	/**
+	 * <p>
+	 * LAYOUT
+	 * </p>
+	 * 
+	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapLayout} object.
+	 */
+	public static final TableWrapLayout LAYOUT() {
+		return LayoutConstants.LAYOUT(1, false);
+	}
+
+	/**
+	 * <p>
+	 * LAYOUT
+	 * </p>
+	 * 
+	 * @param columns
+	 *            a int.
+	 * @param equalWidth
+	 *            a boolean.
+	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapLayout} object.
+	 */
+	public static final TableWrapLayout LAYOUT(int columns, boolean equalWidth) {
+		TableWrapLayout layout = new TableWrapLayout();
+		layout.topMargin = 0;
+		layout.rightMargin = 0;
+		layout.bottomMargin = 0;
+		layout.leftMargin = 0;
+		layout.numColumns = columns;
+		layout.makeColumnsEqualWidth = equalWidth;
+		layout.verticalSpacing = 0;
+		layout.horizontalSpacing = 0;
+		return layout;
+	}
+
+	/**
+	 * <p>
+	 * FILL
+	 * </p>
+	 * 
+	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
+	 */
+	public static final TableWrapData FILL() {
+		return LayoutConstants.FILL(1, 1);
+	}
+
+	/**
+	 * <p>
+	 * FILL
+	 * </p>
+	 * 
+	 * @param horizontalSpan
+	 *            a int.
+	 * @param verticalSpan
+	 *            a int.
+	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
+	 */
+	public static final TableWrapData FILL(int horizontalSpan, int verticalSpan) {
+		TableWrapData layoutData = new TableWrapData(TableWrapData.FILL_GRAB,
+				TableWrapData.FILL_GRAB);
+		layoutData.colspan = horizontalSpan;
+		layoutData.rowspan = verticalSpan;
+		return layoutData;
+	}
+
+	/**
+	 * <p>
+	 * LEFT
+	 * </p>
+	 * 
+	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
+	 */
+	public static final TableWrapData LEFT() {
+		return new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP);
+	}
+
+	/**
+	 * <p>
+	 * RIGHT
+	 * </p>
+	 * 
+	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
+	 */
+	public static final TableWrapData RIGHT() {
+		return new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP);
+	}
+
+	/**
+	 * <p>
+	 * FILL_HORIZONTALLY
+	 * </p>
+	 * 
+	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
+	 */
+	public static final TableWrapData FILL_HORIZONTALLY() {
+		return LayoutConstants.FILL_HORIZONTALLY(1, 1);
+	}
+
+	/**
+	 * <p>
+	 * FILL_HORIZONTALLY
+	 * </p>
+	 * 
+	 * @param horizontalSpan
+	 *            a int.
+	 * @param verticalSpan
+	 *            a int.
+	 * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
+	 */
+	public static final TableWrapData FILL_HORIZONTALLY(int horizontalSpan,
+			int verticalSpan) {
+		TableWrapData layoutData = new TableWrapData(TableWrapData.FILL_GRAB,
+				TableWrapData.TOP);
+		layoutData.colspan = horizontalSpan;
+		layoutData.rowspan = verticalSpan;
+		return layoutData;
+	}
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java
index 4c9098fc2..ca5073d5d 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java
@@ -31,6 +31,7 @@ import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
 import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.translation.TranslationWizard;
 
@@ -47,12 +48,9 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
 		SelectionListener {
 
 	private class OpenTranslationWizard extends SelectionAdapter {
-		private final Map<Language, LanguageString> multilanguageText;
-
-		public OpenTranslationWizard(
-				Map<Language, LanguageString> multilanguageText) {
+		
+		public OpenTranslationWizard() {
 			super();
-			this.multilanguageText = multilanguageText;
 		}
 
 		/*
@@ -64,6 +62,12 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
 		 */
 		@Override
 		public void widgetSelected(SelectionEvent e) {
+			Map<Language, LanguageString> multilanguageText = getMultilanguageText();
+			
+			if (multilanguageText == null){
+				StoreUtil.warningDialog("No text to transalte", getClass(), "The text is empty and therefore can not be translated");
+			}
+			
 			TranslationWizard wizard = new TranslationWizard(multilanguageText);
 			WizardDialog dialog = new WizardDialog(getLayoutComposite()
 					.getShell(), wizard);
@@ -134,9 +138,8 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
 		button = formFactory.createButton(getLayoutComposite(),
 				"Open In Translation Editor", SWT.PUSH);
 		addControl(button);
-		button.setLayoutData(CdmFormFactory.RIGHT());
-		button.addSelectionListener(new OpenTranslationWizard(
-				multilanguageText));
+		button.setLayoutData(LayoutConstants.RIGHT());
+		button.addSelectionListener(new OpenTranslationWizard());
 	}
 
 	private List<Language> getLanguages() {
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/PartialElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/PartialElement.java
index f55580d26..efcc8541c 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/PartialElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/PartialElement.java
@@ -44,7 +44,7 @@ public class PartialElement extends AbstractCdmFormElement implements ISelectabl
 			ICdmFormElement formElement, String labelString, int style) {
 		super(formFactory, formElement);
 		
-		formElement.getLayoutComposite().setLayout(CdmFormFactory.LAYOUT(7, false));
+		formElement.getLayoutComposite().setLayout(LayoutConstants.LAYOUT(7, false));
 		
 		label = formFactory.createLabel(getLayoutComposite(), labelString);
 		addControl(label);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TextActionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TextActionElement.java
index 6107975e4..aadf8713e 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TextActionElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TextActionElement.java
@@ -45,13 +45,13 @@ public class TextActionElement extends AbstractCdmFormElement implements ModifyL
 		addControl(label);
 		
 		box = formFactory.createComposite(getLayoutComposite());
-		box.setLayout(CdmFormFactory.LAYOUT(2, false));
-		box.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		box.setLayout(LayoutConstants.LAYOUT(2, false));
+		box.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 		addControl(box);
 		
 		text = toolkit.createText(box, "", style);
 		addControl(text);
-		text.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		text.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 		
 		setText(CdmUtils.Nz(initialText));
 		
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TextWithLabelElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TextWithLabelElement.java
index 511b95971..33263074f 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TextWithLabelElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TextWithLabelElement.java
@@ -66,7 +66,7 @@ public class TextWithLabelElement extends AbstractCdmFormElement implements
 			label = formFactory.createLabel(getLayoutComposite(),
 					CdmUtils.Nz(labelString), SWT.NULL);
 			addControl(label);
-			label.setLayoutData(CdmFormFactory.LEFT());
+			label.setLayoutData(LayoutConstants.LEFT());
 		}
 
 		int scrollStyle = textHeight == null ? SWT.NULL
@@ -104,7 +104,7 @@ public class TextWithLabelElement extends AbstractCdmFormElement implements
 			});
 		}
 
-		TableWrapData layoutData = CdmFormFactory.FILL();
+		TableWrapData layoutData = LayoutConstants.FILL();
 		if (textHeight != null && textHeight > 0) {
 			(layoutData).heightHint = textHeight;
 		}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ToggleableTextElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ToggleableTextElement.java
index 9eec7d95b..e49ca357c 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ToggleableTextElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ToggleableTextElement.java
@@ -64,14 +64,14 @@ public class ToggleableTextElement extends AbstractCdmFormElement implements Sel
 		addControl(label);
 		
 		container = formFactory.createComposite(getLayoutComposite(), SWT.WRAP);		
-		container.setLayout(CdmFormFactory.LAYOUT(2, false));
-		container.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		container.setLayout(LayoutConstants.LAYOUT(2, false));
+		container.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 		addControl(container);
 		
 		text_cache = formFactory.createText(container, initialText, SWT.WRAP | SWT.MULTI);
 		addControl(text_cache);
 		text_cache.addModifyListener(this);
-		text_cache.setLayoutData(CdmFormFactory.FILL());
+		text_cache.setLayoutData(LayoutConstants.FILL());
 
 		// Don't accept carriage returns as input
 		text_cache.addKeyListener( new KeyAdapter(){
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/OpenUrlReferencePage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/OpenUrlReferencePage.java
index d160ba255..9553a3719 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/OpenUrlReferencePage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/OpenUrlReferencePage.java
@@ -27,8 +27,8 @@ import org.eclipse.ui.forms.widgets.ScrolledForm;
 
 import eu.etaxonomy.cdm.ext.openurl.OpenUrlReference;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ImageElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.RootElement;
 
 /**
@@ -49,8 +49,6 @@ public class OpenUrlReferencePage extends WizardPage implements SelectionListene
 	private Button button_next;
 	private Button button_previous;
 
-	private OpenUrlReference reference;
-
 	private Composite container;
 
 	private Label label_pageNumber; 
@@ -73,7 +71,7 @@ public class OpenUrlReferencePage extends WizardPage implements SelectionListene
 		container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 		
 		scrolledForm = getWizard().getFormFactory().createScrolledForm(container);
-		scrolledForm.getBody().setLayout(CdmFormFactory.LAYOUT(3, false));
+		scrolledForm.getBody().setLayout(LayoutConstants.LAYOUT(3, false));
 		scrolledForm.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
 		
 		Composite buttonContainer = getWizard().getFormFactory().createComposite(container);
@@ -91,7 +89,7 @@ public class OpenUrlReferencePage extends WizardPage implements SelectionListene
 		button_next.addSelectionListener(this);
 		button_next.setLayoutData(new GridData(SWT.RIGHT, SWT.BOTTOM, true, false));
 		
-		scrolledForm.getBody().setLayoutData(CdmFormFactory.FILL());
+		scrolledForm.getBody().setLayoutData(LayoutConstants.FILL());
 		
 		rootElement = new RootElement(getWizard().getFormFactory(), scrolledForm.getBody());
 		
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/OpenUrlSelectorElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/OpenUrlSelectorElement.java
index 41146e62b..c508919a6 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/OpenUrlSelectorElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/OpenUrlSelectorElement.java
@@ -17,13 +17,13 @@ import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.editors.text.EditorsUI;
 
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
  * @author n.hoffmann
@@ -57,7 +57,7 @@ public class OpenUrlSelectorElement extends AbstractCdmFormElement implements Se
 		addControl(label);
 		
 		button = formFactory.createButton(getLayoutComposite(), labelString, SWT.PUSH);
-		button.setLayoutData(CdmFormFactory.RIGHT());
+		button.setLayoutData(LayoutConstants.RIGHT());
 		addControl(button);
 		button.addSelectionListener(this);
 	}
@@ -84,7 +84,7 @@ public class OpenUrlSelectorElement extends AbstractCdmFormElement implements Se
 	/**
 	 * @return
 	 */
-	private String getDetail() {
+	public String getDetail() {
 		return referenceDetail;
 	}
 	
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/password/EditPasswordElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/password/EditPasswordElement.java
index 4472b6435..2f91f4a5b 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/password/EditPasswordElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/password/EditPasswordElement.java
@@ -24,6 +24,7 @@ import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
  * @author n.hoffmann
@@ -54,7 +55,7 @@ public class EditPasswordElement extends AbstractCdmFormElement implements Selec
 		String buttonLabelString = (labelString != null) ? labelString : "Change Password";
 		
 		button = formFactory.createButton(getLayoutComposite(), buttonLabelString, SWT.PUSH);
-		button.setLayoutData(CdmFormFactory.RIGHT());
+		button.setLayoutData(LayoutConstants.RIGHT());
 		addControl(button);
 		
 		button.addSelectionListener(this);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/password/PasswordWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/password/PasswordWizardPage.java
index a75cc6708..1fa087abd 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/password/PasswordWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/password/PasswordWizardPage.java
@@ -24,6 +24,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
@@ -44,6 +45,8 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
 	private TextWithLabelElement text_passwordRepeat;
 	private PasswordValidator passwordValidator;
 
+	private UniqueUserNameValidator uniqueUsernameValidator;
+
 	/**
 	 * @param formFactory
 	 * @param conversation
@@ -54,6 +57,7 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
 		super(formFactory, conversation, entity);
 		
 		passwordValidator = new PasswordValidator();
+		uniqueUsernameValidator = new UniqueUserNameValidator();
 	}
 
 	/* (non-Javadoc)
@@ -62,11 +66,11 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
 	@Override
 	public void createControl(Composite parent) {
 		Composite control = formFactory.createComposite(parent);
-		control.setLayoutData(CdmFormFactory.FILL());
+		control.setLayoutData(LayoutConstants.FILL());
 		
 		setPageComplete(false);
 		
-		control.setLayout(CdmFormFactory.LAYOUT(2, false));
+		control.setLayout(LayoutConstants.LAYOUT(2, false));
 		WizardPageRootElement rootElement = new WizardPageRootElement(formFactory, control, getConversationHolder());
 		
 		if(!CdmStore.getLoginManager().isAdmin()){
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java
index d39b5f60d..ff6292ab6 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java
@@ -45,8 +45,6 @@ public abstract class AbstractCdmDetailElement<T> extends
 
 	private T entity;
 
-	private boolean enabled;
-
 	private boolean irrelevant;
 
 	/**
@@ -171,7 +169,6 @@ public abstract class AbstractCdmDetailElement<T> extends
 
 	/** {@inheritDoc} */
 	public void setEnabled(boolean enabled) {
-		this.enabled = enabled;
 		setEnabled(enabled, null);
 	}
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionElement.java
index 9788296a8..ca1353b2c 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionElement.java
@@ -17,7 +17,6 @@ import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Layout;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
@@ -31,6 +30,7 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
 import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
  * <p>
@@ -90,12 +90,12 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
 		box.setBackgroundMode(SWT.INHERIT_DEFAULT);
 		addControl(box);
 
-		TableWrapLayout boxLayout = CdmFormFactory.LAYOUT(2, false);
+		TableWrapLayout boxLayout = LayoutConstants.LAYOUT(2, false);
 		boxLayout.topMargin = 4;
 		boxLayout.bottomMargin = 4;
 		box.setLayout(boxLayout);
 
-		box.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		box.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 
 		// box.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
 
@@ -106,15 +106,15 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
 		setLayoutComposite(container);
 
 		addControl(container);
-		Layout containerLayout = CdmFormFactory.LAYOUT(2, false);
+		Layout containerLayout = LayoutConstants.LAYOUT(2, false);
 
 		container.setLayout(containerLayout);
-		container.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		container.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 
 		if (removeListener != null) {
 			button_remove = formFactory.createButton(box, null, SWT.PUSH);
 			addControl(button_remove);
-			button_remove.setLayoutData(CdmFormFactory.RIGHT());
+			button_remove.setLayoutData(LayoutConstants.RIGHT());
 			button_remove.setImage(ImageResources
 					.getImage(ImageResources.TRASH_ICON));
 			button_remove.setToolTipText("Remove");
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionSection.java
index b069797d1..1a9f43ee5 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionSection.java
@@ -159,40 +159,6 @@ public abstract class AbstractEntityCollectionSection<ENTITY, ELEMENT> extends A
 			firePropertyChangeEvent(this);
 	}
 
-	/**
-	 * Whether the entities specific collection changed
-	 * 
-	 * KLUDGE this seemingly leads to errors
-	 * 
-	 * @param newEntity
-	 * @return
-	 */
-	private boolean hasCollectionChanged(ENTITY newEntity){
-
-		return true;
-		
-//		// return true on null
-//		if(getEntity() == null || newEntity == null)	return true;	
-//		
-//		// if the entities differ the collection has changed
-//		if(! getEntity().equals(newEntity)) return true;
-//		
-//		Collection<ELEMENT> oldCollection = getCollection(getEntity());
-//		Collection<ELEMENT> newCollection = getCollection(newEntity);
-//		
-//		// return true on null
-//		if(oldCollection == null || newCollection == null) return true;
-//		
-//		// if the collections are object equal, check if the content is equal, too
-//		if(oldCollection.equals(newCollection)){
-//		
-//			boolean equal = CollectionUtils.isEqualCollection(oldCollection, newCollection);
-//			// return true when collections are not equal
-//			return equal ? false : true;
-//		}
-//		return true;
-	}
-
 	/**
 	 * Create the elements to be shown in this seciton client area 
 	 */
@@ -249,7 +215,7 @@ public abstract class AbstractEntityCollectionSection<ENTITY, ELEMENT> extends A
 	 * @param backgroundColor a {@link org.eclipse.swt.graphics.Color} object.
 	 */
 	protected void createElementComposite(ELEMENT element, SelectionListener removeListener, Color backgroundColor){
-		AbstractEntityCollectionElement formElement = formFactory.createEntityCollectionElement(this, element, removeListener, backgroundColor, SWT.NULL);
+		formFactory.createEntityCollectionElement(this, element, removeListener, backgroundColor, SWT.NULL);
 	}
 	
 	/* (non-Javadoc)
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionDetailElement.java
index e785e3b49..22dd62211 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionDetailElement.java
@@ -14,9 +14,8 @@ import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.InstitutionSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * @author n.hoffmann
@@ -32,7 +31,7 @@ public class InstitutionDetailElement extends
 
 	// private InstitutionTypeSection section_institutionTypes;
 
-	private InstitutionSelectionElement selection_partOfInstitution;
+	private EntitySelectionElement<Institution> selection_partOfInstitution;
 
 	/**
 	 * @param formFactory
@@ -58,11 +57,12 @@ public class InstitutionDetailElement extends
 		text_code = formFactory.createTextWithLabelElement(formElement, "Code",
 				entity.getCode(), style);
 		// section_institutionTypes
-		selection_partOfInstitution = (InstitutionSelectionElement) formFactory
-				.createSelectionElement(SelectionType.INSTITUTION,
+		selection_partOfInstitution = formFactory
+				.createSelectionElement(Institution.class,
 						getConversationHolder(), formElement, "Is Part Of",
 						entity.getIsPartOf(),
-						InstitutionSelectionElement.DEFAULT, style);
+						EntitySelectionElement.EDITABLE | EntitySelectionElement.SELECTABLE | EntitySelectionElement.DELETABLE, 
+						style);
 	}
 
 	/*
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionWizardPage.java
index da43eb7cb..0c0656b63 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionWizardPage.java
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -46,7 +46,7 @@ public class InstitutionWizardPage extends
 	 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement)
 	 */
 	@Override
-	public AbstractCdmDetailElement createElement(ICdmFormElement rootElement) {
+	public AbstractCdmDetailElement<Institution> createElement(ICdmFormElement rootElement) {
 		InstitutionDetailElement detailElement = (InstitutionDetailElement) formFactory
 				.createCdmDetailElement(DetailType.INSTITUTION, rootElement,
 						SWT.NULL);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/PersonDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/PersonDetailElement.java
index 2dfc2b19f..5199df5fc 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/PersonDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/PersonDetailElement.java
@@ -20,7 +20,6 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
 
 /**
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamDetailElement.java
index 4058b3520..2462dd3c9 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamDetailElement.java
@@ -18,6 +18,7 @@ import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
@@ -71,7 +72,7 @@ public class TeamDetailElement extends AbstractIdentifiableEntityDetailElement<T
 		section_teamMembers = (TeamMemberSection) formFactory
 				.createEntityDetailSection(EntityDetailType.TEAMMEMBER,
 						getConversationHolder(), formElement, Section.EXPANDED);
-		section_teamMembers.setLayoutData(CdmFormFactory
+		section_teamMembers.setLayoutData(LayoutConstants
 				.FILL_HORIZONTALLY(2, 1));
 	}
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamMemberElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamMemberElement.java
index 5be9862eb..103870d0e 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamMemberElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamMemberElement.java
@@ -18,9 +18,8 @@ import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.PersonSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -33,7 +32,7 @@ import eu.etaxonomy.taxeditor.ui.selection.PersonSelectionElement;
  */
 public class TeamMemberElement extends AbstractEntityCollectionElement<Person> {
 
-	private PersonSelectionElement selection_person;
+	private EntitySelectionElement<Person> selection_person;
 
 	/**
 	 * <p>
@@ -69,10 +68,11 @@ public class TeamMemberElement extends AbstractEntityCollectionElement<Person> {
 	/** {@inheritDoc} */
 	@Override
 	public void createControls(ICdmFormElement element, int style) {
-		selection_person = (PersonSelectionElement) formFactory
-				.createSelectionElement(SelectionType.PERSON,
+		selection_person = formFactory
+				.createSelectionElement(Person.class,
 						getConversationHolder(), this, "Person", null,
-						PersonSelectionElement.DEFAULT, style);
+						EntitySelectionElement.EDITABLE | EntitySelectionElement.SELECTABLE, 
+						style);
 	}
 
 	/*
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamOrPersonBaseDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamOrPersonBaseDetailSection.java
index ba736a30e..77808b23d 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamOrPersonBaseDetailSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamOrPersonBaseDetailSection.java
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.ui.section.agent;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
@@ -18,8 +17,8 @@ import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
 /**
@@ -31,9 +30,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
  */
 public class TeamOrPersonBaseDetailSection extends AbstractCdmDetailSection<TeamOrPersonBase> {
 
-	private static final Logger logger = Logger
-			.getLogger(TeamOrPersonBaseDetailSection.class);
-
 	/**
 	 * <p>Constructor for TeamOrPersonBaseDetailSection.</p>
 	 *
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationDetailElement.java
index fd53a6552..b13cc94fc 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationDetailElement.java
@@ -10,19 +10,17 @@
 
 package eu.etaxonomy.taxeditor.ui.section.classification;
 
-import org.apache.log4j.Logger;
 import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -36,12 +34,9 @@ import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
 public class ClassificationDetailElement extends
 		AbstractCdmDetailElement<Classification> {
 
-	private static final Logger logger = Logger
-			.getLogger(ClassificationDetailElement.class);
-
 	private TextWithLabelElement text_treeLabel;
 
-	private ReferenceSelectionElement selection_reference;
+	private EntitySelectionElement<Reference> selection_reference;
 
 	private TextWithLabelElement text_microReference;
 
@@ -77,11 +72,11 @@ public class ClassificationDetailElement extends
 		text_treeLabel = formFactory.createTextWithLabelElement(formElement,
 				"Label", entity != null ? entity.getTitleCache() : null,
 				SWT.NULL);
-		selection_reference = (ReferenceSelectionElement) formFactory
-				.createSelectionElement(SelectionType.REFERENCE,
+		selection_reference = formFactory
+				.createSelectionElement(Reference.class,
 						getConversationHolder(), formElement, "Reference",
 						entity != null ? entity.getReference() : null,
-						ReferenceSelectionElement.DEFAULT, SWT.NULL);
+						EntitySelectionElement.ALL, SWT.NULL);
 		text_microReference = formFactory.createTextWithLabelElement(
 				formElement, "Reference Detail",
 				entity != null ? entity.getMicroReference() : null, SWT.NULL);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationWizardPage.java
index 0147c49c5..0f4718268 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationWizardPage.java
@@ -14,11 +14,10 @@ import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.taxon.Classification;
-import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * <p>
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java
index f0472fffa..510aef975 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java
@@ -20,16 +20,12 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.parser.ParseHandler;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.ClassificationSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.NameSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.TaxonNodeSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
 
 /**
  * <p>
@@ -42,7 +38,7 @@ import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
  */
 public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITreeNode> {
 
-	private ClassificationSelectionElement selection_classification;
+	private EntitySelectionElement<Classification> selection_classification;
 
 	private Classification classification;
 
@@ -50,7 +46,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITreeNode>
 
 	private ITreeNode parentTreeNode;
 
-	private TaxonSelectionElement selection_reuseExistingTaxon;
+	private EntitySelectionElement<Taxon> selection_reuseExistingTaxon;
 
 	private Taxon taxon;
 
@@ -62,7 +58,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITreeNode>
 
 	private boolean complete;
 
-	private NameSelectionElement selection_reuseExistingName;
+	private EntitySelectionElement<TaxonNameBase> selection_reuseExistingName;
 
 	/**
 	 * <p>
@@ -93,25 +89,24 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITreeNode>
 	@Override
 	protected void createControls(ICdmFormElement formElement,
 			ITreeNode entity, int style) {
-		selection_classification = (ClassificationSelectionElement) formFactory
-				.createSelectionElement(SelectionType.CLASSIFICATION,
+		selection_classification = formFactory
+				.createSelectionElement(Classification.class,
 						getConversationHolder(), formElement, "Classification",
-						null, ClassificationSelectionElement.DEFAULT, style);
-		selection_parentTaxonNode = (TaxonNodeSelectionElement) formFactory
-				.createSelectionElement(SelectionType.TAXON_NODE,
-						getConversationHolder(), formElement, "Parent", null,
-						TaxonNodeSelectionElement.DEFAULT, style);
-		selection_reuseExistingTaxon = (TaxonSelectionElement) formFactory
-				.createSelectionElement(SelectionType.TAXON,
+						null, EntitySelectionElement.DELETABLE, style);
+		selection_parentTaxonNode = formFactory
+				.createTaxonNodeSelectionElement(getConversationHolder(), formElement, "Parent", null,
+						EntitySelectionElement.DELETABLE, style);
+		selection_reuseExistingTaxon = formFactory
+				.createSelectionElement(Taxon.class,
 						getConversationHolder(), formElement,
 						"Reuse existing Taxon", null,
-						TaxonSelectionElement.DELETABLE, style);
+						EntitySelectionElement.NOTHING, style);
 
-		selection_reuseExistingName = (NameSelectionElement) formFactory
-				.createSelectionElement(SelectionType.NAME,
+		selection_reuseExistingName = formFactory
+				.createSelectionElement(TaxonNameBase.class,
 						getConversationHolder(), formElement,
 						"Reuse existing name", null,
-						NameSelectionElement.DEFAULT, style);
+						EntitySelectionElement.ALL, style);
 
 		text_newTaxonName = formFactory.createTextWithLabelElement(formElement,
 				"New Taxon", "", style);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/common/RefereneEntityDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/common/RefereneEntityDetailElement.java
index 8983d8b39..69b1e1a42 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/common/RefereneEntityDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/common/RefereneEntityDetailElement.java
@@ -10,12 +10,12 @@
 package eu.etaxonomy.taxeditor.ui.section.common;
 
 import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * @author n.hoffmann
@@ -24,7 +24,7 @@ import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
  */
 public class RefereneEntityDetailElement extends AbstractCdmDetailElement<ReferencedEntityBase>{
 
-	private ReferenceSelectionElement selection_reference;
+	private EntitySelectionElement<Reference> selection_reference;
 	private TextWithLabelElement text_referenceDetail;
 
 	public RefereneEntityDetailElement(CdmFormFactory formFactory,
@@ -35,11 +35,11 @@ public class RefereneEntityDetailElement extends AbstractCdmDetailElement<Refere
 	@Override
 	protected void createControls(ICdmFormElement formElement,
 			ReferencedEntityBase entity, int style) {
-		selection_reference = (ReferenceSelectionElement) formFactory
-				.createSelectionElement(SelectionType.REFERENCE,
+		selection_reference = formFactory
+				.createSelectionElement(Reference.class,
 						getConversationHolder(), formElement, "Reference",
 						entity.getCitation(),
-						ReferenceSelectionElement.DEFAULT, style);
+						EntitySelectionElement.ALL, style);
 		text_referenceDetail = formFactory.createTextWithLabelElement(
 				formElement, "Reference Detail",
 				entity.getCitationMicroReference(), style);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DerivedUnitElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DerivedUnitElement.java
index 9ef0743e6..f05ea9dd5 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DerivedUnitElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DerivedUnitElement.java
@@ -12,13 +12,13 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 
 import org.eclipse.swt.events.SelectionListener;
 
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.DerivedUnitBaseSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -32,7 +32,7 @@ import eu.etaxonomy.taxeditor.ui.selection.DerivedUnitBaseSelectionElement;
 public class DerivedUnitElement extends
 		AbstractEntityCollectionElement<SpecimenOrObservationBase> {
 
-	private DerivedUnitBaseSelectionElement selection_derivedUnit;
+	private EntitySelectionElement<DerivedUnitBase> selection_derivedUnit;
 
 	/**
 	 * <p>
@@ -70,9 +70,9 @@ public class DerivedUnitElement extends
 	/** {@inheritDoc} */
 	@Override
 	public void createControls(ICdmFormElement element, int style) {
-		selection_derivedUnit = (DerivedUnitBaseSelectionElement) formFactory.createSelectionElement(
-				SelectionType.DERIVED_UNIT, getConversationHolder(), element,
-				"Specimen", null, DerivedUnitBaseSelectionElement.SELECTABLE | DerivedUnitBaseSelectionElement.EDITABLE,
+		selection_derivedUnit = formFactory.createSelectionElement(
+				DerivedUnitBase.class, getConversationHolder(), element,
+				"Specimen", null, EntitySelectionElement.SELECTABLE | EntitySelectionElement.EDITABLE,
 				style);
 	}
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescribedSpecimenSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescribedSpecimenSection.java
index b9f915333..374fd04b7 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescribedSpecimenSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescribedSpecimenSection.java
@@ -14,7 +14,6 @@ import java.util.Collection;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.DerivedUnitSelectionDialog;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionDetailElement.java
index 7210fc710..5029bfa38 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionDetailElement.java
@@ -17,9 +17,8 @@ import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.FeatureTreeSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>DescriptionDetailElement class.</p>
@@ -31,7 +30,7 @@ import eu.etaxonomy.taxeditor.ui.selection.FeatureTreeSelectionElement;
 public class DescriptionDetailElement extends AbstractCdmDetailElement<DescriptionBase> {
 
 	private TextWithLabelElement detailDescription;
-	private FeatureTreeSelectionElement selection_featureTree;
+	private EntitySelectionElement<FeatureTree> selection_featureTree;
 
 	/**
 	 * <p>Constructor for DescriptionDetailElement.</p>
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionDetailSection.java
index 2166bf560..569ebb9b7 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionDetailSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionDetailSection.java
@@ -10,14 +10,13 @@
 
 package eu.etaxonomy.taxeditor.ui.section.description;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
 /**
@@ -29,9 +28,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
  */
 public class DescriptionDetailSection extends AbstractCdmDetailSection<DescriptionBase> {
 
-	private static final Logger logger = Logger
-			.getLogger(DescriptionDetailSection.class);
-
 	/**
 	 * <p>Constructor for DescriptionDetailSection.</p>
 	 *
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementDetailElement.java
index d0b8cc4a8..5591416ff 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementDetailElement.java
@@ -10,13 +10,10 @@
 
 package eu.etaxonomy.taxeditor.ui.section.description;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.description.detail.AbstractDetailedDescriptionDetailElement;
 
 /**
  * <p>DescriptionElementDetailElement class.</p>
@@ -28,11 +25,6 @@ import eu.etaxonomy.taxeditor.ui.section.description.detail.AbstractDetailedDesc
 public class DescriptionElementDetailElement extends
 		AbstractCdmDetailElement<DescriptionElementBase> {
 
-
-	private static final Logger logger = Logger
-			.getLogger(DescriptionElementDetailElement.class);
-	private AbstractDetailedDescriptionDetailElement detailElement;
-
 	/**
 	 * <p>Constructor for DescriptionElementDetailElement.</p>
 	 *
@@ -48,7 +40,7 @@ public class DescriptionElementDetailElement extends
 	/** {@inheritDoc} */
 	@Override
 	protected void createControls(ICdmFormElement formElement, DescriptionElementBase entity, int style) {
-		detailElement = formFactory.createDetailedDescriptionDetailElement(formElement, entity, style);
+		formFactory.createDetailedDescriptionDetailElement(formElement, entity, style);
 	}
 	
 	/** {@inheritDoc} */
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementDetailSection.java
index feb5fd0af..8f43590dd 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementDetailSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementDetailSection.java
@@ -22,8 +22,8 @@ import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.description.operation.ChangeDescriptionElementType;
 
@@ -91,9 +91,6 @@ public class DescriptionElementDetailSection extends
 		
 		toolBarManager.add(addAction);
 		
-		ICdmFormElement parentElement = this.getParentElement();
-		
-		
 		return toolBarManager.createControl(this);
 	}
 	
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementMediaSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementMediaSection.java
index bc073baca..10608b3b0 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementMediaSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementMediaSection.java
@@ -12,8 +12,6 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 
 import java.util.Collection;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Feature;
@@ -31,8 +29,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
  */
 public class DescriptionElementMediaSection extends
 		AbstractEntityCollectionSection<DescriptionElementBase, Media> {
-	private static final Logger logger = Logger
-		.getLogger(DescriptionElementMediaSection.class);
 	
 	/**
 	 * <p>Constructor for DescriptionElementMediaSection.</p>
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementSourceElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementSourceElement.java
index 02de96a04..b74c7bfe5 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementSourceElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementSourceElement.java
@@ -14,14 +14,13 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
-import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractOriginalSourceElement;
-import eu.etaxonomy.taxeditor.ui.selection.NameSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -37,9 +36,7 @@ public class DescriptionElementSourceElement extends
 		AbstractOriginalSourceElement<DescriptionElementSource> implements
 		IEntityElement<DescriptionElementSource> {
 
-	private final SelectionArbitrator selectionArbitrator;
-
-	private NameSelectionElement selection_name;
+	private EntitySelectionElement<TaxonNameBase> selection_name;
 
 	/**
 	 * <p>
@@ -65,7 +62,7 @@ public class DescriptionElementSourceElement extends
 			AbstractFormSection formElement, DescriptionElementSource element,
 			SelectionListener removeListener, int style) {
 		super(cdmFormFactory, formElement, element, removeListener, style);
-		selectionArbitrator = formFactory.createSelectionArbitrator(this);
+		formFactory.createSelectionArbitrator(this);
 	}
 
 	/*
@@ -78,10 +75,10 @@ public class DescriptionElementSourceElement extends
 	@Override
 	public void createControls(ICdmFormElement formElement, int style) {
 		super.createControls(formElement, style);
-		selection_name = (NameSelectionElement) formFactory
-				.createSelectionElement(SelectionType.NAME,
+		selection_name = formFactory
+				.createSelectionElement(TaxonNameBase.class,
 						getConversationHolder(), formElement, "Name in Source",
-						null, NameSelectionElement.DEFAULT, SWT.NULL);
+						null, EntitySelectionElement.ALL, SWT.NULL);
 	}
 
 	/*
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionSourceElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionSourceElement.java
index 8b6ff3996..a25880201 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionSourceElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionSourceElement.java
@@ -16,9 +16,8 @@ import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -32,7 +31,7 @@ import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
 public class DescriptionSourceElement extends
 		AbstractEntityCollectionElement<Reference> {
 
-	private ReferenceSelectionElement selection_descriptionSource;
+	private EntitySelectionElement<Reference> selection_descriptionSource;
 
 	/**
 	 * <p>
@@ -62,10 +61,10 @@ public class DescriptionSourceElement extends
 	/** {@inheritDoc} */
 	@Override
 	public void createControls(ICdmFormElement element, int style) {
-		selection_descriptionSource = (ReferenceSelectionElement) formFactory
-				.createSelectionElement(SelectionType.REFERENCE,
+		selection_descriptionSource = formFactory
+				.createSelectionElement(Reference.class,
 						getConversationHolder(), element, "Description Source",
-						null, ReferenceSelectionElement.DEFAULT, style);
+						null, EntitySelectionElement.ALL, style);
 	}
 
 	/** {@inheritDoc} */
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/GeoScopeSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/GeoScopeSection.java
index 9c158503f..b8a69e0ae 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/GeoScopeSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/GeoScopeSection.java
@@ -12,8 +12,6 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 
 import java.util.Collection;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.location.NamedArea;
@@ -30,10 +28,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
  */
 public class GeoScopeSection extends AbstractEntityCollectionSection<TaxonDescription, NamedArea> {
 	
-
-	private static final Logger logger = Logger
-			.getLogger(GeoScopeSection.class);
-
 	/**
 	 * <p>Constructor for GeoScopeSection.</p>
 	 *
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/MediaDetailsSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/MediaDetailsSection.java
index 3f11b081b..f82b59c3c 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/MediaDetailsSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/MediaDetailsSection.java
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.ui.section.description;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.ui.forms.widgets.Section;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
@@ -18,8 +17,8 @@ import org.eclipse.ui.forms.widgets.TableWrapLayout;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.media.MediaElement;
 
@@ -32,9 +31,6 @@ import eu.etaxonomy.taxeditor.ui.section.media.MediaElement;
  */
 public class MediaDetailsSection extends AbstractCdmDetailSection<Media> {
 
-
-	private static final Logger logger = Logger
-			.getLogger(MediaDetailsSection.class);
 	private MediaElement element_media;
 
 	/**
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierSection.java
index 86ec0a453..3025ad0b3 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierSection.java
@@ -12,8 +12,6 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 
 import java.util.Collection;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.IModifiable;
 import eu.etaxonomy.cdm.model.description.Modifier;
@@ -30,10 +28,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
  */
 public class ModifierSection extends AbstractEntityCollectionSection<IModifiable, Modifier> {
 
-
-	private static final Logger logger = Logger
-			.getLogger(ModifierSection.class);
-
 	/**
 	 * <p>Constructor for ModifierSection.</p>
 	 *
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/NaturalLanguageSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/NaturalLanguageSection.java
index d7d7a40b9..e073f7e3a 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/NaturalLanguageSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/NaturalLanguageSection.java
@@ -10,14 +10,13 @@
 
 package eu.etaxonomy.taxeditor.ui.section.description;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
 /**
@@ -29,10 +28,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
  */
 public class NaturalLanguageSection extends AbstractCdmDetailSection<TaxonDescription> {
 	
-
-	private static final Logger logger = Logger
-			.getLogger(NaturalLanguageSection.class);
-
 	/**
 	 * <p>Constructor for NaturalLanguageSection.</p>
 	 *
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeSection.java
index 017cda80c..04038711c 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeSection.java
@@ -12,8 +12,6 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 
 import java.util.Collection;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.Scope;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
@@ -30,9 +28,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
  */
 public class ScopeSection extends AbstractEntityCollectionSection<TaxonDescription, Scope> {
 
-
-	private static final Logger logger = Logger.getLogger(ScopeSection.class);
-
 	/**
 	 * <p>Constructor for ScopeSection.</p>
 	 *
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java
index ddd00dc45..f87cf6f88 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java
@@ -21,6 +21,7 @@ import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
@@ -68,7 +69,7 @@ public class StateDataElement extends AbstractEntityCollectionElement<StateData>
 	public void createControls(ICdmFormElement element, int style) {
 		combo_state = formFactory.createTermComboElement(State.class, element, "State", null, style);
 		section_modifiers = (ModifierSection) formFactory.createEntityDetailSection(EntityDetailType.MODIFIER, getConversationHolder(), element, Section.TWISTIE);
-		section_modifiers.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_modifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		text_modifyingText = formFactory.createTextWithLabelElement(element, "Modifying Text", null, style);
 	}
 
@@ -79,7 +80,7 @@ public class StateDataElement extends AbstractEntityCollectionElement<StateData>
 			getEntity().setState(combo_state.getSelection());
 		}
 		if(eventSource == text_modifyingText){
-			getEntity().addModifyingText(LanguageString.NewInstance(text_modifyingText.getText(), CdmStore.getDefaultLanguage()));
+			getEntity().putModifyingText(LanguageString.NewInstance(text_modifyingText.getText(), CdmStore.getDefaultLanguage()));
 		}
 	}
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataSection.java
index c81f69bf3..07ea14414 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataSection.java
@@ -12,8 +12,6 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 
 import java.util.Collection;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.CategoricalData;
 import eu.etaxonomy.cdm.model.description.StateData;
@@ -30,10 +28,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
  */
 public class StateDataSection extends AbstractEntityCollectionSection<CategoricalData, StateData> {
 
-
-	private static final Logger logger = Logger
-			.getLogger(StateDataSection.class);
-
 	/**
 	 * <p>Constructor for StateDataSection.</p>
 	 *
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StatisticalMeasurementValueElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StatisticalMeasurementValueElement.java
index 64b4c286a..bddaddeeb 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StatisticalMeasurementValueElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StatisticalMeasurementValueElement.java
@@ -19,6 +19,7 @@ import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
@@ -67,7 +68,7 @@ public class StatisticalMeasurementValueElement extends
 		number_value = formFactory.createFloatTextWithLabelElement(element, "Value", 0, style);
 		combo_type = formFactory.createTermComboElement(StatisticalMeasure.class, element, "Statistical Measure", null, style);
 		section_modifiers = (ModifierSection) formFactory.createEntityDetailSection(EntityDetailType.MODIFIER, getConversationHolder(), element, Section.TWISTIE);
-		section_modifiers.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_modifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 	}
 
 	/** {@inheritDoc} */
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StatisticalMeasurementValueSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StatisticalMeasurementValueSection.java
index 0c8291798..81fef0b58 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StatisticalMeasurementValueSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StatisticalMeasurementValueSection.java
@@ -12,8 +12,6 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 
 import java.util.Collection;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.QuantitativeData;
 import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
@@ -31,10 +29,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 public class StatisticalMeasurementValueSection extends
 		AbstractEntityCollectionSection<QuantitativeData, StatisticalMeasurementValue> {
 	
-
-	private static final Logger logger = Logger
-			.getLogger(StatisticalMeasurementValueSection.class);
-
 	/**
 	 * <p>Constructor for StatisticalMeasurementValueSection.</p>
 	 *
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/AbstractDetailedDescriptionDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/AbstractDetailedDescriptionDetailElement.java
index 067d8a78a..85c1461bb 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/AbstractDetailedDescriptionDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/AbstractDetailedDescriptionDetailElement.java
@@ -10,8 +10,6 @@
 
 package eu.etaxonomy.taxeditor.ui.section.description.detail;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -25,9 +23,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
  * @version 1.0
  */
 public abstract class AbstractDetailedDescriptionDetailElement<T extends DescriptionElementBase> extends AbstractCdmDetailElement<T>{
-
-	private static final Logger logger = Logger
-			.getLogger(AbstractDetailedDescriptionDetailElement.class);
 	
 	/**
 	 * <p>Constructor for AbstractDetailedDescriptionDetailElement.</p>
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/CategoricalDataDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/CategoricalDataDetailElement.java
index c5218d95e..8a65b46b5 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/CategoricalDataDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/CategoricalDataDetailElement.java
@@ -10,6 +10,7 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.section.description.StateDataSection;
 
 /**
@@ -43,7 +44,7 @@ public class CategoricalDataDetailElement extends AbstractDetailedDescriptionDet
 		checkbox_orderRelevant = formFactory.createCheckbox(formElement, "Order Relevant", entity.getOrderRelevant(), style);
 		section_stateData = (StateDataSection) formFactory.createEntityDetailSection(EntityDetailType.STATE_DATA, getConversationHolder(), formElement, Section.TWISTIE | Section.EXPANDED);
 		section_stateData.setEntity(entity);
-		section_stateData.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_stateData.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 	}
 	
 	/** {@inheritDoc} */
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/CommonNameDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/CommonNameDetailElement.java
index 2a5fcc75c..64e95d95b 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/CommonNameDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/CommonNameDetailElement.java
@@ -14,11 +14,12 @@ import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;
+import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>CommonNameDetailElement class.</p>
@@ -30,7 +31,7 @@ import eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement;
 public class CommonNameDetailElement extends AbstractDetailedDescriptionDetailElement<CommonTaxonName> {
 	
 	private TermComboElement<Language> combo_language;
-	private NamedAreaSelectionElement selection_namedArea;
+	private EntitySelectionElement<NamedArea> selection_namedArea;
 	private TextWithLabelElement commonName;
 
 	
@@ -53,8 +54,9 @@ public class CommonNameDetailElement extends AbstractDetailedDescriptionDetailEl
 			CommonTaxonName entity, int style) {
 		combo_language = formFactory.createTermComboElement(Language.class, this, "Language", entity.getLanguage(), style);
 
-		selection_namedArea = formFactory.createNamedAreaSelectionElement(this, getConversationHolder(), "Area", entity.getArea(), style);
-		
+		selection_namedArea = formFactory.createSelectionElement(NamedArea.class, getConversationHolder(),
+				formElement, "Area",
+				entity.getArea(), EntitySelectionElement.NOTHING, style);
 		commonName = formFactory.createTextWithLabelElement(this, "Common Name", entity.getName(), SWT.WRAP);
 	}
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/DistributionDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/DistributionDetailElement.java
index 4ec618be2..a4cb75343 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/DistributionDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/DistributionDetailElement.java
@@ -12,10 +12,11 @@ package eu.etaxonomy.taxeditor.ui.section.description.detail;
 
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>DistributionDetailElement class.</p>
@@ -27,7 +28,7 @@ import eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement;
 public class DistributionDetailElement extends
 		AbstractDetailedDescriptionDetailElement<Distribution> {
 
-	private NamedAreaSelectionElement selection_namedArea;
+	private EntitySelectionElement<NamedArea> selection_namedArea;
 	private TermComboElement<PresenceAbsenceTermBase> combo_presenceAbsence;
 	
 
@@ -48,8 +49,9 @@ public class DistributionDetailElement extends
 	@Override
 	protected void createControls(ICdmFormElement formElement,
 			Distribution entity, int style) {
-		selection_namedArea = formFactory.createNamedAreaSelectionElement(this, getConversationHolder(), "Area", entity.getArea(), style);
-		
+		selection_namedArea = formFactory.createSelectionElement(NamedArea.class, getConversationHolder(),
+				formElement, "Area",
+				entity.getArea(), EntitySelectionElement.NOTHING, style);
         combo_presenceAbsence = formFactory.createTermComboElement(PresenceAbsenceTermBase.class, this, "Distribution Status", entity.getStatus(), style);
         
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/IndividualsAssociationDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/IndividualsAssociationDetailElement.java
index d5f9a8672..990ca4c5e 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/IndividualsAssociationDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/IndividualsAssociationDetailElement.java
@@ -12,17 +12,15 @@ package eu.etaxonomy.taxeditor.ui.section.description.detail;
 
 import java.util.Map;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
-import eu.etaxonomy.taxeditor.ui.selection.DerivedUnitBaseSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -36,10 +34,8 @@ import eu.etaxonomy.taxeditor.ui.selection.DerivedUnitBaseSelectionElement;
 public class IndividualsAssociationDetailElement extends
 		AbstractDetailedDescriptionDetailElement<IndividualsAssociation> {
 
-	private static final Logger logger = Logger
-			.getLogger(IndividualsAssociationDetailElement.class);
 	private TextWithLabelElement text_description;
-	private DerivedUnitBaseSelectionElement selection_derivedUnit;
+	private EntitySelectionElement<DerivedUnitBase> selection_derivedUnit;
 
 	/**
 	 * <p>
@@ -69,11 +65,11 @@ public class IndividualsAssociationDetailElement extends
 	@Override
 	protected void createControls(ICdmFormElement formElement,
 			IndividualsAssociation entity, int style) {
-		selection_derivedUnit = (DerivedUnitBaseSelectionElement) formFactory
-				.createSelectionElement(SelectionType.DERIVED_UNIT,
+		selection_derivedUnit = formFactory
+				.createSelectionElement(DerivedUnitBase.class,
 						getConversationHolder(), formElement, "Unit",
-						entity.getAssociatedSpecimenOrObservation(),
-						DerivedUnitBaseSelectionElement.DEFAULT, style);
+						(DerivedUnitBase) entity.getAssociatedSpecimenOrObservation(),
+						EntitySelectionElement.ALL, style);
 
 		text_description = formFactory.createMultilineTextWithLabel(
 				formElement, "Description", 200, style);
@@ -92,8 +88,7 @@ public class IndividualsAssociationDetailElement extends
 			getEntity().setAssociatedSpecimenOrObservation(
 					selection_derivedUnit.getEntity());
 		} else if (eventSource == text_description) {
-			getEntity().addDescription(text_description.getText(),
-					CdmStore.getDefaultLanguage());
+			getEntity().putDescription(CdmStore.getDefaultLanguage(), text_description.getText());
 		}
 
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/QuantitativeDataDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/QuantitativeDataDetailElement.java
index db5856f95..11cbe80cf 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/QuantitativeDataDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/QuantitativeDataDetailElement.java
@@ -11,6 +11,7 @@ import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.section.description.StatisticalMeasurementValueSection;
 
 /**
@@ -45,7 +46,7 @@ public class QuantitativeDataDetailElement extends
 		combo_mesaurementUnit = formFactory.createTermComboElement(MeasurementUnit.class, formElement, "Measurement Unit", entity.getUnit(), style);
 		section_statisticalMeasurementValues = (StatisticalMeasurementValueSection) formFactory.createEntityDetailSection(EntityDetailType.STATISTICAL_MEASUREMENT_VALUE, getConversationHolder(), formElement, Section.TWISTIE | Section.EXPANDED);
 		section_statisticalMeasurementValues.setEntity(entity);
-		section_statisticalMeasurementValues.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_statisticalMeasurementValues.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 	}
 	
 	/* (non-Javadoc)
@@ -54,7 +55,11 @@ public class QuantitativeDataDetailElement extends
 	/** {@inheritDoc} */
 	@Override
 	public void handleEvent(Object eventSource) {
-		
+		if(eventSource == combo_mesaurementUnit){
+			getEntity().setUnit(combo_mesaurementUnit.getSelection());
+		}else if (eventSource == section_statisticalMeasurementValues){
+			// FIXME
+		}
 	}
 
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/TaxonInteractionDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/TaxonInteractionDetailElement.java
index 637a19c9b..bc6a2240f 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/TaxonInteractionDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/TaxonInteractionDetailElement.java
@@ -13,12 +13,12 @@ package eu.etaxonomy.taxeditor.ui.section.description.detail;
 import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.model.description.TaxonInteraction;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
-import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -32,7 +32,7 @@ import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
 public class TaxonInteractionDetailElement extends
 		AbstractDetailedDescriptionDetailElement<TaxonInteraction> {
 
-	private TaxonSelectionElement taxonSelection;
+	private EntitySelectionElement<Taxon> taxonSelection;
 	private TextWithLabelElement interactionDescription;
 
 	/**
@@ -61,10 +61,10 @@ public class TaxonInteractionDetailElement extends
 	@Override
 	protected void createControls(ICdmFormElement formElement,
 			TaxonInteraction entity, int style) {
-		taxonSelection = (TaxonSelectionElement) formFactory
-				.createSelectionElement(SelectionType.TAXON,
+		taxonSelection = formFactory
+				.createSelectionElement(Taxon.class,
 						getConversationHolder(), this, null,
-						entity.getTaxon2(), TaxonSelectionElement.DEFAULT,
+						entity.getTaxon2(), EntitySelectionElement.NOTHING,
 						SWT.WRAP);
 
 		interactionDescription = formFactory.createMultilineTextWithLabel(this,
@@ -79,8 +79,7 @@ public class TaxonInteractionDetailElement extends
 		if (eventSource == taxonSelection) {
 			getEntity().setTaxon2(taxonSelection.getEntity());
 		} else if (eventSource == interactionDescription) {
-			getEntity().addDescription(interactionDescription.getText(),
-					CdmStore.getDefaultLanguage());
+			getEntity().putDescription(CdmStore.getDefaultLanguage(), interactionDescription.getText());
 		}
 	}
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/operation/ChangeDescriptionElementType.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/operation/ChangeDescriptionElementType.java
index 1ef89a156..e1110fb32 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/operation/ChangeDescriptionElementType.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/operation/ChangeDescriptionElementType.java
@@ -38,13 +38,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 public class ChangeDescriptionElementType extends AbstractPostOperation {
 
 	private DescriptionElementBase sourceElement;
-	private DestinationType destinationType;
 	private DescriptionElementBase destinationElement;
-
-	public enum DestinationType {
-		TextData,
-		Distribution
-	}
 	
 	/**
 	 * <p>Constructor for ChangeDescriptionElementType.</p>
@@ -111,7 +105,6 @@ public class ChangeDescriptionElementType extends AbstractPostOperation {
 	@Override
 	public IStatus redo(IProgressMonitor monitor, IAdaptable info)
 			throws ExecutionException {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
@@ -122,7 +115,6 @@ public class ChangeDescriptionElementType extends AbstractPostOperation {
 	@Override
 	public IStatus undo(IProgressMonitor monitor, IAdaptable info)
 			throws ExecutionException {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureDistributionDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureDistributionDetailElement.java
index 9b072f84c..522823664 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureDistributionDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureDistributionDetailElement.java
@@ -12,21 +12,15 @@ package eu.etaxonomy.taxeditor.ui.section.feature;
 
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.cdm.common.UriUtils;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
-import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
@@ -36,6 +30,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.BrowserElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -88,7 +83,7 @@ public class FeatureDistributionDetailElement extends AbstractCdmDetailElement<F
 		
 		Label label = formFactory.createLabel(getLayoutComposite(), message, SWT.WRAP);
 		addControl(label);
-		label.setLayoutData(CdmFormFactory.FILL(2, 1));
+		label.setLayoutData(LayoutConstants.FILL(2, 1));
 	}
 
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GrantedAuthorityDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GrantedAuthorityDetailElement.java
index e661e8019..e614cd2ef 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GrantedAuthorityDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GrantedAuthorityDetailElement.java
@@ -11,7 +11,6 @@
 package eu.etaxonomy.taxeditor.ui.section.group;
 
 import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
 import org.springframework.security.core.GrantedAuthority;
 
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/MemberDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/MemberDetailElement.java
index d362b5901..1a828cb19 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/MemberDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/MemberDetailElement.java
@@ -16,9 +16,8 @@ import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.UserSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * @author n.hoffmann
@@ -27,7 +26,7 @@ import eu.etaxonomy.taxeditor.ui.selection.UserSelectionElement;
  */
 public class MemberDetailElement extends AbstractEntityCollectionElement<User> {
 
-	private UserSelectionElement selection_user;
+	private EntitySelectionElement<User> selection_user;
 
 	/**
 	 * @param formFactory
@@ -63,10 +62,10 @@ public class MemberDetailElement extends AbstractEntityCollectionElement<User> {
 	 */
 	@Override
 	public void createControls(ICdmFormElement element, int style) {
-		selection_user = (UserSelectionElement) formFactory
-				.createSelectionElement(SelectionType.USER,
+		selection_user = formFactory
+				.createSelectionElement(User.class,
 						getConversationHolder(), element, "Member", entity,
-						UserSelectionElement.EDITABLE, style);
+						EntitySelectionElement.EDITABLE, style);
 	}
 
 	/*
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyDetailElement.java
index 763848b9c..90feceb60 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyDetailElement.java
@@ -9,8 +9,6 @@ import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
 
 /**
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java
index 57fe6dfbc..504563b01 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java
@@ -3,18 +3,16 @@
  */
 package eu.etaxonomy.taxeditor.ui.section.key;
 
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.KeyStatementElement;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.FeatureSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.PolytomousKeyNodeSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.PolytomousKeySelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * @author n.hoffmann
@@ -25,13 +23,13 @@ public class PolytomousKeyNodeDetailElement extends
 
 	private KeyStatementElement element_statement;
 
-	private FeatureSelectionElement selection_feature;
+	private EntitySelectionElement<Feature> selection_feature;
 
-	private TaxonSelectionElement selection_taxon;
+	private EntitySelectionElement<Taxon> selection_taxon;
 
-	private PolytomousKeySelectionElement selection_subkey;
+	private EntitySelectionElement<PolytomousKey> selection_subkey;
 
-	private PolytomousKeyNodeSelectionElement selection_otherNode;
+	private EntitySelectionElement<PolytomousKeyNode> selection_otherNode;
 
 	private KeyStatementElement element_question;
 
@@ -56,35 +54,35 @@ public class PolytomousKeyNodeDetailElement extends
 			element_question = formFactory.createKeyStatementElement(
 					formElement, "Question", parent.getQuestion(), 50, style);
 
-			selection_feature = (FeatureSelectionElement) formFactory
-					.createSelectionElement(SelectionType.FEATURE,
+			selection_feature = formFactory
+					.createSelectionElement(Feature.class,
 							getConversationHolder(), formElement, "Feature",
 							parent.getFeature(),
-							FeatureSelectionElement.DEFAULT, style);
+							EntitySelectionElement.EDITABLE | EntitySelectionElement.DELETABLE, style);
 		}
 
 		element_statement = formFactory.createKeyStatementElement(formElement,
 				"Statement", entity.getStatement(), 50, style);
 
 		if (entity.isLeaf()) {
-			selection_taxon = (TaxonSelectionElement) formFactory
-					.createSelectionElement(SelectionType.TAXON,
+			selection_taxon = formFactory
+					.createSelectionElement(Taxon.class,
 							getConversationHolder(), formElement, "Taxon",
-							entity.getTaxon(), TaxonSelectionElement.DELETABLE,
+							entity.getTaxon(), EntitySelectionElement.NOTHING,
 							style);
 		}
 
-		selection_subkey = (PolytomousKeySelectionElement) formFactory
-				.createSelectionElement(SelectionType.POLYTOMOUS_KEY,
+		selection_subkey = formFactory
+				.createSelectionElement(PolytomousKey.class,
 						getConversationHolder(), formElement, "Subkey",
 						entity.getSubkey(),
-						PolytomousKeySelectionElement.DEFAULT, style);
+						EntitySelectionElement.EDITABLE | EntitySelectionElement.DELETABLE, style);
 
-		selection_otherNode = (PolytomousKeyNodeSelectionElement) formFactory
-				.createSelectionElement(SelectionType.POLYTOMOUS_KEY_NODE,
+		selection_otherNode = formFactory
+				.createSelectionElement(PolytomousKeyNode.class,
 						getConversationHolder(), formElement, "Other Node",
 						entity.getOtherNode(),
-						PolytomousKeyNodeSelectionElement.DEFAULT, style);
+						EntitySelectionElement.DELETABLE, style);
 
 		formFactory.createMultiLanguageTextElement(formElement,
 				"Modifying Text", entity.getModifyingText(), 50, style);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaElement.java
index 7305bf9d2..1d49eae84 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaElement.java
@@ -6,20 +6,20 @@ package eu.etaxonomy.taxeditor.ui.section.media;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -33,7 +33,7 @@ import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
 public class MediaElement extends AbstractEntityCollectionElement<Media> {
 
 	private MediaRepresentationSection section_mediaRepresentation;
-	private AgentSelectionElement selection_artist;
+	private EntitySelectionElement<AgentBase> selection_artist;
 	private LanguageStringWithLabelElement text_description;
 	private LanguageStringWithLabelElement text_title;
 
@@ -73,17 +73,17 @@ public class MediaElement extends AbstractEntityCollectionElement<Media> {
 	public void createControls(ICdmFormElement element, int style) {
 		text_title = formFactory.createLanguageStringWithLabelElement(element,
 				"Title", null, style);
-		selection_artist = (AgentSelectionElement) formFactory
-				.createSelectionElement(SelectionType.AGENT,
+		selection_artist = formFactory
+				.createSelectionElement(AgentBase.class,
 						getConversationHolder(), element, "Artist", null,
-						AgentSelectionElement.DEFAULT, style);
+						EntitySelectionElement.ALL, style);
 		text_description = formFactory.createLanguageStringWithLabelElement(
 				element, "Description", null, 100, style);
 		section_mediaRepresentation = (MediaRepresentationSection) formFactory
 				.createEntityDetailSection(
 						EntityDetailType.MEDIAREPRESENTATION,
 						getConversationHolder(), element, style);
-		section_mediaRepresentation.setLayoutData(CdmFormFactory
+		section_mediaRepresentation.setLayoutData(LayoutConstants
 				.FILL_HORIZONTALLY(2, 1));
 	}
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationElement.java
index ec3f03aee..0bff02bf3 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationElement.java
@@ -24,9 +24,10 @@ import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 
 /**
@@ -67,7 +68,7 @@ public class MediaRepresentationElement extends AbstractEntityCollectionElement<
 		text_mimeType = formFactory.createTextWithLabelElement(element, "Mime Type", null, style);
 		text_suffix = formFactory.createTextWithLabelElement(element, "Suffix", null, style);
 		section_mediaRepresentationPart = (MediaRepresentationPartSection) formFactory.createEntityDetailSection(EntityDetailType.MEDIAREPRESENTATIONPART, getConversationHolder(), element, style);
-		section_mediaRepresentationPart.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_mediaRepresentationPart.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 	}
 
 	/** {@inheritDoc} */
@@ -125,11 +126,5 @@ public class MediaRepresentationElement extends AbstractEntityCollectionElement<
 				StoreUtil.error(getClass(), e);
 			}
 		}
-		
-		
-	}
-	
-	private String getMimeType(URI uri){
-		return null;
 	}
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/AbstractTypeDesignationElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/AbstractTypeDesignationElement.java
index 6c03a53ad..99506c563 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/AbstractTypeDesignationElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/AbstractTypeDesignationElement.java
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.ui.section.name;
 
-import org.apache.log4j.Logger;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
@@ -29,8 +28,6 @@ import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractReferencedEntityEl
  */
 public abstract class AbstractTypeDesignationElement<T extends TypeDesignationBase> extends AbstractReferencedEntityElement<T> {
 
-	private static final Logger logger = Logger
-			.getLogger(AbstractTypeDesignationElement.class);
 	protected CheckboxElement checkbox_notDesignated;
 	
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/AuthorshipDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/AuthorshipDetailElement.java
index 873ff4cc6..aa03fae0b 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/AuthorshipDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/AuthorshipDetailElement.java
@@ -13,16 +13,15 @@ package eu.etaxonomy.taxeditor.ui.section.name;
 import java.util.Arrays;
 
 import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor;
+import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.taxeditor.model.AuthorHelper;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.NomenclaturalAuthorTeamSelectionElement;
 
 /**
@@ -38,10 +37,10 @@ public class AuthorshipDetailElement extends
 	AbstractIdentifiableEntityDetailElement<NonViralName> implements
 		IEnableableFormElement {
 
-	private AbstractSelectionElement selection_exBasionymAuthorTeam;
-	private AbstractSelectionElement selection_basionymAuthorTeam;
-	private AbstractSelectionElement selection_exCombinationAuthorTeam;
-	private AbstractSelectionElement selection_combinationAuthorTeam;
+	private NomenclaturalAuthorTeamSelectionElement selection_exBasionymAuthorTeam;
+	private NomenclaturalAuthorTeamSelectionElement selection_basionymAuthorTeam;
+	private NomenclaturalAuthorTeamSelectionElement selection_exCombinationAuthorTeam;
+	private NomenclaturalAuthorTeamSelectionElement selection_combinationAuthorTeam;
 
 	/**
 	 * <p>
@@ -69,30 +68,29 @@ public class AuthorshipDetailElement extends
 		toggleable_cache = formFactory.createToggleableTextField(this,
 				"Authorship Cache", entity.getAuthorshipCache(),
 				entity.isProtectedAuthorshipCache(), style);
-
-		selection_combinationAuthorTeam = formFactory.createSelectionElement(
-				SelectionType.AUTHOR_TEAM, getConversationHolder(),
+		selection_combinationAuthorTeam = formFactory.createNomenclaturalAuthorTeamSelectionElement(
+				getConversationHolder(),
 				formElement, "Author",
 				AuthorHelper.getAuthor(entity.getCombinationAuthorTeam()),
-				NomenclaturalAuthorTeamSelectionElement.DEFAULT, style);
+				EntitySelectionElement.ALL, style);
 		addElement(selection_combinationAuthorTeam);
-		selection_exCombinationAuthorTeam = formFactory.createSelectionElement(
-				SelectionType.AUTHOR_TEAM, getConversationHolder(),
+		selection_exCombinationAuthorTeam = formFactory.createNomenclaturalAuthorTeamSelectionElement(
+				getConversationHolder(),
 				formElement, "Ex Author",
 				AuthorHelper.getAuthor(entity.getExCombinationAuthorTeam()),
-				NomenclaturalAuthorTeamSelectionElement.DEFAULT, style);
+				EntitySelectionElement.ALL, style);
 		addElement(selection_exCombinationAuthorTeam);
-		selection_basionymAuthorTeam = formFactory.createSelectionElement(
-				SelectionType.AUTHOR_TEAM, getConversationHolder(),
+		selection_basionymAuthorTeam = formFactory.createNomenclaturalAuthorTeamSelectionElement(
+				getConversationHolder(),
 				formElement, "Basionym Author",
 				AuthorHelper.getAuthor(entity.getBasionymAuthorTeam()),
-				NomenclaturalAuthorTeamSelectionElement.DEFAULT, style);
+				EntitySelectionElement.ALL, style);
 		addElement(selection_basionymAuthorTeam);
-		selection_exBasionymAuthorTeam = formFactory.createSelectionElement(
-				SelectionType.AUTHOR_TEAM, getConversationHolder(),
+		selection_exBasionymAuthorTeam = formFactory.createNomenclaturalAuthorTeamSelectionElement(
+				getConversationHolder(),
 				formElement, "Ex Basionym Author",
 				AuthorHelper.getAuthor(entity.getExBasionymAuthorTeam()),
-				NomenclaturalAuthorTeamSelectionElement.DEFAULT, style);
+				EntitySelectionElement.ALL, style);
 		addElement(selection_exBasionymAuthorTeam);
 	}
 
@@ -102,8 +100,7 @@ public class AuthorshipDetailElement extends
 		if (getEntity() == null) {
 			setEntity(NonViralName.NewInstance(null));
 		}
-		NonViralName nonViralName = getEntity();
-
+		
 		super.updateContent();
 		toggleable_cache.setEnabled(getEntity().isProtectedAuthorshipCache());
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/HybridDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/HybridDetailElement.java
index 8e93610b2..1dfab3c0f 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/HybridDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/HybridDetailElement.java
@@ -12,7 +12,6 @@ package eu.etaxonomy.taxeditor.ui.section.name;
 
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipDetailElement.java
index a34670ed0..c0e1988f1 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipDetailElement.java
@@ -24,7 +24,7 @@ import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractReferencedEntityElement;
-import eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>NameRelationshipDetailElement class.</p>
@@ -36,7 +36,7 @@ import eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement;
 public class NameRelationshipDetailElement extends AbstractReferencedEntityElement<NameRelationship>{
 
 	private TextWithLabelElement text_ruleConsidered;
-	private AbstractSelectionElement selection_toName;
+	private EntitySelectionElement selection_toName;
 	private TermComboElement<NameRelationshipType> combo_relationshipType;
 	private LabelElement label;
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipWizard.java
index ba2cd2922..e7abd5666 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipWizard.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipWizard.java
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.ui.section.name;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.wizard.Wizard;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
@@ -35,12 +34,9 @@ public class NameRelationshipWizard extends Wizard implements IConversationEnabl
 	 * @param callingSection a {@link eu.etaxonomy.taxeditor.ui.section.name.NameRelationshipDetailSection} object.
 	 */
 	public NameRelationshipWizard(NameRelationshipDetailSection callingSection) {
-		this.callingSection = callingSection;
+		NameRelationshipWizard.callingSection = callingSection;
 	}
-	
-	private static final Logger logger = Logger
-			.getLogger(NameRelationshipWizard.class);
-	
+		
 	private NameRelationshipWizardPage page;
 
 	/** {@inheritDoc} */
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipWizardPage.java
index 083ee7686..162626a04 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipWizardPage.java
@@ -21,9 +21,9 @@ import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.RootElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
-import eu.etaxonomy.taxeditor.ui.selection.NameSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -39,12 +39,10 @@ public class NameRelationshipWizardPage extends WizardPage implements
 
 	private final CdmFormFactory formFactory;
 
-	private NameSelectionElement selection_relatedTo;
+	private EntitySelectionElement<TaxonNameBase> selection_relatedTo;
 
 	private TermComboElement<NameRelationshipType> combo_relationshipType;
 
-	private final NameRelationshipDetailSection callingSection;
-
 	private final TaxonNameBase entity;
 
 	private NameRelationshipType type;
@@ -68,7 +66,6 @@ public class NameRelationshipWizardPage extends WizardPage implements
 		super("NameRelationshipWizardPage");
 		setTitle("New Name Relationship");
 		setDescription(callingSection.getEntity().getTitleCache());
-		this.callingSection = callingSection;
 		this.entity = callingSection.getEntity();
 		this.formFactory = callingSection.getFormFactory();
 
@@ -89,18 +86,18 @@ public class NameRelationshipWizardPage extends WizardPage implements
 
 		Composite control = formFactory.createComposite(parent);
 
-		control.setLayout(CdmFormFactory.LAYOUT(2, false));
+		control.setLayout(LayoutConstants.LAYOUT(2, false));
 
 		rootElement = new RootElement(formFactory, control);
 
 		combo_relationshipType = formFactory.createTermComboElement(NameRelationshipType.class,
 						rootElement, "Name Relationship Type", null, SWT.NULL);
 
-		selection_relatedTo = (NameSelectionElement) formFactory
-				.createSelectionElement(SelectionType.NAME,
+		selection_relatedTo = formFactory
+				.createSelectionElement(TaxonNameBase.class,
 						((NameRelationshipWizard) getWizard())
 								.getConversationHolder(), rootElement,
-						"Related to", null, NameSelectionElement.DEFAULT,
+						"Related to", null, EntitySelectionElement.ALL,
 						SWT.NULL);
 
 		setControl(control);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameTypeDesignationElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameTypeDesignationElement.java
index 3ef47abb6..6d4c33854 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameTypeDesignationElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameTypeDesignationElement.java
@@ -21,8 +21,7 @@ import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
-import eu.etaxonomy.taxeditor.ui.selection.NameSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -38,7 +37,7 @@ public class NameTypeDesignationElement extends
 
 	private CheckboxElement checkbox_rejectedType;
 	private CheckboxElement checkbox_conservedType;
-	private NameSelectionElement selection_typeName;
+	private EntitySelectionElement<TaxonNameBase> selection_typeName;
 	private TermComboElement<NameTypeDesignationStatus> combo_typeStatus;
 
 	/**
@@ -74,10 +73,10 @@ public class NameTypeDesignationElement extends
 				"Rejected Type", false, style);
 		checkbox_conservedType = formFactory.createCheckbox(formElement,
 				"Conserved Type", false, style);
-		selection_typeName = (NameSelectionElement) formFactory
-				.createSelectionElement(SelectionType.NAME,
+		selection_typeName = formFactory
+				.createSelectionElement(TaxonNameBase.class,
 						getConversationHolder(), formElement, "Name", null,
-						NameSelectionElement.DEFAULT, style);
+						EntitySelectionElement.ALL, style);
 		combo_typeStatus = formFactory.createTermComboElement(
 				NameTypeDesignationStatus.class, formElement,
 						"Designation Status", null, style);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameDetailElement.java
index 3c8ea2405..55662b2d5 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameDetailElement.java
@@ -20,6 +20,7 @@ import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
 
@@ -82,21 +83,21 @@ public class NonViralNameDetailElement extends
 		section_name = (NameDetailSection) formFactory.createCdmDetailSection(
 				DetailType.SCIENTIFICNAME, getConversationHolder(),
 				formElement, null, Section.TWISTIE | Section.EXPANDED);
-		section_name.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_name.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		addControl(section_name);
 		addElement(section_name);
 		section_author = (AuthorshipDetailSection) formFactory
 				.createCdmDetailSection(DetailType.AUTHORSHIP,
 						getConversationHolder(), formElement, null,
 						Section.TWISTIE | Section.EXPANDED);
-		section_author.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_author.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		addControl(section_author);
 		addElement(section_author);
 		
 		section_hybrid = (HybridDetailSection) formFactory.createCdmDetailSection(DetailType.HYBRID, 
 						getConversationHolder(), formElement, null, 
 						Section.TWISTIE);
-		section_hybrid.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_hybrid.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		addControl(section_hybrid);
 		addElement(section_hybrid);
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameWizardPage.java
index b1fead904..4603f031d 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameWizardPage.java
@@ -10,15 +10,14 @@
 
 package eu.etaxonomy.taxeditor.ui.section.name;
 
-import org.apache.log4j.Logger;
 import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -30,9 +29,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
  */
 public class NonViralNameWizardPage extends AbstractCdmEntityWizardPage<NonViralName> {
 
-
-	private static final Logger logger = Logger
-			.getLogger(NonViralNameWizardPage.class);
 	private NonViralNameDetailElement nameElement;
 
 	/**
@@ -50,7 +46,7 @@ public class NonViralNameWizardPage extends AbstractCdmEntityWizardPage<NonViral
 	
 	/** {@inheritDoc} */
 	@Override
-	public AbstractCdmDetailElement createElement(ICdmFormElement rootElement) {
+	public AbstractCdmDetailElement<NonViralName> createElement(ICdmFormElement rootElement) {
 		nameElement = (NonViralNameDetailElement) formFactory.createCdmDetailElement(DetailType.NONVIRALNAME, rootElement, SWT.NULL);
 		nameElement.setEntity(entity);
 		return nameElement;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/ProtologueElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/ProtologueElement.java
index d8292ee3a..ed29e2f45 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/ProtologueElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/ProtologueElement.java
@@ -31,7 +31,6 @@ import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
 import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.openurl.IOpenUrlEnabled;
-import eu.etaxonomy.taxeditor.ui.openurl.OpenUrlSelectorElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 
 /**
@@ -50,8 +49,6 @@ public class ProtologueElement extends AbstractEntityCollectionElement<Descripti
 	private Media media;
 	private MediaRepresentation mediaRepresentation;
 
-	private OpenUrlSelectorElement element_openUrl;
-
 	/**
 	 * <p>Constructor for ProtologueElement.</p>
 	 *
@@ -75,7 +72,7 @@ public class ProtologueElement extends AbstractEntityCollectionElement<Descripti
 	public void createControls(ICdmFormElement element, int style) {
 		protologueUriText = formFactory.createTextWithLabelElement(this, "Protologue URI", "", style);
 
-		element_openUrl = formFactory.createOpenUrlSelectorElement(element, "Query BHL for Reference Image", this, style);
+		formFactory.createOpenUrlSelectorElement(element, "Query BHL for Reference Image", this, style);
 	}
 
 	/* (non-Javadoc)
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/SpecimenTypeDesignationElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/SpecimenTypeDesignationElement.java
index edbf00b8d..1fd7f9a17 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/SpecimenTypeDesignationElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/SpecimenTypeDesignationElement.java
@@ -15,14 +15,14 @@ import org.eclipse.swt.events.SelectionListener;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
 import eu.etaxonomy.cdm.model.occurrence.Specimen;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
-import eu.etaxonomy.taxeditor.ui.selection.DerivedUnitBaseSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -37,7 +37,7 @@ public class SpecimenTypeDesignationElement extends
 		AbstractTypeDesignationElement<SpecimenTypeDesignation> {
 
 	private TermComboElement<SpecimenTypeDesignationStatus> combo_typeStatus;
-	private DerivedUnitBaseSelectionElement selection_typeSpecimen;
+	private EntitySelectionElement<DerivedUnitBase> selection_typeSpecimen;
 	private TextWithLabelElement text_specimenTypeText;
 
 	/**
@@ -68,10 +68,10 @@ public class SpecimenTypeDesignationElement extends
 	/** {@inheritDoc} */
 	@Override
 	public void createControls(ICdmFormElement formElement, int style) {
-		selection_typeSpecimen = (DerivedUnitBaseSelectionElement) formFactory
-				.createSelectionElement(SelectionType.DERIVED_UNIT,
+		selection_typeSpecimen = formFactory
+				.createSelectionElement(DerivedUnitBase.class,
 						getConversationHolder(), formElement, "Specimen", null,
-						DerivedUnitBaseSelectionElement.DEFAULT, style);
+						EntitySelectionElement.ALL, style);
 		combo_typeStatus = formFactory
 				.createTermComboElement(SpecimenTypeDesignationStatus.class,
 						formElement, "Designation Status", null, style);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AbstractEventDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AbstractEventDetailElement.java
index 6179ea83b..589764a84 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AbstractEventDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AbstractEventDetailElement.java
@@ -12,15 +12,15 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import org.eclipse.swt.events.SelectionListener;
 
+import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.EventBase;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -34,7 +34,7 @@ import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
 public abstract class AbstractEventDetailElement<T extends EventBase> extends
 		AbstractEntityCollectionElement<T> {
 
-	protected AgentSelectionElement selection_agent;
+	protected EntitySelectionElement<AgentBase> selection_agent;
 	protected TextWithLabelElement text_description;
 	protected TimePeriodElement element_timePeriod;
 
@@ -89,10 +89,10 @@ public abstract class AbstractEventDetailElement<T extends EventBase> extends
 	/** {@inheritDoc} */
 	@Override
 	public void createControls(ICdmFormElement element, int style) {
-		selection_agent = (AgentSelectionElement) formFactory
-				.createSelectionElement(SelectionType.AGENT,
+		selection_agent = formFactory
+				.createSelectionElement(AgentBase.class,
 						getConversationHolder(), element, "Actor", null,
-						AgentSelectionElement.DEFAULT, style);
+						EntitySelectionElement.ALL, style);
 		element_timePeriod = formFactory.createTimePeriodElement(element,
 				"Time Period", null, style);
 		text_description = formFactory.createTextWithLabelElement(element,
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectionDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectionDetailElement.java
index 875015bf8..1e7acca7c 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectionDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectionDetailElement.java
@@ -10,15 +10,14 @@
 
 package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
+import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.CollectionSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.InstitutionSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -42,9 +41,9 @@ public class CollectionDetailElement extends
 
 	private TextWithLabelElement text_townOrLocation;
 
-	private InstitutionSelectionElement selection_institute;
+	private EntitySelectionElement<Institution> selection_institute;
 
-	private CollectionSelectionElement selection_superCollection;
+	private EntitySelectionElement<Collection> selection_superCollection;
 
 	/**
 	 * <p>
@@ -88,16 +87,16 @@ public class CollectionDetailElement extends
 		text_townOrLocation = formFactory.createTextWithLabelElement(
 				formElement, "Town Or Location", entity.getTownOrLocation(),
 				style);
-		selection_institute = (InstitutionSelectionElement) formFactory
-				.createSelectionElement(SelectionType.INSTITUTION,
+		selection_institute = formFactory
+				.createSelectionElement(Institution.class,
 						getConversationHolder(), formElement, "Institute",
 						entity.getInstitute(),
-						InstitutionSelectionElement.DEFAULT, style);
-		selection_superCollection = (CollectionSelectionElement) formFactory
-				.createSelectionElement(SelectionType.COLLECTION,
+						EntitySelectionElement.ALL, style);
+		selection_superCollection = formFactory
+				.createSelectionElement(Collection.class,
 						getConversationHolder(), formElement,
 						"Super Collection", entity.getSuperCollection(),
-						CollectionSelectionElement.DEFAULT, style);
+						EntitySelectionElement.ALL, style);
 	}
 
 	/*
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectionWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectionWizardPage.java
index cf909e549..9c9574b31 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectionWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectionWizardPage.java
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -55,7 +55,7 @@ public class CollectionWizardPage extends AbstractCdmEntityWizardPage<Collection
 	 */
 	/** {@inheritDoc} */
 	@Override
-	public AbstractCdmDetailElement createElement(ICdmFormElement rootElement) {
+	public AbstractCdmDetailElement<Collection> createElement(ICdmFormElement rootElement) {
 		CollectionDetailElement collectionDetailElement = (CollectionDetailElement) formFactory.createCdmDetailElement(DetailType.COLLECTION, rootElement, SWT.NULL);
 		collectionDetailElement.setEntity(entity);
 		return collectionDetailElement;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseDetailElement.java
index 8b4bca906..8422ed5d9 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseDetailElement.java
@@ -14,17 +14,18 @@ import org.eclipse.ui.forms.widgets.Section;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.facade.MethodNotSupportedByDerivedUnitTypeException;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.NameSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -44,7 +45,7 @@ public class DerivedUnitBaseDetailElement extends
 
 	private TextWithLabelElement text_catalogNumber;
 
-	private NameSelectionElement selection_storedUnder;
+	private EntitySelectionElement<TaxonNameBase> selection_storedUnder;
 
 	private TextWithLabelElement text_exsicatum;
 
@@ -54,8 +55,6 @@ public class DerivedUnitBaseDetailElement extends
 
 	private SourceCollectionDetailSection section_source;
 
-	private TextWithLabelElement text_collectorsNumber;
-
 	/**
 	 * <p>
 	 * Constructor for DerivedUnitBaseDetailElement.
@@ -98,10 +97,10 @@ public class DerivedUnitBaseDetailElement extends
 			// we ignore this
 			StoreUtil.info(e.getMessage());
 		}
-		selection_storedUnder = (NameSelectionElement) formFactory
-				.createSelectionElement(SelectionType.NAME,
+		selection_storedUnder = formFactory
+				.createSelectionElement(TaxonNameBase.class,
 						getConversationHolder(), formElement, "Stored Under",
-						entity.getStoredUnder(), NameSelectionElement.DEFAULT,
+						entity.getStoredUnder(), EntitySelectionElement.ALL,
 						style);
 
 		try {
@@ -117,14 +116,14 @@ public class DerivedUnitBaseDetailElement extends
 						EntityDetailType.SPECIMEN_COLLECTION,
 						getConversationHolder(), formElement, Section.TWISTIE);
 		section_duplicates
-				.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+				.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		section_duplicates.setEntity(entity);
 
 		section_source = (SourceCollectionDetailSection) formFactory
 				.createEntityDetailSection(
 						EntityDetailType.IDENTIFIABLE_SOURCE_COLLECTION,
 						getConversationHolder(), formElement, Section.TWISTIE);
-		section_source.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_source.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		section_source.setEntity(entity);
 	}
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseWizardPage.java
index 8542621b3..3524daad5 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseWizardPage.java
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -51,7 +51,7 @@ public class DerivedUnitBaseWizardPage extends AbstractCdmEntityWizardPage<Deriv
 	 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
 	 */
 	@Override
-	public AbstractCdmDetailElement createElement(ICdmFormElement rootElement) {
+	public AbstractCdmDetailElement<DerivedUnitFacade> createElement(ICdmFormElement rootElement) {
 		DerivedUnitBaseDetailElement detailElement = (DerivedUnitBaseDetailElement) formFactory.createCdmDetailElement(DetailType.DERIVED_UNIT, rootElement, SWT.NULL);
 		detailElement.setEntity(getEntity());		
 		return detailElement;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailElement.java
index 17c1cbf0b..937ee2113 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailElement.java
@@ -20,6 +20,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
@@ -119,22 +120,22 @@ public class DerivedUnitFacadeDetailElement extends AbstractCdmDetailElement<Der
 			DerivedUnitBase entity, int style) {
 		
 		section_general = (GeneralDetailSection) formFactory.createCdmDetailSection(DetailType.DERIVED_UNIT_GENERAL, getConversationHolder(), formElement, null, Section.TWISTIE | Section.EXPANDED);
-		section_general.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_general.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		addControl(section_general);
 		addElement(section_general);
 		
 		section_gatheringEvent = (GatheringEventDetailSection) formFactory.createCdmDetailSection(DetailType.GATHERING_EVENT, getConversationHolder(), formElement, null, Section.TWISTIE);
-		section_gatheringEvent.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_gatheringEvent.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		addControl(section_gatheringEvent);
 		addElement(section_gatheringEvent);
 		
 		section_fieldObservation = (FieldObservationDetailSection) formFactory.createCdmDetailSection(DetailType.FIELD_OBSERVATION, getConversationHolder(), formElement, null, Section.TWISTIE);
-		section_fieldObservation.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_fieldObservation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		addControl(section_fieldObservation);
 		addElement(section_fieldObservation);
 		
 		section_derivedUnitBase = (DerivedUnitBaseDetailSection) formFactory.createCdmDetailSection(DetailType.DERIVED_UNIT, getConversationHolder(), formElement, null, Section.TWISTIE);
-		section_derivedUnitBase.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_derivedUnitBase.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		addControl(section_derivedUnitBase);
 		addElement(section_derivedUnitBase);
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailSection.java
index c97bf105a..c099a4d20 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailSection.java
@@ -10,14 +10,13 @@
 
 package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
 /**
@@ -29,10 +28,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
  */
 public class DerivedUnitFacadeDetailSection extends AbstractCdmDetailSection<DerivedUnitBase> {
 	
-
-	private static final Logger logger = Logger
-			.getLogger(DerivedUnitFacadeDetailSection.class);
-
 	/**
 	 * <p>Constructor for DerivedUnitFacadeDetailSection.</p>
 	 *
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationDetailElement.java
index 6c6346183..7fdfd02f1 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationDetailElement.java
@@ -16,6 +16,7 @@ import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -49,14 +50,14 @@ public class DeterminationDetailElement extends AbstractCdmDetailElement<Derived
 				.createEntityDetailSection(
 						EntityDetailType.DETERMINATION_CURRENT,
 						getConversationHolder(), formElement, Section.EXPANDED);
-		section_currentDetermination.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_currentDetermination.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		section_currentDetermination.setEntity(entity);
 		
 		section_determinationHistory = (DeterminationHistoryDetailSection) formFactory
 											.createEntityDetailSection(
 													EntityDetailType.DETERMINATION_HISTORY,
 													getConversationHolder(), formElement, Section.TWISTIE);
-		section_determinationHistory.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
+		section_determinationHistory.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
 		section_determinationHistory.setEntity(entity);
 		
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationEventDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationEventDetailElement.java
index a8330fc88..92c0533da 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationEventDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationEventDetailElement.java
@@ -14,14 +14,13 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationModifier;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
-import eu.etaxonomy.taxeditor.ui.selection.TaxonBaseSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -37,7 +36,7 @@ public class DeterminationEventDetailElement extends
 
 	private TermComboElement<DeterminationModifier> combo_determinationModifier;
 	private CheckboxElement checkbox_preferredFlag;
-	private TaxonBaseSelectionElement selection_taxonBase;
+	private EntitySelectionElement<TaxonBase> selection_taxonBase;
 
 	// private TODO a set of references
 
@@ -92,10 +91,10 @@ public class DeterminationEventDetailElement extends
 	/** {@inheritDoc} */
 	@Override
 	public void createControls(ICdmFormElement element, int style) {
-		selection_taxonBase = (TaxonBaseSelectionElement) formFactory
-				.createSelectionElement(SelectionType.TAXON_BASE,
+		selection_taxonBase = formFactory
+				.createSelectionElement(TaxonBase.class,
 						getConversationHolder(), element, "Taxon", null,
-						TaxonSelectionElement.DEFAULT, style);
+						EntitySelectionElement.NOTHING, style);
 		
 
 		// TODO set of references
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationWizardPage.java
index 19edb2563..803e71355 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationWizardPage.java
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -51,7 +51,7 @@ public class FieldObservationWizardPage extends AbstractCdmEntityWizardPage<Deri
 	 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
 	 */
 	@Override
-	public AbstractCdmDetailElement createElement(ICdmFormElement rootElement) {
+	public AbstractCdmDetailElement<DerivedUnitFacade> createElement(ICdmFormElement rootElement) {
 		FieldObservationDetailElement detailElement = (FieldObservationDetailElement) formFactory.createCdmDetailElement(DetailType.FIELD_OBSERVATION, rootElement, SWT.NONE);
 		detailElement.setEntity(getEntity());
 		return detailElement;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailElement.java
index 7e6362585..38eabcf2e 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailElement.java
@@ -16,11 +16,11 @@ import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -107,7 +107,7 @@ public class GatheringEventDetailElement extends
 		section_collectingAreas = (CollectingAreasDetailSection) formFactory
 				.createEntityDetailSection(EntityDetailType.COLLECTING_AREA,
 						getConversationHolder(), formElement, Section.TWISTIE);
-		section_collectingAreas.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(
+		section_collectingAreas.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(
 				2, 1));
 		section_collectingAreas.setEntity(entity);
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventWizardPage.java
index 20afc0bb2..54dd833b1 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventWizardPage.java
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -51,7 +51,7 @@ public class GatheringEventWizardPage extends AbstractCdmEntityWizardPage<Derive
 	 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
 	 */
 	@Override
-	public AbstractCdmDetailElement createElement(ICdmFormElement rootElement) {
+	public AbstractCdmDetailElement<DerivedUnitFacade> createElement(ICdmFormElement rootElement) {
 		GatheringEventDetailElement detailElement = (GatheringEventDetailElement) formFactory.createCdmDetailElement(DetailType.GATHERING_EVENT, rootElement, SWT.NULL);
 		detailElement.setEntity(getEntity());
 		return detailElement;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GeneralDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GeneralDetailElement.java
index 0e2dcfb63..5951b23db 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GeneralDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GeneralDetailElement.java
@@ -11,8 +11,10 @@
 package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.LanguageString;
-import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
@@ -21,11 +23,8 @@ import eu.etaxonomy.taxeditor.ui.element.PointElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.CollectionSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * @author n.hoffmann
@@ -37,14 +36,14 @@ public class GeneralDetailElement extends
 
 	private ToggleableTextElement toggleableText_titleCache;
 
-	private NamedAreaSelectionElement selection_country;
+	private EntitySelectionElement<NamedArea> selection_country;
 	private LanguageStringWithLabelElement languageText_locality;
 	private PointElement element_point;
 	private NumberWithLabelElement number_elevation;
 	private TimePeriodElement element_date;
-	private AgentSelectionElement selection_collector;
+	private EntitySelectionElement<AgentBase> selection_collector;
 	private TextWithLabelElement text_collectingNumber;
-	private CollectionSelectionElement selection_collection;
+	private EntitySelectionElement<Collection> selection_collection;
 	private TextWithLabelElement text_barcode;
 
 	/**
@@ -70,9 +69,9 @@ public class GeneralDetailElement extends
 				formElement, "Title Cache", entity.getTitleCache(),
 				entity.isProtectedTitleCache(), style);
 
-		selection_country = formFactory.createNamedAreaSelectionElement(
-				formElement, getConversationHolder(), "Country",
-				entity.getCountry(), style);
+		selection_country = formFactory.createSelectionElement(NamedArea.class, getConversationHolder(),
+				formElement, "Country",
+				entity.getCountry(), EntitySelectionElement.NOTHING, style);
 		languageText_locality = formFactory
 				.createLanguageStringWithLabelElement(formElement, "Locality",
 						entity.getLocality(), style);		
@@ -83,18 +82,18 @@ public class GeneralDetailElement extends
 				entity.getAbsoluteElevation(), style);
 		element_date = formFactory.createTimePeriodElement(formElement, "Date",
 				entity.getGatheringPeriod(), style);
-		selection_collector = (AgentSelectionElement) formFactory
-				.createSelectionElement(SelectionType.AGENT,
+		selection_collector = formFactory
+				.createSelectionElement(AgentBase.class,
 						getConversationHolder(), formElement, "Collector",
-						entity.getCollector(), AgentSelectionElement.DEFAULT,
+						entity.getCollector(), EntitySelectionElement.ALL,
 						style);
 		text_collectingNumber = formFactory.createTextWithLabelElement(formElement,
 				"Collecting number", entity.getFieldNumber(), style);
-		selection_collection = (CollectionSelectionElement) formFactory
-				.createSelectionElement(SelectionType.COLLECTION,
+		selection_collection = formFactory
+				.createSelectionElement(Collection.class,
 						getConversationHolder(), formElement, "Collection",
 						entity.getCollection(),
-						CollectionSelectionElement.DEFAULT, style);
+						EntitySelectionElement.ALL, style);
 		text_barcode = formFactory.createTextWithLabelElement(formElement,
 				"Barcode", entity.getBarcode(), style);
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GeneralWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GeneralWizardPage.java
index 0919df87a..9b1224a0d 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GeneralWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GeneralWizardPage.java
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -50,7 +50,7 @@ public class GeneralWizardPage extends AbstractCdmEntityWizardPage<DerivedUnitFa
 	 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
 	 */
 	@Override
-	public AbstractCdmDetailElement createElement(ICdmFormElement rootElement) {
+	public AbstractCdmDetailElement<DerivedUnitFacade> createElement(ICdmFormElement rootElement) {
 		GeneralDetailElement detailElement = (GeneralDetailElement) formFactory.createCdmDetailElement(DetailType.DERIVED_UNIT_GENERAL, rootElement, SWT.NULL);
 		detailElement.setEntity(getEntity());
 		checkComplete();
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/NamedAreaDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/NamedAreaDetailElement.java
index 661d6c630..021e68273 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/NamedAreaDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/NamedAreaDetailElement.java
@@ -17,7 +17,7 @@ import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -31,7 +31,7 @@ import eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement;
 public class NamedAreaDetailElement extends
 		AbstractEntityCollectionElement<NamedArea> {
 
-	private NamedAreaSelectionElement selection_namedArea;
+	private EntitySelectionElement<NamedArea> selection_namedArea;
 
 	/**
 	 * <p>
@@ -79,9 +79,10 @@ public class NamedAreaDetailElement extends
 	 */
 	/** {@inheritDoc} */
 	@Override
-	public void createControls(ICdmFormElement element, int style) {
-		selection_namedArea = formFactory.createNamedAreaSelectionElement(
-				element, getConversationHolder(), "Area", null, style);
+	public void createControls(ICdmFormElement formElement, int style) {
+		selection_namedArea = formFactory.createSelectionElement(NamedArea.class, getConversationHolder(),
+				formElement, "Area",
+				null, EntitySelectionElement.NOTHING, style);
 	}
 
 	/*
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenCollectionDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenCollectionDetailElement.java
index c5ee04ebb..75c131ed0 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenCollectionDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenCollectionDetailElement.java
@@ -12,13 +12,13 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import org.eclipse.swt.events.SelectionListener;
 
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
 import eu.etaxonomy.cdm.model.occurrence.Specimen;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.DerivedUnitBaseSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -32,7 +32,7 @@ import eu.etaxonomy.taxeditor.ui.selection.DerivedUnitBaseSelectionElement;
 public class SpecimenCollectionDetailElement extends
 		AbstractEntityCollectionElement<Specimen> {
 
-	private DerivedUnitBaseSelectionElement selection_derivedUnit;
+	private EntitySelectionElement<DerivedUnitBase> selection_derivedUnit;
 
 	/**
 	 * <p>
@@ -82,10 +82,10 @@ public class SpecimenCollectionDetailElement extends
 	/** {@inheritDoc} */
 	@Override
 	public void createControls(ICdmFormElement element, int style) {
-		selection_derivedUnit = (DerivedUnitBaseSelectionElement) formFactory
-				.createSelectionElement(SelectionType.DERIVED_UNIT,
+		selection_derivedUnit = formFactory
+				.createSelectionElement(DerivedUnitBase.class,
 						getConversationHolder(), element, "Derived Unit", null,
-						DerivedUnitBaseSelectionElement.EDITABLE | DerivedUnitBaseSelectionElement.SELECTABLE, style);
+						EntitySelectionElement.EDITABLE | EntitySelectionElement.SELECTABLE, style);
 	}
 
 	/*
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/NomenclaturalReferenceDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/NomenclaturalReferenceDetailElement.java
index f56d11bd3..977e56d64 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/NomenclaturalReferenceDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/NomenclaturalReferenceDetailElement.java
@@ -10,15 +10,13 @@
 
 package eu.etaxonomy.taxeditor.ui.section.reference;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -32,9 +30,7 @@ import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
 public class NomenclaturalReferenceDetailElement extends
 		AbstractCdmDetailElement<TaxonNameBase> {
 
-	private static final Logger logger = Logger
-			.getLogger(NomenclaturalReferenceDetailElement.class);
-	private ReferenceSelectionElement selection_nomenclaturalReference;
+	private EntitySelectionElement<Reference> selection_nomenclaturalReference;
 	private TextWithLabelElement text_referenceDetail;
 
 	/**
@@ -60,11 +56,11 @@ public class NomenclaturalReferenceDetailElement extends
 	@Override
 	protected void createControls(ICdmFormElement formElement,
 			TaxonNameBase entity, int style) {
-		selection_nomenclaturalReference = (ReferenceSelectionElement) formFactory
-				.createSelectionElement(SelectionType.REFERENCE,
+		selection_nomenclaturalReference = formFactory
+				.createSelectionElement(Reference.class,
 						getConversationHolder(), formElement, "Reference",
-						entity.getNomenclaturalReference(),
-						ReferenceSelectionElement.DEFAULT, style);
+						(Reference) entity.getNomenclaturalReference(),
+						EntitySelectionElement.ALL, style);
 		text_referenceDetail = formFactory.createTextWithLabelElement(
 				formElement, "Reference Detail",
 				entity.getNomenclaturalMicroReference(), style);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceDetailElement.java
index 40f7c99e5..cf7035e83 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceDetailElement.java
@@ -17,6 +17,8 @@ import java.util.List;
 
 import org.eclipse.swt.SWT;
 
+import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
@@ -32,11 +34,8 @@ import eu.etaxonomy.taxeditor.ui.element.IExceptionHandler;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
 import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.InstitutionSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -64,13 +63,13 @@ public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElem
 	private TextWithLabelElement text_title;
 	private TextWithLabelElement text_volume;
 	private UriWithLabelElement text_uri;
-	private AgentSelectionElement selection_authorTeam;
+	private EntitySelectionElement<AgentBase> selection_authorTeam;
 	private TimePeriodElement element_timePeriod;
-	private ReferenceSelectionElement selection_inReference;
-	private InstitutionSelectionElement selection_institution;
+	private EntitySelectionElement<Reference> selection_inReference;
+	private EntitySelectionElement<Institution> selection_institution;
 	private EnumComboElement<ReferenceType> combo_referenceType;
 
-	private ReferenceSelectionElement selection_inSeries;
+	private EntitySelectionElement<Reference> selection_inSeries;
 
 	/**
 	 * <p>
@@ -116,11 +115,11 @@ public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElem
 				"Title", entity.getTitle(), style);
 
 		// author team
-		selection_authorTeam = (AgentSelectionElement) formFactory
-				.createSelectionElement(SelectionType.AGENT,
+		selection_authorTeam = formFactory
+				.createSelectionElement(AgentBase.class,
 						getConversationHolder(), formElement, "Author",
 						AuthorHelper.getAuthor(entity.getAuthorTeam()),
-						AgentSelectionElement.DEFAULT, style);
+						EntitySelectionElement.ALL, style);
 
 		ReferenceType referenceType = entity.getType();
 
@@ -212,11 +211,11 @@ public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElem
 		}
 
 		if (createInReferenceWidget) {
-			selection_inReference = (ReferenceSelectionElement) formFactory
-					.createSelectionElement(SelectionType.REFERENCE,
+			selection_inReference = formFactory
+					.createSelectionElement(Reference.class,
 							getConversationHolder(), element, label,
 							reference.getInReference(),
-							ReferenceSelectionElement.DEFAULT, style);
+							EntitySelectionElement.ALL, style);
 		}
 	}
 
@@ -275,20 +274,20 @@ public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElem
 
 		if (referenceType.equals(ReferenceType.Report)) {
 			// institution
-			selection_institution = (InstitutionSelectionElement) formFactory
-					.createSelectionElement(SelectionType.INSTITUTION,
+			selection_institution = formFactory
+					.createSelectionElement(Institution.class,
 							getConversationHolder(), element, "Institution",
 							reference.getInstitution(),
-							InstitutionSelectionElement.DEFAULT, style);
+							EntitySelectionElement.ALL, style);
 		}
 
 		if (referenceType.equals(ReferenceType.Thesis)) {
 			// school
-			selection_institution = (InstitutionSelectionElement) formFactory
-					.createSelectionElement(SelectionType.INSTITUTION,
+			selection_institution = formFactory
+					.createSelectionElement(Institution.class,
 							getConversationHolder(), element, "School",
 							reference.getSchool(),
-							InstitutionSelectionElement.DEFAULT, style);
+							EntitySelectionElement.ALL, style);
 		}
 
 		if (referenceType.equals(ReferenceType.Proceedings)) {
@@ -339,11 +338,11 @@ public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElem
 	private void createPrintedUnitControls(ICdmFormElement element,
 			ReferenceType referenceType, Reference reference, int style) {
 		// in series
-		selection_inSeries = (ReferenceSelectionElement) formFactory
-				.createSelectionElement(SelectionType.REFERENCE,
+		selection_inSeries = formFactory
+				.createSelectionElement(Reference.class,
 						getConversationHolder(), element, "In Series",
-						reference.getInSeries(),
-						ReferenceSelectionElement.DEFAULT, style);
+						(Reference) reference.getInSeries(),
+						EntitySelectionElement.ALL, style);
 
 		// editor
 		text_editor = formFactory.createTextWithLabelElement(element, "Editor",
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceWizardPage.java
index 310ac175f..bfd30b9e7 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceWizardPage.java
@@ -16,10 +16,10 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IExceptionHandler;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -48,7 +48,7 @@ public class ReferenceWizardPage extends AbstractCdmEntityWizardPage<Reference>
 	 * @see eu.etaxonomy.taxeditor.forms.CdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
 	 */
 	/** {@inheritDoc} */
-	public AbstractCdmDetailElement createElement(ICdmFormElement rootElement){
+	public AbstractCdmDetailElement<Reference> createElement(ICdmFormElement rootElement){
 		ReferenceDetailElement referenceElement = (ReferenceDetailElement) formFactory.createCdmDetailElement(DetailType.REFERENCEBASE, rootElement, SWT.NULL);
 		referenceElement.addExceptionHandler(this);
 		referenceElement.setEntity(entity);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractOriginalSourceElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractOriginalSourceElement.java
index 82114879b..e004ba3f3 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractOriginalSourceElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractOriginalSourceElement.java
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.ui.section.supplemental;
 
-import org.apache.log4j.Logger;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
@@ -27,8 +26,6 @@ import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
  * @version 1.0
  */
 public abstract class AbstractOriginalSourceElement<T extends OriginalSourceBase> extends AbstractReferencedEntityElement<T> {
-	private static final Logger logger = Logger
-			.getLogger(AbstractOriginalSourceElement.class);
 	protected TextWithLabelElement text_idInSource;
 	protected TextWithLabelElement text_idNamespace;
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractReferencedEntityElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractReferencedEntityElement.java
index 1d3cb6d4e..c77b5379e 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractReferencedEntityElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractReferencedEntityElement.java
@@ -14,13 +14,13 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -34,7 +34,7 @@ import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
 public abstract class AbstractReferencedEntityElement<T extends ReferencedEntityBase>
 		extends AbstractEntityCollectionElement<T> {
 
-	protected ReferenceSelectionElement selection_reference;
+	protected EntitySelectionElement<Reference> selection_reference;
 	protected TextWithLabelElement text_referenceDetail;
 
 	protected TextWithLabelElement text_originaleNameString;
@@ -77,10 +77,10 @@ public abstract class AbstractReferencedEntityElement<T extends ReferencedEntity
 	/** {@inheritDoc} */
 	@Override
 	public void createControls(ICdmFormElement formElement, int style) {
-		selection_reference = (ReferenceSelectionElement) formFactory
-				.createSelectionElement(SelectionType.REFERENCE,
+		selection_reference = formFactory
+				.createSelectionElement(Reference.class,
 						getConversationHolder(), formElement, "Reference",
-						null, ReferenceSelectionElement.DEFAULT, style);
+						null, EntitySelectionElement.ALL, style);
 		text_referenceDetail = formFactory.createTextWithLabelElement(
 				formElement, "Reference Detail", null, SWT.NULL);
 		if (hasOriginalNameString)
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/CreditElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/CreditElement.java
index 2837330a4..28ad8a039 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/CreditElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/CreditElement.java
@@ -5,14 +5,14 @@ package eu.etaxonomy.taxeditor.ui.section.supplemental;
 
 import org.eclipse.swt.events.SelectionListener;
 
+import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.Credit;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -25,7 +25,7 @@ import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
  */
 public class CreditElement extends AbstractEntityCollectionElement<Credit> {
 
-	private AgentSelectionElement agentSelection;
+	private EntitySelectionElement<AgentBase> agentSelection;
 	private TextWithLabelElement text;
 
 	/**
@@ -62,10 +62,10 @@ public class CreditElement extends AbstractEntityCollectionElement<Credit> {
 	/** {@inheritDoc} */
 	@Override
 	public void createControls(ICdmFormElement element, int style) {
-		agentSelection = (AgentSelectionElement) formFactory
-				.createSelectionElement(SelectionType.AGENT,
+		agentSelection = formFactory
+				.createSelectionElement(AgentBase.class,
 						getConversationHolder(), this, "Agent", null,
-						AgentSelectionElement.DEFAULT, style);
+						EntitySelectionElement.ALL, style);
 		text = formFactory.createMultilineTextWithLabel(this, "Text", 100,
 				style);
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/ExtensionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/ExtensionElement.java
index c972967f5..184aa6f75 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/ExtensionElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/ExtensionElement.java
@@ -12,6 +12,7 @@ import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 
@@ -49,7 +50,7 @@ public class ExtensionElement extends AbstractEntityCollectionElement<Extension>
 	public void createControls(ICdmFormElement element, int style) {
 		combo_extensionType = formFactory.createTermComboElement(ExtensionType.class, this, null, null, style);
 		text_extensionValue = formFactory.createTextWithLabelElement(element, null, null, style);
-		text_extensionValue.getLayoutComposite().setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		text_extensionValue.getLayoutComposite().setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 	}
 
 	/* (non-Javadoc)
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/RightsElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/RightsElement.java
index 54d0a65ec..376afb8ec 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/RightsElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/RightsElement.java
@@ -13,10 +13,8 @@ import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -29,6 +27,10 @@ import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
  */
 public class RightsElement extends AbstractEntityCollectionElement<Rights> {
 
+	private TermComboElement<RightsTerm> combo_rightsType;
+	private EntitySelectionElement<AgentBase> selection_agent;
+	private TextWithLabelElement text;
+	
 	/**
 	 * <p>
 	 * Constructor for RightsElement.
@@ -53,9 +55,6 @@ public class RightsElement extends AbstractEntityCollectionElement<Rights> {
 		super(cdmFormFactory, formElement, element, removeListener, null, style);
 	}
 
-	private TermComboElement<RightsTerm> combo_rightsType;
-	private AbstractSelectionElement<AgentBase> selection_agent;
-	private TextWithLabelElement text;
 
 	/*
 	 * (non-Javadoc)
@@ -70,8 +69,8 @@ public class RightsElement extends AbstractEntityCollectionElement<Rights> {
 		combo_rightsType = formFactory.createTermComboElement(
 				RightsTerm.class, this, "Rights Type", null, style);
 		selection_agent = formFactory.createSelectionElement(
-				SelectionType.AGENT, getConversationHolder(), this, "Agent",
-				null, AgentSelectionElement.DEFAULT, style);
+				AgentBase.class, getConversationHolder(), this, "Agent",
+				null, EntitySelectionElement.ALL, style);
 		text = formFactory.createMultilineTextWithLabel(this, "Text", 100,
 				style);
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/VersionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/VersionElement.java
index ce39b3b8f..353a1dae3 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/VersionElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/VersionElement.java
@@ -21,6 +21,7 @@ import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 
 /**
@@ -50,10 +51,10 @@ public class VersionElement extends AbstractCdmFormElement implements IEntityEle
 		super(formFactory, parentElement);
 			
 		label_created = formFactory.createLabel(getLayoutComposite(), null, style);
-		label_created.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		label_created.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 
 		label_updated = formFactory.createLabel(getLayoutComposite(), null, style);
-		label_updated.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+		label_updated.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
 		
 		
 		setEntity(entity);
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailElement.java
index f32b84e2b..ad76f3bf5 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailElement.java
@@ -15,15 +15,15 @@ import java.util.Arrays;
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
 
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -40,7 +40,7 @@ public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElem
 
 	private CheckboxElement checkbox_useNameCache;
 
-	private ReferenceSelectionElement selection_secundum;
+	private EntitySelectionElement<Reference> selection_secundum;
 
 	private TextWithLabelElement text_appendedPhrase;
 
@@ -75,10 +75,10 @@ public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElem
 				"Title Cache", entity.getTitleCache(),
 				entity.isProtectedTitleCache(), style);
 
-		selection_secundum = (ReferenceSelectionElement) formFactory
-		.createSelectionElement(SelectionType.REFERENCE,
+		selection_secundum = formFactory
+		.createSelectionElement(Reference.class,
 				getConversationHolder(), formElement, "Secundum",
-				entity.getSec(), ReferenceSelectionElement.DEFAULT,
+				entity.getSec(), EntitySelectionElement.ALL,
 				style);
 		
 		text_appendedPhrase = formFactory.createTextWithLabelElement(
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonDetailElement.java
index 9d6b52cdd..b28944f2a 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonDetailElement.java
@@ -16,9 +16,8 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * @author n.hoffmann
@@ -27,7 +26,7 @@ import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
  */
 public class TaxonDetailElement extends AbstractEntityCollectionElement<Taxon> {
 
-	private TaxonSelectionElement selection_taxon;
+	private EntitySelectionElement<Taxon> selection_taxon;
 
 	/**
 	 * @param formFactory
@@ -63,10 +62,10 @@ public class TaxonDetailElement extends AbstractEntityCollectionElement<Taxon> {
 	 */
 	@Override
 	public void createControls(ICdmFormElement element, int style) {
-		selection_taxon = (TaxonSelectionElement) formFactory
-				.createSelectionElement(SelectionType.TAXON,
+		selection_taxon = formFactory
+				.createSelectionElement(Taxon.class,
 						getConversationHolder(), element, "Taxon", null,
-						TaxonSelectionElement.NOTHING, style);
+						EntitySelectionElement.NOTHING, style);
 	}
 
 	/*
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonRelationshipDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonRelationshipDetailElement.java
index eb559b0e8..7b04da49e 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonRelationshipDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonRelationshipDetailElement.java
@@ -19,9 +19,8 @@ import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * @author n.hoffmann
@@ -32,7 +31,7 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
 
 	private TermComboElement<TaxonRelationshipTypeInverseContainer> combo_taxonRelationshipType;
 	
-	private TaxonSelectionElement selection_relatedTaxon;
+	private EntitySelectionElement<Taxon> selection_relatedTaxon;
 	
 	public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
 			ICdmFormElement formElement) {
@@ -47,10 +46,10 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
 				formElement, "Relationship Type", 
 				getTaxonRelationshipTypeInverseContainer(), style);
 		combo_taxonRelationshipType.setEnabled(false);
-		selection_relatedTaxon = (TaxonSelectionElement) formFactory.createSelectionElement(
-				SelectionType.TAXON, getConversationHolder(), 
+		selection_relatedTaxon = formFactory.createSelectionElement(
+				Taxon.class, getConversationHolder(), 
 				formElement, "Related Taxon", getRelatedTaxon(), 
-				TaxonSelectionElement.SELECTABLE, style);
+				EntitySelectionElement.SELECTABLE, style);
 	}
 	
 	private Taxon getRelatedTaxon() {
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/GroupsByUserDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/GroupsByUserDetailElement.java
index 7b29f2f31..061fb8afa 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/GroupsByUserDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/GroupsByUserDetailElement.java
@@ -6,9 +6,8 @@ import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.GroupSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * 
@@ -19,7 +18,7 @@ import eu.etaxonomy.taxeditor.ui.selection.GroupSelectionElement;
 public class GroupsByUserDetailElement extends
 		AbstractEntityCollectionElement<Group> {
 
-	private GroupSelectionElement selection_group;
+	private EntitySelectionElement<Group> selection_group;
 
 	/**
 	 * @param formFactory
@@ -55,10 +54,10 @@ public class GroupsByUserDetailElement extends
 	 */
 	@Override
 	public void createControls(ICdmFormElement element, int style) {
-		selection_group = (GroupSelectionElement) formFactory
-				.createSelectionElement(SelectionType.GROUP,
+		selection_group = formFactory
+				.createSelectionElement(Group.class,
 						getConversationHolder(), element, "Group", getEntity(),
-						GroupSelectionElement.DEFAULT, style);
+						EntitySelectionElement.NOTHING, style);
 	}
 
 	/*
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailElement.java
index 05ac8a62c..ad14db124 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailElement.java
@@ -3,18 +3,15 @@
  */
 package eu.etaxonomy.taxeditor.ui.section.user;
 
-import eu.etaxonomy.cdm.api.service.IUserService;
+import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType;
-import eu.etaxonomy.taxeditor.ui.password.EditPasswordElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.PersonSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * @author n.hoffmann
@@ -23,9 +20,8 @@ import eu.etaxonomy.taxeditor.ui.selection.PersonSelectionElement;
 public class UserDetailElement extends AbstractCdmDetailElement<User> {
 
 	private TextWithLabelElement text_username;
-	private EditPasswordElement element_editPassword;
 	private TextWithLabelElement text_emailAdress;
-	private PersonSelectionElement selection_person;
+	private EntitySelectionElement<Person> selection_person;
 	private CheckboxElement checkbox_credentialsNonExpired;
 	private CheckboxElement checkbox_enabled;
 	private CheckboxElement checkbox_accountNonLocked;
@@ -50,7 +46,7 @@ public class UserDetailElement extends AbstractCdmDetailElement<User> {
 				"Username", entity.getUsername(), style);
 
 		if (userIsAuthenticated() || CdmStore.getLoginManager().isAdmin()) {
-			element_editPassword = formFactory.createEditPasswordElement(
+			formFactory.createEditPasswordElement(
 					formElement, "Change Password", getConversationHolder(),
 					entity, style);
 		}
@@ -58,10 +54,13 @@ public class UserDetailElement extends AbstractCdmDetailElement<User> {
 		text_emailAdress = formFactory.createTextWithLabelElement(formElement,
 				"Email Adress", entity.getEmailAddress(), style);
 
-		selection_person = (PersonSelectionElement) formFactory
-				.createSelectionElement(SelectionType.PERSON,
-						getConversationHolder(), formElement, "Person",
-						entity.getPerson(), PersonSelectionElement.DEFAULT,
+		selection_person = formFactory
+				.createSelectionElement(Person.class,
+						getConversationHolder(), 
+						formElement, 
+						"Person",
+						entity.getPerson(), 
+						EntitySelectionElement.EDITABLE | EntitySelectionElement.SELECTABLE,
 						style);
 
 		checkbox_accountNonExpired = formFactory.createCheckbox(formElement,
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailWizardPage.java
index e4c01f56a..3c82fbe95 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailWizardPage.java
@@ -9,8 +9,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -29,7 +29,7 @@ public class UserDetailWizardPage extends AbstractCdmEntityWizardPage<User> {
 	 * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement)
 	 */
 	@Override
-	public AbstractCdmDetailElement createElement(ICdmFormElement rootElement) {
+	public AbstractCdmDetailElement<User> createElement(ICdmFormElement rootElement) {
 		UserDetailElement userElement = (UserDetailElement) formFactory.createCdmDetailElement(DetailType.USER, rootElement, SWT.NULL);
 		userElement.setEntity(getEntity());
 		return userElement;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/DefinedTermDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/DefinedTermDetailSection.java
index f9c065476..1e3b307c8 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/DefinedTermDetailSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/DefinedTermDetailSection.java
@@ -26,9 +26,6 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
  */
 public class DefinedTermDetailSection<T extends DefinedTermBase> extends AbstractCdmDetailSection<T> {
 
-
-	private Class definedTermClass;
-
 	/**
 	 * @param formFactory
 	 * @param definedTermClass 
@@ -38,7 +35,7 @@ public class DefinedTermDetailSection<T extends DefinedTermBase> extends Abstrac
 	 * @param style
 	 */
 	public DefinedTermDetailSection(CdmFormFactory formFactory,
-			Class definedTermClass, ConversationHolder conversation, ICdmFormElement parentElement,
+			Class<T> definedTermClass, ConversationHolder conversation, ICdmFormElement parentElement,
 			ISelectionProvider selectionProvider, int style) {
 		super(formFactory, definedTermClass, conversation, parentElement, selectionProvider, style);
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailElement.java
index 1cbaa5c96..de79af502 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailElement.java
@@ -11,10 +11,7 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 
 import java.net.URISyntaxException;
 
-import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;
-import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/AbstractSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/AbstractSelectionElement.java
deleted file mode 100644
index 23bed12bf..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/AbstractSelectionElement.java
+++ /dev/null
@@ -1,430 +0,0 @@
-/**
- * 
- */
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
-import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
-import eu.etaxonomy.taxeditor.model.ImageResources;
-import eu.etaxonomy.taxeditor.preference.Resources;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
-import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
-import eu.etaxonomy.taxeditor.ui.element.ILabeledElement;
-import eu.etaxonomy.taxeditor.ui.element.ISelectable;
-import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
-import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
-
-/**
- * <p>
- * Abstract AbstractSelectionElement class.
- * </p>
- * 
- * @author n.hoffmann
- * @created Nov 17, 2009
- * @version 1.0
- * @param <T>
- */
-public abstract class AbstractSelectionElement<T> extends
-		AbstractCdmFormElement implements SelectionListener,
-		IEnableableFormElement, ISelectableElement, IEntityElement<T>,
-		ILabeledElement, IConversationEnabled, ISelectable {
-
-	/**
-	 * bitmask to set
-	 */
-	public static final int NOTHING = 0; // 000
-	public static final int EDITABLE = 1 << 0; // 001
-	public static final int DELETABLE = 1 << 1; // 010
-	public static final int SELECTABLE = 1 << 2; // 100
-	public static final int ALL = (int) Math.pow(2, 3); // 111
-
-	protected T entity;
-
-	protected Label label;
-	protected Label text;
-	protected Button button_selection;
-
-	private SelectionArbitrator selectionArbitrator;
-
-	protected Button button_edit;
-
-	private final String labelString;
-
-	private Composite selectableComposite;
-
-	private Button button_remove;
-
-	private final boolean isEditable;
-
-	private final boolean isDeletable;
-
-	private final ConversationHolder conversation;
-
-	/**
-	 * <p>
-	 * Constructor for AbstractSelectionElement.
-	 * </p>
-	 * 
-	 * @param formFactory
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            TODO
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param entity
-	 *            a T object.
-	 * @param isEditable
-	 *            a boolean.
-	 * @param isSelectable
-	 *            a boolean.
-	 * @param isDeletable
-	 *            a boolean.
-	 * @param style
-	 *            a int.
-	 * @param <T>
-	 *            a T object.
-	 */
-	public AbstractSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, T entity, int mode, int style) {
-		super(formFactory, parentElement);
-
-		this.isEditable = (mode & EDITABLE) == EDITABLE;
-		this.isDeletable = (mode & DELETABLE) == DELETABLE;
-
-		this.labelString = labelString;
-
-		this.conversation = conversation;
-
-		if (((mode & SELECTABLE) == SELECTABLE)
-				&& formFactory.getSelectionProvider() != null) {
-			selectionArbitrator = formFactory.createSelectionArbitrator(this);
-		}
-
-		createControls(getLayoutComposite(), SWT.NULL);
-
-		setEntity(entity);
-	}
-
-	private void createControls(Composite parent, int style) {
-
-		label = formFactory.createLabel(getLayoutComposite(), labelString,
-				SWT.NULL);
-
-		addControl(label);
-
-		selectableComposite = formFactory.createComposite(getLayoutComposite());
-
-		int columns = 2;
-		if (isEditable) {
-			columns += 1;
-		}
-		if (isDeletable) {
-			columns += 1;
-		}
-
-		selectableComposite.setLayout(CdmFormFactory.LAYOUT(columns, false));
-		selectableComposite.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
-
-		addControl(selectableComposite);
-
-		text = formFactory.createLabel(selectableComposite, null, SWT.WRAP);
-		addControl(text);
-
-		text.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
-		text.setBackground(StoreUtil
-				.getColor(Resources.COLOR_TEXT_DISABLED_BACKGROUND));
-
-		button_selection = formFactory.createButton(selectableComposite, null,
-				SWT.PUSH);
-		button_selection.setImage(ImageResources
-				.getImage(ImageResources.BROWSE_ICON));
-		button_selection.setToolTipText("Browse existing");
-		
-		addControl(button_selection);
-		button_selection.addSelectionListener(this);
-
-		if (isEditable) {
-			button_edit = formFactory.createButton(selectableComposite, null,
-					SWT.PUSH);
-			button_edit.setImage(ImageResources
-					.getImage(ImageResources.EDIT_ICON));
-			button_edit.setToolTipText("Edit");
-			addControl(button_edit);
-			button_edit.addSelectionListener(new EditListener(this));
-		}
-
-		if (isDeletable) {
-			button_remove = formFactory.createButton(selectableComposite, null,
-					SWT.PUSH);
-			button_remove.setImage(ImageResources
-					.getImage(ImageResources.TRASH_ICON));
-			button_remove.setToolTipText("Remove");
-			addControl(button_remove);
-			button_remove.addSelectionListener(new DeleteListener(this));
-		}
-	}
-
-	/**
-	 * Return the selected object
-	 * 
-	 * @return a T object.
-	 */
-	public T getSelection() {
-		return entity;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
-	 */
-	/** {@inheritDoc} */
-	@Override
-	public void setEnabled(boolean enabled) {
-		button_selection.setEnabled(enabled);
-		if (isEditable) {
-			button_edit.setEnabled(enabled && entity != null);
-		}
-	}
-
-	/**
-	 * <p>
-	 * setSelectionInternal
-	 * </p>
-	 * 
-	 * @param selection
-	 *            a T object.
-	 */
-	protected void setSelectionInternal(T selection) {
-		if (selection != null && !selection.equals(this.entity)) {
-			setEntity(selection);
-			firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
-		}
-	}
-
-	/**
-	 * <p>
-	 * Setter for the field <code>entity</code>.
-	 * </p>
-	 * 
-	 * @param selection
-	 *            a T object.
-	 */
-	public void setEntity(T selection) {
-		this.entity = selection;
-		updateElement();
-	}
-
-	/**
-	 * Updates this elements view
-	 */
-	protected void updateElement() {
-		String title = CdmUtils.Nz(getTitle());
-		// we have to duplicate ampersands otherwise they are treated as
-		// mnenomic (see Label.setText() documentation)
-		title = title.replace("&", "&&");
-		text.setText(title); // title can be null
-		if (isEditable) {
-			button_edit.setEnabled(entity != null);
-		}
-	}
-
-	/**
-	 * <p>
-	 * updateFromWizard
-	 * </p>
-	 */
-	protected void updateFromWizard() {
-		updateElement();
-		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
-	}
-
-	/**
-	 * <p>
-	 * getTitle
-	 * </p>
-	 * 
-	 * @return a {@link java.lang.String} object.
-	 */
-	protected String getTitle() {
-		if (entity != null && entity instanceof IIdentifiableEntity) {
-			return ((IIdentifiableEntity) entity).getTitleCache();
-		}
-		return "";
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void setSelected(boolean selected) {
-		setBackground(selected ? SELECTED : getPersistentBackground());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see eu.etaxonomy.taxeditor.forms.IEntityElement#getEntity()
-	 */
-	/**
-	 * <p>
-	 * Getter for the field <code>entity</code>.
-	 * </p>
-	 * 
-	 * @return a T object.
-	 */
-	@Override
-	public T getEntity() {
-		return entity;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see eu.etaxonomy.taxeditor.forms.section.cdmdetail.ISelectableElement#
-	 * getSelectionArbitrator()
-	 */
-	/**
-	 * <p>
-	 * Getter for the field <code>selectionArbitrator</code>.
-	 * </p>
-	 * 
-	 * @return a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
-	 *         object.
-	 */
-	@Override
-	public SelectionArbitrator getSelectionArbitrator() {
-		return selectionArbitrator;
-	}
-
-	/**
-	 * Convenient access to current shell
-	 * 
-	 * @return a {@link org.eclipse.swt.widgets.Shell} object.
-	 */
-	protected Shell getShell() {
-		return getLayoutComposite().getShell();
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void setIrrelevant(boolean irrelevant) {
-		String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
-				: Resources.COLOR_TEXT_DISABLED_BACKGROUND;
-
-		Color color = StoreUtil.getColor(colorId);
-		text.setBackground(color);
-	}
-
-	private class DeleteListener extends SelectionAdapter {
-
-		private final AbstractSelectionElement<T> selectionElement;
-
-		public DeleteListener(AbstractSelectionElement<T> selectionElement) {
-			this.selectionElement = selectionElement;
-		}
-
-		@Override
-		public void widgetSelected(SelectionEvent e) {
-			setEntity(null);
-			firePropertyChangeEvent(new CdmPropertyChangeEvent(
-					selectionElement, null));
-		}
-	}
-
-	private class EditListener extends SelectionAdapter {
-
-		private final AbstractSelectionElement<T> selectionElement;
-
-		public EditListener(AbstractSelectionElement<T> selectionElement) {
-			this.selectionElement = selectionElement;
-		}
-
-		/** {@inheritDoc} */
-		@Override
-		public void widgetSelected(SelectionEvent e) {
-			WizardDialog dialog = new WizardDialog(selectionElement.getShell(),
-					new EditFromSelectionWizard(selectionElement));
-			if (dialog.open() == IStatus.OK) {
-				selectionElement.updateFromWizard();
-			}
-		}
-	}
-
-	// not used
-	/** {@inheritDoc} */
-	@Override
-	public void widgetDefaultSelected(SelectionEvent e) {
-	}
-
-	/**
-	 * <p>
-	 * getConversationHolder
-	 * </p>
-	 * 
-	 * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *         object.
-	 */
-	@Override
-	public ConversationHolder getConversationHolder() {
-		return conversation;
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void setBackground(Color color) {
-		label.setBackground(color);
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void setLabel(String labelString) {
-		if (label != null) {
-			label.setText(labelString);
-		}
-	}
-
-	/**
-	 * <p>
-	 * Getter for the field <code>label</code>.
-	 * </p>
-	 * 
-	 * @return a {@link java.lang.String} object.
-	 */
-	@Override
-	public String getLabel() {
-		if (label != null) {
-			return label.getText();
-		}
-		return null;
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void update(CdmDataChangeMap changeEvents) {
-	}
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/AgentSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/AgentSelectionElement.java
deleted file mode 100644
index 09912630e..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/AgentSelectionElement.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.agent.AgentBase;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.AgentSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * AgentSelectionElement class.
- * </p>
- * 
- * @author n.hoffmann
- * @created Jun 22, 2010
- * @version 1.0
- */
-public class AgentSelectionElement extends AbstractSelectionElement<AgentBase> {
-
-	public static final int DEFAULT = EDITABLE | SELECTABLE | DELETABLE;
-
-	/**
-	 * <p>
-	 * Constructor for AgentSelectionElement.
-	 * </p>
-	 * 
-	 * @param formFactory
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param entity
-	 *            a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
-	 * @param style
-	 *            a int.
-	 */
-	public AgentSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, AgentBase entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		AgentBase newSelection = AgentSelectionDialog.select(getShell(),
-				getConversationHolder(), entity);
-		setSelectionInternal(newSelection);
-	}
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/ClassificationSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/ClassificationSelectionElement.java
deleted file mode 100644
index b438fb8e8..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/ClassificationSelectionElement.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.taxon.Classification;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.ClassificationSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * ClassificationSelectionElement class.
- * </p>
- * 
- * @author n.hoffmann
- * @created Sep 27, 2010
- * @version 1.0
- */
-public class ClassificationSelectionElement extends
-		AbstractSelectionElement<Classification> {
-
-	public static final int DEFAULT = DELETABLE;
-
-	/**
-	 * <p>
-	 * Constructor for ClassificationSelectionElement.
-	 * </p>
-	 * 
-	 * @param formFactory
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param entity
-	 *            a {@link eu.etaxonomy.cdm.model.taxon.TaxonomicTree} object.
-	 * @param style
-	 *            a int.
-	 */
-	public ClassificationSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, Classification entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		Classification newSelection = ClassificationSelectionDialog.select(
-				getShell(), getConversationHolder());
-		setSelectionInternal(newSelection);
-	}
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/CollectionSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/CollectionSelectionElement.java
deleted file mode 100644
index 952fe1271..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/CollectionSelectionElement.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.occurrence.Collection;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.CollectionSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * CollectionSelectionElement class.
- * </p>
- * 
- * @author n.hoffmann
- * @created Oct 13, 2010
- * @version 1.0
- */
-public class CollectionSelectionElement extends
-		AbstractSelectionElement<Collection> {
-
-	public static final int DEFAULT = EDITABLE | SELECTABLE | DELETABLE;
-
-	/**
-	 * <p>
-	 * Constructor for CollectionSelectionElement.
-	 * </p>
-	 * 
-	 * @param formFactory
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param entity
-	 *            a {@link eu.etaxonomy.cdm.model.occurrence.Collection} object.
-	 * @param style
-	 *            a int.
-	 */
-	public CollectionSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, Collection entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		Collection newSelection = CollectionSelectionDialog.select(getShell(),
-				getConversationHolder(), getEntity());
-		setSelectionInternal(newSelection);
-	}
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/DerivedUnitBaseSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/DerivedUnitBaseSelectionElement.java
deleted file mode 100644
index 36bb9e363..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/DerivedUnitBaseSelectionElement.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.DerivedUnitSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * DerivedUnitBaseSelectionElement class.
- * </p>
- * 
- * @author n.hoffmann
- * @created Jun 17, 2010
- * @version 1.0
- */
-public class DerivedUnitBaseSelectionElement extends
-		AbstractSelectionElement<DerivedUnitBase> {
-
-	public static final int DEFAULT = EDITABLE | SELECTABLE | DELETABLE;
-
-	/**
-	 * <p>
-	 * Constructor for DerivedUnitBaseSelectionElement.
-	 * </p>
-	 * 
-	 * @param formFactory
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param entity
-	 *            a {@link eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase}
-	 *            object.
-	 * @param style
-	 *            a int.
-	 */
-	public DerivedUnitBaseSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, DerivedUnitBase entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		DerivedUnitBase newSelection = DerivedUnitSelectionDialog.select(
-				getShell(), getConversationHolder(), entity);
-		setSelectionInternal(newSelection);
-	}
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java
index e49677d34..5319bb240 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java
@@ -55,7 +55,7 @@ import eu.etaxonomy.taxeditor.ui.section.user.UserDetailWizardPage;
 public class EditFromSelectionWizard extends Wizard implements
 		SelectionListener {
 
-	private final AbstractSelectionElement selectionElement;
+	private final EntitySelectionElement selectionElement;
 
 	/**
 	 * <p>
@@ -64,10 +64,10 @@ public class EditFromSelectionWizard extends Wizard implements
 	 * 
 	 * @param selectionElement
 	 *            a
-	 *            {@link eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement}
+	 *            {@link eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement}
 	 *            object.
 	 */
-	public EditFromSelectionWizard(AbstractSelectionElement selectionElement) {
+	public EditFromSelectionWizard(EntitySelectionElement selectionElement) {
 		this.selectionElement = selectionElement;
 		this.setWindowTitle("Edit Entity");
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java
new file mode 100644
index 000000000..ec948a901
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java
@@ -0,0 +1,446 @@
+/**
+ * 
+ */
+package eu.etaxonomy.taxeditor.ui.selection;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.ICdmBase;
+import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
+import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.SelectionDialogFactory;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
+import eu.etaxonomy.taxeditor.ui.element.ILabeledElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
+
+/**
+ * <p>
+ * Abstract AbstractSelectionElement class.
+ * </p>
+ * 
+ * @author n.hoffmann
+ * @created Nov 17, 2009
+ * @version 1.0
+ * @param <T>
+ */
+public class EntitySelectionElement<T extends ICdmBase> extends
+		AbstractCdmFormElement implements SelectionListener,
+		IEnableableFormElement, ISelectableElement, IEntityElement<T>,
+		ILabeledElement, IConversationEnabled, ISelectable {
+
+	/**
+	 * Bitmask for configuring functionality of selection element
+	 */
+	public static final int NOTHING = 0; // 000
+	public static final int EDITABLE = 1 << 0; // 001
+	public static final int DELETABLE = 1 << 1; // 010
+	public static final int SELECTABLE = 1 << 2; // 100
+	public static final int ALL = EDITABLE | DELETABLE | SELECTABLE; // 111
+
+	protected T entity;
+
+	protected Label label;
+	protected Label text;
+	protected Button button_selection;
+
+	private SelectionArbitrator selectionArbitrator;
+
+	protected Button button_edit;
+
+	private final String labelString;
+
+	private Composite selectableComposite;
+
+	private Button button_remove;
+
+	private final boolean isEditable;
+
+	private final boolean isDeletable;
+
+	private final ConversationHolder conversation;
+	private Class<T> clazz;
+
+	/**
+	 * <p>
+	 * Constructor for AbstractSelectionElement.
+	 * </p>
+	 * 
+	 * @param formFactory
+	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+	 *            object.
+	 * @param conversation
+	 *            TODO
+	 * @param parentElement
+	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+	 *            object.
+	 * @param labelString
+	 *            a {@link java.lang.String} object.
+	 * @param entity
+	 *            a T object.
+	 * @param isEditable
+	 *            a boolean.
+	 * @param isSelectable
+	 *            a boolean.
+	 * @param isDeletable
+	 *            a boolean.
+	 * @param style
+	 *            a int.
+	 * @param <T>
+	 *            a T object.
+	 */
+	public EntitySelectionElement(CdmFormFactory formFactory,
+			ConversationHolder conversation, ICdmFormElement parentElement,
+			String labelString, T entity, int mode, int style) {
+		super(formFactory, parentElement);
+
+		this.isEditable = (mode & EDITABLE) == EDITABLE;
+		this.isDeletable = (mode & DELETABLE) == DELETABLE;
+		boolean isSelectable = (mode & SELECTABLE) == SELECTABLE;
+		
+		this.labelString = labelString;
+
+		this.conversation = conversation;
+
+		if (isSelectable && formFactory.getSelectionProvider() != null) {
+			selectionArbitrator = formFactory.createSelectionArbitrator(this);
+		}
+
+		createControls(getLayoutComposite(), SWT.NULL);
+
+		setEntity(entity);
+	}
+	
+	public EntitySelectionElement(CdmFormFactory formFactory,
+			ConversationHolder conversation, ICdmFormElement parentElement, Class<T> clazz,
+			String labelString, T entity, int mode, int style) {
+		this(formFactory, conversation, parentElement, labelString, entity, mode, style);
+		this.clazz = clazz;
+	}
+
+	private void createControls(Composite parent, int style) {
+
+		label = formFactory.createLabel(getLayoutComposite(), labelString,
+				SWT.NULL);
+
+		addControl(label);
+
+		selectableComposite = formFactory.createComposite(getLayoutComposite());
+
+		int columns = 2;
+		if (isEditable) {
+			columns += 1;
+		}
+		if (isDeletable) {
+			columns += 1;
+		}
+
+		selectableComposite.setLayout(LayoutConstants.LAYOUT(columns, false));
+		selectableComposite.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
+
+		addControl(selectableComposite);
+
+		text = formFactory.createLabel(selectableComposite, null, SWT.WRAP);
+		addControl(text);
+
+		text.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
+		text.setBackground(StoreUtil
+				.getColor(Resources.COLOR_TEXT_DISABLED_BACKGROUND));
+
+		button_selection = formFactory.createButton(selectableComposite, null,
+				SWT.PUSH);
+		button_selection.setImage(ImageResources
+				.getImage(ImageResources.BROWSE_ICON));
+		button_selection.setToolTipText("Browse existing");
+		
+		addControl(button_selection);
+		button_selection.addSelectionListener(this);
+
+		if (isEditable) {
+			button_edit = formFactory.createButton(selectableComposite, null,
+					SWT.PUSH);
+			button_edit.setImage(ImageResources
+					.getImage(ImageResources.EDIT_ICON));
+			button_edit.setToolTipText("Edit");
+			addControl(button_edit);
+			button_edit.addSelectionListener(new EditListener(this));
+		}
+
+		if (isDeletable) {
+			button_remove = formFactory.createButton(selectableComposite, null,
+					SWT.PUSH);
+			button_remove.setImage(ImageResources
+					.getImage(ImageResources.TRASH_ICON));
+			button_remove.setToolTipText("Remove");
+			addControl(button_remove);
+			button_remove.addSelectionListener(new DeleteListener(this));
+		}
+	}
+
+	public void widgetSelected(SelectionEvent e) {
+		T selection = SelectionDialogFactory.getSelectionFromDialog(clazz, getShell(), getConversationHolder(), getEntity());
+		setSelectionInternal(selection);
+	}
+	
+	/**
+	 * Return the selected object
+	 * 
+	 * @return a T object.
+	 */
+	public T getSelection() {
+		return entity;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
+	 */
+	/** {@inheritDoc} */
+	@Override
+	public void setEnabled(boolean enabled) {
+		button_selection.setEnabled(enabled);
+		if (isEditable) {
+			button_edit.setEnabled(enabled && entity != null);
+		}
+	}
+
+	/**
+	 * <p>
+	 * setSelectionInternal
+	 * </p>
+	 * 
+	 * @param selection
+	 *            a T object.
+	 */
+	protected void setSelectionInternal(T selection) {
+		if (selection != null && !selection.equals(this.entity)) {
+			setEntity(selection);
+			firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+		}
+	}
+
+	/**
+	 * <p>
+	 * Setter for the field <code>entity</code>.
+	 * </p>
+	 * 
+	 * @param selection
+	 *            a T object.
+	 */
+	public void setEntity(T selection) {
+		this.entity = selection;
+		updateElement();
+	}
+
+	/**
+	 * Updates this elements view
+	 */
+	protected void updateElement() {
+		String title = CdmUtils.Nz(getTitle());
+		// we have to duplicate ampersands otherwise they are treated as
+		// mnenomic (see Label.setText() documentation)
+		title = title.replace("&", "&&");
+		text.setText(title); // title can be null
+		if (isEditable) {
+			button_edit.setEnabled(entity != null);
+		}
+	}
+
+	/**
+	 * <p>
+	 * updateFromWizard
+	 * </p>
+	 */
+	protected void updateFromWizard() {
+		updateElement();
+		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+	}
+
+	/**
+	 * <p>
+	 * getTitle
+	 * </p>
+	 * 
+	 * @return a {@link java.lang.String} object.
+	 */
+	protected String getTitle() {
+		if (entity != null && entity instanceof IIdentifiableEntity) {
+			return ((IIdentifiableEntity) entity).getTitleCache();
+		}
+		return "";
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setSelected(boolean selected) {
+		setBackground(selected ? SELECTED : getPersistentBackground());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.etaxonomy.taxeditor.forms.IEntityElement#getEntity()
+	 */
+	/**
+	 * <p>
+	 * Getter for the field <code>entity</code>.
+	 * </p>
+	 * 
+	 * @return a T object.
+	 */
+	@Override
+	public T getEntity() {
+		return entity;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.etaxonomy.taxeditor.forms.section.cdmdetail.ISelectableElement#
+	 * getSelectionArbitrator()
+	 */
+	/**
+	 * <p>
+	 * Getter for the field <code>selectionArbitrator</code>.
+	 * </p>
+	 * 
+	 * @return a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
+	 *         object.
+	 */
+	@Override
+	public SelectionArbitrator getSelectionArbitrator() {
+		return selectionArbitrator;
+	}
+
+	/**
+	 * Convenient access to current shell
+	 * 
+	 * @return a {@link org.eclipse.swt.widgets.Shell} object.
+	 */
+	protected Shell getShell() {
+		return getLayoutComposite().getShell();
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setIrrelevant(boolean irrelevant) {
+		String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
+				: Resources.COLOR_TEXT_DISABLED_BACKGROUND;
+
+		Color color = StoreUtil.getColor(colorId);
+		text.setBackground(color);
+	}
+
+	private class DeleteListener extends SelectionAdapter {
+
+		private final EntitySelectionElement<T> selectionElement;
+
+		public DeleteListener(EntitySelectionElement<T> selectionElement) {
+			this.selectionElement = selectionElement;
+		}
+
+		@Override
+		public void widgetSelected(SelectionEvent e) {
+			setEntity(null);
+			firePropertyChangeEvent(new CdmPropertyChangeEvent(
+					selectionElement, null));
+		}
+	}
+
+	private class EditListener extends SelectionAdapter {
+
+		private final EntitySelectionElement<T> selectionElement;
+
+		public EditListener(EntitySelectionElement<T> selectionElement) {
+			this.selectionElement = selectionElement;
+		}
+
+		/** {@inheritDoc} */
+		@Override
+		public void widgetSelected(SelectionEvent e) {
+			WizardDialog dialog = new WizardDialog(selectionElement.getShell(),
+					new EditFromSelectionWizard(selectionElement));
+			if (dialog.open() == IStatus.OK) {
+				selectionElement.updateFromWizard();
+			}
+		}
+	}
+
+	// not used
+	/** {@inheritDoc} */
+	@Override
+	public void widgetDefaultSelected(SelectionEvent e) {
+	}
+
+	/**
+	 * <p>
+	 * getConversationHolder
+	 * </p>
+	 * 
+	 * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
+	 *         object.
+	 */
+	@Override
+	public ConversationHolder getConversationHolder() {
+		return conversation;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setBackground(Color color) {
+		label.setBackground(color);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setLabel(String labelString) {
+		if (label != null) {
+			label.setText(labelString);
+		}
+	}
+
+	/**
+	 * <p>
+	 * Getter for the field <code>label</code>.
+	 * </p>
+	 * 
+	 * @return a {@link java.lang.String} object.
+	 */
+	@Override
+	public String getLabel() {
+		if (label != null) {
+			return label.getText();
+		}
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void update(CdmDataChangeMap changeEvents) {
+	}
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FeatureSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FeatureSelectionElement.java
deleted file mode 100644
index cceec0b56..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FeatureSelectionElement.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.FeatureSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * @author n.hoffmann
- * @created Dec 3, 2010
- * @version 1.0
- */
-public class FeatureSelectionElement extends AbstractSelectionElement<Feature> {
-
-	public static final int DEFAULT = EDITABLE | DELETABLE;
-
-	/**
-	 * 
-	 * @param formFactory
-	 * @param conversation
-	 * @param parentElement
-	 * @param labelString
-	 * @param entity
-	 * @param style
-	 */
-	public FeatureSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, Feature entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		Feature newSelection = FeatureSelectionDialog.select(getShell(),
-				getConversationHolder(), entity);
-		setSelectionInternal(newSelection);
-	}
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FeatureTreeSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FeatureTreeSelectionElement.java
deleted file mode 100644
index 132caab73..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FeatureTreeSelectionElement.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.FeatureTreeSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * FeatureTreeSelectionElement class.
- * </p>
- * 
- * @author n.hoffmann
- * @created Sep 17, 2010
- * @version 1.0
- */
-public class FeatureTreeSelectionElement extends
-		AbstractSelectionElement<FeatureTree> {
-
-	public static final int DEFAULT = DELETABLE;
-
-	/**
-	 * <p>
-	 * Constructor for FeatureTreeSelectionElement.
-	 * </p>
-	 * 
-	 * @param formFactory
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param entity
-	 *            a {@link eu.etaxonomy.cdm.model.description.FeatureTree}
-	 *            object.
-	 * @param style
-	 *            a int.
-	 */
-	public FeatureTreeSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, FeatureTree entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		FeatureTree newSelection = FeatureTreeSelectionDialog.select(
-				getShell(), getConversationHolder(), entity);
-		setSelectionInternal(newSelection);
-	}
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FieldObservationSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FieldObservationSelectionElement.java
deleted file mode 100644
index 6d180c1a2..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/FieldObservationSelectionElement.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.occurrence.FieldObservation;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.FieldObservationSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * FieldObservationSelectionElement class.
- * </p>
- * 
- * @author n.hoffmann
- * @created Jun 17, 2010
- * @version 1.0
- */
-public class FieldObservationSelectionElement extends
-		AbstractSelectionElement<FieldObservation> {
-
-	public static final int DEFAULT = EDITABLE | SELECTABLE | DELETABLE;
-
-	/**
-	 * <p>
-	 * Constructor for FieldObservationSelectionElement.
-	 * </p>
-	 * 
-	 * @param formFactory
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param entity
-	 *            a {@link eu.etaxonomy.cdm.model.occurrence.FieldObservation}
-	 *            object.
-	 * @param style
-	 *            a int.
-	 */
-	public FieldObservationSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, FieldObservation entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		FieldObservation newSelection = FieldObservationSelectionDialog.select(
-				getShell(), getConversationHolder(), entity);
-		setSelectionInternal(newSelection);
-	}
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/GroupSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/GroupSelectionElement.java
deleted file mode 100644
index 67a4a7486..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/GroupSelectionElement.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.Group;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.GroupSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * @author n.hoffmann
- * @created Mar 10, 2011
- * @version 1.0
- */
-public class GroupSelectionElement extends AbstractSelectionElement<Group> {
-
-	public static final int DEFAULT = NOTHING;
-
-	/**
-	 * @param formFactory
-	 * @param conversation
-	 * @param parentElement
-	 * @param labelString
-	 * @param entity
-	 * @param isEditable
-	 * @param isSelectable
-	 * @param isDeletable
-	 * @param style
-	 */
-	public GroupSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, Group entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		Group newSelection = GroupSelectionDialog.select(getShell(),
-				getConversationHolder(), getEntity());
-		setSelectionInternal(newSelection);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement#getTitle()
-	 */
-	@Override
-	protected String getTitle() {
-		return (getEntity() != null) ? getEntity().getName() : "UNTITLED GROUP";
-	}
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/InstitutionSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/InstitutionSelectionElement.java
deleted file mode 100644
index 3299c7064..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/InstitutionSelectionElement.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.agent.Institution;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.InstitutionSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * InstitutionSelectionElement class.
- * </p>
- * 
- * @author n.hoffmann
- * @created Nov 17, 2009
- * @version 1.0
- */
-public class InstitutionSelectionElement extends
-		AbstractSelectionElement<Institution> {
-
-	public static final int DEFAULT = EDITABLE | SELECTABLE | DELETABLE;
-
-	/**
-	 * <p>
-	 * Constructor for InstitutionSelectionElement.
-	 * </p>
-	 * 
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param selection
-	 *            a {@link eu.etaxonomy.cdm.model.agent.Institution} object.
-	 * @param style
-	 *            a int.
-	 * @param toolkit
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 */
-	public InstitutionSelectionElement(CdmFormFactory toolkit,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, Institution selection, int mode, int style) {
-		super(toolkit, conversation, parentElement, labelString, selection,
-				mode, style);
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		Institution newSelection = InstitutionSelectionDialog.select(
-				getShell(), getConversationHolder(), entity);
-		setSelectionInternal(newSelection);
-	}
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NameSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NameSelectionElement.java
deleted file mode 100644
index f5ac156a0..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NameSelectionElement.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * 
- */
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.NameSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * NameSelectionElement class.
- * </p>
- * 
- * @author nho
- * @version $Id: $
- */
-public class NameSelectionElement extends
-		AbstractSelectionElement<TaxonNameBase> {
-
-	public static final int DEFAULT = EDITABLE | SELECTABLE | DELETABLE;
-
-	/**
-	 * <p>
-	 * Constructor for NameSelectionElement.
-	 * </p>
-	 * 
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param selection
-	 *            a {@link eu.etaxonomy.cdm.model.name.TaxonNameBase} object.
-	 * @param style
-	 *            a int.
-	 * @param toolkit
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 */
-	public NameSelectionElement(CdmFormFactory toolkit,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, TaxonNameBase selection, int mode, int style) {
-		super(toolkit, conversation, parentElement, labelString, selection,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		TaxonNameBase newSelection = NameSelectionDialog.select(getShell(),
-				getConversationHolder(), entity);
-		setSelectionInternal(newSelection);
-	}
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NamedAreaSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NamedAreaSelectionElement.java
deleted file mode 100644
index 6ec033cdc..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NamedAreaSelectionElement.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.location.NamedArea;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.NamedAreaSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * NamedAreaSelectionElement class.
- * </p>
- * 
- * @author n.hoffmann
- * @created May 11, 2010
- * @version 1.0
- */
-public class NamedAreaSelectionElement extends
-		AbstractSelectionElement<NamedArea> {
-
-	public static final int DEFAULT = NOTHING;
-
-	/**
-	 * <p>
-	 * Constructor for NamedAreaSelectionElement.
-	 * </p>
-	 * 
-	 * @param formFactory
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param entity
-	 *            a {@link eu.etaxonomy.cdm.model.location.NamedArea} object.
-	 * @param style
-	 *            a int.
-	 */
-	public NamedAreaSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, NamedArea entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		NamedArea newSelection = NamedAreaSelectionDialog.select(
-				getLayoutComposite().getShell(), getConversationHolder(),
-				entity);
-		setSelectionInternal(newSelection);
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	protected String getTitle() {
-		return (entity != null) ? NamedArea.labelWithLevel(entity,
-				CdmStore.getDefaultLanguage()) : "";
-	}
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NomenclaturalAuthorTeamSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NomenclaturalAuthorTeamSelectionElement.java
index 2af801519..ca90432a5 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NomenclaturalAuthorTeamSelectionElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NomenclaturalAuthorTeamSelectionElement.java
@@ -28,7 +28,7 @@ import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
  * @version 1.0
  */
 public class NomenclaturalAuthorTeamSelectionElement extends
-		AbstractSelectionElement<Team> {
+		EntitySelectionElement<Team> {
 
 	public static final int DEFAULT = EDITABLE | SELECTABLE | DELETABLE;
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PersonSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PersonSelectionElement.java
deleted file mode 100644
index 4033b7180..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PersonSelectionElement.java
+++ /dev/null
@@ -1,76 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.agent.Person;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.PersonSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * PersonSelectionElement class.
- * </p>
- * 
- * @author n.hoffmann
- * @created May 12, 2010
- * @version 1.0
- */
-public class PersonSelectionElement extends AbstractSelectionElement<Person> {
-
-	public static final int DEFAULT = EDITABLE | SELECTABLE;
-
-	/**
-	 * <p>
-	 * Constructor for PersonSelectionElement.
-	 * </p>
-	 * 
-	 * @param formFactory
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param entity
-	 *            a {@link eu.etaxonomy.cdm.model.agent.Person} object.
-	 * @param style
-	 *            a int.
-	 */
-	public PersonSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, Person entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		Person newSelection = PersonSelectionDialog.select(getShell(),
-				getConversationHolder(), entity);
-		setSelectionInternal(newSelection);
-	}
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PolytomousKeyNodeSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PolytomousKeyNodeSelectionElement.java
deleted file mode 100644
index f876ad609..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PolytomousKeyNodeSelectionElement.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * @author n.hoffmann
- * @created Dec 3, 2010
- * @version 1.0
- */
-public class PolytomousKeyNodeSelectionElement extends
-		AbstractSelectionElement<PolytomousKeyNode> {
-
-	public static final int DEFAULT = DELETABLE;
-
-	/**
-	 * 
-	 * @param formFactory
-	 * @param conversation
-	 * @param parentElement
-	 * @param labelString
-	 * @param entity
-	 * @param style
-	 */
-	public PolytomousKeyNodeSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, PolytomousKeyNode entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		StoreUtil.warningDialog("Not implemented yet", getClass(),
-				"This functionality is not implemented yet.");
-	}
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PolytomousKeySelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PolytomousKeySelectionElement.java
deleted file mode 100644
index 8d6f63753..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/PolytomousKeySelectionElement.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.PolytomousKey;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.PolytomousKeySelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * @author n.hoffmann
- * @created Dec 3, 2010
- * @version 1.0
- */
-public class PolytomousKeySelectionElement extends
-		AbstractSelectionElement<PolytomousKey> {
-
-	public static final int DEFAULT = EDITABLE | DELETABLE;
-
-	/**
-	 * @param formFactory
-	 * @param conversation
-	 * @param parentElement
-	 * @param labelString
-	 * @param entity
-	 * @param isEditable
-	 * @param isSelectable
-	 * @param isDeletable
-	 * @param style
-	 */
-	public PolytomousKeySelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, PolytomousKey entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		PolytomousKey newSelection = PolytomousKeySelectionDialog.select(
-				getShell(), getConversationHolder(), entity);
-
-		setSelectionInternal(newSelection);
-	}
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/ReferenceSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/ReferenceSelectionElement.java
deleted file mode 100644
index a6da74ddc..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/ReferenceSelectionElement.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * 
- */
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.api.service.IReferenceService;
-import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.ReferenceSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * ReferenceSelectionElement class.
- * </p>
- * 
- * @author n.hofmann
- * @version $Id: $
- */
-public class ReferenceSelectionElement extends
-		AbstractSelectionElement<Reference> {
-
-	public static final int DEFAULT = EDITABLE | SELECTABLE | DELETABLE;
-
-	/**
-	 * <p>
-	 * Constructor for ReferenceSelectionElement.
-	 * </p>
-	 * 
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param selection
-	 *            a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase}
-	 *            object.
-	 * @param style
-	 *            a int.
-	 * @param toolkit
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 */
-	public ReferenceSelectionElement(CdmFormFactory toolkit,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, Reference selection, int mode, int style) {
-		super(toolkit, conversation, parentElement, labelString, selection,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		Reference newSelection = ReferenceSelectionDialog.select(getShell(),
-				getConversationHolder(), entity);
-
-		setSelectionInternal(newSelection);
-		
-//		Reference freshlyLoadedSelection = null;
-//		if (newSelection != null)
-//			freshlyLoadedSelection = CdmStore.getService(
-//					IReferenceService.class).load(newSelection.getUuid());
-//
-//		setSelectionInternal(freshlyLoadedSelection);
-	}
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/SynonymSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/SynonymSelectionElement.java
deleted file mode 100644
index 0ad99a72f..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/SynonymSelectionElement.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.taxon.Synonym;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonBaseSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * @author n.hoffmann
- * @created Dec 9, 2010
- * @version 1.0
- */
-public class SynonymSelectionElement extends AbstractSelectionElement<Synonym> {
-
-	public static final int DEFAULT = SELECTABLE | DELETABLE;
-
-	/**
-	 * @param formFactory
-	 * @param conversation
-	 * @param parentElement
-	 * @param labelString
-	 * @param entity
-	 * @param isEditable
-	 * @param isSelectable
-	 * @param isDeletable
-	 * @param style
-	 */
-	public SynonymSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, Synonym entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		Synonym newSelection = TaxonBaseSelectionDialog.selectSynonym(
-				getShell(), getConversationHolder());
-		setSelectionInternal(newSelection);
-	}
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonBaseSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonBaseSelectionElement.java
deleted file mode 100644
index 9b83bfe51..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonBaseSelectionElement.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * 
- */
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonBaseSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * TaxonBaseSelectionElement class.
- * </p>
- * 
- * @author nho
- * @version $Id: $
- */
-public class TaxonBaseSelectionElement extends
-		AbstractSelectionElement<TaxonBase> {
-
-	public static final int DEFAULT = DELETABLE;
-
-	/**
-	 * <p>
-	 * Constructor for TaxonBaseSelectionElement.
-	 * </p>
-	 * 
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param selection
-	 *            a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.
-	 * @param style
-	 *            a int.
-	 * @param toolkit
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 */
-	public TaxonBaseSelectionElement(CdmFormFactory toolkit,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, TaxonBase selection, int mode, int style) {
-		super(toolkit, conversation, parentElement, labelString, selection,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		TaxonBase newSelection = TaxonBaseSelectionDialog.selectTaxonBase(
-				getShell(), getConversationHolder());
-		setSelectionInternal(newSelection);
-	}
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonNodeSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonNodeSelectionElement.java
index 74992c1d3..150ed77d1 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonNodeSelectionElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonNodeSelectionElement.java
@@ -1,13 +1,12 @@
 // $Id$
 /**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
+* Copyright (C) 2009 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
 package eu.etaxonomy.taxeditor.ui.selection;
 
 import org.eclipse.swt.events.SelectionEvent;
@@ -21,48 +20,32 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
- * <p>
- * TaxonNodeSelectionElement class.
- * </p>
- * 
  * @author n.hoffmann
- * @created Sep 27, 2010
- * @version 1.0
+ * @date Jan 26, 2012
+ *
  */
-public class TaxonNodeSelectionElement extends
-		AbstractSelectionElement<TaxonNode> {
+public class TaxonNodeSelectionElement extends EntitySelectionElement<TaxonNode> {
 
-	public static final int DEFAULT = DELETABLE;
 	private Classification classification;
-
-	/**
-	 * <p>
-	 * Constructor for TaxonNodeSelectionElement.
-	 * </p>
-	 * 
-	 * @param formFactory
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param entity
-	 *            a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
-	 * @param style
-	 *            a int.
-	 */
+	
 	public TaxonNodeSelectionElement(CdmFormFactory formFactory,
 			ConversationHolder conversation, ICdmFormElement parentElement,
 			String labelString, TaxonNode entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
+		super(formFactory, conversation, parentElement, labelString, entity, mode,
+				style);
 	}
-
+	
+	/**
+	 * @return
+	 */
+	public Classification getClassification() {
+		return classification;
+	}
+	
+	public void setClassification(Classification classification){
+		this.classification = classification;
+	}
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -77,18 +60,7 @@ public class TaxonNodeSelectionElement extends
 				getConversationHolder(), "Select parent taxon", null, null, getClassification());
 		setSelectionInternal(newSelection);
 	}
-
-	/**
-	 * @return
-	 */
-	public Classification getClassification() {
-		return classification;
-	}
 	
-	public void setClassification(Classification classification){
-		this.classification = classification;
-	}
-
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -104,4 +76,5 @@ public class TaxonNodeSelectionElement extends
 		}
 		return super.getTitle();
 	}
+
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonSelectionElement.java
deleted file mode 100644
index 8b0d65f0e..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonSelectionElement.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonBaseSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * @author n.hoffmann
- * @created Dec 9, 2010
- * @version 1.0
- */
-public class TaxonSelectionElement extends AbstractSelectionElement<Taxon> {
-
-	public static final int DEFAULT = NOTHING;
-
-	/**
-	 * 
-	 * @param formFactory
-	 * @param conversation
-	 * @param parentElement
-	 * @param labelString
-	 * @param entity
-	 * @param mode
-	 * @param style
-	 */
-	public TaxonSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, Taxon entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		Taxon newSelection = TaxonBaseSelectionDialog.selectTaxon(getShell(),
-				getConversationHolder(), null);
-		setSelectionInternal(newSelection);
-	}
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TeamSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TeamSelectionElement.java
deleted file mode 100644
index 36e0f45dd..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TeamSelectionElement.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.agent.Team;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.TeamSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * <p>
- * TeamSelectionElement class.
- * </p>
- * 
- * @author n.hoffmann
- * @created Apr 30, 2010
- * @version 1.0
- */
-public class TeamSelectionElement extends AbstractSelectionElement<Team> {
-
-	public static final int DEFAULT = EDITABLE | SELECTABLE | DELETABLE;
-
-	/**
-	 * <p>
-	 * Constructor for TeamSelectionElement.
-	 * </p>
-	 * 
-	 * @param toolkit
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-	 *            object.
-	 * @param conversation
-	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
-	 *            object.
-	 * @param parentElement
-	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-	 *            object.
-	 * @param labelString
-	 *            a {@link java.lang.String} object.
-	 * @param selection
-	 *            a {@link eu.etaxonomy.cdm.model.agent.Team} object.
-	 * @param style
-	 *            a int.
-	 */
-	public TeamSelectionElement(CdmFormFactory toolkit,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, Team selection, int mode, int style) {
-		super(toolkit, conversation, parentElement, labelString, selection,
-				mode, style);
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		Team newSelection = TeamSelectionDialog.select(getShell(),
-				getConversationHolder(), entity);
-		setSelectionInternal(newSelection);
-	}
-
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/UserSelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/UserSelectionElement.java
deleted file mode 100644
index a11a7f6a8..000000000
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/UserSelectionElement.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
- * http://www.e-taxonomy.eu
- * 
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.ui.selection;
-
-import org.eclipse.swt.events.SelectionEvent;
-
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.User;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.UserSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-
-/**
- * @author n.hoffmann
- * @created Mar 10, 2011
- * @version 1.0
- */
-public class UserSelectionElement extends AbstractSelectionElement<User> {
-
-	public static final int DEFAULT = NOTHING;
-
-	/**
-	 * @param formFactory
-	 * @param conversation
-	 * @param parentElement
-	 * @param labelString
-	 * @param entity
-	 * @param isEditable
-	 * @param isSelectable
-	 * @param isDeletable
-	 * @param style
-	 */
-	public UserSelectionElement(CdmFormFactory formFactory,
-			ConversationHolder conversation, ICdmFormElement parentElement,
-			String labelString, User entity, int mode, int style) {
-		super(formFactory, conversation, parentElement, labelString, entity,
-				mode, style);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-	 * .events.SelectionEvent)
-	 */
-	@Override
-	public void widgetSelected(SelectionEvent e) {
-		User newSelection = UserSelectionDialog.select(getShell(),
-				getConversationHolder(), entity);
-		setSelectionInternal(newSelection);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement#getTitle()
-	 */
-	@Override
-	protected String getTitle() {
-		return (entity != null) ? entity.getUsername() : "NO USER";
-	}
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationMetaDataWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationMetaDataWizardPage.java
index 6460f55a5..bdf4837e9 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationMetaDataWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationMetaDataWizardPage.java
@@ -17,6 +17,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
  * <p>TranslationMetaDataWizardPage class.</p>
@@ -47,9 +48,9 @@ public class TranslationMetaDataWizardPage extends WizardPage {
 	public void createControl(Composite parent) {
 		Composite control = formFactory.createComposite(parent);
 //		control.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
-		control.setLayout(CdmFormFactory.LAYOUT(1, false));
+		control.setLayout(LayoutConstants.LAYOUT(1, false));
 		SashForm sash = new SashForm(control, SWT.HORIZONTAL);
-		sash.setLayoutData(CdmFormFactory.FILL());
+		sash.setLayoutData(LayoutConstants.FILL());
 		
 		setControl(control);
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java
index e45397d0b..b7ffb1791 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java
@@ -34,6 +34,7 @@ import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement;
 import eu.etaxonomy.taxeditor.ui.element.RootElement;
 
@@ -54,7 +55,7 @@ public class TranslationWizardPage extends WizardPage{
 	
 	private CdmFormFactory formFactory;
 
-	private TermComboElement combo_sourceLanguage;
+	private TermComboElement<Language> combo_sourceLanguage;
 
 	private LanguageStringWithLabelElement text_source;
 
@@ -83,17 +84,17 @@ public class TranslationWizardPage extends WizardPage{
 	public void createControl(Composite parent) {
 		Composite control = formFactory.createComposite(parent);
 //		control.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
-		control.setLayout(CdmFormFactory.LAYOUT(2, true));
+		control.setLayout(LayoutConstants.LAYOUT(2, true));
 		
 		Composite leftContainer = formFactory.createComposite(control);
-		leftContainer.setLayoutData(CdmFormFactory.FILL());
-		leftContainer.setLayout(CdmFormFactory.LAYOUT(1, false));
+		leftContainer.setLayoutData(LayoutConstants.FILL());
+		leftContainer.setLayout(LayoutConstants.LAYOUT(1, false));
 //		leftContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
 		RootElement leftRoot = new RootElement(formFactory, leftContainer);
 		
 		Composite rightContainer = formFactory.createComposite(control);
-		rightContainer.setLayoutData(CdmFormFactory.FILL());
-		rightContainer.setLayout(CdmFormFactory.LAYOUT(1, false));
+		rightContainer.setLayoutData(LayoutConstants.FILL());
+		rightContainer.setLayout(LayoutConstants.LAYOUT(1, false));
 //		rightContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
 		RootElement rightRoot = new RootElement(formFactory, rightContainer);
 		
@@ -193,10 +194,15 @@ public class TranslationWizardPage extends WizardPage{
 					Language sourceLanguage = text_source.getLanguageString().getLanguage();
 					Language targetLanguage = combo_targetLanguage.getSelection();
 					
+					if(targetLanguage == null){
+						StoreUtil.warningDialog("Please select a target language", TranslationWizardPage.class, "Please select a language from the combo box at the right.");
+						return;
+					}
+					
 					translatedText = service.translate(text, sourceLanguage, targetLanguage);
 					text_target.setText(translatedText);
 				} catch (LanguageNotSupportedException e) {
-					StoreUtil.warningDialog("Language not supported", TranslationWizardPage.class, e.getMessage());
+					StoreUtil.warningDialog("Language not supported", TranslationWizardPage.class, "The chosen language is not supported by the translation service.");
 				} catch (Exception e){
 					StoreUtil.warningDialog("Error translating text", TranslationWizardPage.class, e.getMessage());
 				}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractAccountViewPart.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractAccountViewPart.java
index a395a7dd2..43f6be126 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractAccountViewPart.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractAccountViewPart.java
@@ -31,7 +31,6 @@ import org.eclipse.ui.IMemento;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPart;
 
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.ContextListenerAdapter;
@@ -66,8 +65,6 @@ public abstract class AbstractAccountViewPart<T> extends AbstractCdmViewPart {
 		}
 	}
 	
-	private ConversationHolder conversation;
-	
 	protected TableViewer viewer;
 	
 	private IContextListener contextListener;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmDataViewer.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmDataViewer.java
index 4fe8d8a1f..2a019c07d 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmDataViewer.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmDataViewer.java
@@ -25,6 +25,7 @@ import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.RootElement;
 import eu.etaxonomy.taxeditor.view.detail.CdmSectionPart;
 
@@ -78,7 +79,7 @@ public abstract class AbstractCdmDataViewer extends Viewer implements ISelection
 		
 		body = scrolledForm.getBody();
 		
-		body.setLayout(CdmFormFactory.LAYOUT());
+		body.setLayout(LayoutConstants.LAYOUT());
 		
 		rootElement = new RootElement(formFactory, body);
 	}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/ChangeConnectionHandler.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/ChangeConnectionHandler.java
index d35f743dc..ff812e4d4 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/ChangeConnectionHandler.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/ChangeConnectionHandler.java
@@ -10,8 +10,6 @@
 
 package eu.etaxonomy.taxeditor.view.datasource.handler;
 
-import java.sql.SQLException;
-
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.jface.viewers.ISelection;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/DataSourceMenuPropertyTester.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/DataSourceMenuPropertyTester.java
index 491235fb5..41391059c 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/DataSourceMenuPropertyTester.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/DataSourceMenuPropertyTester.java
@@ -13,8 +13,6 @@ package eu.etaxonomy.taxeditor.view.datasource.handler;
 import org.eclipse.core.expressions.PropertyTester;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
-import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.view.datasource.CdmMetaDataAwareDataSourceContainer;
 
 /**
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/CdmSectionPart.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/CdmSectionPart.java
index 6fca35d50..159f4d846 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/CdmSectionPart.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/CdmSectionPart.java
@@ -12,11 +12,8 @@ package eu.etaxonomy.taxeditor.view.detail;
 
 import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.forms.SectionPart;
 
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
@@ -27,7 +24,6 @@ import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.IDerivedUnitFacadeDetailSection;
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java
index 1f078b8cf..8580ee0af 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java
@@ -40,9 +40,9 @@ import eu.etaxonomy.taxeditor.model.PolytomousKeyRelationship;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
-import eu.etaxonomy.taxeditor.ui.element.RootElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
+import eu.etaxonomy.taxeditor.ui.element.RootElement;
 import eu.etaxonomy.taxeditor.ui.section.agent.PersonDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.agent.TeamDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.agent.TeamOrPersonBaseDetailSection;
@@ -543,7 +543,6 @@ public class DetailsViewer extends AbstractCdmDataViewer {
 				.createCdmDetailSection(DetailType.DERIVED_UNIT,
 						getConversationHolder(), parent, this, Section.TWISTIE);
 
-		Object getBoolean;
 		formFactory.createHorizontalSeparator(parent, SWT.BORDER);
 
 		DeterminationDetailSection determinationDetailSection = (DeterminationDetailSection) formFactory
