diff --git a/src/main/java/de/thm/arsnova/controller/QuestionController.java b/src/main/java/de/thm/arsnova/controller/QuestionController.java
index 184d7e88d46d518f8a62fa1aef62bfe356247bf7..db0d162015d334fa931a8bd4f79ad8f9a3805302 100644
--- a/src/main/java/de/thm/arsnova/controller/QuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/QuestionController.java
@@ -92,8 +92,8 @@ public class QuestionController extends AbstractController {
 		method=RequestMethod.GET
 	)
 	@ResponseBody
-	public List<Question> getSkillQuestions(@PathVariable String sessionkey, @RequestParam(value="sort", required=false) String sort, HttpServletResponse response) {
-		List<Question> questions = sessionService.getSkillQuestions(sessionkey, sort);
+	public List<Question> getSkillQuestions(@PathVariable String sessionkey, HttpServletResponse response) {
+		List<Question> questions = sessionService.getSkillQuestions(sessionkey);
 		if(questions == null || questions.isEmpty()) {
 			response.setStatus(HttpStatus.NOT_FOUND.value());
 			return null;
diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index 8c7169405bc7c2d01a2446f7df111fce448b0f8f..3d45cb90fc291c79bf841c145f9c9c8dd6f8de17 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -36,6 +36,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 
+import de.thm.arsnova.entities.Feedback;
+import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.LoggedIn;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
@@ -43,7 +45,6 @@ import de.thm.arsnova.services.ISessionService;
 import de.thm.arsnova.services.IUserService;
 import de.thm.arsnova.socket.ARSnovaSocketIOServer;
 
-
 @Controller
 public class SessionController extends AbstractController {
 	
@@ -103,7 +104,6 @@ public class SessionController extends AbstractController {
 		return null;
 	}
 
-
 	@RequestMapping(value="/socketurl", method=RequestMethod.GET)
 	@ResponseBody
 	public String getSocketUrl() {
@@ -130,5 +130,4 @@ public class SessionController extends AbstractController {
 		}
 		return sessions;
 	}
-
 }
diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 3e65a3ed99869082b8c35601acc7d323b4ee2c30..c4fb5ae57667da5241f9d53a1c1cade49872aae9 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -197,7 +197,7 @@ public class CouchDBDao implements IDatabaseDao {
 	}
 	
 	@Override
-	public List<Question> getSkillQuestions(String sessionKeyword, String sort) {
+	public List<Question> getSkillQuestions(String sessionKeyword) {
 		Session session = this.getSessionFromKeyword(sessionKeyword);
 		if (session == null) {
 			return null;
@@ -210,7 +210,7 @@ public class CouchDBDao implements IDatabaseDao {
 			viewName = "skill_question/by_session";
 		}
 		try {
-			View view = new View(viewName);
+			View view = new View("skill_question/by_session_sorted_by_subject_and_text");
 			view.setStartKey("[" + URLEncoder.encode("\"" + session.get_id() + "\"", "UTF-8") + "]");
 			view.setEndKey("[" + URLEncoder.encode("\"" + session.get_id() + "\",{}", "UTF-8") + "]");
 			
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index 40dad113bd0d41b351bc8ac6398336f07340849c..ff42a9a69fad530bb623b9103babf29067fabe83 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -39,7 +39,7 @@ public interface IDatabaseDao {
 	
 	public boolean saveQuestion(Session session, Question question);
 	public Question getQuestion(String id);
-	List<Question> getSkillQuestions(String session, String sort);
+	List<Question> getSkillQuestions(String session);
 	public int getSkillQuestionCount(String sessionkey);
 	
 	public LoggedIn registerAsOnlineUser(User u, Session s);
diff --git a/src/main/java/de/thm/arsnova/entities/User.java b/src/main/java/de/thm/arsnova/entities/User.java
index 84d564ccbf201c4ab8b3e337979379c0cd633317..997b22078f2e7ddbce0fe1503b5ff181f309680d 100644
--- a/src/main/java/de/thm/arsnova/entities/User.java
+++ b/src/main/java/de/thm/arsnova/entities/User.java
@@ -1,5 +1,7 @@
 package de.thm.arsnova.entities;
 
+import java.io.Serializable;
+
 import org.jasig.cas.client.authentication.AttributePrincipal;
 import org.scribe.up.profile.facebook.FacebookProfile;
 import org.scribe.up.profile.google.Google2Profile;
@@ -7,8 +9,8 @@ import org.scribe.up.profile.twitter.TwitterProfile;
 import org.springframework.security.authentication.AnonymousAuthenticationToken;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 
-public class User {
-	
+public class User implements Serializable {
+	private static final long serialVersionUID = 1L;
 	private String username;
 
 	public User(Google2Profile profile) {
@@ -46,5 +48,16 @@ public class User {
 	public String toString() {
 		return "User, username: " + this.username;
 	}
+	@Override
+	public int hashCode() {
+		return username.hashCode();
+	}
+	
+	
+	@Override
+	public boolean equals(Object obj) {
+		User other = (User) obj;
+		return this.username.equals(other.username);
+	}
 
 }
diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java
index 75935473a6d27a82d7d9cad611451a8d7307f223..44eafe6af711348388986ea1d1465f5a0d883083 100644
--- a/src/main/java/de/thm/arsnova/services/ISessionService.java
+++ b/src/main/java/de/thm/arsnova/services/ISessionService.java
@@ -47,6 +47,6 @@ public interface ISessionService {
 	public boolean saveQuestion(Question question);
 	public Question getQuestion(String id);
 	public LoggedIn registerAsOnlineUser(User user, String sessionkey);
-	public List<Question> getSkillQuestions(String sessionkey, String sort);
+	public List<Question> getSkillQuestions(String sessionkey);
 	public int getSkillQuestionCount(String sessionkey);
 }
\ No newline at end of file
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index 1d329af295744f44043192327ed32884a17f6660..e92cce242066729b9d40b36c63855c33577383d8 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -78,8 +78,8 @@ public class SessionService implements ISessionService {
 	}
 
 	@Override
-	public List<Question> getSkillQuestions(String sessionkey, String sort) {
-		return databaseDao.getSkillQuestions(sessionkey, sort);
+	public List<Question> getSkillQuestions(String sessionkey) {
+		return databaseDao.getSkillQuestions(sessionkey);
 	}
 	
 	@Override
diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/services/UserService.java
index 0719a767735bd84e99e5f34d8a5f3d92da866f20..76499556f76d3acc4895897f483ce8d8c9d7db1a 100644
--- a/src/main/java/de/thm/arsnova/services/UserService.java
+++ b/src/main/java/de/thm/arsnova/services/UserService.java
@@ -1,16 +1,28 @@
 package de.thm.arsnova.services;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
 import java.util.ArrayList;
+import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 import java.util.UUID;
-import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.scribe.up.profile.facebook.FacebookProfile;
 import org.scribe.up.profile.google.Google2Profile;
 import org.scribe.up.profile.twitter.TwitterProfile;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.InitializingBean;
 import org.springframework.security.authentication.AnonymousAuthenticationToken;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.cas.authentication.CasAuthenticationToken;
@@ -24,11 +36,13 @@ import com.github.leleuj.ss.oauth.client.authentication.OAuthAuthenticationToken
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 
-public class UserService implements IUserService {
+public class UserService implements IUserService, InitializingBean, DisposableBean {
 
+	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>();
-
+	
 	
 	@Override
 	public User getCurrentUser() {
@@ -118,4 +132,53 @@ public class UserService implements IUserService {
 	public String getSessionForUser(String username) {
 		return user2session.get(username);
 	}
+
+	@Override
+	public void afterPropertiesSet() {
+		try {
+			File tmpDir = new File(System.getProperty("java.io.tmpdir"));
+			File store = new File(tmpDir, "arsnova.bin");
+			if(!store.exists()) {
+				return;
+			}
+			ObjectInputStream ois = new ObjectInputStream(new FileInputStream(store));
+			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");
+			
+			logger.info("load from store: {}", map);
+			
+			socketid2user.putAll(s2u);
+			user2session.putAll(u2s);
+			
+		} catch (IOException e) {
+			logger.error("IOException during restoring UserService", e);
+		} catch (ClassNotFoundException e) {
+			logger.error("ClassNotFoundException during restoring UserService", e);
+		}
+	}
+	
+	@Override
+	public void destroy() {
+		Hashtable<String, Map<?, ?>> map = new Hashtable<String, Map<?, ?>>();
+		map.put("socketid2user", socketid2user);
+		map.put("user2session", user2session);
+		
+		try {
+			File tmpDir = new File(System.getProperty("java.io.tmpdir"));
+			File store = new File(tmpDir, "arsnova.bin");
+			if(!store.exists()) {
+				store.createNewFile();
+			}
+			OutputStream file = new FileOutputStream (store); 
+			ObjectOutputStream objOut = new ObjectOutputStream(file);
+			objOut.writeObject(map);
+			objOut.close();
+			file.close();
+			logger.info("saved to store: {}", map);
+		} catch (IOException e) {
+			logger.error("IOException while saving UserService", e);
+		}
+	}
 }
diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
index 13fd216408fdf2dde05295ac414498bdde5ca485..6f653b587ee5e875d86392bf70959461d3c92212 100644
--- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
+++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
@@ -134,7 +134,7 @@ public class StubDatabaseDao implements IDatabaseDao {
 	}
 
 	@Override
-	public List<Question> getSkillQuestions(String session, String sort) {
+	public List<Question> getSkillQuestions(String session) {
 		// TODO Auto-generated method stub
 		return null;
 	}
diff --git a/src/test/java/de/thm/arsnova/services/StubUserService.java b/src/test/java/de/thm/arsnova/services/StubUserService.java
index 53bbd15700fbcce37c5a0ba2100bf38f94fc81ef..52e2fd8cfcb61def3135f27595f332671bd9b3ea 100644
--- a/src/test/java/de/thm/arsnova/services/StubUserService.java
+++ b/src/test/java/de/thm/arsnova/services/StubUserService.java
@@ -1,15 +1,10 @@
 package de.thm.arsnova.services;
 
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.UUID;
-
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 
 import de.thm.arsnova.entities.User;
 
-public class StubUserService implements IUserService {
+public class StubUserService extends UserService {
 
 	private User stubUser = null;
 	
@@ -29,52 +24,4 @@ public class StubUserService implements IUserService {
 	public User getCurrentUser() {
 		return stubUser;
 	}
-
-	@Override
-	public User getUser2SessionID(UUID sessionID) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public void putUser2SessionID(UUID sessionID, User user) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	@Override
-	public void removeUser2SessionID(UUID sessionID) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	@Override
-	public Set<Entry<UUID, User>> users2Session() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public boolean isUserInSession(User user, String keyword) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public List<String> getUsersInSession(String keyword) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public String getSessionForUser(String username) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public void addCurrentUserToSessionMap(String keyword) {
-		// TODO Auto-generated method stub
-		
-	}
 }