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 47e3eccd8e31c65fc32a9757f311a370f7444cdd..6eca934070ddcb4c228a6f6ebf5630e317824bb6 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
@@ -18,8 +18,6 @@ package ch.systemsx.cisd.openbis.uitest.infra;
 
 import ch.systemsx.cisd.openbis.uitest.infra.uid.UidGenerator;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.PageProxy;
-import ch.systemsx.cisd.openbis.uitest.page.common.LoginPage;
-import ch.systemsx.cisd.openbis.uitest.page.common.TopBar;
 import ch.systemsx.cisd.openbis.uitest.page.dialog.AddExperimentTypeDialog;
 import ch.systemsx.cisd.openbis.uitest.page.dialog.AddSampleTypeDialog;
 import ch.systemsx.cisd.openbis.uitest.page.dialog.AddSpaceDialog;
@@ -30,12 +28,14 @@ import ch.systemsx.cisd.openbis.uitest.page.menu.AuthorizationMenu;
 import ch.systemsx.cisd.openbis.uitest.page.menu.BrowseMenu;
 import ch.systemsx.cisd.openbis.uitest.page.menu.MetadataMenu;
 import ch.systemsx.cisd.openbis.uitest.page.menu.NewMenu;
+import ch.systemsx.cisd.openbis.uitest.page.menu.TopBar;
 import ch.systemsx.cisd.openbis.uitest.page.menu.TypesMenu;
 import ch.systemsx.cisd.openbis.uitest.page.menu.UserMenu;
 import ch.systemsx.cisd.openbis.uitest.page.tab.AddPropertyType;
 import ch.systemsx.cisd.openbis.uitest.page.tab.AssignSamplePropertyType;
 import ch.systemsx.cisd.openbis.uitest.page.tab.ExperimentBrowser;
 import ch.systemsx.cisd.openbis.uitest.page.tab.ExperimentTypeBrowser;
+import ch.systemsx.cisd.openbis.uitest.page.tab.LoginPage;
 import ch.systemsx.cisd.openbis.uitest.page.tab.ProjectBrowser;
 import ch.systemsx.cisd.openbis.uitest.page.tab.PropertyTypeAssignmentBrowser;
 import ch.systemsx.cisd.openbis.uitest.page.tab.PropertyTypeBrowser;
@@ -89,34 +89,10 @@ public class ApplicationRunner
 
     public void delete(Space space)
     {
-        /*
         SpaceBrowser browser = browseToSpaceBrowser();
-
-        PagingToolBar paging = get(PagingToolBar.class);
-        paging.showFilters();
-
-        FilterToolBar bar = get(FilterToolBar.class).reset();
-        Widget filter = null;
-        for (Widget widget : bar.getFilters()) {
-            if (widget.getValue().equalsIgnoreCase("code")) {
-                filter  = widget;
-            }
-        }
-        if (filter == null) {
-            Setting settings = paging.settings();
-            settings.enableFilter("Code");
-        }
-        // then re-find filter
-        
-        filter.write(space.code();
-        
-        Row row = browser.getRow(space);
-        if (row != null)
-        {
-            row.select();
-            browser.deleteSelection();
-        }
-        */
+        browser.filter(space.getCode());
+        browser.select(space);
+        browser.delete();
     }
 
     public Project create(Project project)
@@ -249,7 +225,9 @@ public class ApplicationRunner
     {
         getMenus().admin();
         load(AdminMenu.class).spaces();
-        return load(SpaceBrowser.class);
+        SpaceBrowser browser = load(SpaceBrowser.class);
+        browser.resetFilters();
+        return browser;
     }
 
     public ProjectBrowser browseToProjectBrowser()
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browsable.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browsable.java
index 5b91eef45fc6338bed6af59607f7bc181c74c222..502bc5b563e8a95da4e6ef5f1d2edffea71c64fb 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browsable.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browsable.java
@@ -16,7 +16,6 @@
 
 package ch.systemsx.cisd.openbis.uitest.infra;
 
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
 
 /**
  * @author anttil
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 013edb56a2b90f87bf32767418b8bc62e2fcf16a..06d7a15e7b72be5137332dfe99a4c919261d2f40 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,8 +16,6 @@
 
 package ch.systemsx.cisd.openbis.uitest.infra;
 
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/common/Cell.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Cell.java
similarity index 81%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/common/Cell.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Cell.java
index 0f981d4b1e49f9273a21a2f0d3081cc9bdb82e81..e704e0bb4814bc0279ed3b968bb3b39dcc3b8c45 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/common/Cell.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Cell.java
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.page.common;
+package ch.systemsx.cisd.openbis.uitest.infra;
 
-import org.openqa.selenium.WebElement;
 
 /**
  * @author anttil
@@ -27,13 +26,10 @@ public class Cell
 
     private final String url;
 
-    private final WebElement element;
-
-    public Cell(String text, String url, WebElement element)
+    public Cell(String text, String url)
     {
         this.text = text;
         this.url = url;
-        this.element = element;
     }
 
     public String getText()
@@ -46,11 +42,6 @@ public class Cell
         return url;
     }
 
-    public WebElement getElement()
-    {
-        return this.element;
-    }
-
     public boolean hasLink()
     {
         return this.url != null;
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
new file mode 100644
index 0000000000000000000000000000000000000000..5a4de0c1c825b560dbf40fe55cdd5ea0e3c2084e
--- /dev/null
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Filterable.java
@@ -0,0 +1,27 @@
+/*
+ * 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/page/common/Row.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Row.java
similarity index 95%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/common/Row.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Row.java
index 698dde00b6a4c47d35e2fe3a984f346cabdb09c1..8fbf677284e6e477123c03980f54734958ecd09f 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/common/Row.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Row.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.page.common;
+package ch.systemsx.cisd.openbis.uitest.infra;
 
 import java.util.Map;
 
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 0945747f61fe83544b7db37f983058a73173191b..be8a3875e1943d9e9b74c1239f294bd0c8fadc86 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
@@ -21,7 +21,7 @@ import org.hamcrest.TypeSafeMatcher;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Browsable;
 import ch.systemsx.cisd.openbis.uitest.infra.Browser;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.Row;
 
 /**
  * @author anttil
@@ -45,7 +45,6 @@ public class BrowserListsElementMatcher<T extends Browsable, U extends Browser<T
     @Override
     public boolean matchesSafely(U browser)
     {
-
         Row row = browser.row(expected);
         if (row.exists())
         {
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/CellDisplaysMatcher.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/CellDisplaysMatcher.java
index 63c63c9306c3ea9b64261f941391ff0bc38bdc45..e33e2fbb61c1f0ee2363658a3f791b65ed8a73c5 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/CellDisplaysMatcher.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/CellDisplaysMatcher.java
@@ -19,7 +19,7 @@ package ch.systemsx.cisd.openbis.uitest.infra.matcher;
 import org.hamcrest.Description;
 import org.hamcrest.TypeSafeMatcher;
 
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/CellLinksToMatcher.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/CellLinksToMatcher.java
index 351701f65be84c9aaeb1abce398bc56c2e49fac0..4990bb93398307dc33bde17cfb290ccb074fd699 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/CellLinksToMatcher.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/CellLinksToMatcher.java
@@ -19,7 +19,7 @@ package ch.systemsx.cisd.openbis.uitest.infra.matcher;
 import org.hamcrest.Description;
 import org.hamcrest.TypeSafeMatcher;
 
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/Refreshing.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/Refreshing.java
new file mode 100644
index 0000000000000000000000000000000000000000..369103f9652c4d29a604f1d476ed5a76d77b1eb5
--- /dev/null
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/Refreshing.java
@@ -0,0 +1,25 @@
+/*
+ * 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.webdriver;
+
+/**
+ * @author anttil
+ */
+public interface Refreshing
+{
+    public boolean hasRefreshed();
+}
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/WaitForRefreshOf.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/WaitForRefreshOf.java
new file mode 100644
index 0000000000000000000000000000000000000000..5ebe8131da41243c1e77699b1bf02fe106cc744b
--- /dev/null
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/WaitForRefreshOf.java
@@ -0,0 +1,49 @@
+/*
+ * 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.webdriver;
+
+import java.util.concurrent.TimeUnit;
+
+import org.openqa.selenium.support.ui.FluentWait;
+
+import com.google.common.base.Predicate;
+
+/**
+ * @author anttil
+ */
+public class WaitForRefreshOf extends FluentWait<Refreshing>
+{
+
+    public WaitForRefreshOf(Refreshing widget)
+    {
+        super(widget);
+    }
+
+    public void withTimeoutOf(int seconds)
+    {
+        this.withTimeout(seconds, TimeUnit.SECONDS)
+                .pollingEvery(100, TimeUnit.MILLISECONDS)
+                .until(new Predicate<Refreshing>()
+                    {
+                        @Override
+                        public boolean apply(Refreshing widget)
+                        {
+                            return widget.hasRefreshed();
+                        }
+                    });
+    }
+}
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/common/TopBar.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/menu/TopBar.java
similarity index 96%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/common/TopBar.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/menu/TopBar.java
index 47f27b166a868c45fd5c04392af7a1667126469e..1405297b88cd103ac56cfd6cad7fff4ad321ef33 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/common/TopBar.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/menu/TopBar.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.page.common;
+package ch.systemsx.cisd.openbis.uitest.page.menu;
 
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
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 3545589586ecf9531aeee10824db8f7da8a12958..5ebf219f9977cb8832ba4ee77ccc97fb8c3e2f82 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
@@ -17,10 +17,10 @@
 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.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
 import ch.systemsx.cisd.openbis.uitest.type.Experiment;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
 import ch.systemsx.cisd.openbis.uitest.widget.DeletionConfirmationBox;
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 a4f64a22f52f184f391a1ee6f350d824f65e95f9..1b15fc476c3cbb824040ee4c62ec6f0ed502ffda 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
@@ -17,9 +17,9 @@
 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.Locate;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
 import ch.systemsx.cisd.openbis.uitest.type.ExperimentType;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/common/LoginPage.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/LoginPage.java
similarity index 95%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/common/LoginPage.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/LoginPage.java
index 6c417e1c42ddbac3a78ac4aced7acfd274eeec64..77c1faa36a3a5a96bfcd16b1acd79ac3dce5d47c 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/common/LoginPage.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/LoginPage.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.page.common;
+package ch.systemsx.cisd.openbis.uitest.page.tab;
 
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
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 068548173815943780360c77eda67b766a4ac10c..d3fd5b13a597ffb42c9db48a128dcb603ed07f59 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
@@ -17,9 +17,9 @@
 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.Locate;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
 import ch.systemsx.cisd.openbis.uitest.type.Project;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
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 2dcec5c6d1d845604439190d05b5df73fd6a9aba..1f64e2f1055fc833bd5209bd97db09f6f8878f45 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
@@ -17,9 +17,9 @@
 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.Locate;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
 import ch.systemsx.cisd.openbis.uitest.type.PropertyTypeAssignment;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
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 abbbdf47700307d9d8a0b3270f9a903a26f7db22..728586cc9534284e7af39b127f1a6b64a53803ff 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
@@ -17,9 +17,9 @@
 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.Locate;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
 import ch.systemsx.cisd.openbis.uitest.type.PropertyType;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
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 9ddf53a4377a1eb4a86304f22ae54b08d0697ea8..81e9bd32f92fbc6bb00af055e8d8d46807914425 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
@@ -17,9 +17,9 @@
 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.Locate;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
 import ch.systemsx.cisd.openbis.uitest.type.Experiment;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
 
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 651e0874433ce3a57a5b035cf9e8370145096898..79f0d8982bef157e4d0368e92e3073d0907c76c2 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
@@ -19,9 +19,9 @@ package ch.systemsx.cisd.openbis.uitest.page.tab;
 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.Locate;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
 import ch.systemsx.cisd.openbis.uitest.type.Sample;
 import ch.systemsx.cisd.openbis.uitest.type.SampleType;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
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 55dd61db7b8d1f3ee934bc6fd98006c871a2af16..e4be935b1e367c55f534a29de9eb31e1d6e7944d 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
@@ -17,9 +17,9 @@
 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.Locate;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
 import ch.systemsx.cisd.openbis.uitest.type.SampleType;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
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 dbb1793df856cbe25f9ae0c4eadd533e22810ff7..04132c0a9d6d2d09327b6e6cf2c826523015b4e4 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
@@ -17,14 +17,20 @@
 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;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf;
 import ch.systemsx.cisd.openbis.uitest.type.Space;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
+import ch.systemsx.cisd.openbis.uitest.widget.DeletionConfirmationBox;
+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>
+public class SpaceBrowser implements Browser<Space>, Filterable
 {
 
     @Locate("openbis_space-browser-grid")
@@ -33,15 +39,36 @@ public class SpaceBrowser implements Browser<Space>
     @Locate("openbis_space-browser_add-button")
     private Button addSpace;
 
-    @SuppressWarnings("unused")
     @Locate("openbis_space-browser_delete-button")
     private Button delete;
 
+    @Locate("openbis_space-browser-grid-paging-toolbar")
+    private PagingToolBar paging;
+
+    @Lazy
+    @Locate("openbis_space-browser-grid-filter-toolbar")
+    private FilterToolBar filters;
+
+    @Lazy
+    @Locate("deletion-confirmation-dialog")
+    private DeletionConfirmationBox confimDeletion;
+
     public void addSpace()
     {
         addSpace.click();
     }
 
+    public void select(Space space)
+    {
+        grid.select(space.getCode());
+    }
+
+    public void delete()
+    {
+        delete.click();
+        confimDeletion.confirm("WebDriver");
+    }
+
     @Override
     public Row row(Space space)
     {
@@ -54,4 +81,25 @@ public class SpaceBrowser implements Browser<Space>
         return row(space).get(column);
     }
 
+    @Override
+    public void filter(String filter)
+    {
+        paging.filters();
+        filters.setCode(filter);
+        new WaitForRefreshOf(grid).withTimeoutOf(10);
+    }
+
+    @Override
+    public void resetFilters()
+    {
+        paging.filters();
+        filters.reset();
+    }
+
+    @Override
+    public String toString()
+    {
+        String s = "SpaceBrowser\n==========\n";
+        return s + grid.toString();
+    }
 }
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 7314011baaead9328867b05858d82382bbf00ad6..702169a6100e9009429501913745e80f1245dcd3 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
@@ -17,9 +17,9 @@
 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.Locate;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
 import ch.systemsx.cisd.openbis.uitest.type.Vocabulary;
 import ch.systemsx.cisd.openbis.uitest.widget.Button;
 import ch.systemsx.cisd.openbis.uitest.widget.Grid;
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/AuthorizationTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/AuthorizationTest.java
index ad5a5f2ab190eeef934b336323e1d4a709ea490d..11a7ff86cb4e3ae7b564b08ee842b92ff4ec2b54 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/AuthorizationTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/AuthorizationTest.java
@@ -5,9 +5,9 @@ import static org.hamcrest.MatcherAssert.assertThat;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.openbis.uitest.infra.User;
-import ch.systemsx.cisd.openbis.uitest.page.common.LoginPage;
-import ch.systemsx.cisd.openbis.uitest.page.common.TopBar;
 import ch.systemsx.cisd.openbis.uitest.page.dialog.InvalidPasswordDialog;
+import ch.systemsx.cisd.openbis.uitest.page.menu.TopBar;
+import ch.systemsx.cisd.openbis.uitest.page.tab.LoginPage;
 import ch.systemsx.cisd.openbis.uitest.page.tab.RoleAssignmentBrowser;
 
 @Test(groups =
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 8ba8fe12beff94d3d6313d30f756e37bfebabf6a..4405576f088e4ba5dcec99d8b823cebf4e74ecc2 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
@@ -37,6 +37,7 @@ import org.testng.annotations.BeforeSuite;
 import ch.systemsx.cisd.openbis.uitest.infra.ApplicationRunner;
 import ch.systemsx.cisd.openbis.uitest.infra.Browsable;
 import ch.systemsx.cisd.openbis.uitest.infra.Browser;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.User;
 import ch.systemsx.cisd.openbis.uitest.infra.matcher.BrowserListsElementMatcher;
 import ch.systemsx.cisd.openbis.uitest.infra.matcher.CellDisplaysMatcher;
@@ -49,7 +50,6 @@ import ch.systemsx.cisd.openbis.uitest.infra.screenshot.ScreenShotter;
 import ch.systemsx.cisd.openbis.uitest.infra.uid.DictionaryUidGenerator;
 import ch.systemsx.cisd.openbis.uitest.infra.uid.UidGenerator;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.PageProxy;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
 import ch.systemsx.cisd.openbis.uitest.page.tab.ExperimentBrowser;
 import ch.systemsx.cisd.openbis.uitest.page.tab.ExperimentTypeBrowser;
 import ch.systemsx.cisd.openbis.uitest.page.tab.ProjectBrowser;
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SpaceTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SpaceTest.java
index f43bc9dce0a8dfd0d6d05e74bc52978f683b9b14..72c01ace58184e863be90f0b4f2e35d492eb8067 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SpaceTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SpaceTest.java
@@ -19,7 +19,7 @@ public class SpaceTest extends SeleniumTest
         assertThat(spaceBrowser(), lists(space));
     }
 
-    @Test(enabled = false)
+    @Test
     public void deletedSpaceIsRemovedFromSpaceBrowser() throws Exception
     {
         Space space = create(aSpace());
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Experiment.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Experiment.java
index d85acf7bc317289e6837a9b8f4e318442de47a86..e7b60d7d351688a9033f9b30dd6eb057b0bc9542 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Experiment.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Experiment.java
@@ -19,9 +19,9 @@ package ch.systemsx.cisd.openbis.uitest.type;
 import java.util.Collection;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Browsable;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.EntityType;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.Row;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/ExperimentType.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/ExperimentType.java
index 5b1184103deba1ff10f6ad50085a7cd9ed52cf82..efc5055c2c696f59c1b68aa467c418608158312e 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/ExperimentType.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/ExperimentType.java
@@ -17,8 +17,8 @@
 package ch.systemsx.cisd.openbis.uitest.type;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Browsable;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
+import ch.systemsx.cisd.openbis.uitest.infra.Row;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Project.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Project.java
index c3aeb54032980f3c554b856d1ecd2abed0278dd8..1b77fb4e692be727940455d44e37641ae4e7a430 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Project.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Project.java
@@ -17,8 +17,8 @@
 package ch.systemsx.cisd.openbis.uitest.type;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Browsable;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
+import ch.systemsx.cisd.openbis.uitest.infra.Row;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/PropertyType.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/PropertyType.java
index 4df78f5c1d54ecc321becdf28cc96b5b69e7bec2..5eb89d76ee7bb718e2d486a7f08a05e644cd4abb 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/PropertyType.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/PropertyType.java
@@ -17,8 +17,8 @@
 package ch.systemsx.cisd.openbis.uitest.type;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Browsable;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
+import ch.systemsx.cisd.openbis.uitest.infra.Row;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/PropertyTypeAssignment.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/PropertyTypeAssignment.java
index d7d8d6c98a4de8ba29ce84176d93110caa2554ea..23184a1de6da560a7b382c506094df50ada3f040 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/PropertyTypeAssignment.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/PropertyTypeAssignment.java
@@ -17,9 +17,9 @@
 package ch.systemsx.cisd.openbis.uitest.type;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Browsable;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.EntityType;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.Row;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Sample.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Sample.java
index f9ba77d5b6b62934f5c34417db50cfe9fcc3f011..240ad87512769a7916353b18da14949b5a1dbabf 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Sample.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Sample.java
@@ -20,9 +20,9 @@ import java.util.Collection;
 import java.util.Map;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Browsable;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.EntityType;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.Row;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/SampleType.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/SampleType.java
index 80b1277d161755d2a60ba3e65d8d033e87f27d44..b044b3ffc58d52f9066b34a14440e65ddf121c50 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/SampleType.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/SampleType.java
@@ -19,9 +19,9 @@ package ch.systemsx.cisd.openbis.uitest.type;
 import java.util.Collection;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Browsable;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
 import ch.systemsx.cisd.openbis.uitest.infra.EntityType;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.Row;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Space.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Space.java
index 72ae1959a3092a164a758861bd8d137b2e60a2f3..09f36908edc24db9edb21d55d1fc495a3e75a84a 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Space.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Space.java
@@ -17,8 +17,8 @@
 package ch.systemsx.cisd.openbis.uitest.type;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Browsable;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
+import ch.systemsx.cisd.openbis.uitest.infra.Row;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Vocabulary.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Vocabulary.java
index d559148cc4075db6df9980f03ff16c2016462e99..742678b7e4231fb1475a96c97efd2cd424781c10 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Vocabulary.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/type/Vocabulary.java
@@ -19,8 +19,8 @@ package ch.systemsx.cisd.openbis.uitest.type;
 import java.util.Set;
 
 import ch.systemsx.cisd.openbis.uitest.infra.Browsable;
-import ch.systemsx.cisd.openbis.uitest.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
+import ch.systemsx.cisd.openbis.uitest.infra.Row;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/AlertMessageBox.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/AlertMessageBox.java
index d965666bf9f9bedf0412daf97d7c48d440360d20..a16ba6cc6d4775b3b7d599fb4c39a3a0720488fb 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/AlertMessageBox.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/AlertMessageBox.java
@@ -16,7 +16,6 @@
 
 package ch.systemsx.cisd.openbis.uitest.widget;
 
-import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 
 /**
@@ -26,7 +25,7 @@ public class AlertMessageBox extends Widget
 {
     public void dismiss()
     {
-        WebElement ok = context.findElement(By.xpath(".//button[text()=\"OK\"]"));
+        WebElement ok = find(".//button[text()=\"OK\"]");
         ok.click();
     }
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Button.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Button.java
index f72c044e97586a1b7bafbf14a532ab7ddf1eb097..cfdb31783bee3efa001d28902aecac2290272e6c 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Button.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Button.java
@@ -16,7 +16,7 @@
 
 package ch.systemsx.cisd.openbis.uitest.widget;
 
-import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
 
 /**
  * @author anttil
@@ -30,7 +30,14 @@ public class Button extends Widget
 
     public boolean isPressed()
     {
-        return "true".equalsIgnoreCase(context.findElement(By.xpath(".//button")).getAttribute(
-                "aria-pressed"));
+        WebElement button;
+        if (context.getTagName().equals("button"))
+        {
+            button = context;
+        } else
+        {
+            button = find(".//button");
+        }
+        return "true".equalsIgnoreCase(button.getAttribute("aria-pressed"));
     }
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Checkbox.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Checkbox.java
index 72571fbe167bcee47fba5eee8979496ba908c9e0..6afa0d7fb58a33af467cd1d8768a55b5859cea9d 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Checkbox.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Checkbox.java
@@ -16,7 +16,6 @@
 
 package ch.systemsx.cisd.openbis.uitest.widget;
 
-import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 
 /**
@@ -26,7 +25,7 @@ public class Checkbox extends Widget implements Fillable
 {
     public void set(boolean value)
     {
-        WebElement input = context.findElement(By.xpath("input"));
+        WebElement input = find("input");
         if (input.getAttribute("checked") != null ^ value)
         {
             input.click();
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DeletionConfirmationBox.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DeletionConfirmationBox.java
index 5eda8fb6eeabfef4b26fdc559839f815153cae36..ba600da29f579d861d7d342b773b2f32c57e5720 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DeletionConfirmationBox.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DeletionConfirmationBox.java
@@ -16,7 +16,6 @@
 
 package ch.systemsx.cisd.openbis.uitest.widget;
 
-import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 
 /**
@@ -27,16 +26,16 @@ public class DeletionConfirmationBox extends Widget
     public void confirm(String reason)
     {
 
-        WebElement text = context.findElement(By.xpath(".//textarea"));
+        WebElement text = find(".//textarea");
         text.sendKeys(reason);
 
-        WebElement ok = context.findElement(By.xpath(".//button[text()=\"OK\"]"));
+        WebElement ok = find(".//button[text()=\"OK\"]");
         ok.click();
     }
 
     public void confirm()
     {
-        WebElement ok = context.findElement(By.xpath(".//button[text()=\"OK\"]"));
+        WebElement ok = find(".//button[text()=\"OK\"]");
         ok.click();
     }
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DropDown.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DropDown.java
index 0e2dddc75a2f03cb66fdb5bc0d7f0617a85bf59d..3df548affcbd821e0db3e18873c2e29c70455d15 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DropDown.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DropDown.java
@@ -60,7 +60,7 @@ public class DropDown extends Widget implements Fillable
 
     private List<WebElement> getChoiceElements()
     {
-        WebElement opener = context.findElement(By.xpath(".//img"));
+        WebElement opener = find(".//img");
         opener.click();
         return SeleniumTest.driver.findElements(By.className("x-combo-list-item"));
     }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/FilterToolBar.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/FilterToolBar.java
new file mode 100644
index 0000000000000000000000000000000000000000..2c1611ba0a82756f2c841f1b3cb0abc94431257a
--- /dev/null
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/FilterToolBar.java
@@ -0,0 +1,38 @@
+/*
+ * 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.widget;
+
+/**
+ * @author anttil
+ */
+public class FilterToolBar extends Widget
+{
+
+    public void setCode(String text)
+    {
+        Text t = new Text();
+        t.setContext(find(".//input[contains(@id, 'Code-input')]"));
+        t.write(text);
+    }
+
+    public void reset()
+    {
+        Button b = new Button();
+        b.setContext(find(".//button[text()='Reset']"));
+        b.click();
+    }
+}
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Form.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Form.java
index 46fbe6cb305d8649941b7c91e103ec0b8abfe266..da9bd363b0714e8694326e34d33c92fc2dd8c6c3 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Form.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Form.java
@@ -29,7 +29,7 @@ public class Form extends Widget
 {
     public Widget getWidget(String label)
     {
-        List<WebElement> elements = context.findElements(By.xpath(".//form/div/label"));
+        List<WebElement> elements = findAll(".//form/div/label");
 
         for (WebElement element : elements)
         {
@@ -48,7 +48,7 @@ public class Form extends Widget
     public List<String> getLabels()
     {
         List<String> labels = new ArrayList<String>();
-        List<WebElement> elements = context.findElements(By.xpath(".//form/div/label"));
+        List<WebElement> elements = findAll(".//form/div/label");
         for (WebElement element : elements)
         {
             labels.add(element.getText());
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 08bcb527a9f7344f7d57fddd0148f8189adafc0e..df20a66864149f1d91ed57264f0cc6f7b2e5cb2e 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
@@ -22,16 +22,16 @@ 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.page.common.Cell;
-import ch.systemsx.cisd.openbis.uitest.page.common.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.Cell;
+import ch.systemsx.cisd.openbis.uitest.infra.Row;
+import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Refreshing;
 
 /**
  * @author anttil
  */
-public class Grid extends Widget
+public class Grid extends Widget implements Refreshing
 {
 
     public Row getRow(String column, String value)
@@ -71,8 +71,7 @@ public class Grid extends Widget
 
         if (!found)
         {
-            throw new IllegalArgumentException("Row with value " + value + " in column " + column
-                    + " not found");
+            return new Row();
         }
 
         index = index - (index % numColumns);
@@ -82,23 +81,19 @@ public class Grid extends Widget
         {
             WebElement element = cells.get(i + index);
             m.put(columns.get(i).getText(),
-                    new Cell(element.getText(), element.getAttribute("href"), element));
+                    new Cell(element.getText(), element.getAttribute("href")));
         }
         return new Row(m);
     }
 
-    public List<WebElement> getColumns()
+    private List<WebElement> getColumns()
     {
-        return context
-                .findElements(By
-                        .xpath(".//td[not(ancestor::div[contains(@style,'display:none')]) and contains(@class, 'x-grid') and contains(@class, '-header ')]//span[not(*)]"));
+        return findAll(".//td[not(ancestor::div[contains(@style,'display:none')]) and contains(@class, 'x-grid') and contains(@class, '-header ')]//span[not(*)]");
     }
 
-    public List<WebElement> getCells()
+    private List<WebElement> getCells()
     {
-        return context
-                .findElements(By
-                        .xpath(".//td[not(ancestor::div[contains(@style,'display:none')]) and contains(@class, 'x-grid') and contains(@class, '-col ')]//*[not(*)]"));
+        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)
@@ -117,4 +112,54 @@ public class Grid extends Widget
         throw new IllegalArgumentException("Grid does not contain element with text " + string
                 + ", found " + found);
     }
+
+    @Override
+    public String toString()
+    {
+        List<WebElement> columns = getColumns();
+        String s = "";
+        for (WebElement column : columns)
+        {
+            s += column.getText() + "\t";
+        }
+        s += "\n";
+
+        int counter = 0;
+        for (WebElement cell : getCells())
+        {
+            s += cell.getText() + "\t";
+            counter++;
+            if (counter % columns.size() == 0)
+            {
+                s += "\n";
+            }
+        }
+        return s;
+    }
+
+    boolean itsOn = false;
+
+    int last = 0;
+
+    @Override
+    public synchronized boolean hasRefreshed()
+    {
+        if (itsOn)
+        {
+            if (this.last != getCells().size())
+            {
+                this.itsOn = false;
+                return true;
+            } else
+            {
+                return false;
+            }
+        } else
+        {
+            itsOn = true;
+            this.last = getCells().size();
+            return false;
+        }
+
+    }
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/PagingToolBar.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/PagingToolBar.java
new file mode 100644
index 0000000000000000000000000000000000000000..58ad8aa7591058293a5aee4025b7f3730688ce77
--- /dev/null
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/PagingToolBar.java
@@ -0,0 +1,37 @@
+/*
+ * 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.widget;
+
+import org.openqa.selenium.WebElement;
+
+/**
+ * @author anttil
+ */
+public class PagingToolBar extends Widget
+{
+
+    public void filters()
+    {
+        WebElement button = find(".//button[text()='Filters']");
+        Button b = new Button();
+        b.setContext(button);
+        if (!b.isPressed())
+        {
+            b.click();
+        }
+    }
+}
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Text.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Text.java
index 460a348ba7b6476fd2de3921c63697f660c69705..7656326fae6119dbbf17210e394d9fdd552c0517 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Text.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Text.java
@@ -16,7 +16,6 @@
 
 package ch.systemsx.cisd.openbis.uitest.widget;
 
-import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 
 /**
@@ -48,7 +47,7 @@ public class Text extends Widget implements Fillable
             return context;
         } else
         {
-            return context.findElement(By.xpath("input"));
+            return find("input");
         }
     }
 
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/TextArea.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/TextArea.java
index 1cc461fd43977ed67915e410f1bc1fd03b228f1f..1e1b84394a5f6f086d5ef859ea00e582c86de742 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/TextArea.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/TextArea.java
@@ -16,7 +16,6 @@
 
 package ch.systemsx.cisd.openbis.uitest.widget;
 
-import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 
 /**
@@ -26,20 +25,20 @@ public class TextArea extends Widget implements Fillable
 {
     public void write(String text)
     {
-        WebElement element = context.findElement(By.xpath(".//textarea"));
+        WebElement element = find(".//textarea");
         element.clear();
         element.sendKeys(text);
     }
 
     public void clear()
     {
-        WebElement element = context.findElement(By.xpath(".//textarea"));
+        WebElement element = find(".//textarea");
         element.clear();
     }
 
     public void append(String text)
     {
-        WebElement element = context.findElement(By.xpath(".//textarea"));
+        WebElement element = find(".//textarea");
         element.sendKeys(text);
     }
 
@@ -48,5 +47,4 @@ public class TextArea extends Widget implements Fillable
     {
         write(string);
     }
-
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/TreeGrid.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/TreeGrid.java
index 5836f55d593cdf0e9e3b068d3c4355c2377c0245..c7c86e1ff87752c1feb87e83ffa6e58ed5923644 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/TreeGrid.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/TreeGrid.java
@@ -20,7 +20,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 
 /**
@@ -30,8 +29,7 @@ public class TreeGrid extends Widget
 {
     public void select(String label)
     {
-        List<WebElement> elements =
-                context.findElements(By.xpath(".//span[not(*) and @class='gwt-InlineHTML']"));
+        List<WebElement> elements = findAll(".//span[not(*) and @class='gwt-InlineHTML']");
 
         Collection<String> found = new ArrayList<String>();
         for (WebElement element : elements)
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Widget.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Widget.java
index 1e4816fb507acd1e2d9fef6e6908b54283f573a1..5e0992453a1324d222dbaf340bfe0515f63e8d59 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Widget.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Widget.java
@@ -16,6 +16,9 @@
 
 package ch.systemsx.cisd.openbis.uitest.widget;
 
+import java.util.List;
+
+import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 
 /**
@@ -35,6 +38,16 @@ public abstract class Widget
         return context;
     }
 
+    protected WebElement find(String xpath)
+    {
+        return context.findElement(By.xpath(xpath));
+    }
+
+    protected List<WebElement> findAll(String xpath)
+    {
+        return context.findElements(By.xpath(xpath));
+    }
+
     public <T extends Widget> T handleAs(Class<T> clazz)
     {
         T t;