diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/PageLinks.java b/gerrit-common/src/main/java/com/google/gerrit/common/PageLinks.java
index 43541b7..0f29214 100644
--- a/gerrit-common/src/main/java/com/google/gerrit/common/PageLinks.java
+++ b/gerrit-common/src/main/java/com/google/gerrit/common/PageLinks.java
@@ -38,14 +38,6 @@
   public static final String TOP = "n,z";
 
   public static final String MINE = "mine";
-  public static final String MINE_STARRED = "mine,starred";
-  public static final String MINE_DRAFTS = "mine,drafts";
-  public static final String MINE_WATCHED = "mine,watched," + TOP;
-
-  public static final String ALL_ABANDONED = "all,abandoned," + TOP;
-  public static final String ALL_MERGED = "all,merged," + TOP;
-  public static final String ALL_OPEN = "all,open," + TOP;
-
   public static final String ADMIN_GROUPS = "admin,groups";
   public static final String ADMIN_PROJECTS = "admin,projects";
 
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
index f93fd5e..383a226 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
@@ -17,8 +17,6 @@
 import static com.google.gerrit.common.PageLinks.ADMIN_GROUPS;
 import static com.google.gerrit.common.PageLinks.ADMIN_PROJECTS;
 import static com.google.gerrit.common.PageLinks.MINE;
-import static com.google.gerrit.common.PageLinks.MINE_DRAFTS;
-import static com.google.gerrit.common.PageLinks.MINE_STARRED;
 import static com.google.gerrit.common.PageLinks.REGISTER;
 import static com.google.gerrit.common.PageLinks.SETTINGS;
 import static com.google.gerrit.common.PageLinks.SETTINGS_AGREEMENTS;
@@ -157,10 +155,10 @@
         return r;
       }
 
-    } else if (MINE_STARRED.equals(token)) {
+    } else if ("mine,starred".equals(token)) {
       return QueryScreen.forQuery("is:starred");
 
-    } else if (MINE_DRAFTS.equals(token)) {
+    } else if ("mine,drafts".equals(token)) {
       return QueryScreen.forQuery("has:draft");
 
     } else {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Gerrit.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Gerrit.java
index ecb4cd6..d099974 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Gerrit.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Gerrit.java
@@ -400,7 +400,7 @@
       if (isSignedIn()) {
         display(PageLinks.MINE);
       } else {
-        display(PageLinks.ALL_OPEN);
+        display(PageLinks.toChangeQuery("status:open"));
       }
     } else {
       display(History.getToken());
@@ -416,17 +416,17 @@
     LinkMenuBar m;
 
     m = new LinkMenuBar();
-    addLink(m, C.menuAllOpen(), PageLinks.ALL_OPEN);
-    addLink(m, C.menuAllMerged(), PageLinks.ALL_MERGED);
-    addLink(m, C.menuAllAbandoned(), PageLinks.ALL_ABANDONED);
+    addLink(m, C.menuAllOpen(), PageLinks.toChangeQuery("status:open"));
+    addLink(m, C.menuAllMerged(), PageLinks.toChangeQuery("status:merged"));
+    addLink(m, C.menuAllAbandoned(), PageLinks.toChangeQuery("status:abandoned"));
     menuLeft.add(m, C.menuAll());
 
     if (signedIn) {
       m = new LinkMenuBar();
       addLink(m, C.menuMyChanges(), PageLinks.MINE);
-      addLink(m, C.menuMyDrafts(), PageLinks.MINE_DRAFTS);
-      addLink(m, C.menuMyWatchedChanges(), PageLinks.MINE_WATCHED);
-      addLink(m, C.menuMyStarredChanges(), PageLinks.MINE_STARRED);
+      addLink(m, C.menuMyDrafts(), PageLinks.toChangeQuery("has:draft"));
+      addLink(m, C.menuMyWatchedChanges(), PageLinks.toChangeQuery("is:watched status:open"));
+      addLink(m, C.menuMyStarredChanges(), PageLinks.toChangeQuery("is:starred"));
       menuLeft.add(m, C.menuMine());
       menuLeft.selectTab(1);
     } else {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/JumpKeys.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/JumpKeys.java
index 3ec5372..873045d 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/JumpKeys.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/JumpKeys.java
@@ -29,19 +29,19 @@
     jumps.add(new KeyCommand(0, 'o', Gerrit.C.jumpAllOpen()) {
       @Override
       public void onKeyPress(final KeyPressEvent event) {
-        Gerrit.display(PageLinks.ALL_OPEN);
+        Gerrit.display(PageLinks.toChangeQuery("status:open"));
       }
     });
     jumps.add(new KeyCommand(0, 'm', Gerrit.C.jumpAllMerged()) {
       @Override
       public void onKeyPress(final KeyPressEvent event) {
-        Gerrit.display(PageLinks.ALL_MERGED);
+        Gerrit.display(PageLinks.toChangeQuery("status:merged"));
       }
     });
     jumps.add(new KeyCommand(0, 'a', Gerrit.C.jumpAllAbandoned()) {
       @Override
       public void onKeyPress(final KeyPressEvent event) {
-        Gerrit.display(PageLinks.ALL_ABANDONED);
+        Gerrit.display(PageLinks.toChangeQuery("status:abandoned"));
       }
     });
 
@@ -55,19 +55,19 @@
       jumps.add(new KeyCommand(0, 'd', Gerrit.C.jumpMineDrafts()) {
         @Override
         public void onKeyPress(final KeyPressEvent event) {
-          Gerrit.display(PageLinks.MINE_DRAFTS);
+          Gerrit.display(PageLinks.toChangeQuery("has:draft"));
         }
       });
       jumps.add(new KeyCommand(0, 'w', Gerrit.C.jumpMineWatched()) {
         @Override
         public void onKeyPress(final KeyPressEvent event) {
-          Gerrit.display(PageLinks.MINE_WATCHED);
+          Gerrit.display(PageLinks.toChangeQuery("is:watched status:open"));
         }
       });
       jumps.add(new KeyCommand(0, 's', Gerrit.C.jumpMineStarred()) {
         @Override
         public void onKeyPress(final KeyPressEvent event) {
-          Gerrit.display(PageLinks.MINE_STARRED);
+          Gerrit.display(PageLinks.toChangeQuery("is:starred"));
         }
       });
     }
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
index ae2dd11..36d3681 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
@@ -356,7 +356,7 @@
       if (Gerrit.isSignedIn()) {
         Gerrit.display(PageLinks.MINE);
       } else {
-        Gerrit.display(PageLinks.ALL_OPEN);
+        Gerrit.display(PageLinks.toChangeQuery("status:open"));
       }
     }
   }
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/Screen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/Screen.java
index a52b4ba..a854abc 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/Screen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/Screen.java
@@ -119,7 +119,7 @@
   /** Invoked if this screen is the current screen and the user signs out. */
   public void onSignOut() {
     if (isRequiresSignIn()) {
-      History.newItem(PageLinks.ALL_OPEN);
+      History.newItem(PageLinks.toChangeQuery("status:open"));
     }
   }
 
