diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/ManagedPropertyEvaluator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/ManagedPropertyEvaluator.java
index a7797a78b34238dc6d1caf0094f213868454968d..196e5ff4cbc1336171aedf8311462843bba3ec79 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/ManagedPropertyEvaluator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/ManagedPropertyEvaluator.java
@@ -30,6 +30,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.SimpleTableModelBuilder;
  * 
  * @author Chandrasekhar Ramakrishnan
  */
+// TODO 2011-01-14, Piotr Buczek: it should be possible to reuse evaluator by set of properties
 public class ManagedPropertyEvaluator
 {
     private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION,
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/SimpleTableModelBuilderAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/SimpleTableModelBuilderAdaptor.java
index e8a0ba6cf950ae1823986c683907718593200db7..13c6f6c32258f10d069b6081d9cfc40ede55d507 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/SimpleTableModelBuilderAdaptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/SimpleTableModelBuilderAdaptor.java
@@ -20,6 +20,7 @@ import java.util.Date;
 
 import ch.systemsx.cisd.openbis.generic.server.business.bo.managed_property.api.IRowBuilderAdaptor;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.managed_property.api.ISimpleTableModelBuilderAdaptor;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel;
 import ch.systemsx.cisd.openbis.generic.shared.util.IRowBuilder;
 import ch.systemsx.cisd.openbis.generic.shared.util.SimpleTableModelBuilder;
 
@@ -46,17 +47,12 @@ public class SimpleTableModelBuilderAdaptor implements ISimpleTableModelBuilderA
     // SimpleTableModelBuilder delegated methods
     //
 
-    // This is not exposed in API interface on purpose.
-    // We don't want to expose neither builder nor TableModel.
-    public SimpleTableModelBuilder getBuilder()
+    // NOTE: TableModel is exposed to keep dependencies simple
+    public TableModel getTableModel()
     {
-        return builder;
+        return builder.getTableModel();
     }
 
-    //
-    // ISimpleTableModelBuilderAdaptor
-    //
-
     public void addHeader(String title)
     {
         builder.addHeader(title);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/api/ISimpleTableModelBuilderAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/api/ISimpleTableModelBuilderAdaptor.java
index 6d3844169d4e58f2b45e4e7d6bf5ff5477c7a9f3..e9a8de9f711f6cc5178082ed06a1392c95ffb9e5 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/api/ISimpleTableModelBuilderAdaptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/api/ISimpleTableModelBuilderAdaptor.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.openbis.generic.server.business.bo.managed_property.api;
 
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel;
 
 /**
  * Builder of simple table models.
@@ -28,6 +29,13 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException;
 public interface ISimpleTableModelBuilderAdaptor
 {
 
+    /**
+     * Returns table model to be set in as output.
+     * <p>
+     * NOTE: scripts shouldn't rely on the returned object's interface
+     */
+    TableModel getTableModel();
+
     /**
      * Adds an empty row and returns a row builder for setting values of this row.
      * 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IManagedEntityProperty.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IManagedEntityProperty.java
index 82b16d187be512d0ae2c88623d278a2c7c0ae525..d581e5f5a66260a4de6be8d8728fa63d7a330c9b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IManagedEntityProperty.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IManagedEntityProperty.java
@@ -23,10 +23,8 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto;
  */
 public interface IManagedEntityProperty
 {
-    // private String tabName; // tab name could be just property code
-
     boolean isOwnTab();
 
-    ManagedUiDescription getUiDescription();
+    IManagedUiDescription getUiDescription();
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IManagedInputWidgetDescription.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IManagedInputWidgetDescription.java
new file mode 100644
index 0000000000000000000000000000000000000000..382919fc0476470d42bf6a4130a5e72291095b6d
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IManagedInputWidgetDescription.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2011 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.shared.basic.dto;
+
+/**
+ * Interface implemented by objects describing an input UI element (text field, combo box)
+ * 
+ * @author Piotr Buczek
+ */
+public interface IManagedInputWidgetDescription extends IManagedWidgetDescription
+{
+    ManagedInputFieldType getManagedInputFieldType();
+
+    void setValue(String value);
+
+    String getValue();
+
+    void setLabel(String label);
+
+    String getLabel();
+
+}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IManagedUiDescription.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IManagedUiDescription.java
index 23bd22f9035f1b1b4e984d892ce5864fb5f14bc0..d523f544cb4b65b7b33405f30b67d770aab1dbc8 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IManagedUiDescription.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IManagedUiDescription.java
@@ -16,7 +16,6 @@
 
 package ch.systemsx.cisd.openbis.generic.shared.basic.dto;
 
-import ch.systemsx.cisd.openbis.generic.server.business.bo.managed_property.api.ISimpleTableModelBuilderAdaptor;
 
 /**
  * The interface exposed to the Managed Property script.
@@ -25,13 +24,11 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.managed_property.api.
  */
 public interface IManagedUiDescription
 {
-    public void setupTableOutput(ISimpleTableModelBuilderAdaptor tableModelBuilder);
-
-    // FIXME remove this as it exposes TableModel (or introduce TableModelAdaptor)
-    @Deprecated
     public void useTableOutput(TableModel tableModel);
 
     public void addTextInputField(String label);
 
     public void addComboBoxInputField(String labels, String[] values);
+
+    public IManagedWidgetDescription getOutputWidgetDescription();
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedComboBoxInputWidgetDescription.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedComboBoxInputWidgetDescription.java
index f6cd5594e50e44d48f17c05514e46494edd89f94..e74084dbd4c61aeb43960be2cc16fd1d6f499ebd 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedComboBoxInputWidgetDescription.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedComboBoxInputWidgetDescription.java
@@ -28,6 +28,12 @@ public class ManagedComboBoxInputWidgetDescription extends ManagedInputWidgetDes
 
     private List<String> options = new ArrayList<String>();
 
+    @Override
+    public ManagedInputFieldType getManagedInputFieldType()
+    {
+        return ManagedInputFieldType.COMBO_BOX;
+    }
+
     public List<String> getOptions()
     {
         return options;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedEntityProperty.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedEntityProperty.java
index 0d5795996bf16adfb7756f87a5eb82bf78924688..a94fa8942d1d4d0b40df4d2f47a75198be262d68 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedEntityProperty.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedEntityProperty.java
@@ -53,7 +53,7 @@ public class ManagedEntityProperty implements IEntityProperty, IManagedEntityPro
         this.ownTab = ownTab;
     }
 
-    public ManagedUiDescription getUiDescription()
+    public IManagedUiDescription getUiDescription()
     {
         return uiDescription;
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedInputWidgetDescription.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedInputWidgetDescription.java
index ca150330a9e597b4f985ec4c4b1842d5ad2114f4..62814f5ad4a24de26cb43d8349283a76a52a98a1 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedInputWidgetDescription.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedInputWidgetDescription.java
@@ -19,7 +19,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto;
 /**
  * @author Chandrasekhar Ramakrishnan
  */
-public abstract class ManagedInputWidgetDescription implements IManagedWidgetDescription
+public abstract class ManagedInputWidgetDescription implements IManagedInputWidgetDescription
 {
     private static final long serialVersionUID = 1L;
 
@@ -27,11 +27,19 @@ public abstract class ManagedInputWidgetDescription implements IManagedWidgetDes
 
     private String value;
 
+    //
+    // IManagedWidgetDescription
+    //
+
     public ManagedWidgetType getManagedWidgetType()
     {
         return ManagedWidgetType.INPUT;
     }
 
+    //
+    // IManagedInputWidgetDescription
+    //
+
     public ManagedInputFieldType getManagedInputFieldType()
     {
         return ManagedInputFieldType.TEXT;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java
index 5b344d2e61408af56a36fc9b35bb64b190fd0662..a91b0342caa023a35397c9720e9906e9c3b1ba45 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java
@@ -19,10 +19,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto;
 import java.util.Arrays;
 import java.util.List;
 
-import ch.systemsx.cisd.openbis.generic.server.business.bo.managed_property.SimpleTableModelBuilderAdaptor;
-import ch.systemsx.cisd.openbis.generic.server.business.bo.managed_property.api.ISimpleTableModelBuilderAdaptor;
 import ch.systemsx.cisd.openbis.generic.shared.basic.ISerializable;
-import ch.systemsx.cisd.openbis.generic.shared.util.SimpleTableModelBuilder;
 
 /**
  * Object that declaratively describes a UI (labels, fields, their ordering, table content).
@@ -82,23 +79,6 @@ public class ManagedUiDescription implements IManagedUiDescription, ISerializabl
         addInputWidgetDescription(inputField);
     }
 
-    public void setupTableOutput(ISimpleTableModelBuilderAdaptor tableModelBuilder)
-    {
-        ManagedTableWidgetDescription tableWidget = new ManagedTableWidgetDescription();
-        SimpleTableModelBuilder simpleTableModelBuilder;
-        if (tableModelBuilder instanceof SimpleTableModelBuilderAdaptor)
-        {
-            simpleTableModelBuilder =
-                    ((SimpleTableModelBuilderAdaptor) tableModelBuilder).getBuilder();
-        } else
-        {
-            simpleTableModelBuilder = new SimpleTableModelBuilder();
-            simpleTableModelBuilder.setMessage("can't handle table builder");
-        }
-        tableWidget.setTableModel(simpleTableModelBuilder.getTableModel());
-        setOutputWidgetDescription(tableWidget);
-    }
-
     public void useTableOutput(TableModel tableModel)
     {
         ManagedTableWidgetDescription tableWidget = new ManagedTableWidgetDescription();