diff --git a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
index 4c5911ed0e3340e0a224e71f7f679d694159f9cb..aebe01ebcc10f43708b7df2fd100601b2d78b633 100644
--- a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
+++ b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
@@ -560,6 +560,16 @@ public class VelocityRenderDecorator {
 		Component source = renderer.findComponent(componentName);
 		return (source != null);
 	}
+	
+	/**
+	 * @param componentName
+	 * @return true if the component with name componentName is a child of the current container and if this
+	 * component is visible
+	 */
+	public boolean visible(String componentName) {
+		Component source = renderer.findComponent(componentName);
+		return (source != null && source.isVisible());
+	}
 
 	/**
 	 * returns an object from the context of velocity
diff --git a/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java b/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java
index 6abc7aaecd22064c7363f7566e95b22268402466..a8d1a842eec5e4e793278956f1cd68e69b6edd28 100644
--- a/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java
+++ b/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java
@@ -96,7 +96,9 @@ public	class OLATApiAdapter extends LogDelegator implements ch.ethz.pfplms.scorm
 	}
 	
 	public void addAPIListener(ScormAPICallback apiCallback) {
-		apiCallbacks.add(apiCallback);
+		if(apiCallback != null) {
+			apiCallbacks.add(apiCallback);
+		}
 	}
 
 	/**
diff --git a/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java b/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java
index 8e4d5063dd3debee3e058639bb438c464c55a83a..97c4fca5efb3d6b13ff2c7de730de0f8849cf0d0 100644
--- a/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java
+++ b/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java
@@ -319,6 +319,7 @@ public class ScormAPIandDisplayController extends MainLayoutBasicController {
 
 		if (te.getCommand().equals(MenuTree.COMMAND_TREENODE_EXPANDED)) {
 			iframectr.getInitialComponent().setVisible(false);
+			myContent.setDirty(true);//update the view
 		} else {
 			iframectr.getInitialComponent().setVisible(true);
 			String scormId = String.valueOf(treeModel.lookupScormNodeId(tn));
diff --git a/src/main/java/org/olat/modules/scorm/_content/display.html b/src/main/java/org/olat/modules/scorm/_content/display.html
index c1d0bd5aa0fb094790ea89bfa09dba2e532aee8c..71916eba0610f9bf93b0b80553ca5c2a9decf952 100644
--- a/src/main/java/org/olat/modules/scorm/_content/display.html
+++ b/src/main/java/org/olat/modules/scorm/_content/display.html
@@ -18,7 +18,7 @@
 		//todo:gs:c On some sco's the first attempt to call the RTE fails, sending a dummy call is a workaroud for this
 		passApiCall("initcall","empty","empty");
 	</script>
-	
+
 	#if($showNavButtons)
 	<div class="o_scorm_navigation" >
 		$r.render("previousScoTop")
@@ -28,7 +28,7 @@
 	<div class="o_scorm_content">
 		$r.render("contentpackage")
 	</div>
-	#if($showNavButtons)
+	#if($showNavButtons && $r.visible("contentpackage"))
 	<div class="o_scorm_navigation" >
 		$r.render("previousScoBottom")
 		$r.render("nextScoBottom")