diff --git a/src/main/java/de/thm/arsnova/controller/QuestionController.java b/src/main/java/de/thm/arsnova/controller/QuestionController.java
index e96e332c3f324e158d7db3c86f03b392b225f748..f34b9b771b3fa9ef8fad5a60a377510893805e8a 100644
--- a/src/main/java/de/thm/arsnova/controller/QuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/QuestionController.java
@@ -268,8 +268,17 @@ public class QuestionController extends AbstractController {
 	) {
 		return questionService.getInterposedQuestions(sessionKey);
 	}
-	
-	
+
+	@RequestMapping(value = "/session/{sessionKey}/interposed/{questionId}", method = RequestMethod.GET)
+	@ResponseBody
+	public final InterposedQuestion getInterposedQuestions(
+			@PathVariable final String sessionKey,
+			@PathVariable final String questionId,
+			final HttpServletResponse response
+	) {
+		return questionService.readInterposedQuestion(sessionKey, questionId);
+	}
+
 	@RequestMapping(value = "/session/{sessionkey}/interposed", method = RequestMethod.POST)
 	@ResponseBody
 	public final void postInterposedQuestion(
@@ -277,7 +286,7 @@ public class QuestionController extends AbstractController {
 			@RequestBody final InterposedQuestion question,
 			final HttpServletResponse response
 	) {
-		if (!sessionkey.equals(question.getSession())) {
+		if (!sessionkey.equals(question.getSessionId())) {
 			response.setStatus(HttpStatus.PRECONDITION_FAILED.value());
 			return;
 		}
@@ -290,5 +299,15 @@ public class QuestionController extends AbstractController {
 		response.setStatus(HttpStatus.BAD_REQUEST.value());
 		return;
 	}
+	
+	@RequestMapping(value = "/session/{sessionkey}/interposed/{questionId}", method = RequestMethod.DELETE)
+	@ResponseBody
+	public final void deleteInterposedQuestion(
+			@PathVariable final String sessionkey,
+			@PathVariable final String questionId,
+			final HttpServletResponse response
+	) {
+		questionService.deleteQuestion(sessionkey, questionId);
+	}
 
 }
diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index d73b11bbc71bc2a16aef14cf47cfec42f54b1367..5efcbde1502a955106433060e3381c7eacae8f34 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -481,20 +481,12 @@ public class CouchDBDao implements IDatabaseDao {
 		return results.getJSONArray("rows").optJSONObject(0).optJSONObject("value").getString("_id");
 	}
 
-	private String getSessionKeyword(final String internalSessionId) {
-		try {
-			View view = new View("session/by_id");
-			view.setKey(URLEncoder.encode("\"" + internalSessionId + "\"", "UTF-8"));
-			ViewResults results = this.getDatabase().view(view);
-			for (Document d : results.getResults()) {
-				Document arsSession = this.getDatabase().getDocument(d.getId());
-				return arsSession.get("keyword").toString();
-			}
-		} catch (UnsupportedEncodingException e) {
-			return null;
-		} catch (IOException e) {
-			return null;
+	private String getSessionKeyword(final String internalSessionId) throws IOException {
+		Document document = this.getDatabase().getDocument(internalSessionId);
+		if (document.has("keyword")) {
+			return (String) document.get("keyword");
 		}
+		LOGGER.error("No session found for internal id: {}", internalSessionId);
 		return null;
 	}
 
@@ -1066,7 +1058,7 @@ public class CouchDBDao implements IDatabaseDao {
 						document.getJSONObject().getJSONObject("value"),
 						InterposedQuestion.class
 				);
-				question.setSession(sessionKey);
+				question.setSessionId(sessionKey);
 				question.set_id(document.getId());
 				result.add(question);
 			}
@@ -1206,4 +1198,23 @@ public class CouchDBDao implements IDatabaseDao {
 		}
 		return 0;
 	}
+
+	@Override
+	public InterposedQuestion getInterposedQuestion(String questionId) throws IOException {
+		Document document = this.getDatabase().getDocument(questionId);
+		InterposedQuestion question = (InterposedQuestion) JSONObject.toBean(
+				document.getJSONObject(),
+				InterposedQuestion.class
+		);
+		question.setSessionId(getSessionKeyword(question.getSessionId()));
+		return question;
+	}
+
+	@Override
+	public void markInterposedQuestionAsRead(InterposedQuestion question) throws IOException {
+		question.setRead(true);
+		Document document = this.getDatabase().getDocument(question.get_id());
+		document.put("read", question.isRead());
+		this.getDatabase().saveDocument(document);
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index 374fe7170b7034e009bbd951713740a7936725e8..a3592cfc0864210cc72fcb5e1ec06ce874318e7d 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -19,6 +19,7 @@
 
 package de.thm.arsnova.dao;
 
+import java.io.IOException;
 import java.util.List;
 
 import de.thm.arsnova.entities.Answer;
@@ -105,4 +106,8 @@ public interface IDatabaseDao {
 
 	int countQuestions();
 
+	InterposedQuestion getInterposedQuestion(String questionId) throws IOException;
+
+	void markInterposedQuestionAsRead(InterposedQuestion question) throws IOException;
+
 }
diff --git a/src/main/java/de/thm/arsnova/entities/InterposedQuestion.java b/src/main/java/de/thm/arsnova/entities/InterposedQuestion.java
index 477cf799b2216dd5b222b105525fa417722923bd..ca004b761299c13ec73335ae02094543027d95d8 100644
--- a/src/main/java/de/thm/arsnova/entities/InterposedQuestion.java
+++ b/src/main/java/de/thm/arsnova/entities/InterposedQuestion.java
@@ -27,7 +27,7 @@ public class InterposedQuestion {
 	private String type;
 	private String subject;
 	private String text;
-	private String session;
+	private String sessionId;
 	private long timestamp;
 	private boolean read;
 
@@ -67,11 +67,11 @@ public class InterposedQuestion {
 	public void setText(String text) {
 		this.text = text;
 	}
-	public String getSession() {
-		return session;
+	public String getSessionId() {
+		return sessionId;
 	}
-	public void setSession(String session) {
-		this.session = session;
+	public void setSessionId(String sessionId) {
+		this.sessionId = sessionId;
 	}
 	public long getTimestamp() {
 		return timestamp;
diff --git a/src/main/java/de/thm/arsnova/entities/Session.java b/src/main/java/de/thm/arsnova/entities/Session.java
index a9a508a3abeb1af335a8feab3ba39ab3702df1fb..2e24fc60b45d42ebef1c9638f5ceb806c9e6c2a5 100644
--- a/src/main/java/de/thm/arsnova/entities/Session.java
+++ b/src/main/java/de/thm/arsnova/entities/Session.java
@@ -101,4 +101,8 @@ public class Session {
 	public String get_rev() {
 		return _rev;
 	}
+	
+	public boolean isCreator(User user) {
+		return user.getUsername().equals(this.creator);
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java
index 7b9ce1fb3e844b06dc64be70a9062b08eb6a6925..6962b1cd13db69530a53813d20a479e20117c8fa 100644
--- a/src/main/java/de/thm/arsnova/services/IQuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java
@@ -19,6 +19,8 @@
 
 package de.thm.arsnova.services;
 
+import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.util.List;
 
 import de.thm.arsnova.entities.Answer;
@@ -27,7 +29,7 @@ import de.thm.arsnova.entities.Question;
 
 public interface IQuestionService {
 	boolean saveQuestion(Question question);
-	
+
 	boolean saveQuestion(InterposedQuestion question);
 
 	Question getQuestion(String id, String sessionkey);
@@ -58,4 +60,6 @@ public interface IQuestionService {
 
 	List<InterposedQuestion> getInterposedQuestions(String sessionKey);
 
+	InterposedQuestion readInterposedQuestion(String sessionKey, String questionId);
+
 }
diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java
index 879180c7893edbe3e1776d62ab5e9511da5e739d..0fa208dfa0aed89ec6902bd0c8bcd0adc6ef8d02 100644
--- a/src/main/java/de/thm/arsnova/services/QuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/QuestionService.java
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2012 THM webMedia
- * 
+ *
  * This file is part of ARSnova.
  *
  * ARSnova is free software: you can redistribute it and/or modify
@@ -19,6 +19,7 @@
 
 package de.thm.arsnova.services;
 
+import java.io.IOException;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,7 +31,9 @@ import de.thm.arsnova.entities.Answer;
 import de.thm.arsnova.entities.InterposedQuestion;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.User;
 import de.thm.arsnova.exceptions.NoContentException;
+import de.thm.arsnova.exceptions.NotFoundException;
 
 @Service
 public class QuestionService implements IQuestionService {
@@ -38,6 +41,9 @@ public class QuestionService implements IQuestionService {
 	@Autowired
 	private IDatabaseDao databaseDao;
 
+	@Autowired
+	private IUserService userService;
+
 	public void setDatabaseDao(IDatabaseDao databaseDao) {
 		this.databaseDao = databaseDao;
 	}
@@ -68,17 +74,16 @@ public class QuestionService implements IQuestionService {
 	@Override
 	@Authenticated
 	public boolean saveQuestion(InterposedQuestion question) {
-		Session session = this.databaseDao.getSessionFromKeyword(question.getSession());
+		Session session = this.databaseDao.getSessionFromKeyword(question.getSessionId());
 		return this.databaseDao.saveQuestion(session, question);
 	}
 
-	
 	@Override
 	@Authenticated
 	public Question getQuestion(String id, String sessionKey) {
 		return databaseDao.getQuestion(id, sessionKey);
 	}
-	
+
 	@Override
 	@Authenticated
 	public List<String> getQuestionIds(String sessionKey) {
@@ -89,7 +94,6 @@ public class QuestionService implements IQuestionService {
 	@Authenticated
 	public void deleteQuestion(String sessionKey, String questionId) {
 		databaseDao.deleteQuestion(sessionKey, questionId);
-		
 	}
 
 	@Override
@@ -109,40 +113,59 @@ public class QuestionService implements IQuestionService {
 	public List<Answer> getAnswers(String sessionKey, String questionId) {
 		return databaseDao.getAnswers(sessionKey, questionId);
 	}
-	
+
 	@Override
 	@Authenticated
 	public int getAnswerCount(String sessionKey, String questionId) {
 		return databaseDao.getAnswerCount(sessionKey, questionId);
 	}
-	
+
 	@Override
 	@Authenticated
 	public List<Answer> getFreetextAnswers(String sessionKey, String questionId) {
 		return databaseDao.getFreetextAnswers(sessionKey, questionId);
 	}
-	
+
 	@Override
 	@Authenticated
 	public List<Answer> getMytAnswers(String sessionKey) {
 		return databaseDao.getMyAnswers(sessionKey);
 	}
-	
+
 	@Override
 	@Authenticated
 	public int getTotalAnswerCount(String sessionKey) {
 		return databaseDao.getTotalAnswerCount(sessionKey);
 	}
-	
+
 	@Override
 	@Authenticated
 	public int getInterposedCount(String sessionKey) {
 		return databaseDao.getInterposedCount(sessionKey);
 	}
-	
+
 	@Override
 	@Authenticated
 	public List<InterposedQuestion> getInterposedQuestions(String sessionKey) {
 		return databaseDao.getInterposedQuestions(sessionKey);
 	}
+
+	@Override
+	public InterposedQuestion readInterposedQuestion(String sessionKey, String questionId) {
+		try {
+			InterposedQuestion question = databaseDao.getInterposedQuestion(questionId);
+			Session session = this.databaseDao.getSessionFromKeyword(sessionKey);
+			if (session == null || !session.getKeyword().equals(question.getSessionId())) {
+				throw new NotFoundException();
+			}
+
+			User user = this.userService.getCurrentUser();
+			if (session.isCreator(user)) {
+				this.databaseDao.markInterposedQuestionAsRead(question);
+			}
+			return question;
+		} catch (IOException e) {
+			throw new NotFoundException();
+		}
+	}
 }
diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
index 1446cc8a814621ff793ac9a1b87c41c519aa5b0c..256a271d1170aa521719931dace4555d2d70994a 100644
--- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
+++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
@@ -1,5 +1,6 @@
 package de.thm.arsnova.dao;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -330,4 +331,16 @@ public class StubDatabaseDao implements IDatabaseDao {
 		// TODO Auto-generated method stub
 		return false;
 	}
+
+	@Override
+	public InterposedQuestion getInterposedQuestion(String questionId) throws IOException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public void markInterposedQuestionAsRead(InterposedQuestion question) throws IOException {
+		// TODO Auto-generated method stub
+		
+	}
 }