diff --git a/css/js/utility-e565527090.js b/css/js/utility-e565527090.js
new file mode 100644
index 0000000000000000000000000000000000000000..2029fcd5744b0530fa41c566cd541e4e3858d035
--- /dev/null
+++ b/css/js/utility-e565527090.js
@@ -0,0 +1,5 @@
+$(document).ready(function () {
+  $('.js-only').removeClass('js-only');
+});
+
+//# sourceMappingURL=utility.js.map
diff --git a/css/rev-manifest.json b/css/rev-manifest.json
new file mode 100644
index 0000000000000000000000000000000000000000..6ce4f4b37857fef5f901c60b47ba67437b493f3c
--- /dev/null
+++ b/css/rev-manifest.json
@@ -0,0 +1,3 @@
+{
+  "js/utility.js": "js/utility-e565527090.js"
+}
\ No newline at end of file
diff --git a/gulpfile.js b/gulpfile.js
index 4ac2ffad32531d57d7bad9705f7cc4ab6298467c..77fbbb46811228b8697c7dd117ecd9991d4e5d90 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -22,12 +22,23 @@ elixir(function (mix) {
    | scriptStartPage.js
    | settings.js
   */
-  mix.scripts(['lib/jquery.js', 'lib/jquery-ui.min.js', 'lib/bootstrap.js', 'lib/lightslider.js', 'lib/masonry.js', 'lib/imagesloaded.js', 'lib/openpgp.min.js', 'lib/iframeResizer.min.js', 'lib/md5.js'], 'public/js/lib.js')
-  mix.scripts(['lib/jquery.js', 'lib/iframeResizer.contentWindow.min.js'], 'public/js/quicktips.js')
+  // lib
+  mix.scripts(['lib/jquery.js', 'lib/jquery-ui.min.js', 'lib/bootstrap.js', 'lib/lightslider.js', 'lib/masonry.js', 'lib/imagesloaded.js', 'lib/openpgp.min.js', 'lib/iframeResizer.min.js', 'lib/md5.js'], 'public/js/lib.js');
+  // quicktips
+  mix.scripts(['lib/jquery.js', 'lib/iframeResizer.contentWindow.min.js'], 'public/js/quicktips.js');
+  // start page
   mix.scripts(['scriptStartPage.js', 'results.js'], 'public/js/scriptStartPage.js');
+  // result page
   mix.scripts(['scriptResultPage.js', 'results.js'], 'public/js/scriptResultPage.js');
+  // versioning
   mix.version(['css/themes/default.css', 'js/lib.js', 'js/quicktips.js']);
-  mix.less('metager/beitritt.less', 'public/css/beitritt.css')
-  mix.version(['css/beitritt.css'])
-  mix.version(['js/widgets.js', 'js/editLanguage.js', 'js/kontakt.js', 'js/scriptResultPage.js', 'js/scriptStartPage.js', 'js/settings.js'])
+  // utility
+  mix.scripts('utility.js', 'public/js/utility.js');
+  mix.less('utility.less', 'public/css/utility.css');
+  mix.version('js/utility.js', 'css/utility.css');
+  // beitritt
+  mix.less('metager/beitritt.less', 'public/css/beitritt.css');
+  mix.version(['css/beitritt.css']);
+  // general versioning
+  mix.version(['js/widgets.js', 'js/editLanguage.js', 'js/kontakt.js', 'js/scriptResultPage.js', 'js/scriptStartPage.js', 'js/settings.js']);
 })
diff --git a/public/css/utility.css b/public/css/utility.css
new file mode 100644
index 0000000000000000000000000000000000000000..4ee9598778c6c66ebcef0849bdfbc1cd5e5f2120
--- /dev/null
+++ b/public/css/utility.css
@@ -0,0 +1,5 @@
+.js-only {
+  display: none !important;
+}
+
+/*# sourceMappingURL=utility.css.map */
diff --git a/public/js/utility.js b/public/js/utility.js
new file mode 100644
index 0000000000000000000000000000000000000000..2029fcd5744b0530fa41c566cd541e4e3858d035
--- /dev/null
+++ b/public/js/utility.js
@@ -0,0 +1,5 @@
+$(document).ready(function () {
+  $('.js-only').removeClass('js-only');
+});
+
+//# sourceMappingURL=utility.js.map
diff --git a/resources/assets/js/scriptResultPage.js b/resources/assets/js/scriptResultPage.js
index 203f5ec4e3ec5010387720eaf60731324c430034..838c4b820f95a4454003de9d94dce891999391b3 100644
--- a/resources/assets/js/scriptResultPage.js
+++ b/resources/assets/js/scriptResultPage.js
@@ -1,5 +1,4 @@
 $(document).ready(function () {
-  activateJSOnlyContent();
   createCustomFocuses();
   var focus = $('#foki > li.active > a').attr('aria-controls');
   var custom = $('#foki > li.active').hasClass('custom-focus-tab-selector');
@@ -11,11 +10,6 @@ $(document).ready(function () {
   }
 });
 
-function activateJSOnlyContent () {
-  $('#searchplugin').removeClass('hide');
-  $('.options').removeClass('hide');
-}
-
 function tabs () {
   $('#foki > li.tab-selector > a').each(function () {
     if ($(this).attr('target') != '_blank') {
@@ -42,7 +36,6 @@ function tabs () {
 }
 
 function getDocumentReadyForUse (fokus, custom = false) {
-  activateJSOnlyContent();
   clickLog();
   popovers();
   if (fokus === 'bilder') imageLoader();
diff --git a/resources/assets/js/scriptStartPage.js b/resources/assets/js/scriptStartPage.js
index d9c1c762619277b02694e2f174362dfd79d27164..3416e000172ebc12ae852cbf12c775f1f71552de 100644
--- a/resources/assets/js/scriptStartPage.js
+++ b/resources/assets/js/scriptStartPage.js
@@ -3,7 +3,6 @@ $(document).ready(function () {
   if (location.href.indexOf('#plugin-modal') > -1) {
     $('#plugin-modal').modal('show');
   }
-  $('#addFocusBtn').removeClass('hide');
   $('button').popover();
   if (localStorage) {
     var theme = localStorage.getItem('theme');
diff --git a/resources/assets/js/utility.js b/resources/assets/js/utility.js
new file mode 100644
index 0000000000000000000000000000000000000000..d94161ea25c77a246906e4f72090670c008ad3f4
--- /dev/null
+++ b/resources/assets/js/utility.js
@@ -0,0 +1,3 @@
+$(document).ready(function () {
+  $('.js-only').removeClass('js-only');
+});
diff --git a/resources/assets/less/utility.less b/resources/assets/less/utility.less
new file mode 100644
index 0000000000000000000000000000000000000000..2d1f7f920568b2247c79f48883df6577b7b5f09b
--- /dev/null
+++ b/resources/assets/less/utility.less
@@ -0,0 +1,3 @@
+.js-only {
+  display: none !important;
+}
\ No newline at end of file
diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php
index 73f2263fa77e1647a436236e99973a4c9f0b8648..edf21767b8b04b32e9a9c8336c9c7f458addd116 100644
--- a/resources/views/index.blade.php
+++ b/resources/views/index.blade.php
@@ -252,7 +252,7 @@
 			</div>
 		@endif
 		<div id="addFocusBtnDiv">
-			<button id="addFocusBtn" class="btn btn-default hide">
+			<button id="addFocusBtn" class="btn btn-default js-only">
 			<i class="fa fa-plus" aria-hidden="true"></i>
 			</button>
 		</div>
@@ -265,7 +265,7 @@
 		<fieldset>
 			<form id="searchForm" @if(Request::has('request') && Request::input('request') === "POST") method="POST" @elseif(Request::has('request') && Request::input('request') === "GET") method="GET" @else method="GET" @endif action="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), "/meta/meta.ger3") }}" accept-charset="UTF-8">
 				<div class="input-group">
-					<div class="input-group-addon">
+					<div class="input-group-addon js-only">
 						<button type="button" data-toggle="popover" data-html="true" data-container="body" title="{{ trans('index.design') }}" data-content='&lt;ul id="color-chooser" class="list-inline list-unstyled"&gt;
 							&lt;li &gt;&lt;a id="standard" data-rgba="255,194,107,1" href="#"&gt;&lt;/a&gt;&lt;/li&gt;
 							&lt;li &gt;&lt;a id="standardHard" data-rgba="255,128,0,1" href="#"&gt;&lt;/a&gt;&lt;/li&gt;
@@ -304,19 +304,18 @@
 			</form>
 		</fieldset>
 		<ul class="list-inline searchform-bonus">
-			<li id="plug"
 			@unless ($browser === 'Firefox' || $browser === 'Mozilla' || $browser === 'Chrome' || $browser === 'Opera' || $browser === 'IE' || $browser === 'Edge' || $browser === 'Safari' || $browser === 'Vivaldi')
-				class="hidden"
-			@endunless>
-			<a href="#" data-toggle="modal" data-target="#plugin-modal" class="btn btn-default mutelink" title="{{ trans('index.plugintitle') }}"><i class="fa fa-plug" aria-hidden="true"></i> {{ trans('index.plugin') }}</a></li>
+			<li id="plug"	class="js-only">
+				<a href="#" data-toggle="modal" data-target="#plugin-modal" class="btn btn-default mutelink" title="{{ trans('index.plugintitle') }}"><i class="fa fa-plug" aria-hidden="true"></i> {{ trans('index.plugin') }}</a>
+			</li>
+			@endunless
 			<li>
-                <a href="http://blog.suma-ev.de/node/225" target="_blank" class="btn btn-default mutelink">
-                    Neu: Die Suche in der Suche
-                </a>
-            </li>
+				<a href="http://blog.suma-ev.de/node/225" target="_blank" class="btn btn-default mutelink">Neu: Die Suche in der Suche</a>
+			</li>
 		</ul>
 	<script src="{{ elixir('js/lib.js') }}"></script>
 	<script src="{{ elixir('js/scriptStartPage.js') }}"></script>
+	<script type="text/javascript" src="{{ elixir('js/utility.js') }}"></script>
 @endsection
 
 @section('optionalContent')
diff --git a/resources/views/layouts/researchandtabs.blade.php b/resources/views/layouts/researchandtabs.blade.php
index 70469bd0bbe4b919ea45db0a71e215118b87d396..f86aedad56c05d8e26e46efd90034a928601f468 100644
--- a/resources/views/layouts/researchandtabs.blade.php
+++ b/resources/views/layouts/researchandtabs.blade.php
@@ -1,5 +1,5 @@
 @if( strpos(rtrim(Request::header('REFERER'), '/'), LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), "/") )  === 0 && ( $browser === 'Firefox' || $browser === 'Mozilla' || $browser === 'Chrome' || $browser === 'IE' || $browser === 'Edge') )
-	<div id="searchplugin" class="alert alert-warning alert-dismissible hide" role="alert" style="">
+	<div id="searchplugin" class="alert alert-warning alert-dismissible js-only" role="alert" style="">
 		<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
 		{!! trans('researchandtabs.plugin.1', ['browser' => $browser]) !!}
 		<br />
diff --git a/resources/views/layouts/result.blade.php b/resources/views/layouts/result.blade.php
index b75fa046638c8886d50d16bea2f2d8eba67a7a59..0a977b9ba12e252b03282d60cf767a4149005b82 100644
--- a/resources/views/layouts/result.blade.php
+++ b/resources/views/layouts/result.blade.php
@@ -16,7 +16,7 @@
 							{{ $result->anzeigeLink }}
 						</a>
 					</div>
-					<div class="options hide">
+					<div class="options js-only">
 						<a tabindex="0" data-toggle="popover" data-trigger="focus" data-placement="auto bottom" data-container="body" data-html="true" data-title="<i class='fa fa-cog' aria-hidden='true'></i> Optionen">
 							@if(strlen($metager->getSite()) === 0)
 								<i class="fa fa-caret-down" aria-hidden="true"></i>
diff --git a/resources/views/layouts/resultPage.blade.php b/resources/views/layouts/resultPage.blade.php
index f9b55afe7380c77205beb1780286229df051c564..e2321177f6da66620aa02f00170dbfc958f7cd0b 100644
--- a/resources/views/layouts/resultPage.blade.php
+++ b/resources/views/layouts/resultPage.blade.php
@@ -16,6 +16,7 @@
 		<link type="text/css" rel="stylesheet" href="/css/lightslider.css" />
 		<link type="text/css" rel="stylesheet" href="/font-awesome/css/font-awesome.min.css" />
 		<link id="theme" type="text/css" rel="stylesheet" href="/css/theme.css.php" />
+		<link type="text/css" rel="stylesheet" href="{{ elixir('css/utility.css') }}" />
 	</head>
 	<body id="resultBody">
 		@if( !isset($suspendheader) )
@@ -43,5 +44,6 @@
 		<img src="{{ action('ImageController@generateImage')}}?site={{ urlencode(url()->current()) }}" class="hidden" />
 		<script type="text/javascript" src="{{ elixir('js/lib.js') }}"></script>
 		<script type="text/javascript" src="{{ elixir('js/scriptResultPage.js') }}"></script>
+		<script type="text/javascript" src="{{ elixir('js/utility.js') }}"></script>
 	</body>
 </html>
diff --git a/resources/views/layouts/staticPages.blade.php b/resources/views/layouts/staticPages.blade.php
index 08f861706fbf70ce1e98a6c253a982d2457810a6..43480c0048248b10753cb3ef7cc55763e011460e 100644
--- a/resources/views/layouts/staticPages.blade.php
+++ b/resources/views/layouts/staticPages.blade.php
@@ -17,6 +17,7 @@
 		<link type="text/css" rel="stylesheet" href="/font-awesome/css/font-awesome.min.css" />
 		<link type="text/css" rel="stylesheet" href="{{ elixir('css/themes/default.css') }}" />
 		<link id="theme" type="text/css" rel="stylesheet" href="/css/theme.css.php" />
+		<link type="text/css" rel="stylesheet" href="{{ elixir('css/utility.css') }}" />
 		@if (isset($css))
 			@if(is_array($css))
 				@foreach($css as $el)