diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 0ec989191d2b4b7c018a29a69fee5b146e2cb698..df3e5e05d68abf0e41e6b1decc02e36c2da81f09 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -71,6 +71,7 @@ import de.thm.arsnova.entities.SessionInfo;
 import de.thm.arsnova.entities.Statistics;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.VisitedSession;
+import de.thm.arsnova.entities.SortOrder;
 import de.thm.arsnova.entities.transport.AnswerQueueElement;
 import de.thm.arsnova.entities.transport.ImportExportSession;
 import de.thm.arsnova.entities.transport.ImportExportSession.ImportExportQuestion;
@@ -1381,22 +1382,26 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
 	@Cacheable("lecturequestions")
 	@Override
 	public List<Question> getLectureQuestionsForUsers(final Session session) {
-		String viewName = "question_sort/lecture_question_by_session_sorted_for_all";
-		List<Question> result = getQuestions(new NovaView(viewName), session);
-        if(result == null) {
+        SortOrder sortOrder = getSortOrder(session, "lecture");
+        if (sordOrder != null) {
+            //get Questionds via sortOrder   List<Question> result =
+        }
+        else {
             String viewName = "skill_question/lecture_question_by_session_for_all";
-            result = getQuestions(new NovaView(viewName), session);
+            List<Question> result = getQuestions(new NovaView(viewName), session);
         }
         return result;
 	}
 
 	@Override
 	public List<Question> getLectureQuestionsForTeachers(final Session session) {
-		String viewName = "question_sort/lecture_question_by_session_sorted";
-		List<Question> result = getQuestions(new NovaView(viewName), session);
-        if (result == null) {
+        SortOrder sortOrder = getSortOrder(session, "lecture");
+        if (sordOrder != null) {
+            //get Questionds via sortOrder
+        }
+		else {
             String viewName = "skill_question/lecture_question_by_session";
-            result = getQuestions(new NovaView(viewName), session);
+            List<Question> result = getQuestions(new NovaView(viewName), session);
         }
         return result;
 	}
@@ -1417,22 +1422,25 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
 	@Cacheable("preparationquestions")
 	@Override
 	public List<Question> getPreparationQuestionsForUsers(final Session session) {
-		String viewName = "question_sort/preparation_question_by_session_sorted_for_all";
-		List<Question> result = getQuestions(new NovaView(viewName), session);
-        if (result == null) {
+        SortOrder sortOrder = getSortOrder(session, "preparation");
+        if (sordOrder != null) {
+            //get Questionds via sortOrder
+        }
+		else {
             String viewName = "skill_question/preparation_question_by_session_for_all";
-            result = getQuestions(new NovaView(viewName), session);
+            return getQuestions(new NovaView(viewName), session);
         }
-        return result;
 	}
 
 	@Override
 	public List<Question> getPreparationQuestionsForTeachers(final Session session) {
-        String viewName = "question_sort/preparation_question_by_session_sorted";
-		List<Question> result = getQuestions(new NovaView(viewName), session);
-        if (result == null) {
+        SortOrder sortOrder = getSortOrder(session, "preparation");
+        if (sordOrder != null) {
+            //get Questionds via sortOrder
+        }
+		else {
             String viewName = "skill_question/preparation_question_by_session";
-            result = getQuestions(new NovaView(viewName), session);
+            return getQuestions(new NovaView(viewName), session);
         }
         return result;
 	}
@@ -1930,22 +1938,52 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
 		return info;
 	}
     
-    @OVerride
-    String getSaveOrderId(Session session) {
-        String view = "question_sort/get_id";    
+    @Override
+    SortOrder getSortOrder(Session session, String questionVariant) {
+        if ("preparation".equals(questionVariant)) {
+            String viewString = "sort_order/preparation_question_sort_order_by_session";    
+        }
+        else if ("lecture".euals(questionVariant)) {
+            String viewString = "sort_order/lecture_question_sort_order_by_session";
+        }
+		NovaView view = new NovaView(viewString);
+		view.setKey(session.get_id());
+		ViewResults results = this.getDatabase().view(view);
+
+		if (results.getJSONArray("rows").optJSONObject(0) == null) {
+			return null;
+		}
+
+		return (SortOrder) JSONObject.toBean(
+			results.getJSONArray("rows").optJSONObject(0).optJSONObject("value"),
+			SortOrder.class
+		);
     }
     
     @Override
-    String saveQuestionSort(Session session, final String[] sortOrder) {
-		final Document a = new Document();
-		a.put("type", "question_sort");
-		a.put("sessionId", session.getSessionId());
-        a.put("sortOrder", sortOrder);
+    SortOrder createOrUpdateQuestionSortOrder(Session session, SortOrder sortOrder) {
 		try {
-			database.saveDocument(a);
-		} catch (final IOException e) {
-			return null;
+			String id = sortOrder.get_id();
+			String rev = sortOrder.get_rev();
+			Document d = new Document();
+
+			if (null != id) {
+				d = database.getDocument(id, rev);
+			}
+
+			d.put("type", "sort_order");
+            d.put("sessionId", session.get_id());
+            d.put("questionVariant", sortOrder.getQuestionVariant());
+            d.put("sortOrder", sortOrder.getSortOrder());
+
+			database.saveDocument(d, id);
+			sortOrder.setId(d.getId());
+			sortOrder.setRev(d.getRev());
+
+			return sotOrder;
+		} catch (IOException e) {
+			LOGGER.error("Could not save user {}", user);
 		}
-        return sortOrder;
+        return null;
     }
 }
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index eb38f6fab366af5f425c67d482ef0423e56d9b22..5ae19e9213d8c2d06819c0425b63437a00571fc3 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -31,6 +31,7 @@ import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.SessionInfo;
 import de.thm.arsnova.entities.Statistics;
 import de.thm.arsnova.entities.User;
+import de.thm.arsnova.entities.SortOrder;
 import de.thm.arsnova.entities.transport.ImportExportSession;
 
 public interface IDatabaseDao {
@@ -197,7 +198,7 @@ public interface IDatabaseDao {
 
 	Statistics getStatistics();
     
-    String getSaveOrderId(Session session);
+    String getSortOrder(Session session, String questionVariant);
     
-    String saveQuestionSort(Session session, final String[] sortOrder);
+    String createOrUpdateQuestionSortOrder(Session session, SortOrder sortOrder);
 }
diff --git a/src/main/java/de/thm/arsnova/entities/Session.java b/src/main/java/de/thm/arsnova/entities/Session.java
index a5df967d538ae09f94848b2ec42ac740cfd16eab..2c801d69720decd34d373e7982b2154d403ea0dd 100644
--- a/src/main/java/de/thm/arsnova/entities/Session.java
+++ b/src/main/java/de/thm/arsnova/entities/Session.java
@@ -311,13 +311,5 @@ public class Session implements Serializable {
 		Session other = (Session) obj;
 		return this.keyword.equals(other.keyword);
 	}
-	// Sorting
-	public boolean getSortLectureQuestions(){
-		return false;
-	}
-	// Sorting
-	public boolean getSortPreparationQuestions(){
-		return false;
-	}
 
 }
diff --git a/src/main/java/de/thm/arsnova/entities/SortOrder.java b/src/main/java/de/thm/arsnova/entities/SortOrder.java
index eff50018d9573d304d531f37dbb9ff2a86eb4f3c..b3aba0cd4bc1e2a5e2a406eade541126b8f5bf41 100644
--- a/src/main/java/de/thm/arsnova/entities/SortOrder.java
+++ b/src/main/java/de/thm/arsnova/entities/SortOrder.java
@@ -17,115 +17,43 @@
  */
 package de.thm.arsnova.entities;
 
-public class Statistics {
+public class SortOrder {
 
-	private int answers;
-	private int lectureQuestions;
-	private int preparationQuestions;
-	private int openSessions;
-	private int closedSessions;
-	private int activeUsers;
-	private int loggedinUsers;
-	private int interposedQuestions;
+	private String sortVariant;
+    private String[] sortOrder;
 
-	public int getAnswers() {
-		return answers;
-	}
-
-	public void setAnswers(final int answers) {
-		this.answers = answers;
-	}
-
-	public int getLectureQuestions() {
-		return lectureQuestions;
-	}
-
-	public void setLectureQuestions(final int questions) {
-		this.lectureQuestions = questions;
-	}
-
-	public int getPreparationQuestions() {
-		return preparationQuestions;
-	}
-
-	public void setPreparationQuestions(final int questions) {
-		this.preparationQuestions = questions;
-	}
-
-	public int getQuestions() {
-		return getLectureQuestions() + getPreparationQuestions();
-	}
-
-	public int getOpenSessions() {
-		return openSessions;
-	}
-
-	public void setOpenSessions(final int openSessions) {
-		this.openSessions = openSessions;
-	}
-
-	public int getClosedSessions() {
-		return closedSessions;
-	}
-
-	public void setClosedSessions(final int closedSessions) {
-		this.closedSessions = closedSessions;
-	}
-
-	public int getSessions() {
-		return getOpenSessions() + getClosedSessions();
-	}
-
-	public int getActiveUsers() {
-		return activeUsers;
-	}
-
-	public void setActiveUsers(final int activeUsers) {
-		this.activeUsers = activeUsers;
-	}
-
-	public int getLoggedinUsers() {
-		return loggedinUsers;
-	}
-
-	public void setLoggedinUsers(final int loggedinUsers) {
-		this.loggedinUsers = loggedinUsers;
-	}
+	private String _id;
+	private String _rev;
+    
+    public void setSortVariant(final String sortVariant) {
+        this.sortVariant = sortVariant;
+    }
+    
+    public String getSortVariant() {
+        return this.sortVariant;
+    }
+    
+    public void setSortOrder(final String[] sortOrder) {
+        this.sortOrder = sortOrder;
+    }
+    
+    public String[] getSortOrder() {
+        return this.sortOrder;
+    }
 
-	public int getInterposedQuestions() {
-		return interposedQuestions;
+	public void set_id(final String id) {
+		_id = id;
 	}
 
-	public void setInterposedQuestions(int interposedQuestions) {
-		this.interposedQuestions = interposedQuestions;
+	public String get_id() {
+		return _id;
 	}
 
-	@Override
-	public int hashCode() {
-		return (this.getClass().getName()
-				+ activeUsers
-				+ answers
-				+ closedSessions
-				+ openSessions
-				+ lectureQuestions
-				+ preparationQuestions
-				+ interposedQuestions
-				+ loggedinUsers
-				).hashCode();
+	public void set_rev(final String rev) {
+		_rev = rev;
 	}
 
-	@Override
-	public boolean equals(final Object obj) {
-		if (obj == null) {
-			return false;
-		}
-		if (obj == this) {
-			return true;
-		}
-		if (obj instanceof Statistics) {
-			final Statistics other = (Statistics) obj;
-			return hashCode() == other.hashCode();
-		}
-		return false;
-	}
+	public String get_rev() {
+		return _rev;
+	} 
 }
diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java
index 532e2d9c9fcca733c00d52169b27ec87e509fc1d..dae73c9224e4256cb6404af3654815d86cc7e9b1 100644
--- a/src/main/java/de/thm/arsnova/services/QuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/QuestionService.java
@@ -44,6 +44,7 @@ import de.thm.arsnova.entities.InterposedReadingCount;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
+import de.thm.arsnova.entities.SortOrder;
 import de.thm.arsnova.events.DeleteAllLectureAnswersEvent;
 import de.thm.arsnova.events.DeleteAllPreparationAnswersEvent;
 import de.thm.arsnova.events.DeleteAllQuestionsAnswersEvent;
@@ -107,19 +108,6 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
 		} else if (question.getPiRound() < 1 || question.getPiRound() > 2) {
 			question.setPiRound(1);
 		}
-        
-        // if SortIndex false, list is sorted so new question is appended to sorted list with (highest sequenceNr)++
-        if ("lecture".equals(question.getQuestionVariant())) {
-            if(session.getSortLectureQuestions()) {
-            	//Take a look at entities/Session.java
-                //question.setSequenceNo();
-            }
-        } else if ("preparation".equals(question.getQuestionVariant())) {
-            if(session.getSortPreparationQuestions()) {
-            	//Take a look at entities/Session.java
-                //question.setSequenceNo();
-            }
-        }
 
 		// convert imageurl to base64 if neccessary
 		if ("grid".equals(question.getQuestionType())) {
@@ -138,6 +126,12 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
 				throw new BadRequestException();
 			}
 		}
+        
+        SortOrder sortOrder = databaseDao.getSortOrder(session, question.getQuestionVariant);
+        if (sortOrder != null) {
+            
+        }
+        
 
 		final Question result = databaseDao.saveQuestion(session, question);
 		final NewQuestionEvent event = new NewQuestionEvent(this, session, result);