diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java
index 82b3fdcbf27b6a80bfeb3548f7ba8295f8e95620..d7c8f82f99aac7cb04828123b4ee59767f351d43 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java
@@ -446,7 +446,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta
             removeButtons(PagingToolBarButtonKind.CONFIG, PagingToolBarButtonKind.REFRESH);
         }
         setId(browserId);
-
+        pagingToolbar.setId(gridId + "-paging-toolbar");
     }
 
     public void removeButtons(PagingToolBarButtonKind... buttonKinds)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java
index 72274baba03f8222fa2d1a020b5d33c491d5cf99..c38a10d7e76b6a2f4cfb80c6219e59defaa1b635 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java
@@ -129,6 +129,7 @@ public final class BrowserGridPagingToolBar extends PagingToolBar
         insertTableButton(createTableOperationsLabel());
 
         this.showFiltersButton = createShowFiltersButton(viewContext, invoker);
+        this.showFiltersButton.setId(gridId + "-show-filters");
         insertTableButton(showFiltersButton);
 
         this.configButton = createConfigButton(viewContext, invoker, gridId);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java
index 4dc420e6b6ff693f8951c89e45a34e8973294b66..7bf0e7859f24eacbd405db701e67b8967abd5c6f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java
@@ -70,8 +70,10 @@ public class ListColumnFilterWidget<T> extends ComboBox<ModelData> implements
 
     private boolean comboBoxValueSelected = false;
 
+    private String gridId;
+
     public ListColumnFilterWidget(IColumnDefinition<T> filteredField,
-            final IDelegatedAction onFilterAction, List<String> distinctValues)
+            final IDelegatedAction onFilterAction, List<String> distinctValues, String gridId)
     {
         this.filteredField = filteredField;
         this.onFilterAction = onFilterAction;
@@ -102,6 +104,8 @@ public class ListColumnFilterWidget<T> extends ComboBox<ModelData> implements
                 ModelDataPropertyNames.TOOLTIP));
 
         GWTUtils.setupAutoWidth(this);
+        this.setId(gridId + "-" + label);
+        this.gridId = gridId;
     }
 
     private static DelayedTask createFilterApplierTask(final IDelegatedAction onFilterAction)
@@ -172,7 +176,7 @@ public class ListColumnFilterWidget<T> extends ComboBox<ModelData> implements
     {
         if (distinctValuesOrNull == null)
         {
-            return new TextColumnFilterWidget<T>(filteredField, onFilterAction);
+            return new TextColumnFilterWidget<T>(filteredField, onFilterAction, gridId);
         } else
         {
             if (distinctValuesOrNull.equals(getCurrentStoreValues()) == false)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java
index ff8c539dc3b74dc66fa387b66ce7c33805d2549f..c05c978d7037aa1c937a70a93c2737a0396a0161 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java
@@ -42,9 +42,11 @@ public class TextColumnFilterWidget<T/* entity */> extends StoreFilterField<Mode
 
     private boolean disableApply = false;
 
+    private String gridId;
+
     /** @param onFilterAction callback executed when data are about to be filtered. */
     public TextColumnFilterWidget(IColumnDefinition<T> filteredField,
-            IDelegatedAction onFilterAction)
+            IDelegatedAction onFilterAction, String gridId)
     {
         this.filteredField = filteredField;
         this.onFilterAction = onFilterAction;
@@ -53,6 +55,8 @@ public class TextColumnFilterWidget<T/* entity */> extends StoreFilterField<Mode
         setEmptyText(label);
         setToolTip(label);
         setValidationDelay(ListColumnFilterWidget.FILTER_APPLICATION_TIMEOUT_MS);
+        this.setId(gridId + "-" + label);
+        this.gridId = gridId;
     }
 
     @Override
@@ -112,7 +116,7 @@ public class TextColumnFilterWidget<T/* entity */> extends StoreFilterField<Mode
         } else
         {
             return new ListColumnFilterWidget<T>(filteredField, onFilterAction,
-                    distinctValuesOrNull);
+                    distinctValuesOrNull, gridId);
         }
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java
index 61e81dd6695f7b4b3d0f2e2e7ffd6cd2c49e24d5..45eed4407d2ac1be4cf48cbbcc8888c5679beb75 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java
@@ -79,6 +79,8 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
 
     public final static int MAX_FILTER_FIELDS = MAX_FILTER_FIELDS_COLUMNS * MAX_FILTER_FIELDS_ROWS;
 
+    private String gridId;
+
     public FilterToolbar(IViewContext<ICommonClientServiceAsync> viewContext, String gridId,
             IDisplayTypeIDProvider displayTypeIDProvider, IDelegatedAction applyFiltersAction)
     {
@@ -151,6 +153,8 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
                 }
             });
         viewContext.logStop(logID);
+        this.gridId = gridId;
+        setId(gridId + "-filter-toolbar");
     }
 
     public static String createId(String prefix, String gridId)
@@ -445,7 +449,7 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
         {
             List<IColumnFilterWidget<T>> newColumnFilters =
                     createColumnFilterWidgets(pruneIfNecessary(filteredColumns),
-                            this.columnFilters, applyFiltersAction);
+                            this.columnFilters, applyFiltersAction, gridId);
             updateColumnFilters(newColumnFilters);
             return true;
         } else
@@ -490,10 +494,13 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
             {
                 return true;
             }
-            if (filter1 instanceof TypedTableGridColumnDefinition && filter2 instanceof TypedTableGridColumnDefinition)
+            if (filter1 instanceof TypedTableGridColumnDefinition
+                    && filter2 instanceof TypedTableGridColumnDefinition)
             {
-                TypedTableGridColumnDefinition<?> coldef1 = (TypedTableGridColumnDefinition<?>) filter1;
-                TypedTableGridColumnDefinition<?> coldef2 = (TypedTableGridColumnDefinition<?>) filter2;
+                TypedTableGridColumnDefinition<?> coldef1 =
+                        (TypedTableGridColumnDefinition<?>) filter1;
+                TypedTableGridColumnDefinition<?> coldef2 =
+                        (TypedTableGridColumnDefinition<?>) filter2;
                 if (coldef1.getIndex() != coldef2.getIndex())
                 {
                     return true;
@@ -505,7 +512,8 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
 
     private static <T> List<IColumnFilterWidget<T>> createColumnFilterWidgets(
             List<IColumnDefinition<T>> availableFilters,
-            List<IColumnFilterWidget<T>> previousColumnFilters, IDelegatedAction onFilterAction)
+            List<IColumnFilterWidget<T>> previousColumnFilters, IDelegatedAction onFilterAction,
+            String gridId)
     {
         List<IColumnFilterWidget<T>> filterWidgets = new ArrayList<IColumnFilterWidget<T>>();
         for (IColumnDefinition<T> columnDefinition : availableFilters)
@@ -516,7 +524,8 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
             {
                 // we do not have distinct values in the columns at this moment, so plain filter
                 // widget is always created
-                filterWidget = new TextColumnFilterWidget<T>(columnDefinition, onFilterAction);
+                filterWidget =
+                        new TextColumnFilterWidget<T>(columnDefinition, onFilterAction, gridId);
             } else
             {
                 filterWidget.setFilteredField(columnDefinition);
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java
index 6eca934070ddcb4c228a6f6ebf5630e317824bb6..61bcc47f409ec79031d7d187c62224072b235cd6 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java
@@ -90,7 +90,7 @@ public class ApplicationRunner
     public void delete(Space space)
     {
         SpaceBrowser browser = browseToSpaceBrowser();
-        browser.filter(space.getCode());
+        browser.filter(space);
         browser.select(space);
         browser.delete();
     }
@@ -192,7 +192,7 @@ public class ApplicationRunner
         getMenus().admin();
         load(AdminMenu.class).types();
         load(TypesMenu.class).sampleTypes();
-        return load(SampleTypeBrowser.class);
+        return getBrowser(SampleTypeBrowser.class);
     }
 
     public ExperimentTypeBrowser browseToExperimentTypeBrowser()
@@ -200,7 +200,7 @@ public class ApplicationRunner
         getMenus().admin();
         load(AdminMenu.class).types();
         load(TypesMenu.class).experimentTypes();
-        return load(ExperimentTypeBrowser.class);
+        return getBrowser(ExperimentTypeBrowser.class);
     }
 
     public Trash browseToTrash()
@@ -225,16 +225,14 @@ public class ApplicationRunner
     {
         getMenus().admin();
         load(AdminMenu.class).spaces();
-        SpaceBrowser browser = load(SpaceBrowser.class);
-        browser.resetFilters();
-        return browser;
+        return getBrowser(SpaceBrowser.class);
     }
 
     public ProjectBrowser browseToProjectBrowser()
     {
         getMenus().browse();
         load(BrowseMenu.class).projects();
-        return load(ProjectBrowser.class);
+        return getBrowser(ProjectBrowser.class);
     }
 
     public AddSpaceDialog browseToAddSpaceDialog()
@@ -247,7 +245,8 @@ public class ApplicationRunner
     {
         getMenus().browse();
         load(BrowseMenu.class).samples();
-        return load(SampleBrowser.class);
+        load(SampleBrowser.class).allSpaces();
+        return getBrowser(SampleBrowser.class);
     }
 
     public ExperimentBrowser browseToExperimentBrowser()
@@ -262,14 +261,14 @@ public class ApplicationRunner
         getMenus().admin();
         load(AdminMenu.class).authorization();
         load(AuthorizationMenu.class).roles();
-        return load(RoleAssignmentBrowser.class);
+        return getBrowser(RoleAssignmentBrowser.class);
     }
 
     public VocabularyBrowser browseToVocabularyBrowser()
     {
         getMenus().admin();
         load(AdminMenu.class).vocabularies();
-        return load(VocabularyBrowser.class);
+        return getBrowser(VocabularyBrowser.class);
     }
 
     public AddVocabularyDialog browseToAddVocabularyDialog()
@@ -283,7 +282,7 @@ public class ApplicationRunner
         getMenus().admin();
         load(AdminMenu.class).metadata();
         load(MetadataMenu.class).propertyTypes();
-        return load(PropertyTypeBrowser.class);
+        return getBrowser(PropertyTypeBrowser.class);
     }
 
     public AddPropertyType browseToAddPropertyType()
@@ -307,7 +306,7 @@ public class ApplicationRunner
         getMenus().admin();
         load(AdminMenu.class).metadata();
         load(MetadataMenu.class).propertyTypeAssignments();
-        return load(PropertyTypeAssignmentBrowser.class);
+        return getBrowser(PropertyTypeAssignmentBrowser.class);
     }
 
     public RegisterSample browseToRegisterSample()
@@ -336,6 +335,13 @@ public class ApplicationRunner
         return proxy.get(TopBar.class);
     }
 
+    private <T extends Browser<?>> T getBrowser(Class<T> clazz)
+    {
+        T browser = load(clazz);
+        browser.resetFilters();
+        return browser;
+    }
+
     private <T> T load(Class<T> clazz)
     {
         return proxy.get(clazz);
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browser.java
index 06d7a15e7b72be5137332dfe99a4c919261d2f40..8b6214f38434707503196403d0c24e8a53651352 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browser.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browser.java
@@ -16,13 +16,16 @@
 
 package ch.systemsx.cisd.openbis.uitest.infra;
 
-
 /**
  * @author anttil
  */
 public interface Browser<T extends Browsable>
 {
-    public Row row(T browsable);
+    public Row select(T browsable);
 
     public Cell cell(T browsable, String column);
+
+    public void filter(T browsable);
+
+    public void resetFilters();
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Filterable.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Filterable.java
deleted file mode 100644
index 5a4de0c1c825b560dbf40fe55cdd5ea0e3c2084e..0000000000000000000000000000000000000000
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Filterable.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2012 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.uitest.infra;
-
-/**
- * @author anttil
- */
-public interface Filterable
-{
-    public void filter(String code);
-
-    public void resetFilters();
-}
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/BrowserListsElementMatcher.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/BrowserListsElementMatcher.java
index be8a3875e1943d9e9b74c1239f294bd0c8fadc86..1e4f848854f76ca3981e1824101d9e2cbf863ad4 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/BrowserListsElementMatcher.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/BrowserListsElementMatcher.java
@@ -45,7 +45,9 @@ public class BrowserListsElementMatcher<T extends Browsable, U extends Browser<T
     @Override
     public boolean matchesSafely(U browser)
     {
-        Row row = browser.row(expected);
+        browser.filter(expected);
+        Row row = browser.select(expected);
+
         if (row.exists())
         {
             return expected.isRepresentedBy(row);
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentBrowser.java
index 5ebf219f9977cb8832ba4ee77ccc97fb8c3e2f82..eea9958db745a07479d81fe33aa4198691578351 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentBrowser.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentBrowser.java
@@ -50,7 +50,7 @@ public class ExperimentBrowser implements Browser<Experiment>
     }
 
     @Override
-    public Row row(Experiment browsable)
+    public Row select(Experiment browsable)
     {
         // TODO Auto-generated method stub
         return null;
@@ -63,4 +63,18 @@ public class ExperimentBrowser implements Browser<Experiment>
         return null;
     }
 
+    @Override
+    public void filter(Experiment browsable)
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void resetFilters()
+    {
+        // TODO Auto-generated method stub
+
+    }
+
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentTypeBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentTypeBrowser.java
index 1b15fc476c3cbb824040ee4c62ec6f0ed502ffda..a9fa491a79e7e10a34374055facec5d6700bf8c5 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentTypeBrowser.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentTypeBrowser.java
@@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab;
 import ch.systemsx.cisd.openbis.uitest.infra.Browser;
 import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf;
 import ch.systemsx.cisd.openbis.uitest.type.ExperimentType;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
+import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
+import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar;
 
 public class ExperimentTypeBrowser implements Browser<ExperimentType>
 {
@@ -41,21 +45,50 @@ public class ExperimentTypeBrowser implements Browser<ExperimentType>
     @Locate("openbis_experiment-type-browser-grid")
     private Grid grid;
 
+    @Locate("openbis_experiment-type-browser-grid-paging-toolbar")
+    private PagingToolBar paging;
+
+    @Lazy
+    @Locate("openbis_experiment-type-browser-grid-filter-toolbar")
+    private FilterToolBar filters;
+
     public void add()
     {
         add.click();
     }
 
     @Override
-    public Row row(ExperimentType experimentType)
+    public Row select(ExperimentType experimentType)
     {
-        return grid.getRow("Code", experimentType.getCode());
+        return grid.select("Code", experimentType.getCode());
     }
 
     @Override
     public Cell cell(ExperimentType experimentType, String column)
     {
-        return row(experimentType).get(column);
+        return select(experimentType).get(column);
+    }
+
+    @Override
+    public void filter(ExperimentType type)
+    {
+        paging.filters();
+        filters.setCode(type.getCode());
+        new WaitForRefreshOf(grid).withTimeoutOf(10);
+    }
+
+    @Override
+    public void resetFilters()
+    {
+        paging.filters();
+        filters.reset();
+    }
+
+    @Override
+    public String toString()
+    {
+        String s = "ExperimentTypeBrowser\n==========\n";
+        return s + grid.toString();
     }
 
 }
\ No newline at end of file
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ProjectBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ProjectBrowser.java
index d3fd5b13a597ffb42c9db48a128dcb603ed07f59..b64deb40ac1a2d5be486211810080f38bec38c28 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ProjectBrowser.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ProjectBrowser.java
@@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab;
 import ch.systemsx.cisd.openbis.uitest.infra.Browser;
 import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf;
 import ch.systemsx.cisd.openbis.uitest.type.Project;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
+import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
+import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar;
 
 public class ProjectBrowser implements Browser<Project>
 {
@@ -34,16 +38,44 @@ public class ProjectBrowser implements Browser<Project>
     @Locate("openbis_project-browser-delete")
     private Button delete;
 
+    @Locate("openbis_project-browser-grid-paging-toolbar")
+    private PagingToolBar paging;
+
+    @Lazy
+    @Locate("openbis_project-browser-grid-filter-toolbar")
+    private FilterToolBar filters;
+
     @Override
-    public Row row(Project project)
+    public Row select(Project project)
     {
-        return grid.getRow("Code", project.getCode());
+        return grid.select("Code", project.getCode());
     }
 
     @Override
     public Cell cell(Project project, String column)
     {
-        return row(project).get(column);
+        return select(project).get(column);
     }
 
+    @Override
+    public void filter(Project project)
+    {
+        paging.filters();
+        filters.setCode(project.getCode());
+        new WaitForRefreshOf(grid).withTimeoutOf(10);
+    }
+
+    @Override
+    public void resetFilters()
+    {
+        paging.filters();
+        filters.reset();
+    }
+
+    @Override
+    public String toString()
+    {
+        String s = "ProjectBrowser\n==========\n";
+        return s + grid.toString();
+    }
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeAssignmentBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeAssignmentBrowser.java
index 1f64e2f1055fc833bd5209bd97db09f6f8878f45..aea639ab12923a4f912af55db959c7468bcb2a23 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeAssignmentBrowser.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeAssignmentBrowser.java
@@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab;
 import ch.systemsx.cisd.openbis.uitest.infra.Browser;
 import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf;
 import ch.systemsx.cisd.openbis.uitest.type.PropertyTypeAssignment;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
+import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
+import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar;
 
 public class PropertyTypeAssignmentBrowser implements Browser<PropertyTypeAssignment>
 {
@@ -37,16 +41,44 @@ public class PropertyTypeAssignmentBrowser implements Browser<PropertyTypeAssign
     @Locate("openbis_property-type-assignment-browser-grid-release")
     private Button release;
 
+    @Locate("openbis_property-type-assignment-browser-grid-paging-toolbar")
+    private PagingToolBar paging;
+
+    @Lazy
+    @Locate("openbis_property-type-assignment-browser-grid-filter-toolbar")
+    private FilterToolBar filters;
+
     @Override
-    public Row row(PropertyTypeAssignment assignment)
+    public Row select(PropertyTypeAssignment assignment)
     {
-        return grid.getRow("Property Type Code", assignment.getPropertyType().getCode());
+        return grid.select("Property Type Code", assignment.getPropertyType().getCode());
     }
 
     @Override
     public Cell cell(PropertyTypeAssignment assignment, String column)
     {
-        return row(assignment).get(column);
+        return select(assignment).get(column);
     }
 
+    @Override
+    public void filter(PropertyTypeAssignment assignment)
+    {
+        paging.filters();
+        filters.setCode(assignment.getPropertyType().getCode());
+        new WaitForRefreshOf(grid).withTimeoutOf(10);
+    }
+
+    @Override
+    public void resetFilters()
+    {
+        paging.filters();
+        filters.reset();
+    }
+
+    @Override
+    public String toString()
+    {
+        String s = "PropertyTypeAssignmentBrowser\n==========\n";
+        return s + grid.toString();
+    }
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeBrowser.java
index 728586cc9534284e7af39b127f1a6b64a53803ff..d9138986c35bb09d92d39546c74ec7a5cc03c124 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeBrowser.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeBrowser.java
@@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab;
 import ch.systemsx.cisd.openbis.uitest.infra.Browser;
 import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf;
 import ch.systemsx.cisd.openbis.uitest.type.PropertyType;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
+import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
+import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar;
 
 public class PropertyTypeBrowser implements Browser<PropertyType>
 {
@@ -38,16 +42,44 @@ public class PropertyTypeBrowser implements Browser<PropertyType>
     @Locate("openbis_property-type-browser-grid-delete-button")
     private Button delete;
 
+    @Locate("openbis_property-type-browser-grid-paging-toolbar")
+    private PagingToolBar paging;
+
+    @Lazy
+    @Locate("openbis_property-type-browser-grid-filter-toolbar")
+    private FilterToolBar filters;
+
     @Override
-    public Row row(PropertyType type)
+    public Row select(PropertyType type)
     {
-        return grid.getRow("Code", type.getCode());
+        return grid.select("Code", type.getCode());
     }
 
     @Override
     public Cell cell(PropertyType type, String column)
     {
-        return row(type).get(column);
+        return select(type).get(column);
     }
 
+    @Override
+    public void filter(PropertyType propertyType)
+    {
+        paging.filters();
+        filters.setCode(propertyType.getCode());
+        new WaitForRefreshOf(grid).withTimeoutOf(10);
+    }
+
+    @Override
+    public void resetFilters()
+    {
+        paging.filters();
+        filters.reset();
+    }
+
+    @Override
+    public String toString()
+    {
+        String s = "PropertyTypeBrowser\n==========\n";
+        return s + grid.toString();
+    }
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RoleAssignmentBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RoleAssignmentBrowser.java
index 81e9bd32f92fbc6bb00af055e8d8d46807914425..91cf37179065f74173c851c9d77fd1d28d41db99 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RoleAssignmentBrowser.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RoleAssignmentBrowser.java
@@ -31,7 +31,7 @@ public class RoleAssignmentBrowser implements Browser<Experiment>
     private Button assignRoleButton;
 
     @Override
-    public Row row(Experiment browsable)
+    public Row select(Experiment browsable)
     {
         // TODO Auto-generated method stub
         return null;
@@ -44,4 +44,18 @@ public class RoleAssignmentBrowser implements Browser<Experiment>
         return null;
     }
 
+    @Override
+    public void filter(Experiment browsable)
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void resetFilters()
+    {
+        // TODO Auto-generated method stub
+
+    }
+
 }
\ No newline at end of file
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleBrowser.java
index 79f0d8982bef157e4d0368e92e3073d0907c76c2..6d1ff1271805c84903996685e61d89de2d3359e1 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleBrowser.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleBrowser.java
@@ -21,12 +21,16 @@ import java.util.List;
 import ch.systemsx.cisd.openbis.uitest.infra.Browser;
 import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf;
 import ch.systemsx.cisd.openbis.uitest.type.Sample;
 import ch.systemsx.cisd.openbis.uitest.type.SampleType;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
 import ch.systemsx.cisd.openbis.uitest.widget.DropDown;
+import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
+import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar;
 
 public class SampleBrowser implements Browser<Sample>
 {
@@ -43,6 +47,13 @@ public class SampleBrowser implements Browser<Sample>
     @Locate("openbis_select_group-selectsample-browser-toolbar")
     private DropDown spaceList;
 
+    @Locate("openbis_sample-browser_main-grid-paging-toolbar")
+    private PagingToolBar paging;
+
+    @Lazy
+    @Locate("openbis_sample-browser_main-grid-filter-toolbar")
+    private FilterToolBar filters;
+
     public void addSample()
     {
         addSample.click();
@@ -64,15 +75,37 @@ public class SampleBrowser implements Browser<Sample>
     }
 
     @Override
-    public Row row(Sample sample)
+    public Row select(Sample sample)
     {
-        return grid.getRow("Code", sample.getCode());
+        return grid.select("Code", sample.getCode());
     }
 
     @Override
     public Cell cell(Sample sample, String column)
     {
-        return row(sample).get(column);
+        return select(sample).get(column);
+    }
+
+    @Override
+    public void filter(Sample sample)
+    {
+        paging.filters();
+        filters.setCode(sample.getCode());
+        new WaitForRefreshOf(grid).withTimeoutOf(10);
+    }
+
+    @Override
+    public void resetFilters()
+    {
+        paging.filters();
+        filters.reset();
+    }
+
+    @Override
+    public String toString()
+    {
+        String s = "SampleBrowser\n==========\n";
+        return s + grid.toString();
     }
 
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleTypeBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleTypeBrowser.java
index e4be935b1e367c55f534a29de9eb31e1d6e7944d..1f36c16e274fbea2d3bf5a78e4ab427941646817 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleTypeBrowser.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleTypeBrowser.java
@@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab;
 import ch.systemsx.cisd.openbis.uitest.infra.Browser;
 import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf;
 import ch.systemsx.cisd.openbis.uitest.type.SampleType;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
+import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
+import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar;
 
 public class SampleTypeBrowser implements Browser<SampleType>
 {
@@ -39,6 +43,13 @@ public class SampleTypeBrowser implements Browser<SampleType>
     @Locate("openbis_sample-type-browser-grid")
     private Grid grid;
 
+    @Locate("openbis_sample-type-browser-grid-paging-toolbar")
+    private PagingToolBar paging;
+
+    @Lazy
+    @Locate("openbis_sample-type-browser-grid-filter-toolbar")
+    private FilterToolBar filters;
+
     public void add()
     {
         add.click();
@@ -46,20 +57,42 @@ public class SampleTypeBrowser implements Browser<SampleType>
 
     public void editSampleType(SampleType type)
     {
-        grid.select(type.getCode());
+        grid.select("Code", type.getCode());
         edit.click();
     }
 
     @Override
-    public Row row(SampleType type)
+    public Row select(SampleType type)
     {
-        return grid.getRow("Code", type.getCode());
+        return grid.select("Code", type.getCode());
     }
 
     @Override
     public Cell cell(SampleType type, String column)
     {
-        return row(type).get(column);
+        return select(type).get(column);
+    }
+
+    @Override
+    public void filter(SampleType type)
+    {
+        paging.filters();
+        filters.setCode(type.getCode());
+        new WaitForRefreshOf(grid).withTimeoutOf(10);
+    }
+
+    @Override
+    public void resetFilters()
+    {
+        paging.filters();
+        filters.reset();
+    }
+
+    @Override
+    public String toString()
+    {
+        String s = "SampleTypeBrowser\n==========\n";
+        return s + grid.toString();
     }
 
 }
\ No newline at end of file
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SpaceBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SpaceBrowser.java
index 04132c0a9d6d2d09327b6e6cf2c826523015b4e4..2040e2cab2822b72dea7af103261c1149fe319b3 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SpaceBrowser.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SpaceBrowser.java
@@ -18,7 +18,6 @@ package ch.systemsx.cisd.openbis.uitest.page.tab;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Browser;
 import ch.systemsx.cisd.openbis.uitest.infra.Cell;
-import ch.systemsx.cisd.openbis.uitest.infra.Filterable;
 import ch.systemsx.cisd.openbis.uitest.infra.Row;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate;
@@ -30,7 +29,7 @@ import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
 import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar;
 
-public class SpaceBrowser implements Browser<Space>, Filterable
+public class SpaceBrowser implements Browser<Space>
 {
 
     @Locate("openbis_space-browser-grid")
@@ -58,9 +57,10 @@ public class SpaceBrowser implements Browser<Space>, Filterable
         addSpace.click();
     }
 
-    public void select(Space space)
+    @Override
+    public Row select(Space space)
     {
-        grid.select(space.getCode());
+        return grid.select("Code", space.getCode());
     }
 
     public void delete()
@@ -69,23 +69,17 @@ public class SpaceBrowser implements Browser<Space>, Filterable
         confimDeletion.confirm("WebDriver");
     }
 
-    @Override
-    public Row row(Space space)
-    {
-        return grid.getRow("Code", space.getCode());
-    }
-
     @Override
     public Cell cell(Space space, String column)
     {
-        return row(space).get(column);
+        return select(space).get(column);
     }
 
     @Override
-    public void filter(String filter)
+    public void filter(Space space)
     {
         paging.filters();
-        filters.setCode(filter);
+        filters.setCode(space.getCode());
         new WaitForRefreshOf(grid).withTimeoutOf(10);
     }
 
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/VocabularyBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/VocabularyBrowser.java
index 702169a6100e9009429501913745e80f1245dcd3..98997c80516a47c8f1f62cbed2e0729f9e92f9c7 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/VocabularyBrowser.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/VocabularyBrowser.java
@@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab;
 import ch.systemsx.cisd.openbis.uitest.infra.Browser;
 import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf;
 import ch.systemsx.cisd.openbis.uitest.type.Vocabulary;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
+import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
+import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar;
 
 public class VocabularyBrowser implements Browser<Vocabulary>
 {
@@ -36,20 +40,49 @@ public class VocabularyBrowser implements Browser<Vocabulary>
     @Locate("openbis_vocabulary-browser_delete-button")
     private Button delete;
 
+    @Locate("openbis_vocabulary-browser-grid-paging-toolbar")
+    private PagingToolBar paging;
+
+    @Lazy
+    @Locate("openbis_vocabulary-browser-grid-filter-toolbar")
+    private FilterToolBar filters;
+
     public void add()
     {
         add.click();
     }
 
     @Override
-    public Row row(Vocabulary vocabulary)
+    public Row select(Vocabulary vocabulary)
     {
-        return grid.getRow("Code", vocabulary.getCode());
+        return grid.select("Code", vocabulary.getCode());
     }
 
     @Override
     public Cell cell(Vocabulary vocabulary, String column)
     {
-        return row(vocabulary).get(column);
+        return select(vocabulary).get(column);
+    }
+
+    @Override
+    public void filter(Vocabulary vocabulary)
+    {
+        paging.filters();
+        filters.setCode(vocabulary.getCode());
+        new WaitForRefreshOf(grid).withTimeoutOf(10);
+    }
+
+    @Override
+    public void resetFilters()
+    {
+        paging.filters();
+        filters.reset();
+    }
+
+    @Override
+    public String toString()
+    {
+        String s = "VocabularyBrowser\n==========\n";
+        return s + grid.toString();
     }
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SeleniumTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SeleniumTest.java
index 4405576f088e4ba5dcec99d8b823cebf4e74ecc2..cc8fdc45ea6e73a6e4e9210ae1469206dbdbcfe4 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SeleniumTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SeleniumTest.java
@@ -135,7 +135,7 @@ public abstract class SeleniumTest
         openbis.login(User.ADMIN);
 
         // this is because of BIS-184
-        sampleBrowser().allSpaces();
+        sampleBrowser();
     }
 
     @AfterGroups(groups = "login-admin")
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java
index df20a66864149f1d91ed57264f0cc6f7b2e5cb2e..5209e75cbd4458b5b9a562a3744f2280f8a403b3 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java
@@ -16,12 +16,11 @@
 
 package ch.systemsx.cisd.openbis.uitest.widget;
 
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Cell;
@@ -34,7 +33,7 @@ import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Refreshing;
 public class Grid extends Widget implements Refreshing
 {
 
-    public Row getRow(String column, String value)
+    public Row select(String column, String value)
     {
 
         List<WebElement> columns = this.getColumns();
@@ -64,6 +63,7 @@ public class Grid extends Widget implements Refreshing
         {
             if (cells.get(index).getText().equalsIgnoreCase(value))
             {
+                cells.get(index).findElement(By.xpath("./..")).click();
                 found = true;
                 break;
             }
@@ -96,23 +96,6 @@ public class Grid extends Widget implements Refreshing
         return findAll(".//td[not(ancestor::div[contains(@style,'display:none')]) and contains(@class, 'x-grid') and contains(@class, '-col ')]//*[not(*)]");
     }
 
-    public void select(String string)
-    {
-        Collection<String> found = new ArrayList<String>();
-        for (WebElement element : getCells())
-        {
-            if (string.equalsIgnoreCase(element.getText()))
-            {
-                element.click();
-                return;
-            }
-            found.add(element.getText());
-        }
-
-        throw new IllegalArgumentException("Grid does not contain element with text " + string
-                + ", found " + found);
-    }
-
     @Override
     public String toString()
     {