diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/AllQuestionsTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/AllQuestionsTreeNode.java
index 8f0fd3d17b57de2058b66181f2bb47c660921e5c..6b29d44b3aad98268df6b9f8a7b632c1bdb3ce6c 100644
--- a/src/main/java/org/olat/modules/qpool/ui/tree/AllQuestionsTreeNode.java
+++ b/src/main/java/org/olat/modules/qpool/ui/tree/AllQuestionsTreeNode.java
@@ -62,17 +62,17 @@ public class AllQuestionsTreeNode extends GenericTreeNode implements ControllerT
 	
 	@Override
 	public Controller getController(UserRequest ureq, WindowControl wControl) {
-		QuestionItemsSource source = new AllItemsSource(
-				ureq.getIdentity(),
-				ureq.getUserSession().getRoles(),
-				ALL); 
 		if(questionsCtrl == null) {
+			QuestionItemsSource source = new AllItemsSource(
+					ureq.getIdentity(),
+					ureq.getUserSession().getRoles(),
+					ALL); 
 			WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ORES, null,
 					wControl, true);
 			questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback,
 					ALL);
 		} else {
-			questionsCtrl.updateSource(source);
+			questionsCtrl.updateSource();
 		}
 		return questionsCtrl;
 	}
diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/BusinessGroupTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/BusinessGroupTreeNode.java
index 6f1d0d08e43b8cc880aea2c8f4c872bb268beffa..3f76e5d6ae232a691ec1f1ba4fb8b377ed747d43 100644
--- a/src/main/java/org/olat/modules/qpool/ui/tree/BusinessGroupTreeNode.java
+++ b/src/main/java/org/olat/modules/qpool/ui/tree/BusinessGroupTreeNode.java
@@ -70,19 +70,19 @@ public class BusinessGroupTreeNode extends GenericTreeNode implements Controller
 	
 	@Override
 	public Controller getController(UserRequest ureq, WindowControl wControl) {
-		boolean shareAdmin = isShareAdmin(ureq, group);
-		QuestionItemsSource source = new SharedItemsSource(
-				group,
-				ureq.getIdentity(),
-				ureq.getUserSession().getRoles(),
-				shareAdmin);
 		if(questionsCtrl == null) {
+			boolean shareAdmin = isShareAdmin(ureq, group);
+			QuestionItemsSource source = new SharedItemsSource(
+					group,
+					ureq.getIdentity(),
+					ureq.getUserSession().getRoles(),
+					shareAdmin);
 			WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, group, null,
 					wControl, true);
 			questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback,
 					TABLE_PREFERENCE_PREFIX + group.getKey());
 		} else {
-			questionsCtrl.updateSource(source);
+			questionsCtrl.updateSource();
 		}
 		return questionsCtrl;
 	}
diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java
index 1de76930f82dfcf966e349c45c45191a9a26b4c1..39bff669ff8e575ffe82a78761a13843686e14ea 100644
--- a/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java
+++ b/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java
@@ -71,17 +71,17 @@ public class FinalTreeNode extends GenericTreeNode implements ControllerTreeNode
 
 	@Override
 	public Controller getController(UserRequest ureq, WindowControl wControl) {
-		QuestionItemsSource source = new FinalItemsSource(
-				ureq.getIdentity(),
-				ureq.getUserSession().getRoles(),
-				taxonomyLevel);
 		if (questionsCtrl == null) {
+			QuestionItemsSource source = new FinalItemsSource(
+					ureq.getIdentity(),
+					ureq.getUserSession().getRoles(),
+					taxonomyLevel);
 			OLATResourceable ores = OresHelper.createOLATResourceableInstance(FINAL + "_" + taxonomyLevel.getIdentifier(), taxonomyLevel.getKey());
 			WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ores, null, wControl, true);
 			questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback,
 					FINAL + taxonomyLevel.getKey());
 		} else {
-			questionsCtrl.updateSource(source);
+			questionsCtrl.updateSource();
 		}
 		return questionsCtrl;
 	}
diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/MarkedQuestionsTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/MarkedQuestionsTreeNode.java
index 72ece8579f0fcd25daa87ef380f2b09fb0063bd2..671712e0793cd6a8eee895a4de3f5747be65003b 100644
--- a/src/main/java/org/olat/modules/qpool/ui/tree/MarkedQuestionsTreeNode.java
+++ b/src/main/java/org/olat/modules/qpool/ui/tree/MarkedQuestionsTreeNode.java
@@ -67,17 +67,17 @@ public class MarkedQuestionsTreeNode extends GenericTreeNode implements Controll
 	
 	@Override
 	public Controller getController(UserRequest ureq, WindowControl wControl) {
-		QuestionItemsSource source = new MarkedItemsSource(
-				ureq.getIdentity(),
-				ureq.getUserSession().getRoles(),
-				ITEM_SOURCE_NAME); 
 		if(questionsCtrl == null) {
+			QuestionItemsSource source = new MarkedItemsSource(
+					ureq.getIdentity(),
+					ureq.getUserSession().getRoles(),
+					ITEM_SOURCE_NAME); 
 			WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ORES, null,
 					wControl, true);
 			questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback,
 					TABLE_PREFERENCE_PREFIX);
 		} else {
-			questionsCtrl.updateSource(source);
+			questionsCtrl.updateSource();
 		}
 		return questionsCtrl;
 	}
diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/MyQuestionsTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/MyQuestionsTreeNode.java
index 397b178d24b3aaca2c70d9f0961a9b90d0680ec7..2a9eb67fc5762ab118e36c0e1d475e6c6859bafe 100644
--- a/src/main/java/org/olat/modules/qpool/ui/tree/MyQuestionsTreeNode.java
+++ b/src/main/java/org/olat/modules/qpool/ui/tree/MyQuestionsTreeNode.java
@@ -67,17 +67,17 @@ public class MyQuestionsTreeNode extends GenericTreeNode implements ControllerTr
 
 	@Override
 	public Controller getController(UserRequest ureq, WindowControl wControl) {
-		QuestionItemsSource source = new MyItemsSource(
-				ureq.getIdentity(),
-				ureq.getUserSession().getRoles(),
-				ITEM_SOURCE_NAME);
 		if(questionsCtrl == null) {
+			QuestionItemsSource source = new MyItemsSource(
+					ureq.getIdentity(),
+					ureq.getUserSession().getRoles(),
+					ITEM_SOURCE_NAME);
 			WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ORES, null,
 					wControl, true);
 			questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback,
 					TABLE_PREFERENCE_PREFIX);
 		} else {
-			questionsCtrl.updateSource(source);
+			questionsCtrl.updateSource();
 		}
 		return questionsCtrl;
 	}
diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/MyTaxonomyLevelTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/MyTaxonomyLevelTreeNode.java
index 669f530475f53935bc42fe65bad017dbde77fb9f..b69fd90ef5b5fd463eef58ee3b84053ae701ab94 100644
--- a/src/main/java/org/olat/modules/qpool/ui/tree/MyTaxonomyLevelTreeNode.java
+++ b/src/main/java/org/olat/modules/qpool/ui/tree/MyTaxonomyLevelTreeNode.java
@@ -71,17 +71,17 @@ public class MyTaxonomyLevelTreeNode extends GenericTreeNode implements Controll
 
 	@Override
 	public Controller getController(UserRequest ureq, WindowControl wControl) {
-		QuestionItemsSource source = new MyTaxonomyLevelItemsSource(
-				ureq.getIdentity(),
-				ureq.getUserSession().getRoles(),
-				taxonomyLevel);
 		if (questionsCtrl == null) {
+			QuestionItemsSource source = new MyTaxonomyLevelItemsSource(
+					ureq.getIdentity(),
+					ureq.getUserSession().getRoles(),
+					taxonomyLevel);
 			OLATResourceable ores = OresHelper.createOLATResourceableInstance(MY_TAX_LEVEL + "_" + taxonomyLevel.getIdentifier(), taxonomyLevel.getKey());
 			WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ores, null, wControl, true);
 			questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback,
 					MY_TAX_LEVEL + taxonomyLevel.getKey());
 		} else {
-			questionsCtrl.updateSource(source);
+			questionsCtrl.updateSource();
 		}
 		return questionsCtrl;
 	}
diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/PoolTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/PoolTreeNode.java
index 9c04dcf08fdf32894f403cad24779d3859c4fb38..191316bcb80a2cc01cfc8c417c69bb21d41e1c81 100644
--- a/src/main/java/org/olat/modules/qpool/ui/tree/PoolTreeNode.java
+++ b/src/main/java/org/olat/modules/qpool/ui/tree/PoolTreeNode.java
@@ -70,18 +70,18 @@ public class PoolTreeNode extends GenericTreeNode implements ControllerTreeNode
 
 	@Override
 	public Controller getController(UserRequest ureq, WindowControl wControl) {
-		PoolItemsSource source = new PoolItemsSource(
-				ureq.getIdentity(),
-				ureq.getUserSession().getRoles(),
-				pool);
-		source.setRemoveEnabled(isPoolAdmin(ureq, pool));
 		if(questionsCtrl == null) {
+			PoolItemsSource source = new PoolItemsSource(
+					ureq.getIdentity(),
+					ureq.getUserSession().getRoles(),
+					pool);
+			source.setRemoveEnabled(isPoolAdmin(ureq, pool));
 			WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, pool, null,
 					wControl, true);
 			questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback,
 					TABLE_PREFERENCE_PREFIX + pool.getKey());
 		} else {
-			questionsCtrl.updateSource(source);
+			questionsCtrl.updateSource();
 		}
 		return questionsCtrl;
 	}
diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java
index ec4afa2fa4569186a4542ae0eb92a4d20d7978c7..5e01c0247da2546970725b2545f15a96d127bfab 100644
--- a/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java
+++ b/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java
@@ -83,8 +83,9 @@ public class ReviewTreeNode extends GenericTreeNode implements ControllerTreeNod
 			questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback,
 					REVIEW + taxonomyLevel.getKey());
 		} else {
-			questionsCtrl.updateSource(source);
+			questionsCtrl.updateSource();
 		}
+		reloadCount();
 		return questionsCtrl;
 	}