diff --git a/wahlfang_api/consumers.py b/wahlfang_api/consumers.py
index fd994796c96dc9e195c838347022c3508a3a31ee..46df18dfca0ee5646cd2a06e1208981f44de443b 100644
--- a/wahlfang_api/consumers.py
+++ b/wahlfang_api/consumers.py
@@ -3,6 +3,9 @@ import json
 from channels.generic.websocket import AsyncWebsocketConsumer
 from channels.db import database_sync_to_async
 
+from management.models import ElectionManager
+from vote.models import Voter
+
 
 class VoteAPIConsumer(AsyncWebsocketConsumer):
 
@@ -26,8 +29,11 @@ class VoteAPIConsumer(AsyncWebsocketConsumer):
         #     uuid = self.scope['url_route']['kwargs']['uuid']
         #     session = Session.objects.get(spectator_token=uuid)
         # else:
-        session = self.scope['user'].session
-        return f'api-vote-session-{session.pk}'
+        if isinstance(self.scope['user'], Voter):
+            session = self.scope['user'].session
+            return f'api-vote-session-{session.pk}'
+        else:
+            raise RuntimeError('error, trying to connect to voter websocket with an election manager')
 
 
 class ManagementAPIConsumer(AsyncWebsocketConsumer):
@@ -48,5 +54,8 @@ class ManagementAPIConsumer(AsyncWebsocketConsumer):
         }))
 
     def get_manager_key(self):
-        manager_key = self.scope['user'].id
-        return f'api-election-manager-{manager_key}'
+        if isinstance(self.scope['user'], ElectionManager):
+            manager_key = self.scope['user'].id
+            return f'api-election-manager-{manager_key}'
+        else:
+            raise RuntimeError('error, trying to connect to voter websocket with an election manager')
diff --git a/wahlfang_api/urls.py b/wahlfang_api/urls.py
index ed7c1e2bc3ba1df93d0524cc470f182c675938d3..76cb857c8c0335d3d5f031f4f23a1988d59b7357 100644
--- a/wahlfang_api/urls.py
+++ b/wahlfang_api/urls.py
@@ -1,5 +1,5 @@
 from django.urls import include, path
-from rest_framework_nested import routers
+from rest_framework import routers
 from rest_framework_simplejwt.views import (
     TokenRefreshView,
     TokenVerifyView,
diff --git a/wahlfang_web/package.json b/wahlfang_web/package.json
index 6f2ee129248549654012143dc58296c279734b46..029fbf9116051b7cd69600181d7d62bc5e745370 100644
--- a/wahlfang_web/package.json
+++ b/wahlfang_web/package.json
@@ -26,7 +26,7 @@
     "react-dom": "^17.0.2",
     "react-router-dom": "^5.2.0",
     "react-scripts": "4.0.3",
-    "recoil": "^0.3.1",
+    "recoil": "^0.4.1",
     "web-vitals": "^1.0.1",
     "yarn": "^1.22.17",
     "yup": "^0.32.11"
diff --git a/wahlfang_web/src/components/HeaderManagement.js b/wahlfang_web/src/components/HeaderManagement.js
index 36227453037749f3a5d8e66006ab64341e5e2bfd..d822ef18651a557a7f1125fdf1600add718808c0 100644
--- a/wahlfang_web/src/components/HeaderManagement.js
+++ b/wahlfang_web/src/components/HeaderManagement.js
@@ -10,7 +10,7 @@ export default function HeaderManagement() {
     return (
     <nav className="navbar navbar-expand navbar-dark bg-dark shadow">
         <div className="container">
-            <Link className="navbar-brand" to="/">
+            <Link className="navbar-brand" to="/management/sessions">
                 <img src={logo} alt="StuStaNet" width="192px"/>
             </Link>
             <button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
@@ -21,7 +21,7 @@ export default function HeaderManagement() {
                 <div className="navbar-text me-auto">Online Voting System</div>
                 <ul className="navbar-nav">
                     <li className="nav-item">
-                        <Link className="nav-link" to="/help">Help</Link>
+                        <Link className="nav-link" to="/management/help">Help</Link>
                     </li>
                     {authenticated ? (
                         <Link className="nav-link" to="/management/logout">Logout</Link>
diff --git a/wahlfang_web/src/pages/vote/Login.js b/wahlfang_web/src/pages/vote/Login.js
index 55aa5cc2c5f1011e29001e15caaf5d6fb60ee089..e81cb42675b5dff6ffa016fceb6e377fe7961ff8 100644
--- a/wahlfang_web/src/pages/vote/Login.js
+++ b/wahlfang_web/src/pages/vote/Login.js
@@ -24,7 +24,7 @@ export default function Login() {
     }
 
     if (authenticated) {
-        return <Redirect to="/"/>
+        return <Redirect to="/vote/home"/>
     }
 
     return (
diff --git a/wahlfang_web/src/websocket.js b/wahlfang_web/src/websocket.js
index 02c7702e26ec87e3a0795d114dedc1cda55d84dd..7d58f5e5daa520088b49d6b27f191a130cf79a55 100644
--- a/wahlfang_web/src/websocket.js
+++ b/wahlfang_web/src/websocket.js
@@ -1,16 +1,18 @@
 import {loadManagerToken} from "./api/management";
+import {loadVoterToken} from "./api";
 
 export const voterWebsocketURL = 'ws://localhost:8000/api/v1/vote/'
 export const managementWebsocketURL = 'ws://localhost:8000/api/v1/management/'
 
 export class WahlfangWebsocket {
-    constructor(url) {
+    constructor(url, isVoter) {
         this.url = url;
+        this.isVoter = isVoter;
         this.handlers = {}; // map of table name to callback
     }
 
     initWs = () => {
-        const token = loadManagerToken();
+        const token = this.isVoter ? loadVoterToken() : loadManagerToken();
         const url = this.url + '?token=' + token.access;
         this.ws = new WebSocket(url);
         this.ws.onopen = this.onopen;
@@ -43,5 +45,5 @@ export class WahlfangWebsocket {
     }
 }
 
-export const voterWS = new WahlfangWebsocket(voterWebsocketURL)
-export const managementWS = new WahlfangWebsocket(managementWebsocketURL)
+export const voterWS = new WahlfangWebsocket(voterWebsocketURL, true);
+export const managementWS = new WahlfangWebsocket(managementWebsocketURL, false);