diff --git a/apps/files/js/detailfileinfoview.js b/apps/files/js/detailfileinfoview.js
index 9585f57f1efbde3eb9e13f0fdae544da270cf199..9a88b5e2d8a034c6b0a88ae63134a9a302e621b1 100644
--- a/apps/files/js/detailfileinfoview.js
+++ b/apps/files/js/detailfileinfoview.js
@@ -44,6 +44,15 @@
 			this.$el = $('<div class="detailFileInfoView"></div>');
 		},
 
+		/**
+		 * returns the jQuery object for HTML output
+		 *
+		 * @returns {jQuery}
+		 */
+		get$: function() {
+			return this.$el;
+		},
+
 		/**
 		 * Destroy / uninitialize this instance.
 		 */
diff --git a/apps/files/js/detailsview.js b/apps/files/js/detailsview.js
index 18cefef45d9a53ca5ec98b3d1914183ae4df62fb..d4495cd8dabf6e5070540e8b79e78f9f9f3903a1 100644
--- a/apps/files/js/detailsview.js
+++ b/apps/files/js/detailsview.js
@@ -136,16 +136,14 @@
 
 			// render details
 			_.each(this._detailFileInfoViews, function(detailView) {
-				detailView.render();
-				$detailsContainer.append(detailView.$el);
+				$detailsContainer.append(detailView.get$());
 			});
 
 			if (this._tabViews.length > 0) {
 				// render tabs
 				_.each(this._tabViews, function(tabView) {
-					tabView.render();
 					// hidden by default
-					$tabsContainer.append(tabView.$el);
+					$tabsContainer.append(tabView.get$());
 
 					$tabHeadsContainer.append(self._templateTabHeader({
 						tabId: tabView.getId(),
@@ -171,7 +169,6 @@
 		setFileInfo: function(fileInfo) {
 			this._fileInfo = fileInfo;
 
-			// FIXME: this will render panels twice
 			this.render();
 
 			// notify all panels
diff --git a/apps/files/js/detailtabview.js b/apps/files/js/detailtabview.js
index 767ece2297c1944a968a399c4297af2d9266ca3f..7e0f9eff16f55a0d2a8725c93280c27493e7eadf 100644
--- a/apps/files/js/detailtabview.js
+++ b/apps/files/js/detailtabview.js
@@ -90,6 +90,15 @@
 			return 'Tab ' + this._id;
 		},
 
+		/**
+		 * returns the jQuery object for HTML output
+		 *
+		 * @returns {jQuery}
+		 */
+		get$: function() {
+			return this.$el;
+		},
+
 		/**
 		 * Renders this details view
 		 *