diff --git a/src/RootViewModel.js b/src/RootViewModel.js
index 4a21140f2f6cafc5725574db1faecb8cf0a64e3e..7c2d35ed98a0512c9bd50f0b35816b4ea4eaeab9 100644
--- a/src/RootViewModel.js
+++ b/src/RootViewModel.js
@@ -51,25 +51,28 @@ export class RootViewModel extends ViewModel {
         this.emitChange();
     }
 
-    _showDisclaimer() {
-        this.showDisclaimer = true;
+    _hideLinks() {
         this.link = null;
         this.openLinkViewModel = null;
         this.createLinkViewModel = null;
-        this.loadServerPolicyViewModel = null;
-        this.emitChange();
     }
 
     updateHash(hash) {
         this.showDisclaimer = false;
         if (hash.startsWith("#/policy/")) {
             const server = hash.substr(9);
+            this._hideLinks();
             this.loadServerPolicyViewModel = new LoadServerPolicyViewModel(this.childOptions({server}));
             this.loadServerPolicyViewModel.load();
+            this.emitChange();
         } else if (hash.startsWith("#/disclaimer/")) {
-            this._showDisclaimer();
+            this._hideLinks();
+            this.loadServerPolicyViewModel = null;
+            this.showDisclaimer = true;
+            this.emitChange();
         } else {
             const oldLink = this.link;
+            this.loadServerPolicyViewModel = null;
             this.link = Link.parse(hash);
             this._updateChildVMs(oldLink);
         }