diff --git a/src/main/java/de/thm/arsnova/SessionController.java b/src/main/java/de/thm/arsnova/SessionController.java
index cb6e9516d7c983677f14a602cdefcb70268570d4..d92affcf28e512f190b3dfa9b715aef8c29668e6 100644
--- a/src/main/java/de/thm/arsnova/SessionController.java
+++ b/src/main/java/de/thm/arsnova/SessionController.java
@@ -18,6 +18,8 @@
  */
 package de.thm.arsnova;
 
+import java.util.UUID;
+
 import javax.servlet.http.HttpServletResponse;
 
 import net.sf.json.JSONObject;
@@ -59,7 +61,7 @@ public class SessionController {
 			return;
 		}		
 		logger.info("authorize session: " + sessionkey + ", user is:  " + userService.getUser(SecurityContextHolder.getContext().getAuthentication()));
-		boolean result = server.authorize(sessionkey, userService.getUser(SecurityContextHolder.getContext().getAuthentication()));
+		boolean result = server.authorize(UUID.fromString(sessionkey), userService.getUser(SecurityContextHolder.getContext().getAuthentication()));
 		response.setStatus(result ? HttpStatus.CREATED.value() : HttpStatus.UNAUTHORIZED.value());
 	}
 	
diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
index ace793753394ca24b896dc431b20d4299035d15e..3aac4111467ee963a311d37023a53c6b098eaddd 100644
--- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
+++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
@@ -10,7 +10,6 @@ import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.commons.lang.NotImplementedException;
-import org.apache.http.MethodNotSupportedException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,7 +36,7 @@ public class ARSnovaSocketIOServer {
 	
 	private final Logger logger = LoggerFactory.getLogger(getClass());
 	
-	private final Map<String, User> socketid2user = new ConcurrentHashMap<String, User>();
+	private final Map<UUID, User> socketid2user = new ConcurrentHashMap<UUID, User>();
 	
 	private int portNumber;
 	private boolean useSSL = false;
@@ -77,7 +76,7 @@ public class ARSnovaSocketIOServer {
 						/**
 						 * do a check if user is in the session, for which he would give a feedback
 						 */
-						User u = socketid2user.get(client.getSessionId().toString());
+						User u = socketid2user.get(client.getSessionId());
 						if(u == null || sessionService.isUserInSession(u, data.getSessionkey()) == false) {
 							return;
 						}
@@ -92,7 +91,7 @@ public class ARSnovaSocketIOServer {
 						de.thm.arsnova.entities.Feedback fb = sessionService.getFeedback(data.getSessionkey());
 						
 						for(SocketIOClient c : server.getAllClients()) {
-							u = socketid2user.get(c.getSessionId().toString());
+							u = socketid2user.get(c.getSessionId());
 							if(u != null && users.contains(u.getUsername())) {
 								c.sendEvent("updateFeedback", fb.getValues());
 							}
@@ -114,6 +113,7 @@ public class ARSnovaSocketIOServer {
 	        @Override
 	        public void onDisconnect(SocketIOClient client) {
 	        	logger.info("addDisconnectListener.onDisconnect: Client: {}", new Object[] {client});
+	        	socketid2user.remove(client.getSessionId());
 	        }
 	    });
 		
@@ -165,20 +165,19 @@ public class ARSnovaSocketIOServer {
 		this.useSSL = useSSL;
 	}
 
-	public boolean authorize(String session, User user) {
+	public boolean authorize(UUID session, User user) {
 		return socketid2user.put(session, user) != null;		
 	}
 	
 	public void reportDeletedFeedback(String username, Set<String> arsSessions) {
-		String connectionId = findConnectionIdForUser(username);
-		if (connectionId == "") {
+		UUID connectionId = findConnectionIdForUser(username);
+		if (connectionId == null) {
 			return;
 		}
 		
-		UUID connectionUuid = UUID.fromString(connectionId);
 		for (SocketIOClient client : server.getAllClients()) {
 			// Find the client whose feedback has been deleted and send a message.
-			if (client.getSessionId().compareTo(connectionUuid) == 0) {
+			if (client.getSessionId().compareTo(connectionId) == 0) {
 				ClientOperations clientOp = new ARSnovaClientOperations(client);
 				clientOp.sendEvent("removedFeedback", arsSessions);
 				break;
@@ -186,16 +185,14 @@ public class ARSnovaSocketIOServer {
 		}
 	}
 
-	private String findConnectionIdForUser(String username) {
-		String connectionId = "";
-		for (Map.Entry<String, User> e : socketid2user.entrySet()) {
+	private UUID findConnectionIdForUser(String username) {
+		for (Map.Entry<UUID, User> e : socketid2user.entrySet()) {
 			User u = e.getValue();
 			if (u.getUsername().equals(username)) {
-				connectionId = e.getKey();
-				break;
+				return e.getKey();
 			}
 		}
-		return connectionId;
+		return null;
 	}