diff --git a/capsule-prototype/css/flatten_timeline.css b/capsule-prototype/css/flatten_timeline.css
index a9c8020c35072945901d2bfbc9531bf459b3d5dd..5a691c36fde1928353b6fcb62a4cfd76f52396c7 100644
--- a/capsule-prototype/css/flatten_timeline.css
+++ b/capsule-prototype/css/flatten_timeline.css
@@ -3,7 +3,7 @@
 	flex: 1;
 	color: white;
 	overflow-x: hidden;	
-	overflow-y: scroll;	
+	overflow-y: auto;	
 }
 
 #flattentimeline.drag  {
diff --git a/capsule-prototype/css/mosaic.css b/capsule-prototype/css/mosaic.css
index 65c47123c92b05a6ed211f5f7d144486378faa5d..328c226d501632e2ec761758a6d4994a4d3859bc 100644
--- a/capsule-prototype/css/mosaic.css
+++ b/capsule-prototype/css/mosaic.css
@@ -15,7 +15,7 @@
 
 #mosaic_tab {
 	display: flex;
-	overflow: scroll;
+	overflow: auto;
 	flex-direction: column;
 }
 
@@ -44,13 +44,12 @@
 	padding: var(--base-spacing);
 	margin: var(--base-spacing);
 	border-radius: var(--border-radius);
-	dispaly: flex;
+	display: flex;
 	flex-direction: column;
 }
 
 .mosaic_item {
 	width: var(--card-width);
-	height: var(--card-height);
 	display: flex;
 	flex-direction: column;
 	align-items: center;
diff --git a/capsule-prototype/css/old_mosaic.css b/capsule-prototype/css/old_mosaic.css
new file mode 100644
index 0000000000000000000000000000000000000000..5900022308f739c1c07792322b2e069ea9e9433f
--- /dev/null
+++ b/capsule-prototype/css/old_mosaic.css
@@ -0,0 +1,82 @@
+
+#mosaic_tab {
+	background: #243538;
+	overflow: scroll;
+	padding: 20px;
+	display: none;
+}
+
+.mosaic_category {
+	padding: 1.0em 1vw;
+	margin: 2vh 0 1.5vh 0;
+	border-radius: 3px;
+	background: rgba(0,0,0,.15);
+}
+
+.mosaic_category_grid {
+	display: grid;
+	grid-template-columns: repeat(auto-fit, minmax(125px, 1fr));
+	grid-auto-rows: 150px;
+}
+
+.mosaic_filter {
+	display: grid;
+	grid-template-columns: repeat(auto-fit, minmax(125px, 1fr));
+}
+
+.mosaic_filter_item {
+	padding: 1.0em 1vw;
+	margin: 2vh 0.5vw 1.5vh 0.5vw;
+	border-radius: 3px;
+	cursor:pointer;
+}
+
+.mosaic_filter_disabled {
+	opacity: 0.5;
+}
+
+.mosaic_filter_disabled>h2:after {
+	background-image: url('images/icn-menu-filter.png');
+}
+
+.mosaic_filter_item > h2, .mosaic_category h2 {
+	text-transform: capitalize;
+}
+
+.mosaic_filter_item:not(.mosaic_filter_disabled) > h2:after{
+	background-image: url('images/icn-menu-preview.png');
+}
+
+.mosaic_filter_item > h2:after{
+	display:inline-block;
+	height:20px;
+	width:20px;
+	content: " ";
+	background-size: 20px 20px;
+	margin-left: 5px;
+	padding-top: 3px;
+	background-repeat: no-repeat;
+}
+
+.mosaic_filter_item_all > h2:after {
+	background-image: url('images/icn-reload.png') !important;
+}
+
+.mosaic_item img {
+	/* To correctly align image, regardless of content height: */
+	vertical-align: top;
+	display: inline-block;
+	/* To horizontally center images and caption */
+	text-align: center;
+	/* The width of the container also implies margin around the images. */
+	width: 100px;
+	margin: 2vh 0 1.5vh 0;
+	cursor:pointer;
+}
+
+.mosaic_item .caption {
+	/*
+	display:block;
+	*/
+}
+
diff --git a/capsule-prototype/js/online-script.js b/capsule-prototype/js/online-script.js
index dab123f81fd337e5b156b0001a4bc90193ca9f86..710b59551216bcca234155e95fb234c5f7250318 100644
--- a/capsule-prototype/js/online-script.js
+++ b/capsule-prototype/js/online-script.js
@@ -1,5 +1,13 @@
 var rekall = new Rekall();
 var rekall_common = new Object();
+var pubSub = null;
+
+window.onload = function() {
+	pubSub = window.top.PubSub;
+	pubSub.subscribe('mosaic', openMosaic);
+	pubSub.subscribe('video', openVideo);
+};
+
 $(document).ready(function() {
 
 	rekall.allowProjectDeletion(window.app.Settings.Project.ProjectDeletionEnabled)
@@ -346,15 +354,7 @@ function setEditionControls() {
 		}
 	});
 
-	$('#tab_selector_form').change(function(event) {
-		$('#mosaic_tab').toggle();
-		$('#video_tab').toggle();
-
-		if (event.target.value == 'mosaic') {
-			rekall.timeline.pause();
-			openMosaic();
-		}
-	});
+	$('#tab_selector_form').change(function(event) { pubSub.publish(event.target.value) });
 
 	$("#popupEdit").click(function(event){
 		event.stopPropagation();
@@ -796,6 +796,12 @@ function closeEdit() {
 	$("#popupEdit").hide();
 }
 
+function openVideo() {
+		$('#mosaic_tab').hide();
+		$('#video_tab').show();
+		$('#left_menu .bottom').show();
+}
+
 function openMosaic() {
     function getMosaicItem(tagOrDoc) {
         let path = Utils.getPreviewPath(tagOrDoc);
@@ -824,6 +830,12 @@ function openMosaic() {
             .append($('<h2/>').text(text));
     }
 
+		
+		rekall.timeline.pause();
+		$('#mosaic_tab').show();
+		$('#video_tab').hide();
+		$('#left_menu .bottom').hide();
+
     let container = $('#mosaic_tab');
     container.html('');
     let filterdiv = $('<div/>').addClass('mosaic_filter');
diff --git a/capsule-prototype/js/rekall/Sorting.js b/capsule-prototype/js/rekall/Sorting.js
index 2e527cbd3c7d69d16763c5fcd1acbb6a9ef05394..799f5a9956d05c782ab21e250e181826c9f867f0 100644
--- a/capsule-prototype/js/rekall/Sorting.js
+++ b/capsule-prototype/js/rekall/Sorting.js
@@ -261,9 +261,9 @@ Sorting.prototype.analyseEnd = function(minTagCount) {
 	else {
 		this.categories = Utils.sortObj(this.categories, this.valAreFloats);
 		if(this.analyse) {
-			console.log("----------------------------------------------------------------");
+			console.debug("----------------------------------------------------------------");
 			for (var key in this.categories)
-				console.log(key);
+				console.debug(key);
 		}
 		
 		
diff --git a/templates/project/edit.html.twig b/templates/project/edit.html.twig
index 82a101839135fd026f977e33e49a9cae2d3ebad4..258695da5bea6714aac4860af2885645e53d7d1e 100644
--- a/templates/project/edit.html.twig
+++ b/templates/project/edit.html.twig
@@ -16,7 +16,7 @@
   <script>
       window.onload = function (){
           const iframe = document.getElementById('legacyContent').contentWindow;
-          iframe.init('init', PubSub);
+          iframe.rekall.Rekall('init', PubSub);
       }
   </script>
-{% endblock %}
\ No newline at end of file
+{% endblock %}