diff --git a/src/main/java/de/thm/arsnova/entities/User.java b/src/main/java/de/thm/arsnova/entities/User.java
index bbe76a586d532b162825ee20d42529b21db454b1..13ae4a9cba5b4f8f2535694ce4132974c0b2414c 100644
--- a/src/main/java/de/thm/arsnova/entities/User.java
+++ b/src/main/java/de/thm/arsnova/entities/User.java
@@ -67,13 +67,20 @@ public class User implements Serializable {
 		this.type = type;
 	}
 
+	@Override
 	public String toString() {
-		return "User, username: " + this.username + ", type: " + this.type;
+		return "User [username=" + username + ", type=" + type + "]";
 	}
 
 	@Override
 	public int hashCode() {
-		return username.hashCode();
+		// See http://stackoverflow.com/a/113600
+		final int theAnswer = 42;
+		final int theOthers = 37;
+
+		int result = theAnswer;
+		result = theOthers * result + this.username.hashCode();
+		return theOthers * result + this.type.hashCode();
 	}
 
 	@Override
diff --git a/src/main/java/de/thm/arsnova/services/IUserService.java b/src/main/java/de/thm/arsnova/services/IUserService.java
index a045c91e0b21cc8e7949b3e62bd20aae88dc0205..4e94a08f74ac76e0c79f718622712be502efa29a 100644
--- a/src/main/java/de/thm/arsnova/services/IUserService.java
+++ b/src/main/java/de/thm/arsnova/services/IUserService.java
@@ -39,7 +39,7 @@ public interface IUserService {
 
 	boolean isUserInSession(User user, String keyword);
 
-	List<String> getUsersInSession(String keyword);
+	List<User> getUsersInSession(String keyword);
 
 	void addCurrentUserToSessionMap(String keyword);
 
diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/services/UserService.java
index 617c7cb9e19e9f919173d5c8be94dd66f25e5849..052a3de313dfd19c09a81ac3a3d57597da6a222d 100644
--- a/src/main/java/de/thm/arsnova/services/UserService.java
+++ b/src/main/java/de/thm/arsnova/services/UserService.java
@@ -41,7 +41,7 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
 	public static final Logger LOGGER = LoggerFactory.getLogger(UserService.class);
 
 	private static final ConcurrentHashMap<UUID, User> socketid2user = new ConcurrentHashMap<UUID, User>();
-	private static final ConcurrentHashMap<String, String> user2session = new ConcurrentHashMap<String, String>();
+	private static final ConcurrentHashMap<User, String> user2session = new ConcurrentHashMap<User, String>();
 
 	@Override
 	public User getCurrentUser() {
@@ -106,16 +106,16 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
 	public boolean isUserInSession(User user, String keyword) {
 		if (keyword == null)
 			return false;
-		String session = user2session.get(user.getUsername());
+		String session = user2session.get(user);
 		if (session == null)
 			return false;
 		return keyword.equals(session);
 	}
 
 	@Override
-	public List<String> getUsersInSession(String keyword) {
-		List<String> result = new ArrayList<String>();
-		for (Entry<String, String> e : user2session.entrySet()) {
+	public List<User> getUsersInSession(String keyword) {
+		List<User> result = new ArrayList<User>();
+		for (Entry<User, String> e : user2session.entrySet()) {
 			if (e.getValue().equals(keyword)) {
 				result.add(e.getKey());
 			}
@@ -129,7 +129,7 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
 		User user = getCurrentUser();
 		if (user == null)
 			throw new UnauthorizedException();
-		user2session.put(user.getUsername(), keyword);
+		user2session.put(user, keyword);
 	}
 
 	@Override
@@ -149,7 +149,7 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
 			Hashtable<String, Map<?, ?>> map = (Hashtable<String, Map<?, ?>>) ois.readObject();
 			ois.close();
 			Map<UUID, User> s2u = (Map<UUID, User>) map.get("socketid2user");
-			Map<String, String> u2s = (Map<String, String>) map.get("user2session");
+			Map<User, String> u2s = (Map<User, String>) map.get("user2session");
 
 			LOGGER.info("load from store: {}", map);
 
diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
index 886851ca3aeb0ecd46d26dd1317bafe00e973ace..6c8ad2c9c36973e53bb84efe75c0dd519888e985 100644
--- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
+++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
@@ -202,12 +202,12 @@ public class ARSnovaSocketIOServer {
 		 * all connected clients and if send feedback, if user is in current
 		 * session
 		 */
-		List<String> users = userService.getUsersInSession(session);
+		List<User> users = userService.getUsersInSession(session);
 		de.thm.arsnova.entities.Feedback fb = feedbackService.getFeedback(session);
 
 		for (SocketIOClient c : server.getAllClients()) {
 			User u = userService.getUser2SocketId(c.getSessionId());
-			if (u != null && users.contains(u.getUsername())) {
+			if (u != null && users.contains(u)) {
 				logger.info("sending out to client {}, username is: {}, current session is: {}",
 						new Object[] { c.getSessionId(), u.getUsername(), session });
 				c.sendEvent("updateFeedback", fb.getValues());