diff --git a/openbis/resource/dependency-structure.ddf b/openbis/resource/dependency-structure.ddf
index b37af78e74d5f138eb9bbe9dfb9e35f5b7e70925..24f39d81f3a7d76a2dccbb4e5d7a52a6e0d5a239 100644
--- a/openbis/resource/dependency-structure.ddf
+++ b/openbis/resource/dependency-structure.ddf
@@ -47,6 +47,13 @@ check [sample-browser]  independentOf [experiment-browser]
 check [experiment-browser] independentOf [admin-console]
 check [admin-console]  independentOf [experiment-browser]
 
+# Check that grid column definitions are GUI independent - export on the server side is using it
+[grid-columns] = ${generic.web}.client.application.ui.columns.**
+[gwt] = com.google.gwt.** excluding com.google.gwt.user.client.rpc.IsSerializable
+[extjs] = com.extjs.**
+check [grid-columns] independentOf [gwt]
+check [grid-columns] independentOf [extjs]
+
 #-------- Server -------------------------
 {generic.server} = ${generic}.server
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GroupsView.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GroupsView.java
index 302b834a96274da61f8a4acaf17b1080e1ca4e46..bf5d62de7d8ff48011f96674b0686aaaa139a9ee 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GroupsView.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GroupsView.java
@@ -45,7 +45,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.D
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnConfigFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnFilter;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.amc.AddGroupDialog;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Group;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
index 0651ab42dbc325cc159dfac93c6851b09abb5e2e..8c7eb371ce30a4926f3d7e7a52c2d1dcaaa9d86d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
@@ -26,9 +26,9 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.MatchingEntityModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.MatchingEntityModel.MatchingEntityColumnKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionUI;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntity;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PersonsView.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PersonsView.java
index aafd2725f1516e769317e43a5758c363755b4225..99a3f04e6970e6ad4a5f90506f53ae0a0d62c0b4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PersonsView.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PersonsView.java
@@ -43,7 +43,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.D
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnConfigFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnFilter;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.amc.AddPersonDialog;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java
index 961ca4005d15b8b83dec68db39d090253c24b3ce..5914fecdb4d9dff80951054b8ce863e13e85d0f5 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java
@@ -24,9 +24,9 @@ import com.extjs.gxt.ui.client.data.BaseModelData;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.InvalidableWithCodeRenderer;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.PersonRenderer;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.CommonColumnDefinition;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionUI;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.CommonColumnDefinition;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IInvalidationProvider;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentModel.java
index 89952d5a1ae7fd9cc0b701012ed64f98beaf60b0..a7eef610594264a97cc6dcd97b1829ed3c105b09 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentModel.java
@@ -21,10 +21,10 @@ import java.util.List;
 
 import com.extjs.gxt.ui.client.data.ModelData;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.columns.CommonExperimentColDefKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.columns.PropertyExperimentColDef;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.experiment.CommonExperimentColDefKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.experiment.PropertyExperimentColDef;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionUI;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentProperty;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExternalDataModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExternalDataModel.java
index 2e4bed1a4bf20eb234e760b749618f600a8e6193..fd59c1b80d2b1d82ce3b9d6b0c91816f11681ff9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExternalDataModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExternalDataModel.java
@@ -16,9 +16,17 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.model;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import com.extjs.gxt.ui.client.data.ModelData;
+import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
+import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.CommonExternalDataColDefKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnConfigFactory;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.CommonExternalDataColDefKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalData;
 
 /**
@@ -36,4 +44,23 @@ public final class ExternalDataModel extends BaseEntityModel<ExternalData>
         super(externalData, CommonExternalDataColDefKind.values());
     }
 
+    /**
+     * Creates column model from all definitions.
+     */
+    public static ColumnModel createColumnModel(IMessageProvider messageProvider)
+    {
+        CommonExternalDataColDefKind[] values = CommonExternalDataColDefKind.values();
+        List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
+        for (CommonExternalDataColDefKind colDefKind : values)
+        {
+            AbstractColumnDefinitionKind<?> colDesc = colDefKind.getDescriptor();
+            String header = messageProvider.getMessage(colDesc.getHeaderMsgKey());
+            String id = colDefKind.id();
+            ColumnConfig columnConfig = ColumnConfigFactory.createDefaultColumnConfig(header, id);
+            columnConfig.setHidden(colDesc.isHidden());
+            columnConfig.setWidth(colDesc.getWidth());
+            configs.add(columnConfig);
+        }
+        return new ColumnModel(configs);
+    }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MatchingEntityModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MatchingEntityModel.java
index 1da4c7d662093bb69826b9f05d820316e62e81bb..8fe58ad0f4840e8a4ad6aa4ec9b976801b7d0e72 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MatchingEntityModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MatchingEntityModel.java
@@ -22,9 +22,9 @@ import com.extjs.gxt.ui.client.data.ModelData;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.PersonRenderer;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionUI;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntity;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/PropertyTypeModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/PropertyTypeModel.java
index 471591622081a3a2e8b2d6695d1440e186939fc7..08874a8f3ca51649f2b9d9a108ad939fa25153a0 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/PropertyTypeModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/PropertyTypeModel.java
@@ -20,8 +20,8 @@ import com.extjs.gxt.ui.client.data.ModelData;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Element;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeColDefKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.PropertyTypeColDefKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
 
 /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/SampleModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/SampleModel.java
similarity index 93%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/SampleModel.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/SampleModel.java
index 52b39ea44199523f6ba85777c8196145cae45673..247e3cae658b87017ef9011e1594d15d48ed493a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/SampleModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/SampleModel.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.model;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -22,10 +22,12 @@ import java.util.List;
 import com.extjs.gxt.ui.client.data.ModelData;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.ParentContainerSampleColDef;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.ParentGeneratedFromSampleColDef;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.PropertySampleColDef;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionUI;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleProperty;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java
index b7377bc2ba4446942cb0c3987de1cd31760839d7..6b5e78475f4efaa25f1e6d646f955872641db701 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/PersonRenderer.java
@@ -19,7 +19,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Element;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimplePersonRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimplePersonRenderer;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.DOMUtils;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.StringUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/YesNoRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/YesNoRenderer.java
index ebc80dc65faacaf200dc6a01b121112640a3e4df..14b671075c7fa12aeadbd3825ddcdaf7fe57e0f3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/YesNoRenderer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/YesNoRenderer.java
@@ -5,7 +5,7 @@ import com.extjs.gxt.ui.client.store.ListStore;
 import com.extjs.gxt.ui.client.widget.grid.ColumnData;
 import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleYesNoRenderer;
 
 /**
  * Renderer of {@link Boolean} value. Render <code>true</code> to <code>yes</code> and
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/AbstractColumnDefinition.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinition.java
similarity index 98%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/AbstractColumnDefinition.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinition.java
index 84750aed3f3bebca21246f78a0613e1517bb3c8b..76ab2bb13a27fdba9d0e6b13a47404ada124684f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/AbstractColumnDefinition.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinition.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework;
 
 
 /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/AbstractColumnDefinitionKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinitionKind.java
similarity index 94%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/AbstractColumnDefinitionKind.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinitionKind.java
index d5b4f75428e73150d775e87ea80f74f7836990a9..b29e54a1dc3849809f861ffdd6bcb0fdaa3ea38e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/AbstractColumnDefinitionKind.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinitionKind.java
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleDateRenderer;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimplePersonRenderer;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleDateRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimplePersonRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleYesNoRenderer;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IInvalidationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractRegistrationHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/AbstractPropertyColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractPropertyColDef.java
similarity index 99%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/AbstractPropertyColDef.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractPropertyColDef.java
index f38a4718e231cbd56ed9dda80d504083e14676a1..b7608ba3471377bd5ff116065112f23f3a7f458b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/AbstractPropertyColDef.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractPropertyColDef.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework;
 
 import java.util.List;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/CommonColumnDefinition.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/CommonColumnDefinition.java
similarity index 98%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/CommonColumnDefinition.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/CommonColumnDefinition.java
index 2a294a009c49fe7704fe2c8f555f37f8de0d1de9..0c23a7cbf03b596d2889902a0e5289b7757be5ef 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/CommonColumnDefinition.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/CommonColumnDefinition.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework;
 
 
 /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/IColumnDefinitionKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/IColumnDefinitionKind.java
similarity index 97%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/IColumnDefinitionKind.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/IColumnDefinitionKind.java
index bd7dac92b73a8c514ab488a401a626fd3d9962d6..05d59f5721105192b5fcc9720b39286ff8fcf71c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/IColumnDefinitionKind.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/IColumnDefinitionKind.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework;
 
 import com.google.gwt.user.client.rpc.IsSerializable;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/IColumnDefinitionUI.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/IColumnDefinitionUI.java
similarity index 93%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/IColumnDefinitionUI.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/IColumnDefinitionUI.java
index de7763355e36549ec716f7fcf1b54c5f1e21032f..038cae58f2151d73d72eca9d68a559c570d9db5b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/columns/IColumnDefinitionUI.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/IColumnDefinitionUI.java
@@ -1,4 +1,4 @@
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/renderer/SimpleDateRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/renderers/SimpleDateRenderer.java
similarity index 98%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/renderer/SimpleDateRenderer.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/renderers/SimpleDateRenderer.java
index aca12a937b108af932265eee7e978fa964d8b80a..341c774f85276db707b0bfe499b26f8a26cd5d87 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/renderer/SimpleDateRenderer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/renderers/SimpleDateRenderer.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers;
 
 import java.util.Date;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/renderer/SimplePersonRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/renderers/SimplePersonRenderer.java
similarity index 97%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/renderer/SimplePersonRenderer.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/renderers/SimplePersonRenderer.java
index 255882b55d15cae9561699537f7e381c937eadd0..74b75ff93ea9f313126cacf98f1fb17e02ec7332 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/renderer/SimplePersonRenderer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/renderers/SimplePersonRenderer.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/renderer/SimpleYesNoRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/renderers/SimpleYesNoRenderer.java
similarity index 95%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/renderer/SimpleYesNoRenderer.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/renderers/SimpleYesNoRenderer.java
index 459d36e1f1d5df0d7ea0d9670862d1f9d7793b58..cf73bc86517e0649cab6ca0cb6c5bfd1e96d41e9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/renderer/SimpleYesNoRenderer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/renderers/SimpleYesNoRenderer.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers;
 
 /**
  * @author Tomasz Pylak
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/ProjectColDefKind.java
similarity index 95%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectColDefKind.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/ProjectColDefKind.java
index aca384c864cd9f125e9ae1da4006fbf883c63a81..4e23b5bda54cea83d2f5ba5992ae9cd31b99c770 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectColDefKind.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/ProjectColDefKind.java
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Project;
 
 /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/PropertyTypeAssignmentColDefKind.java
similarity index 93%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentColDefKind.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/PropertyTypeAssignmentColDefKind.java
index bdd2a56caf251261084ea706ee7add86df5b0e60..cfc6c7c3c444dc91deb38d30d1b1ac0bb49202a9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentColDefKind.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/PropertyTypeAssignmentColDefKind.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleYesNoRenderer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityTypePropertyType;
 
 /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/PropertyTypeColDefKind.java
similarity index 97%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeColDefKind.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/PropertyTypeColDefKind.java
index 5953f4ced811948b6b85ddc04e1a2ba75bf1e16c..b032ca0092b40c4cad78b371aae91f11f0eb69a6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeColDefKind.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/PropertyTypeColDefKind.java
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific;
 
 import java.util.List;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityTypePropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/VocabularyColDefKind.java
similarity index 93%
rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyColDefKind.java
rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/VocabularyColDefKind.java
index adab31ddd601a0760a695710de479c5f281e83c7..50457585978d923700492020319cc17858797c08 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyColDefKind.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/VocabularyColDefKind.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.vocabulary;
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleYesNoRenderer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary;
 
 /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/CommonExternalDataColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/CommonExternalDataColDefKind.java
deleted file mode 100644
index b7298bba288bc154fe53c13a8f6c8e4e4b8a28ff..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/CommonExternalDataColDefKind.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright 2009 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
-import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnConfigFactory;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleDateRenderer;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleYesNoRenderer;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalData;
-
-/**
- * @author Franz-Josef Elmer
- */
-public enum CommonExternalDataColDefKind implements IColumnDefinitionKind<ExternalData>
-{
-    CODE(new AbstractColumnDefinitionKind<ExternalData>(Dict.CODE)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return entity.getCode();
-            }
-        }),
-
-    PARENT_CODE(new AbstractColumnDefinitionKind<ExternalData>(Dict.PARENT_CODE, true)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return entity.getParentCode();
-            }
-        }),
-
-    PRODECUDRE_TYPE(new AbstractColumnDefinitionKind<ExternalData>(Dict.PROCEDURE_TYPE)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return entity.getProcedureType().getCode();
-            }
-        }),
-
-    SAMPLE_IDENTIFIER(new AbstractColumnDefinitionKind<ExternalData>(Dict.EXTERNAL_DATA_SAMPLE,
-            200, false)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return entity.getSampleIdentifier();
-            }
-        }),
-
-    SAMPLE_TYPE(new AbstractColumnDefinitionKind<ExternalData>(Dict.SAMPLE_TYPE)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return entity.getSampleType().getCode();
-            }
-        }),
-
-    REGISTRATION_DATE(new AbstractColumnDefinitionKind<ExternalData>(Dict.REGISTRATION_DATE, 200,
-            false)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return renderRegistrationDate(entity);
-            }
-        }),
-
-    IS_INVALID(new AbstractColumnDefinitionKind<ExternalData>(Dict.IS_INVALID, true)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return renderInvalidationFlag(entity);
-            }
-        }),
-
-    IS_DERIVED(new AbstractColumnDefinitionKind<ExternalData>(Dict.IS_DERIVED, true)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return SimpleYesNoRenderer.render(entity.isDerived());
-            }
-        }),
-
-    IS_COMPLETE(new AbstractColumnDefinitionKind<ExternalData>(Dict.IS_COMPLETE, true)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                Boolean complete = entity.getComplete();
-                return complete == null ? "?" : SimpleYesNoRenderer.render(complete);
-            }
-        }),
-
-    LOCATION(new AbstractColumnDefinitionKind<ExternalData>(Dict.LOCATION)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return entity.getLocation();
-            }
-        }),
-
-    FILE_FORMAT_TYPE(new AbstractColumnDefinitionKind<ExternalData>(Dict.FILE_FORMAT_TYPE, true)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return entity.getFileFormatType().getCode();
-            }
-        }),
-
-    DATA_SET_TYPE(new AbstractColumnDefinitionKind<ExternalData>(Dict.DATA_SET_TYPE, true)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return entity.getDataSetType().getCode();
-            }
-        }),
-
-    PRODUCTION_DATE(new AbstractColumnDefinitionKind<ExternalData>(Dict.PRODUCTION_DATE, 200, true)
-        {
-            @Override
-            public String tryGetValue(ExternalData entity)
-            {
-                return SimpleDateRenderer.renderDate(entity.getProductionDate());
-            }
-        }),
-
-    DATA_PRODUCER_CODE(
-            new AbstractColumnDefinitionKind<ExternalData>(Dict.DATA_PRODUCER_CODE, true)
-                {
-                    @Override
-                    public String tryGetValue(ExternalData entity)
-                    {
-                        return entity.getDataProducerCode();
-                    }
-                });
-
-    /**
-     * Creates column model from all definitions.
-     */
-    public static ColumnModel createColumnModel(IMessageProvider messageProvider)
-    {
-        CommonExternalDataColDefKind[] values = CommonExternalDataColDefKind.values();
-        List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
-        for (CommonExternalDataColDefKind colDefKind : values)
-        {
-            AbstractColumnDefinitionKind<?> colDesc = colDefKind.getDescriptor();
-            String header = messageProvider.getMessage(colDesc.getHeaderMsgKey());
-            String id = colDefKind.id();
-            ColumnConfig columnConfig = ColumnConfigFactory.createDefaultColumnConfig(header, id);
-            columnConfig.setHidden(colDesc.isHidden());
-            columnConfig.setWidth(colDesc.getWidth());
-            configs.add(columnConfig);
-        }
-        return new ColumnModel(configs);
-    }
-
-    private final AbstractColumnDefinitionKind<ExternalData> columnDefinitionKind;
-
-    private CommonExternalDataColDefKind(
-            AbstractColumnDefinitionKind<ExternalData> columnDefinitionKind)
-    {
-        this.columnDefinitionKind = columnDefinitionKind;
-    }
-
-    public String id()
-    {
-        return name();
-    }
-
-    public AbstractColumnDefinitionKind<ExternalData> getDescriptor()
-    {
-        return columnDefinitionKind;
-    }
-
-}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetExperimentPropertyColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetExperimentPropertyColDef.java
deleted file mode 100644
index b3376992838b0c5bd96c2fdceaf17db0eb128479..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetExperimentPropertyColDef.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2009 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data;
-
-import java.util.List;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractPropertyColDef;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DataSetSearchHit;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
-
-public final class DataSetExperimentPropertyColDef extends
-        AbstractPropertyColDef<DataSetSearchHit>
-{
-    private static final String ID_PREFIX = "exp";
-
-    // GWT only
-    public DataSetExperimentPropertyColDef()
-    {
-    }
-
-    public DataSetExperimentPropertyColDef(PropertyType propertyType,
-            boolean isDisplayedByDefault, int width, String propertyTypeLabel)
-    {
-        super(propertyType, isDisplayedByDefault, width, propertyTypeLabel, ID_PREFIX);
-    }
-
-    @Override
-    protected List<? extends EntityProperty<?, ?>> getProperties(DataSetSearchHit entity)
-    {
-        return getExperimentProperties(entity);
-    }
-    
-    public static List<ExperimentProperty> getExperimentProperties(DataSetSearchHit entity)
-    {
-        return entity.getDataSet().getProcedure().getExperiment().getProperties();
-    }
-
-}
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSamplePropertyColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSamplePropertyColDef.java
deleted file mode 100644
index 13700211cf95ef62ca07ec445acd124d6ae1ecf8..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSamplePropertyColDef.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2009 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data;
-
-import java.util.List;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractPropertyColDef;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DataSetSearchHit;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleProperty;
-
-public final class DataSetSamplePropertyColDef extends AbstractPropertyColDef<DataSetSearchHit>
-{
-    private static final String ID_PREFIX = "sample";
-
-    // GWT only
-    public DataSetSamplePropertyColDef()
-    {
-    }
-
-    DataSetSamplePropertyColDef(PropertyType propertyType, boolean isDisplayedByDefault, int width,
-            String propertyTypeLabel)
-    {
-        super(propertyType, isDisplayedByDefault, width, propertyTypeLabel, ID_PREFIX);
-    }
-
-    @Override
-    protected List<? extends EntityProperty<?, ?>> getProperties(DataSetSearchHit entity)
-    {
-        return getSampleProperties(entity);
-    }
-
-    public static List<SampleProperty> getSampleProperties(DataSetSearchHit entity)
-    {
-        return entity.getDataSet().getSampleProperties();
-    }
-}
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitColDefKind.java
deleted file mode 100644
index 54361c79eb9a304aff8c978b5164a891f3b7f08a..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitColDefKind.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright 2009 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DataSetSearchHit;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Procedure;
-
-/**
- * Definition of data set search results table columns.
- * 
- * @author Izabela Adamczyk
- */
-public enum DataSetSearchHitColDefKind implements IColumnDefinitionKind<DataSetSearchHit>
-{
-
-    CODE(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.CODE, 200)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                return entity.getDataSet().getCode();
-            }
-        }),
-
-    PARENT_CODE(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.PARENT_CODE, 200, true)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                return entity.getDataSet().getParentCode();
-            }
-        }),
-
-    LOCATION(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.LOCATION, 200)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                return entity.getDataSet().getLocation();
-            }
-        }),
-
-    DATA_SET_TYPE(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.DATA_SET_TYPE, 120)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                return entity.getDataSet().getDataSetType().getCode();
-            }
-        }),
-
-    FILE_TYPE(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.FILE_FORMAT_TYPE, 120)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                return entity.getDataSet().getFileFormatType().getCode();
-            }
-        }),
-
-    SAMPLE(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.SAMPLE, 100)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                return entity.getDataSet().getSampleCode();
-            }
-        }),
-
-    SAMPLE_IDENTIFIER(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.SAMPLE_IDENTIFIER,
-            true)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                return entity.getDataSet().getSampleIdentifier();
-            }
-        }),
-
-    SAMPLE_TYPE(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.SAMPLE_TYPE, 100)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                return entity.getDataSet().getSampleType().getCode();
-            }
-        }),
-
-    GROUP(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.GROUP, 100)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                final Experiment exp = tryGetExperiment(entity);
-                if (exp == null)
-                {
-                    return null;
-                }
-                return exp.getProject().getGroup().getCode();
-            }
-        }),
-
-    PROJECT(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.PROJECT, 100)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                final Experiment exp = tryGetExperiment(entity);
-                if (exp == null)
-                {
-                    return null;
-                }
-                return exp.getProject().getCode();
-            }
-        }),
-
-    EXPERIMENT(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.EXPERIMENT, 100)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                final Experiment exp = tryGetExperiment(entity);
-                if (exp == null)
-                {
-                    return null;
-                }
-                return exp.getCode();
-            }
-        }),
-
-    EXPERIMENT_TYPE(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.EXPERIMENT_TYPE, 120)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                final Experiment experimentOrNull = tryGetExperiment(entity);
-                if (experimentOrNull == null)
-                {
-                    return null;
-                }
-                return experimentOrNull.getExperimentType().getCode();
-            }
-
-        }),
-
-    REGISTRATION_DATE(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.REGISTRATION_DATE,
-            200, true)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                return renderRegistrationDate(entity.getDataSet());
-            }
-        }),
-
-    IS_INVALID(new AbstractColumnDefinitionKind<DataSetSearchHit>(Dict.IS_INVALID, 100, true)
-        {
-            @Override
-            public String tryGetValue(DataSetSearchHit entity)
-            {
-                return renderInvalidationFlag(entity.getDataSet());
-            }
-        }),
-
-    ;
-
-    private final AbstractColumnDefinitionKind<DataSetSearchHit> columnDefinitionKind;
-
-    private DataSetSearchHitColDefKind(
-            AbstractColumnDefinitionKind<DataSetSearchHit> columnDefinitionKind)
-    {
-        this.columnDefinitionKind = columnDefinitionKind;
-    }
-
-    public String id()
-    {
-        return name();
-    }
-
-    public AbstractColumnDefinitionKind<DataSetSearchHit> getDescriptor()
-    {
-        return columnDefinitionKind;
-    }
-
-    private static Experiment tryGetExperiment(DataSetSearchHit entity)
-    {
-        final Procedure procetureOrNull = tryGetProceture(entity);
-        if (procetureOrNull == null)
-        {
-            return null;
-        }
-        return procetureOrNull.getExperiment();
-    }
-
-    private static Procedure tryGetProceture(DataSetSearchHit entity)
-    {
-        return entity.getDataSet().getProcedure();
-    }
-
-}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java
index c720bfbbfaa4c7308f4abef6eb5826d0a67188c1..89adad64868d643c378045141f945a7a8613a92f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java
@@ -24,6 +24,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.DataSetSearchHitColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableComponent;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitModel.java
index d35727752b376a88a524ff28938fbede6df1e267..b9a365645957bab840e53c57ab354604921888f3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitModel.java
@@ -20,8 +20,11 @@ import java.util.ArrayList;
 import java.util.List;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.DataSetExperimentPropertyColDef;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.DataSetSamplePropertyColDef;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.DataSetSearchHitColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionUI;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DataSetSearchHit;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentProperty;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java
index 117a6c6b1b0ea33fba62b817538f624a83442fd4..427e0e83aae5fcd5f78be89409bf1bd1dd17efdb 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java
@@ -33,7 +33,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ExperimentModel;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.columns.CommonExperimentColDefKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.experiment.CommonExperimentColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableComponent;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/columns/CommonExperimentColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/columns/CommonExperimentColDefKind.java
deleted file mode 100644
index 973430612d7bd08fa8651885995dc5e9d65e9d10..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/columns/CommonExperimentColDefKind.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.columns;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment;
-
-/**
- * Definition of experiment table columns.
- * 
- * @author Tomasz Pylak
- */
-public enum CommonExperimentColDefKind implements IColumnDefinitionKind<Experiment>
-{
-    CODE(new AbstractColumnDefinitionKind<Experiment>(Dict.CODE)
-        {
-            @Override
-            public String tryGetValue(Experiment entity)
-            {
-                return entity.getCode();
-            }
-        }),
-
-    EXPERIMENT_TYPE(new AbstractColumnDefinitionKind<Experiment>(Dict.EXPERIMENT_TYPE, true)
-        {
-            @Override
-            public String tryGetValue(Experiment entity)
-            {
-                return entity.getExperimentType().getCode();
-            }
-        }),
-
-    EXPERIMENT_IDENTIFIER(new AbstractColumnDefinitionKind<Experiment>(Dict.EXPERIMENT_IDENTIFIER,
-            150, true)
-        {
-            @Override
-            public String tryGetValue(Experiment entity)
-            {
-                return entity.getIdentifier();
-            }
-        }),
-
-    DATABASE_INSTANCE(new AbstractColumnDefinitionKind<Experiment>(Dict.DATABASE_INSTANCE, true)
-        {
-            @Override
-            public String tryGetValue(Experiment entity)
-            {
-                return entity.getProject().getGroup().getInstance().getCode();
-            }
-        }),
-
-    GROUP(new AbstractColumnDefinitionKind<Experiment>(Dict.GROUP, true)
-        {
-            @Override
-            public String tryGetValue(Experiment entity)
-            {
-                return entity.getProject().getGroup().getCode();
-            }
-        }),
-
-    PROJECT(new AbstractColumnDefinitionKind<Experiment>(Dict.PROJECT, true)
-        {
-            @Override
-            public String tryGetValue(Experiment entity)
-            {
-                return entity.getProject().getCode();
-            }
-        }),
-
-    REGISTRATOR(new AbstractColumnDefinitionKind<Experiment>(Dict.REGISTRATOR)
-        {
-            @Override
-            public String tryGetValue(Experiment entity)
-            {
-                return renderRegistrator(entity);
-            }
-        }),
-
-    REGISTRATION_DATE(new AbstractColumnDefinitionKind<Experiment>(Dict.REGISTRATION_DATE, 200,
-            false)
-        {
-            @Override
-            public String tryGetValue(Experiment entity)
-            {
-                return renderRegistrationDate(entity);
-            }
-        }),
-
-    IS_INVALID(new AbstractColumnDefinitionKind<Experiment>(Dict.IS_INVALID, true)
-        {
-            @Override
-            public String tryGetValue(Experiment entity)
-            {
-                return renderInvalidationFlag(entity);
-            }
-        });
-
-    private final AbstractColumnDefinitionKind<Experiment> columnDefinitionKind;
-
-    private CommonExperimentColDefKind(AbstractColumnDefinitionKind<Experiment> columnDefinitionKind)
-    {
-        this.columnDefinitionKind = columnDefinitionKind;
-    }
-
-    public String id()
-    {
-        return name();
-    }
-
-    public AbstractColumnDefinitionKind<Experiment> getDescriptor()
-    {
-        return columnDefinitionKind;
-    }
-}
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/columns/PropertyExperimentColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/columns/PropertyExperimentColDef.java
deleted file mode 100644
index 2abf2ea95b1fe6d00248e124c2937e9f3093ddbd..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/columns/PropertyExperimentColDef.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.columns;
-
-import java.util.List;
-
-import com.google.gwt.user.client.rpc.IsSerializable;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractPropertyColDef;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
-
-/**
- * @author Tomasz Pylak
- */
-public class PropertyExperimentColDef extends AbstractPropertyColDef<Experiment> implements
-        IsSerializable
-{
-    // GWT only
-    public PropertyExperimentColDef()
-    {
-        super(null, false, 0, false, null, null);
-    }
-
-    public PropertyExperimentColDef(PropertyType propertyType)
-    {
-        super(propertyType, true);
-    }
-
-    @Override
-    protected List<? extends EntityProperty<?, ?>> getProperties(Experiment entity)
-    {
-        return entity.getProperties();
-    }
-}
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
index 90e86aa5d61fa5135f6104c16fb969a22787f3d2..f836d7b620e58ed4635aa3927224c84f2ae50c00 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
@@ -62,8 +62,8 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericCon
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.VoidAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.BrowserGridPagingToolBar.IBrowserGridActionInvoker;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelagatedAction;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java
index 617030023a27cce767537b8bfc5969734096a055..da0183de6e49a931f1b1a8ba568a0c225c19bb1f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractSimpleBrowserGrid.java
@@ -21,8 +21,8 @@ import java.util.List;
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionUI;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI;
 
 /**
  * Grid displaying all the entities without any criteria (useful when there is no specific toolbar).
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java
index 4043bd39714aeb3d35c63ab7962db61cc1524095..9a9d06ab9e14ccd58a93c0f97fa177cd257749a0 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java
@@ -21,7 +21,7 @@ import java.util.List;
 
 import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionUI;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition;
 
 /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java
index 4ee1a2a346594c0d42cffc92f82cc1b999863371..0a7a5aa9d5768c921dc88759f96f058f5b8c3dd9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java
@@ -22,9 +22,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAs
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.ProjectColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractSimpleBrowserGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableComponent;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Project;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java
index 0971a7c6f4d9e1f2120255eb3c3669ef9426261a..4e610bf675cfc894600a52116cebe3c567bfd5f4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java
@@ -22,9 +22,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAs
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.PropertyTypeAssignmentColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractSimpleBrowserGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableComponent;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java
index 4d454b118ff2987cabdd2fdf2b121f82fdf22033..f8e931492e6aa3bdf2437e194af5c56430a73f30 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java
@@ -23,9 +23,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.PropertyTypeModel;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.PropertyTypeColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractSimpleBrowserGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableComponent;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java
index 261c7c7dfc5c3731f72cfc8fd1671eee6defe352..09d0296cce72bb37cd05dd3e1da74754b0579439 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java
@@ -32,11 +32,11 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericCon
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.SampleModel;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractBrowserGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableComponent;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.CommonSampleColDefKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.SampleModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleCriteria;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/AbstractParentSampleColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/AbstractParentSampleColDef.java
deleted file mode 100644
index 63de564faf44ea6b4bd1a03082fa199210c61fd1..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/AbstractParentSampleColDef.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns;
-
-import com.google.gwt.user.client.rpc.IsSerializable;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinition;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
-
-abstract class AbstractParentSampleColDef extends AbstractColumnDefinition<Sample> implements
-        IsSerializable
-{
-    abstract protected Sample tryGetParent(Sample sample);
-
-    abstract protected String getIdentifierPrefix();
-
-    private static final String IDENTIFIER_SEPARATOR = "/";
-
-    private int/* the level which should be shown */level;
-
-    AbstractParentSampleColDef(int level, String headerText)
-    {
-        super(headerText, AbstractColumnDefinitionKind.DEFAULT_COLUMN_WIDTH, false);
-        this.level = level;
-    }
-
-    @Override
-    protected String tryGetValue(Sample sample)
-    {
-        Sample parent = tryGetParentSample(sample);
-        if (parent != null)
-        {
-            return printShortIdentifier(parent);
-        } else
-        {
-            return null;
-        }
-    }
-
-    public String getIdentifier()
-    {
-        return getIdentifierPrefix() + level;
-    }
-
-    private final Sample tryGetParentSample(final Sample sample)
-    {
-        Sample parent = sample;
-        int depth = level;
-        while (depth > 0 && parent != null)
-        {
-            parent = tryGetParent(parent);
-            depth--;
-        }
-        return parent;
-    }
-
-    private final static String printShortIdentifier(final Sample sample)
-    {
-        if (sample.getDatabaseInstance() != null)
-        {
-            return IDENTIFIER_SEPARATOR + sample.getCode();
-        } else
-        {
-            return sample.getCode();
-        }
-    }
-}
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/CommonSampleColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/CommonSampleColDefKind.java
deleted file mode 100644
index 2dcf8779f6c16f70e1ff9b77556fab0fdc8a006d..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/CommonSampleColDefKind.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleYesNoRenderer;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Group;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Procedure;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseInstance;
-
-public enum CommonSampleColDefKind implements IColumnDefinitionKind<Sample>
-{
-    DATABASE_INSTANCE(new AbstractColumnDefinitionKind<Sample>(Dict.DATABASE_INSTANCE, true)
-        {
-            @Override
-            public String tryGetValue(Sample entity)
-            {
-                DatabaseInstance databaseInstance = entity.getDatabaseInstance();
-                if (databaseInstance == null)
-                {
-                    databaseInstance = entity.getGroup().getInstance();
-                }
-                return databaseInstance.getCode();
-            }
-        }),
-
-    GROUP(new AbstractColumnDefinitionKind<Sample>(Dict.GROUP, true)
-        {
-            @Override
-            public String tryGetValue(Sample entity)
-            {
-                final Group group = entity.getGroup();
-                return group == null ? "" : group.getCode();
-            }
-        }),
-
-    CODE(new AbstractColumnDefinitionKind<Sample>(Dict.CODE)
-        {
-            @Override
-            public String tryGetValue(Sample entity)
-            {
-                return entity.getCode();
-            }
-        }),
-
-    SAMPLE_IDENTIFIER(new AbstractColumnDefinitionKind<Sample>(Dict.SAMPLE_IDENTIFIER, 150, true)
-        {
-            @Override
-            public String tryGetValue(Sample entity)
-            {
-                return entity.getIdentifier();
-            }
-        }),
-
-    IS_INSTANCE_SAMPLE(new AbstractColumnDefinitionKind<Sample>(Dict.IS_INSTANCE_SAMPLE, true)
-        {
-            @Override
-            public String tryGetValue(Sample entity)
-            {
-                return SimpleYesNoRenderer.render(entity.getDatabaseInstance() != null);
-            }
-        }),
-
-    IS_INVALID(new AbstractColumnDefinitionKind<Sample>(Dict.IS_INVALID, true)
-        {
-            @Override
-            public String tryGetValue(Sample entity)
-            {
-                return renderInvalidationFlag(entity);
-            }
-        }),
-
-    EXPERIMENT(new AbstractColumnDefinitionKind<Sample>(Dict.EXPERIMENT)
-        {
-            @Override
-            public String tryGetValue(Sample entity)
-            {
-                final Experiment exp = tryToGetExperiment(entity);
-                return exp == null ? null : exp.getCode();
-            }
-        }),
-
-    EXPERIMENT_IDENTIFIER(new AbstractColumnDefinitionKind<Sample>(Dict.EXPERIMENT_IDENTIFIER, 200,
-            true)
-        {
-            @Override
-            public String tryGetValue(Sample entity)
-            {
-                final Experiment exp = tryToGetExperiment(entity);
-                return exp == null ? null : exp.getIdentifier();
-            }
-        }),
-
-    PROJECT(new AbstractColumnDefinitionKind<Sample>(Dict.PROJECT)
-        {
-            @Override
-            public String tryGetValue(Sample entity)
-            {
-                final Experiment exp = tryToGetExperiment(entity);
-                return exp == null ? null : exp.getProject().getCode();
-            }
-        }),
-
-    REGISTRATOR(new AbstractColumnDefinitionKind<Sample>(Dict.REGISTRATOR)
-        {
-            @Override
-            public String tryGetValue(Sample entity)
-            {
-                return renderRegistrator(entity);
-            }
-        }),
-
-    REGISTRATION_DATE(new AbstractColumnDefinitionKind<Sample>(Dict.REGISTRATION_DATE,
-            AbstractColumnDefinitionKind.DATE_COLUMN_WIDTH)
-        {
-            @Override
-            public String tryGetValue(Sample entity)
-            {
-                return renderRegistrationDate(entity);
-            }
-        });
-
-    private final AbstractColumnDefinitionKind<Sample> columnDefinitionKind;
-
-    private CommonSampleColDefKind(AbstractColumnDefinitionKind<Sample> columnDefinitionKind)
-    {
-        this.columnDefinitionKind = columnDefinitionKind;
-    }
-
-    public String id()
-    {
-        return name();
-    }
-
-    public AbstractColumnDefinitionKind<Sample> getDescriptor()
-    {
-        return columnDefinitionKind;
-    }
-
-    private final static Experiment tryToGetExperiment(final Sample sample)
-    {
-        final Procedure procedure = sample.getValidProcedure();
-        if (procedure != null)
-        {
-            return procedure.getExperiment();
-        }
-        return null;
-    }
-
-}
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ParentContainerSampleColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ParentContainerSampleColDef.java
deleted file mode 100644
index bffd901e2168fd0d73bed77fbc62b5c7cd5df9f8..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ParentContainerSampleColDef.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
-
-class ParentContainerSampleColDef extends AbstractParentSampleColDef
-{
-    private static final String PARENT_PREFIX = "containerParent";
-
-    // GWT only
-    public ParentContainerSampleColDef()
-    {
-        super(0, null);
-    }
-
-    public ParentContainerSampleColDef(int level, String headerText)
-    {
-        super(level, headerText);
-    }
-
-    @Override
-    protected String getIdentifierPrefix()
-    {
-        return PARENT_PREFIX;
-    }
-
-    @Override
-    protected Sample tryGetParent(Sample sample)
-    {
-        return sample.getContainer();
-    }
-}
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ParentGeneratedFromSampleColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ParentGeneratedFromSampleColDef.java
deleted file mode 100644
index 4122ea0bcd71cfabecc5e7b6baaf30e005dc5445..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ParentGeneratedFromSampleColDef.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
-
-class ParentGeneratedFromSampleColDef extends AbstractParentSampleColDef
-{
-    private static final String PARENT_PREFIX = "generatedFromParent";
-
-    // GWT only
-    public ParentGeneratedFromSampleColDef()
-    {
-        super(0, null);
-    }
-
-    public ParentGeneratedFromSampleColDef(int level, String headerText)
-    {
-        super(level, headerText);
-    }
-
-    @Override
-    protected String getIdentifierPrefix()
-    {
-        return PARENT_PREFIX;
-    }
-
-    @Override
-    protected Sample tryGetParent(Sample sample)
-    {
-        return sample.getGeneratedFrom();
-    }
-}
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/PropertySampleColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/PropertySampleColDef.java
deleted file mode 100644
index 36d532cc4c82f1c342bd592fec98b52cbe2b28f2..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/PropertySampleColDef.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns;
-
-import java.util.List;
-
-import com.google.gwt.user.client.rpc.IsSerializable;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.AbstractPropertyColDef;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
-
-class PropertySampleColDef extends AbstractPropertyColDef<Sample> implements IsSerializable
-{
-    // GWT only
-    public PropertySampleColDef()
-    {
-        super(null, false, 0, false, null, null);
-    }
-
-    public PropertySampleColDef(PropertyType propertyType, boolean isDisplayedByDefault)
-    {
-        super(propertyType, isDisplayedByDefault);
-    }
-
-    @Override
-    protected List<? extends EntityProperty<?, ?>> getProperties(Sample entity)
-    {
-        return entity.getProperties();
-    }
-}
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java
index ec8cfc10f5ac095bee7cea12d020f19f286e4857..96a7150d2469f4431123a5a6ca354459671d684e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java
@@ -22,9 +22,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAs
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.VocabularyColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractSimpleBrowserGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableComponent;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.columns.IColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentDataSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentDataSection.java
index e13c763c90d9ca731be41891b97ed8eaa4a96758..e48ca1f5849b32973c59d24a8db5ae28a5331be4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentDataSection.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentDataSection.java
@@ -25,7 +25,6 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ExternalDataModel;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.CommonExternalDataColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleCriteria;
 import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync;
@@ -50,7 +49,7 @@ public class ExperimentDataSection extends AbstractExperimentTableSection<Extern
     @Override
     protected ColumnModel createColumnModel()
     {
-        return CommonExternalDataColDefKind.createColumnModel(viewContext);
+        return ExternalDataModel.createColumnModel(viewContext);
     }
 
     @Override
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java
index ed4eb7be2948284b0fc5960af09834fe49bf75c2..413d51cee2afabe8b35e7a2bfcfa7af7351b8e05 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java
@@ -52,13 +52,12 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ExternalDataModel;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.SampleModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewer;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnConfigFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.PropertyValueRenderers;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.CommonExternalDataColDefKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property.PropertyGrid;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.CommonSampleColDefKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.SampleModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Invalidation;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleCriteria;
@@ -136,7 +135,7 @@ public final class GenericSampleViewer extends AbstractViewer<IGenericClientServ
                 createListLoader(createRpcProxyForExternalData());
         final ListStore<ExternalDataModel> externalDataListStore =
                 createListStore(externalDataLoader);
-        ColumnModel columnModel = CommonExternalDataColDefKind.createColumnModel(viewContext);
+        ColumnModel columnModel = ExternalDataModel.createColumnModel(viewContext);
         externalDataGrid = new Grid<ExternalDataModel>(externalDataListStore, columnModel);
         externalDataGrid.setId(getId() + DATA_POSTFIX);
         externalDataGrid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
diff --git a/openbis/source/java/service.properties b/openbis/source/java/service.properties
index 2d79426ddf954b21f64639f2c2e87fe590d6cbc1..0abaf8af28518d355c8c7f676d507a36a7d08ece 100644
--- a/openbis/source/java/service.properties
+++ b/openbis/source/java/service.properties
@@ -15,7 +15,7 @@ database.create-from-scratch = false
 # For debugging set this value to true.
 database.script-single-step-mode = false
 database.url-host-part =
-database.kind = dev
+database.kind = test
 # database.kind = system_test
 # database.kind = system_test_strict
 # database.kind = system_test_plates_on_demand
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DataSetSearchTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DataSetSearchTest.java
index 492bfe86c312be8032493c402bdb1e53acb44a46..2303af800797066815f3a53b8ef17702676ac21a 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DataSetSearchTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DataSetSearchTest.java
@@ -19,7 +19,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CategoriesBuilder;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.OpenTab;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.DataSetSearchHitColDefKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.DataSetSearchHitColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.DataSetSearchHitGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.FillSearchCriteria;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase;
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityTypePropertyTypeAssignmentTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityTypePropertyTypeAssignmentTest.java
index 2b7297b2af58e62e24de560348ba6a1ff32208ff..0516f074d2d6eb912dedfa9ab84168b0928f6165 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityTypePropertyTypeAssignmentTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityTypePropertyTypeAssignmentTest.java
@@ -19,10 +19,10 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CategoriesBuilder;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.OpenTab;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.PropertyTypeAssignmentColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.CheckPropertyTypeAssignmentTable;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.FillPropertyTypeAssignmentForm;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeAssignmentColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeAssignmentForm;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.CheckSampleTable;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.ListSamples;
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectRegistrationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectRegistrationTest.java
index 60c3ae1fc6c99d2528ac7f34c74c24e4554efd34..a7e23d7459e61ad68769bc2b79a9952e0f274deb 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectRegistrationTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ProjectRegistrationTest.java
@@ -19,9 +19,9 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CategoriesBuilder;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.OpenTab;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.ProjectColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project.CheckProjectTable;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project.FillProjectRegistrationForm;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project.ProjectColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.project.ProjectRegistrationForm;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row;
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeAssignmentBrowserTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeAssignmentBrowserTest.java
index 95e2ba977373be9b6a3f2e62b0ec085062d16fea..757d7e9e40eb12069e828d07057a5caccfe641f4 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeAssignmentBrowserTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeAssignmentBrowserTest.java
@@ -19,8 +19,8 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CategoriesBuilder;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.OpenTab;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.PropertyTypeAssignmentColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.CheckPropertyTypeAssignmentTable;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeAssignmentColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row;
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeBrowserTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeBrowserTest.java
index 411040e3252436b23de8f49abbc25014a37068a8..8ba3fc5f10b6363493ca50b929ec8e79cdf5f834 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeBrowserTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeBrowserTest.java
@@ -19,8 +19,8 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CategoriesBuilder;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.OpenTab;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.PropertyTypeColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.CheckPropertyTypeTable;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row;
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeRegistrationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeRegistrationTest.java
index 1ad86e4e3dd2852a07f41cc6a2a66739a5499ff6..9b16fbcd5336d87b6c0f6e5a32c9d3da90fbed54 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeRegistrationTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/PropertyTypeRegistrationTest.java
@@ -19,9 +19,9 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CategoriesBuilder;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.OpenTab;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.PropertyTypeColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.CheckPropertyTypeTable;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.FillPropertyTypeRegistrationForm;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeRegistrationForm;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row;
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/columns/DataSetRow.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/columns/DataSetRow.java
index bf0bb1d748ad8734fdadeec216c9c1ae42f64f68..e1900a0ca4dced6fc485c7c9b57fec08c65a4408 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/columns/DataSetRow.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/columns/DataSetRow.java
@@ -16,8 +16,8 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.columns;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.CommonExternalDataColDefKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.CommonExternalDataColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.util.RendererTestUtil;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row;
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRow.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRow.java
index 49b1f68812d59d1ef57cff876087fd90a3cc97b4..c0a96f62adc30ffc0722dd23b57c370864ed2b51 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRow.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRow.java
@@ -16,8 +16,8 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.columns.CommonExperimentColDefKind;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.experiment.CommonExperimentColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.util.RendererTestUtil;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row;
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ShowExperiment.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ShowExperiment.java
index fdaf864496426ea415d5d37ed19a4a5a019ca613..1775bd1cd032137e8c2a0c5e61597f76181a5295 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ShowExperiment.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ShowExperiment.java
@@ -23,7 +23,7 @@ import com.extjs.gxt.ui.client.widget.grid.Grid;
 import com.google.gwt.user.client.ui.Widget;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ExperimentModel;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.columns.CommonExperimentColDefKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.experiment.CommonExperimentColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractDefaultTestCommand;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.GWTTestUtil;
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/SampleRow.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/SampleRow.java
index d0ac332d5533d0f19749cccbae7039dbf9f0054e..e891235f91bd996622323da04214e465be56c3e8 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/SampleRow.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/SampleRow.java
@@ -16,7 +16,10 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleYesNoRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.ParentGeneratedFromSampleColDef;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.PropertySampleColDef;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.util.RendererTestUtil;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ShowSample.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ShowSample.java
index 0e18342c7ccd24f383e3faba89648134b53f80de..f7727e4343814380b95253338bda597f19415989 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ShowSample.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/columns/ShowSample.java
@@ -22,6 +22,8 @@ import com.extjs.gxt.ui.client.store.ListStore;
 import com.extjs.gxt.ui.client.widget.grid.Grid;
 import com.google.gwt.user.client.ui.Widget;
 
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.SampleModel;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractDefaultTestCommand;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.GWTTestUtil;
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/SimpleDateRendererTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/SimpleDateRendererTest.java
index be06cf89eac47787d6ee24580bd33bd18ba2897a..1e95445eeafc382f01dbfbb13e13a87f2b255fa3 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/SimpleDateRendererTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/SimpleDateRendererTest.java
@@ -24,7 +24,7 @@ import org.testng.AssertJUnit;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.renderer.SimpleDateRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleDateRenderer;
 
 /**
  * Tests of {@link SimpleDateRenderer}. The test is in the different package than the tested class
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationTest.java
index c5ed1cbe66b9796db19c251e09bb41bcbc24111e..abcfe0b3a0f8eda6c6df4069cd94c7aa63ae19ae 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationTest.java
@@ -20,10 +20,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.GroupSelectionWidget;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.OpenTab;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.CheckSampleTable;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.ChooseTypeOfNewSample;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.ListSamples;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.CommonSampleColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.SampleRow;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.ShowSample;
 import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase;
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewerTest.java
index ed5856d7772bae7c1c29beb388d335feaca449d8..8768f480d084ef4ef6fc320d73d5fe78d2e42d03 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewerTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewerTest.java
@@ -19,9 +19,9 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sa
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CategoriesBuilder;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.OpenTab;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.columns.DataSetRow;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.ListSamples;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.CommonSampleColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.ShowSample;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.util.RendererTestUtil;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Invalidation;