diff --git a/html/index.html b/html/index.html
index 68c6ee0..aa0670a 100644
--- a/html/index.html
+++ b/html/index.html
@@ -1,35 +1,15 @@
 <!DOCTYPE html>
-<html lang="en">
+<html lang="de">
 <head>
-    <title>SubFactory</title>
-
-    <!-- Basic Page Needs
-    –––––––––––––––––––––––––––––––––––––––––––––––––– -->
+    <title>Sub Factory</title>
+    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
     <meta charset="utf-8">
-    <title>Skeleton: Responsive CSS Boilerplate</title>
-    <meta name="description" content="">
-    <meta name="author" content="">
 
-    <!-- Mobile Specific Metas
-    –––––––––––––––––––––––––––––––––––––––––––––––––– -->
     <meta name="viewport" content="width=device-width, initial-scale=1">
 
-    <!-- FONT
-    –––––––––––––––––––––––––––––––––––––––––––––––––– -->
-<!--    <link href='//fonts.googleapis.com/css?family=Raleway:400,300,600' rel='stylesheet' type='text/css'>-->
-
-    <!-- CSS
-    –––––––––––––––––––––––––––––––––––––––––––––––––– -->
-    <link rel="stylesheet" href="./css/normalize.css">
-    <link rel="stylesheet" href="./css/skeleton.css">
-    <link rel="stylesheet" href="./css/custom.css">
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
+    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.3/css/all.css">
 
-    <!-- Scripts
-    –––––––––––––––––––––––––––––––––––––––––––––––––– -->
-<!--    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>-->
-
-    <!-- Favicon
-    –––––––––––––––––––––––––––––––––––––––––––––––––– -->
     <link rel="icon" type="image/png" href="./images/favicon.png">
 
 
@@ -66,17 +46,17 @@
             vec2 f = pos.xy - i;
             vec2 blend = f * f * (3.0 -(2.0 * f));
             float noiseVal =
-                mix(
-                    mix(
-                        dot(GetGradient(i + vec2(0, 0), pos.z), f - vec2(0, 0)),
-                        dot(GetGradient(i + vec2(1, 0), pos.z), f - vec2(1, 0)),
-                        blend.x),
-                    mix(
-                        dot(GetGradient(i + vec2(0, 1), pos.z), f - vec2(0, 1)),
-                        dot(GetGradient(i + vec2(1, 1), pos.z), f - vec2(1, 1)),
-                        blend.x),
-                    blend.y
-                );
+            mix(
+            mix(
+            dot(GetGradient(i + vec2(0, 0), pos.z), f - vec2(0, 0)),
+            dot(GetGradient(i + vec2(1, 0), pos.z), f - vec2(1, 0)),
+            blend.x),
+            mix(
+            dot(GetGradient(i + vec2(0, 1), pos.z), f - vec2(0, 1)),
+            dot(GetGradient(i + vec2(1, 1), pos.z), f - vec2(1, 1)),
+            blend.x),
+            blend.y
+            );
             return noiseVal / 0.7;
         }
 
@@ -99,25 +79,18 @@
 
     <style>
         body {
-            background-color: black;
-        }
-
-        .shaderhero {
-            display: flex;
-            justify-content: center;
-            align-items: center;
-            width: 100vw;
-            height: 100vh;
+            background-color: #5fa873;
         }
 
         #hecksshader {
-            position: absolute;
-            left: 0px;
-            top: 0px;
-            z-index: -100;
             width: 100%;
             height: 100%;
-            opacity: 0.9;
+            display: block;
+            position: fixed;
+            top: 0;
+            left: 0;
+            z-index: -9999;
+            opacity: 0.15;
         }
 
         .shadercontainer {
@@ -156,113 +129,355 @@
           }
         }
 
-
         #shadersoundsystem {
             left: 0px;
             top: 0px;
             z-index: -50;
             width: 100%;
-            opacity: 0.2
+            opacity: 0.01;
         }
 
-    </style>
 
+        h2 {
+            font-family: 'Lato black', sans-serif;
+            font-size: 2.0rem;
+            text-transform: uppercase;
+            color: #111111;
+            margin-top: 4vh;
+            margin-bottom: 4vh;
+        }
+
+        .card-title {
+            font-family: 'Lato black', sans-serif;
+            color: #222222;
+            font-size: 1.5rem;
+        }
+
+        p, li {
+            font-family: 'Lato', sans-serif;
+            letter-spacing: 0.05em;
+            font-size: 1.4em;
+            color: #333333;
+            hyphens: auto;
+        }
+
+        img {
+            width:100%;
+        }
+
+        a:link {
+            color: #b2c778;
+        }
+
+        a:visited {
+            color: #b2c778;
+        }
+
+        a:hover {
+            color: silver;
+        }
+
+        a:active {
+            color: #b2c778;
+        }
+
+        .card {
+            width: 100%;
+            background-color: #5fa873;
+        }
+
+        .card-body {
+            border-style: solid;
+            border-top: 1px solid #dee2e6!important;
+            border-bottom: 1px solid #dee2e6!important;
+            border-left: 0;
+            border-right: 0;
+        }
+
+        .container {
+            background-color: #5fa873;
+            width: 100%;
+            border-left: 1px solid #dee2e6!important;
+            border-right: 1px solid #dee2e6!important;
+            margin-right: auto;
+            margin-left: auto;
+            padding: 0;
+        }
+
+        .row {
+            margin-left:0;
+            margin-right:0;
+        }
+
+        .col-12 {
+            padding-left:3vw;
+            padding-right:3vw;
+        }
+
+        .card {
+            border: 0px solid #dee2e6!important;
+        }
+
+        .fas, .fab {
+            color: white;
+            font-size: 2em;
+        }
+
+        .section, .cardcontainer {
+            margin-bottom: 5vh;
+            border-top: 1px solid #dee2e6!important;
+        }
+
+        .logo {
+            margin-left: auto;
+            margin-right: auto;
+            width: 40%;
+            display:block;
+        }
+    </style>
 </head>
 
 <body>
-
 <audio autoplay>
     <source src="./audio/SubfactoryClip_Faded2.wav">
 </audio>
 
-
-<div class="shaderhero">
-    <canvas id="hecksshader"></canvas>
-    <img src="./images/02_Sub_Factory_Facebook_Banner.jpg" class="shadertitle hidden_mobile">
-    <img src="./images/01_Sub_Factory_Flyer_A6_Web.jpg" class="shadertitle hidden_desktop">
+<canvas id="hecksshader"></canvas>
+
+<div class="container">
+    <div class="row">
+        <div class="img">
+            <img src="images/230518_subfactory_flyer_0.4.webp" alt="Subfactory Banner">
+        </div>
+    </div>
+
+    <div class="cardcontainer pt-2">
+        <h2 class="text-center">Präsentiert von</h2>
+        <div class="card-group">
+            <div class="card shadow-none">
+                <div class="card-body text-center">
+                    <div class="fix_height">
+                        <h5 class="card-title">Eulachbass</h5>
+                    </div>
+                    <img class="logo" src="images/eulachbass_logo.webp" alt="Eulachbass Logo">
+                    <a href="https://eulachbass.ch/" target="_blank" class="card-link"><i class="fas fa-globe mr-2"></i></a>
+                    <a href="https://www.instagram.com/eulachbass" target="_blank" class="card-link"><i
+                            class="fab fa-instagram mr-2"></i></a>
+                    <a href="https://www.facebook.com/eulachbass/" target="_blank" class="card-link"><i
+                            class="fab fa-facebook mr-2"></i></a>
+                    <a href="https://soundcloud.com/eulachbass" target="_blank" class="card-link"><i
+                            class="fab fa-soundcloud mr-2"></i></a>
+                </div>
+            </div>
+
+            <div class="card shadow-none">
+                <div class="card-body text-center">
+                    <div class="fix_height">
+                        <h5 class="card-title">Sector B</h5>
+                    </div>
+                    <img class="logo" src="images/sectorb_logo.webp" alt="Eulachbass Logo">
+                    <a href="https://www.instagram.com/sectorbevents/" target="_blank" class="card-link"><i
+                            class="fab fa-instagram mr-2"></i></a>
+                    <a href="https://www.facebook.com/sectorbevents/" target="_blank" class="card-link"><i
+                            class="fab fa-facebook mr-2"></i></a>
+                </div>
+            </div>
+
+            <div class="card shadow-none">
+                <div class="card-body text-center">
+                    <div class="fix_height">
+                        <h5 class="card-title">Subsanity Soundystem</h5>
+                    </div>
+                    <img class="logo" src="images/subsanity_logo.webp" alt="Eulachbass Logo">
+                    <a href="https://www.instagram.com/subsanitysoundsystem" target="_blank" class="card-link"><i
+                            class="fab fa-instagram mr-2"></i></a>
+                    <a href="https://www.facebook.com/subsanitysound" target="_blank" class="card-link"><i
+                            class="fab fa-facebook mr-2"></i></a>
+                    <a href="https://soundcloud.com/user-937924022" target="_blank" class="card-link"><i
+                            class="fab fa-soundcloud mr-2"></i></a>
+                </div>
+
+            </div>
+        </div>
+    </div>
+
+    <!-- INFO -->
+    <div class="row">
+        <div class="col-12 section">
+            <h2 class="text-center">Info</h2>
+            <p>
+                Streiche dir den <b>17. Juni im Kalender fett</b> an! Von 13:00 bis
+                22:00 findet auf dem Zeughausareal in Winterthur erstmalig ein Drum and
+                Bass Day Rave statt. Präsentiert werden internationale DnB Grössen wie
+                Benny Page (UK), Amoss (UK), FD (UK), und Creatures (UK). Unterstützt
+                werden sie von local DJs Delilah (Divercity), switch/case (Random) und
+                DJs aus unseren eigenen Reihen (Sector B und Eulachbass). Falls du nach
+                22:00 noch weiter möchtest, gilt dein Eintrittsbändel als free entry für
+                die Afterparty im Kraftfeld Winterthur.
+            </p>
+        </div>
+    </div>
+
+    <!-- Tickets -->
+    <div class="row">
+        <div class="col-12 section">
+            <h2 class="text-center">Tickets</h2>
+            <p>
+                Tickets sind auf
+                <a href="https://embed.eventfrog.ch/de/p/party/electro/sub-factory-with-benny-page-amoss-fd-creatures-7054797958168861153.html" target="_blank">
+                    Eventfrog
+                </a>
+                verfügbar
+            </p>
+            <iframe allowpaymentrequest="true"
+                    src="https://embed.eventfrog.ch/de/p/party/electro/sub-factory-with-benny-page-amoss-fd-creatures-7054797958168861153.html?color=60BF00&infobox=0&description=0&location=0&organisator=0&sponsors=0"
+                    width="100%"
+                    height="500"
+                    style="border: 1px solid black"
+                    frameborder="0">
+            </iframe>
+        </div>
+    </div>
+
+    <!-- Vepflegung -->
+    <div class="row">
+        <div class="col-12 section">
+            <h2 class="text-center ">Verpflegung</h2>
+            <p>
+                Auf dem Gelände stehen Foodtrucks zur Verpflegung zur Verfügung. Der Truck von
+                <a href="http://www.incontropizza.ch/" target="_blank">'Incontro'</a>
+                bietet dir eine der besten Pizzen der Stadt und für vegane Köstlichkeiten kann man sich beim Truck
+                von der <a href="https://steibichuchi.ch/" target="_blank">'Steibi Chuchi'</a> verwöhnen lassen.
+            </p>
+        </div>
+    </div>
+
+    <!-- Anreise -->
+    <div class="row">
+        <div class="col-12 section">
+            <h2 class="text-center ">Anreise</h2>
+            <p>
+                Das Zeughausareal ist vom Bahnhof Winterthur einfach zu
+                Fuss oder per Bus und zu Fuss erreichbar. Zu Fuss vom Bahnhof 15
+                Minuten. Ansonsten Bus Linie 2 oder 3 Richtung Oberseen bis Haltestelle
+                Technikum und dann zu Fuss. Auf dem Gelände stehen keine Parkplätze zur
+                Verfügung.
+            </p>
+
+            <iframe style="border: 1px solid black" width="100%" height="250" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=8.732620775699617%2C47.49334170186654%2C8.736456334590914%2C47.49489482337585&amp;layer=mapnik&amp;marker=47.49411917450164%2C8.734538555145264"></iframe>
+            <br/><small><a href="https://www.openstreetmap.org/?mlat=47.49412&amp;mlon=8.73454#map=19/47.49412/8.73454">View Larger Map</a></small>
+        </div>
+    </div>
+
+    <!-- Rave Etiquette -->
+    <div class="row">
+        <div class="col-12 section">
+            <h2 class="text-center ">Rave Etiquette</h2>
+            <ul>
+                <li>Diskriminierung jeglicher art wird nicht toleriert</li>
+                <li>Respektiere die persönlichen Grenzen anderer</li>
+                <li>Pass auf dich und auf andere auf</li>
+                <li>Respektiere den Raum der anderen, um ein harmonisches Miteinander zu gewährleisten</li>
+                <li>Solltest du dich in irgendeiner Weise unwohl fühlen oder
+                    etwas beobachten, was dir nicht in Ordnung erscheint, setze dich bitte
+                    mit einem Barmitarbeiter, dem Eingangspersonal oder einem anderen
+                    Mitarbeiter in Verbindung
+                </li>
+            </ul>
+        </div>
+    </div>
+
+    <!-- Partner -->
+    <div class="row">
+        <div class="col-12 section">
+            <h2 class="text-center ">Partner:innen</h2>
+            <ul>
+                <li><a href="https://www.zeughaus1.ch/" target="_blank">ZEUGHAUS1</a></li>
+                <li><a href="https://www.kraftfeld.ch/" target="_blank">Kraftfeld Winterthur</a></li>
+                <li><a href="https://www.hakogetraenke.ch/" target="_blank">Hako Getränke</a></li>
+                <li><a href="https://www.helfereinsatz.ch/" target="_blank">Helfereinsatz.ch</a></li>
+                <li><a href="https://eventfrog.ch/de/home.html" target="_blank">Eventfrog</a></li>
+            </ul>
+        </div>
+    </div>
 </div>
-<!--<img src="./images/soundsystem.svg" id="shadersoundsystem">-->
-
-
 
 
 <script type="module">
-			import * as THREE from 'https://unpkg.com/three/build/three.module.js';
-
-			let camera, scene, renderer;
-			let uniforms;
-			let texture;
-            let downsample_quality = 1.;
-			init();
-			render();
-
-			function init() {
-				camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
-				scene = new THREE.Scene();
-				const geometry = new THREE.PlaneGeometry( 2, 2 );
-
-                const loader = new THREE.TextureLoader();
-                const texture = loader.load('noise.png');
-                texture.wrapS = THREE.RepeatWrapping;
-                texture.wrapT = THREE.RepeatWrapping;
-
-
-
-				uniforms = {
-					iTime: { value: 1.0 },
-					iResolution: { value: new THREE.Vector2(1.0,1.0) },
-					iMouse: { value: new THREE.Vector2(0.0,0.0) },
-                    iChannel0: { value: texture },
-				};
-
-				const material = new THREE.ShaderMaterial( {
-					uniforms: uniforms,
-					vertexShader: document.getElementById( 'vertexShader' ).textContent,
-					fragmentShader: document.getElementById( 'fragmentShader' ).textContent
-				} );
-
-				const mesh = new THREE.Mesh( geometry, material );
-				scene.add( mesh );
-
-				const canvas = document.querySelector('#hecksshader');
-				renderer = new THREE.WebGLRenderer({antialias: true, canvas});
-
-				document.addEventListener( 'pointermove', onPointerMove);
-			}
-
-			function onPointerMove(event) {
-                var clientX = event.clientX;
-                var clientY = event.clientY;
-                var mouseX = clientX;
-                var mouseY = 1 - clientY;
-                uniforms[ 'iMouse' ].value = new THREE.Vector2(mouseX, mouseY);
-			}
-
-            function rendererNeedsResize(renderer) {
-                const canvas = renderer.domElement;
-                const width = canvas.clientWidth;
-                const height = canvas.clientHeight;
-                const needResize = canvas.width !== width || canvas.height !== height;
-                return true;
-            }
-
-			function render() {
-				requestAnimationFrame( render );
-
-                if ( rendererNeedsResize(renderer)) {
-                    const canvas = renderer.domElement;
-                    renderer.setSize(canvas.clientWidth, canvas.clientHeight, false);
-                    camera.aspect = canvas.clientWidth / canvas.clientHeight;
-                    camera.updateProjectionMatrix();
-                    uniforms['iResolution'].value = new THREE.Vector2( canvas.clientWidth / downsample_quality, canvas.clientHeight / downsample_quality );
-                }
-
-				uniforms[ 'iTime' ].value = performance.now();
-
-				renderer.render( scene, camera );
-			}
+    import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+
+    let camera, scene, renderer;
+    let uniforms;
+    let texture;
+    let downsample_quality = 1.;
+    init();
+    render();
+
+    function init() {
+        camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
+        scene = new THREE.Scene();
+        const geometry = new THREE.PlaneGeometry( 2, 2 );
+
+        const loader = new THREE.TextureLoader();
+        const texture = loader.load('noise.png');
+        texture.wrapS = THREE.RepeatWrapping;
+        texture.wrapT = THREE.RepeatWrapping;
+
+
+
+        uniforms = {
+            iTime: { value: 1.0 },
+            iResolution: { value: new THREE.Vector2(1.0,1.0) },
+            iMouse: { value: new THREE.Vector2(0.0,0.0) },
+            iChannel0: { value: texture },
+        };
+
+        const material = new THREE.ShaderMaterial( {
+            uniforms: uniforms,
+            vertexShader: document.getElementById( 'vertexShader' ).textContent,
+            fragmentShader: document.getElementById( 'fragmentShader' ).textContent
+        } );
+
+        const mesh = new THREE.Mesh( geometry, material );
+        scene.add( mesh );
+
+        const canvas = document.querySelector('#hecksshader');
+        renderer = new THREE.WebGLRenderer({antialias: true, canvas});
+
+        document.addEventListener( 'pointermove', onPointerMove);
+    }
+
+    function onPointerMove(event) {
+        var clientX = event.clientX;
+        var clientY = event.clientY;
+        var mouseX = clientX;
+        var mouseY = 1 - clientY;
+        uniforms[ 'iMouse' ].value = new THREE.Vector2(mouseX, mouseY);
+    }
+
+    function rendererNeedsResize(renderer) {
+        const canvas = renderer.domElement;
+        const width = canvas.clientWidth;
+        const height = canvas.clientHeight;
+        const needResize = canvas.width !== width || canvas.height !== height;
+        return true;
+    }
+
+    function render() {
+        requestAnimationFrame( render );
+
+        if ( rendererNeedsResize(renderer)) {
+            const canvas = renderer.domElement;
+            renderer.setSize(canvas.clientWidth, canvas.clientHeight, false);
+            camera.aspect = canvas.clientWidth / canvas.clientHeight;
+            camera.updateProjectionMatrix();
+            uniforms['iResolution'].value = new THREE.Vector2( canvas.clientWidth / downsample_quality, canvas.clientHeight / downsample_quality );
+        }
 
+        uniforms[ 'iTime' ].value = performance.now();
 
+        renderer.render( scene, camera );
+    }
 </script>
 </body>
 </html>
diff --git a/html/preview.html b/html/preview.html
deleted file mode 100644
index cedf961..0000000
--- a/html/preview.html
+++ /dev/null
@@ -1,491 +0,0 @@
-<!DOCTYPE html>
-<html lang="de">
-<head>
-    <title>Sub Factory</title>
-    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-    <meta charset="utf-8">
-
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.3/css/all.css">
-
-    <link rel="icon" type="image/png" href="./images/favicon.png">
-
-
-    <!--    Shaders -->
-    <script id="vertexShader" type="x-shader/x-vertex">
-        varying vec2 vUv;
-
-        void main()    {
-            vUv = uv;
-            gl_Position = vec4(position, 1.0);
-        }
-    </script>
-    <script id="fragmentShader" type="x-shader/x-fragment">
-        #ifdef GL_ES
-        precision highp float;
-        #endif
-
-        //    #extension GL_OES_standard_derivatives : enable
-
-        uniform float iTime;
-        uniform vec2 iMouse;
-        uniform vec2 iResolution;
-        uniform sampler2D iChannel0;
-
-
-        vec2 GetGradient(vec2 intPos, float t) {
-            float rand = texture(iChannel0, intPos / 64.0).r * 4.0;
-            float angle = 6.283185 * rand + 4.0 * t * rand;
-            return vec2(cos(angle), sin(angle));
-        }
-
-        float Pseudo3dNoise(vec3 pos) {
-            vec2 i = floor(pos.xy);
-            vec2 f = pos.xy - i;
-            vec2 blend = f * f * (3.0 -(2.0 * f));
-            float noiseVal =
-            mix(
-            mix(
-            dot(GetGradient(i + vec2(0, 0), pos.z), f - vec2(0, 0)),
-            dot(GetGradient(i + vec2(1, 0), pos.z), f - vec2(1, 0)),
-            blend.x),
-            mix(
-            dot(GetGradient(i + vec2(0, 1), pos.z), f - vec2(0, 1)),
-            dot(GetGradient(i + vec2(1, 1), pos.z), f - vec2(1, 1)),
-            blend.x),
-            blend.y
-            );
-            return noiseVal / 0.7;
-        }
-
-        void mainImage(out vec4 fragColor, in vec2 fragCoord) {
-            vec2 uv = fragCoord.xy / iResolution.y;
-            vec2 uvm = iMouse.xy / iResolution.y;
-
-            float time = (80.-(1.*uvm.y)) * sin(iTime / 30000.);
-
-            float noiseVal = 0.5 + 0.1 + (time/100.) * Pseudo3dNoise(vec3(uv * (6. + (0.07 * uvm.x)), time/10.));
-
-            float val = sin(noiseVal * time + (sin(time) * time / 10.));
-            fragColor.rgba = vec4(vec3(val), 1.0);
-        }
-
-        void main() {
-            mainImage(gl_FragColor, gl_FragCoord.xy);
-        }
-    </script>
-
-    <style>
-        body {
-            background-color: black;
-        }
-
-        #hecksshader {
-            width: 100%;
-            height: 100%;
-            display: block;
-            position: fixed;
-            top: 0;
-            left: 0;
-            z-index: -9999;
-            opacity: 0.2;
-        }
-
-        .shadercontainer {
-            position: relative;
-        }
-
-        .shadertitle {
-            position: absolute;
-            display: block;
-            padding: 10rem 0;
-
-            margin-left: auto;
-            margin-right: auto;
-            width: 75%;
-            opacity: 0.98;
-            z-index: -1;
-        }
-
-        .hidden_desktop{
-            visibility: visible;
-            display: block;
-        }
-        .hidden_mobile {
-            visibility: hidden;
-            display: none;
-        }
-
-        @media (min-width: 1000px) {
-          .hidden_desktop{
-              visibility: hidden;
-              display: none;
-          }
-          .hidden_mobile {
-              visibility: visible;
-              display: block;
-          }
-        }
-
-        #shadersoundsystem {
-            left: 0px;
-            top: 0px;
-            z-index: -50;
-            width: 100%;
-            opacity: 0.01;
-        }
-
-
-        h2 {
-            font-family: 'Lato black', sans-serif;
-            font-size: 2.5rem;
-            text-transform: uppercase;
-            color: #eeeeee;
-            margin-top: 4vh;
-            margin-bottom: 4vh;
-        }
-
-        .card-title {
-            font-family: 'Lato black', sans-serif;
-            color: #eeeeee;
-            font-size: 2rem;
-        }
-
-        p, li {
-            font-family: 'Lato', sans-serif;
-            letter-spacing: 0.05em;
-            font-size: 1.4em;
-            color: #333333;
-            hyphens: auto;
-        }
-
-        img {
-            width:100%;
-        }
-
-        a:link {
-            color: #b2c778;
-        }
-
-        a:visited {
-            color: #b2c778;
-        }
-
-        a:hover {
-            color: silver;
-        }
-
-        a:active {
-            color: #b2c778;
-        }
-
-        .card {
-            width: 100%;
-            background-color: #5fa873;
-        }
-
-        .card-body {
-            border-style: solid;
-            border-top: 1px solid #dee2e6!important;
-            border-bottom: 1px solid #dee2e6!important;
-            border-left: 0;
-            border-right: 0;
-        }
-
-        .container {
-            background-color: #5fa873;
-            width: 100%;
-            border-left: 1px solid #dee2e6!important;
-            border-right: 1px solid #dee2e6!important;
-            margin-right: auto;
-            margin-left: auto;
-            padding: 0;
-        }
-
-        .row {
-            margin-left:0;
-            margin-right:0;
-        }
-
-        .col-12 {
-            padding-left:3vw;
-            padding-right:3vw;
-        }
-
-        .card {
-            border: 0px solid #dee2e6!important;
-        }
-
-        .fas, .fab {
-            color: white;
-            font-size: 2em;
-        }
-
-        .section, .cardcontainer {
-            margin-bottom: 5vh;
-            border-top: 1px solid #dee2e6!important;
-        }
-
-        .logo {
-            margin-left: auto;
-            margin-right: auto;
-            width: 40%;
-            display:block;
-        }
-    </style>
-</head>
-
-<body>
-<audio autoplay>
-    <source src="./audio/SubfactoryClip_Faded2.wav">
-</audio>
-
-<canvas id="hecksshader"></canvas>
-
-<div class="container">
-    <div class="row">
-        <div class="img">
-            <img src="images/230518_subfactory_flyer_0.4.webp" alt="Subfactory Banner">
-        </div>
-    </div>
-
-    <div class="cardcontainer pt-2">
-        <h2 class="text-center">Präsentiert von</h2>
-        <div class="card-group">
-            <div class="card shadow-none">
-                <div class="card-body text-center">
-                    <div class="fix_height">
-                        <h5 class="card-title">Eulachbass</h5>
-                    </div>
-                    <img class="logo" src="images/eulachbass_logo.webp" alt="Eulachbass Logo">
-                    <a href="https://eulachbass.ch/" target="_blank" class="card-link"><i class="fas fa-globe mr-2"></i></a>
-                    <a href="https://www.instagram.com/eulachbass" target="_blank" class="card-link"><i
-                            class="fab fa-instagram mr-2"></i></a>
-                    <a href="https://www.facebook.com/eulachbass/" target="_blank" class="card-link"><i
-                            class="fab fa-facebook mr-2"></i></a>
-                    <a href="https://soundcloud.com/eulachbass" target="_blank" class="card-link"><i
-                            class="fab fa-soundcloud mr-2"></i></a>
-                </div>
-            </div>
-
-            <div class="card shadow-none">
-                <div class="card-body text-center">
-                    <div class="fix_height">
-                        <h5 class="card-title">Sector B</h5>
-                    </div>
-                    <img class="logo" src="images/sectorb_logo.webp" alt="Eulachbass Logo">
-                    <a href="https://www.instagram.com/sectorbevents/" target="_blank" class="card-link"><i
-                            class="fab fa-instagram mr-2"></i></a>
-                    <a href="https://www.facebook.com/sectorbevents/" target="_blank" class="card-link"><i
-                            class="fab fa-facebook mr-2"></i></a>
-                </div>
-            </div>
-
-            <div class="card shadow-none">
-                <div class="card-body text-center">
-                    <div class="fix_height">
-                        <h5 class="card-title">Subsanity</h5>
-                    </div>
-                    <img class="logo" src="images/subsanity_logo.webp" alt="Eulachbass Logo">
-                    <a href="https://www.instagram.com/subsanitysoundsystem" target="_blank" class="card-link"><i
-                            class="fab fa-instagram mr-2"></i></a>
-                    <a href="https://www.facebook.com/subsanitysound" target="_blank" class="card-link"><i
-                            class="fab fa-facebook mr-2"></i></a>
-                    <a href="https://soundcloud.com/user-937924022" target="_blank" class="card-link"><i
-                            class="fab fa-soundcloud mr-2"></i></a>
-                </div>
-
-            </div>
-        </div>
-    </div>
-
-    <!-- INFO -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center">Info</h2>
-            <p>
-                Streiche dir den <b>17. Juni im Kalender fett</b> an! Von 13:00 bis
-                22:00 findet auf dem Zeughausareal in Winterthur erstmalig ein Drum and
-                Bass Day Rave statt. Präsentiert werden internationale DnB Grössen wie
-                Benny Page (UK), Amoss (UK), FD (UK), und Creatures (UK). Unterstützt
-                werden sie von local DJs Delilah (Divercity), switch/case (Random) und
-                DJs aus unseren eigenen Reihen (Sector B und Eulachbass). Falls du nach
-                22:00 noch weiter möchtest, gilt dein Eintrittsbändel als free entry für
-                die Afterparty im Kraftfeld Winterthur.
-            </p>
-        </div>
-    </div>
-
-    <!-- Tickets -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center">Tickets</h2>
-            <p>
-                Tickets sind auf
-                <a href="https://embed.eventfrog.ch/de/p/party/electro/sub-factory-with-benny-page-amoss-fd-creatures-7054797958168861153.html" target="_blank">
-                    Eventfrog
-                </a>
-                verfügbar
-            </p>
-            <iframe allowpaymentrequest="true"
-                    src="https://embed.eventfrog.ch/de/p/party/electro/sub-factory-with-benny-page-amoss-fd-creatures-7054797958168861153.html?color=60BF00&infobox=0&description=0&location=0&organisator=0&sponsors=0"
-                    width="100%"
-                    height="500"
-                    style="border: 1px solid black"
-                    frameborder="0">
-            </iframe>
-        </div>
-    </div>
-
-    <!-- Vepflegung -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Verpflegung</h2>
-            <p>
-                Auf dem Gelände stehen Foodtrucks zur Verpflegung zur Verfügung. Der Truck von
-                <a href="http://www.incontropizza.ch/" target="_blank">'Incontro'</a>
-                bietet dir eine der besten Pizzen der Stadt und für vegane Köstlichkeiten kann man sich beim Truck
-                von der <a href="https://steibichuchi.ch/" target="_blank">'Steibi Chuchi'</a> verwöhnen lassen.
-            </p>
-        </div>
-    </div>
-
-    <!-- Anreise -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Anreise</h2>
-            <p>
-                Das Zeughausareal ist vom Bahnhof Winterthur einfach zu
-                Fuss oder per Bus und zu Fuss erreichbar. Zu Fuss vom Bahnhof 15
-                Minuten. Ansonsten Bus Linie 2 oder 3 Richtung Oberseen bis Haltestelle
-                Technikum und dann zu Fuss. Auf dem Gelände stehen keine Parkplätze zur
-                Verfügung.
-            </p>
-
-            <iframe style="border: 1px solid black" width="100%" height="250" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=8.732620775699617%2C47.49334170186654%2C8.736456334590914%2C47.49489482337585&amp;layer=mapnik&amp;marker=47.49411917450164%2C8.734538555145264"></iframe>
-            <br/><small><a href="https://www.openstreetmap.org/?mlat=47.49412&amp;mlon=8.73454#map=19/47.49412/8.73454">View Larger Map</a></small>
-        </div>
-    </div>
-
-    <!-- Rave Etiquette -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Rave Etiquette</h2>
-            <ol>
-                <li>Respektiere die persönlichen Grenzen anderer</li>
-                <li>Pass auf dich und auf andere auf</li>
-                <li>Halte die Tanzfläche sauber und respektiere den Raum der anderen, um ein harmonisches Miteinander zu
-                    gewährleisten
-                </li>
-                <li>Solltest du dich in irgendeiner Weise unwohl fühlen oder
-                    etwas beobachten, was dir nicht in Ordnung erscheint, setze dich bitte
-                    mit einem Barmitarbeiter, dem Eingangspersonal oder einem anderen
-                    Mitarbeiter in Verbindung
-                </li>
-            </ol>
-        </div>
-    </div>
-
-    <!-- Partner -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Partner:innen</h2>
-            <ul>
-                <li><a href="https://www.zeughaus1.ch/" target="_blank">ZEUGHAUS1</a></li>
-                <li><a href="https://www.kraftfeld.ch/" target="_blank">Kraftfeld Winterthur</a></li>
-                <li><a href="https://www.hakogetraenke.ch/" target="_blank">Hako Getränke</a></li>
-                <li><a href="https://www.helfereinsatz.ch/" target="_blank">Helfereinsatz.ch</a></li>
-                <li><a href="https://eventfrog.ch/de/home.html" target="_blank">Eventfrog</a></li>
-            </ul>
-        </div>
-    </div>
-</div>
-
-<!--<script src="SubFactory_files/jquery-3.2.1.slim.min.js"></script>-->
-<!--<script src="SubFactory_files/popper.min.js"></script>-->
-<!--<script src="SubFactory_files/bootstrap.min.js"></script>-->
-
-
-<script type="module">
-    import * as THREE from 'https://unpkg.com/three/build/three.module.js';
-
-    let camera, scene, renderer;
-    let uniforms;
-    let texture;
-    let downsample_quality = 1.;
-    init();
-    render();
-
-    function init() {
-        camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
-        scene = new THREE.Scene();
-        const geometry = new THREE.PlaneGeometry( 2, 2 );
-
-        const loader = new THREE.TextureLoader();
-        const texture = loader.load('noise.png');
-        texture.wrapS = THREE.RepeatWrapping;
-        texture.wrapT = THREE.RepeatWrapping;
-
-
-
-        uniforms = {
-            iTime: { value: 1.0 },
-            iResolution: { value: new THREE.Vector2(1.0,1.0) },
-            iMouse: { value: new THREE.Vector2(0.0,0.0) },
-            iChannel0: { value: texture },
-        };
-
-        const material = new THREE.ShaderMaterial( {
-            uniforms: uniforms,
-            vertexShader: document.getElementById( 'vertexShader' ).textContent,
-            fragmentShader: document.getElementById( 'fragmentShader' ).textContent
-        } );
-
-        const mesh = new THREE.Mesh( geometry, material );
-        scene.add( mesh );
-
-        const canvas = document.querySelector('#hecksshader');
-        renderer = new THREE.WebGLRenderer({antialias: true, canvas});
-
-        document.addEventListener( 'pointermove', onPointerMove);
-    }
-
-    function onPointerMove(event) {
-        var clientX = event.clientX;
-        var clientY = event.clientY;
-        var mouseX = clientX;
-        var mouseY = 1 - clientY;
-        uniforms[ 'iMouse' ].value = new THREE.Vector2(mouseX, mouseY);
-    }
-
-    function rendererNeedsResize(renderer) {
-        const canvas = renderer.domElement;
-        const width = canvas.clientWidth;
-        const height = canvas.clientHeight;
-        const needResize = canvas.width !== width || canvas.height !== height;
-        return true;
-    }
-
-    function render() {
-        requestAnimationFrame( render );
-
-        if ( rendererNeedsResize(renderer)) {
-            const canvas = renderer.domElement;
-            renderer.setSize(canvas.clientWidth, canvas.clientHeight, false);
-            camera.aspect = canvas.clientWidth / canvas.clientHeight;
-            camera.updateProjectionMatrix();
-            uniforms['iResolution'].value = new THREE.Vector2( canvas.clientWidth / downsample_quality, canvas.clientHeight / downsample_quality );
-        }
-
-        uniforms[ 'iTime' ].value = performance.now();
-
-        renderer.render( scene, camera );
-    }
-
-
-
-</script>
-</body>
-</html>
diff --git a/html/preview2.html b/html/preview2.html
deleted file mode 100644
index b8168b7..0000000
--- a/html/preview2.html
+++ /dev/null
@@ -1,491 +0,0 @@
-<!DOCTYPE html>
-<html lang="de">
-<head>
-    <title>Sub Factory</title>
-    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-    <meta charset="utf-8">
-
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.3/css/all.css">
-
-    <link rel="icon" type="image/png" href="./images/favicon.png">
-
-
-    <!--    Shaders -->
-    <script id="vertexShader" type="x-shader/x-vertex">
-        varying vec2 vUv;
-
-        void main()    {
-            vUv = uv;
-            gl_Position = vec4(position, 1.0);
-        }
-    </script>
-    <script id="fragmentShader" type="x-shader/x-fragment">
-        #ifdef GL_ES
-        precision highp float;
-        #endif
-
-        //    #extension GL_OES_standard_derivatives : enable
-
-        uniform float iTime;
-        uniform vec2 iMouse;
-        uniform vec2 iResolution;
-        uniform sampler2D iChannel0;
-
-
-        vec2 GetGradient(vec2 intPos, float t) {
-            float rand = texture(iChannel0, intPos / 64.0).r * 4.0;
-            float angle = 6.283185 * rand + 4.0 * t * rand;
-            return vec2(cos(angle), sin(angle));
-        }
-
-        float Pseudo3dNoise(vec3 pos) {
-            vec2 i = floor(pos.xy);
-            vec2 f = pos.xy - i;
-            vec2 blend = f * f * (3.0 -(2.0 * f));
-            float noiseVal =
-            mix(
-            mix(
-            dot(GetGradient(i + vec2(0, 0), pos.z), f - vec2(0, 0)),
-            dot(GetGradient(i + vec2(1, 0), pos.z), f - vec2(1, 0)),
-            blend.x),
-            mix(
-            dot(GetGradient(i + vec2(0, 1), pos.z), f - vec2(0, 1)),
-            dot(GetGradient(i + vec2(1, 1), pos.z), f - vec2(1, 1)),
-            blend.x),
-            blend.y
-            );
-            return noiseVal / 0.7;
-        }
-
-        void mainImage(out vec4 fragColor, in vec2 fragCoord) {
-            vec2 uv = fragCoord.xy / iResolution.y;
-            vec2 uvm = iMouse.xy / iResolution.y;
-
-            float time = (80.-(1.*uvm.y)) * sin(iTime / 30000.);
-
-            float noiseVal = 0.5 + 0.1 + (time/100.) * Pseudo3dNoise(vec3(uv * (6. + (0.07 * uvm.x)), time/10.));
-
-            float val = sin(noiseVal * time + (sin(time) * time / 10.));
-            fragColor.rgba = vec4(vec3(val), 1.0);
-        }
-
-        void main() {
-            mainImage(gl_FragColor, gl_FragCoord.xy);
-        }
-    </script>
-
-    <style>
-        body {
-            background-color: #5fa873;
-        }
-
-        #hecksshader {
-            width: 100%;
-            height: 100%;
-            display: block;
-            position: fixed;
-            top: 0;
-            left: 0;
-            z-index: -9999;
-            opacity: 0.15;
-        }
-
-        .shadercontainer {
-            position: relative;
-        }
-
-        .shadertitle {
-            position: absolute;
-            display: block;
-            padding: 10rem 0;
-
-            margin-left: auto;
-            margin-right: auto;
-            width: 75%;
-            opacity: 0.98;
-            z-index: -1;
-        }
-
-        .hidden_desktop{
-            visibility: visible;
-            display: block;
-        }
-        .hidden_mobile {
-            visibility: hidden;
-            display: none;
-        }
-
-        @media (min-width: 1000px) {
-          .hidden_desktop{
-              visibility: hidden;
-              display: none;
-          }
-          .hidden_mobile {
-              visibility: visible;
-              display: block;
-          }
-        }
-
-        #shadersoundsystem {
-            left: 0px;
-            top: 0px;
-            z-index: -50;
-            width: 100%;
-            opacity: 0.01;
-        }
-
-
-        h2 {
-            font-family: 'Lato black', sans-serif;
-            font-size: 2.5rem;
-            text-transform: uppercase;
-            color: #eeeeee;
-            margin-top: 4vh;
-            margin-bottom: 4vh;
-        }
-
-        .card-title {
-            font-family: 'Lato black', sans-serif;
-            color: #eeeeee;
-            font-size: 2rem;
-        }
-
-        p, li {
-            font-family: 'Lato', sans-serif;
-            letter-spacing: 0.05em;
-            font-size: 1.5em;
-            color: #eeeeee;
-            hyphens: auto;
-        }
-
-        img {
-            width:100%;
-        }
-
-        a:link {
-            color: #b2c778;
-        }
-
-        a:visited {
-            color: #b2c778;
-        }
-
-        a:hover {
-            color: silver;
-        }
-
-        a:active {
-            color: #b2c778;
-        }
-
-        .card {
-            width: 100%;
-            background-color: #5fa873;
-        }
-
-        .card-body {
-            border-style: solid;
-            border-top: 2px solid #dee2e6!important;
-            border-bottom: 2px solid #dee2e6!important;
-            border-left: 0;
-            border-right: 0;
-        }
-
-        .container {
-            background-color: #5fa873;
-            width: 100%;
-            border-left: 2px solid #dee2e6!important;
-            border-right: 2px solid #dee2e6!important;
-            margin-right: auto;
-            margin-left: auto;
-            padding: 0;
-        }
-
-        .row {
-            margin-left:0;
-            margin-right:0;
-        }
-
-        .col-12 {
-            padding-left:3vw;
-            padding-right:3vw;
-        }
-
-        .card {
-            border: 0px solid #dee2e6!important;
-        }
-
-        .fas, .fab {
-            color: white;
-            font-size: 2em;
-        }
-
-        .section, .cardcontainer {
-            margin-bottom: 5vh;
-            border-top: 2px solid #dee2e6!important;
-        }
-
-        .logo {
-            margin-left: auto;
-            margin-right: auto;
-            width: 40%;
-            display:block;
-        }
-    </style>
-</head>
-
-<body>
-<audio autoplay>
-    <source src="./audio/SubfactoryClip_Faded2.wav">
-</audio>
-
-<canvas id="hecksshader"></canvas>
-
-<div class="container">
-    <div class="row">
-        <div class="img">
-            <img src="images/230518_subfactory_flyer_0.4.webp" alt="Subfactory Banner">
-        </div>
-    </div>
-
-    <div class="cardcontainer pt-2">
-        <h2 class="text-center">Präsentiert von</h2>
-        <div class="card-group">
-            <div class="card shadow-none">
-                <div class="card-body text-center">
-                    <div class="fix_height">
-                        <h5 class="card-title">Eulachbass</h5>
-                    </div>
-                    <img class="logo" src="images/eulachbass_logo.webp" alt="Eulachbass Logo">
-                    <a href="https://eulachbass.ch/" target="_blank" class="card-link"><i class="fas fa-globe mr-2"></i></a>
-                    <a href="https://www.instagram.com/eulachbass" target="_blank" class="card-link"><i
-                            class="fab fa-instagram mr-2"></i></a>
-                    <a href="https://www.facebook.com/eulachbass/" target="_blank" class="card-link"><i
-                            class="fab fa-facebook mr-2"></i></a>
-                    <a href="https://soundcloud.com/eulachbass" target="_blank" class="card-link"><i
-                            class="fab fa-soundcloud mr-2"></i></a>
-                </div>
-            </div>
-
-            <div class="card shadow-none">
-                <div class="card-body text-center">
-                    <div class="fix_height">
-                        <h5 class="card-title">Sector B</h5>
-                    </div>
-                    <img class="logo" src="images/sectorb_logo.webp" alt="Eulachbass Logo">
-                    <a href="https://www.instagram.com/sectorbevents/" target="_blank" class="card-link"><i
-                            class="fab fa-instagram mr-2"></i></a>
-                    <a href="https://www.facebook.com/sectorbevents/" target="_blank" class="card-link"><i
-                            class="fab fa-facebook mr-2"></i></a>
-                </div>
-            </div>
-
-            <div class="card shadow-none">
-                <div class="card-body text-center">
-                    <div class="fix_height">
-                        <h5 class="card-title">Subsanity</h5>
-                    </div>
-                    <img class="logo" src="images/subsanity_logo.webp" alt="Eulachbass Logo">
-                    <a href="https://www.instagram.com/subsanitysoundsystem" target="_blank" class="card-link"><i
-                            class="fab fa-instagram mr-2"></i></a>
-                    <a href="https://www.facebook.com/subsanitysound" target="_blank" class="card-link"><i
-                            class="fab fa-facebook mr-2"></i></a>
-                    <a href="https://soundcloud.com/user-937924022" target="_blank" class="card-link"><i
-                            class="fab fa-soundcloud mr-2"></i></a>
-                </div>
-
-            </div>
-        </div>
-    </div>
-
-    <!-- INFO -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center">Info</h2>
-            <p>
-                Streiche dir den <b>17. Juni im Kalender fett</b> an! Von 13:00 bis
-                22:00 findet auf dem Zeughausareal in Winterthur erstmalig ein Drum and
-                Bass Day Rave statt. Präsentiert werden internationale DnB Grössen wie
-                Benny Page (UK), Amoss (UK), FD (UK), und Creatures (UK). Unterstützt
-                werden sie von local DJs Delilah (Divercity), switch/case (Random) und
-                DJs aus unseren eigenen Reihen (Sector B und Eulachbass). Falls du nach
-                22:00 noch weiter möchtest, gilt dein Eintrittsbändel als free entry für
-                die Afterparty im Kraftfeld Winterthur.
-            </p>
-        </div>
-    </div>
-
-    <!-- Tickets -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center">Tickets</h2>
-            <p>
-                Tickets sind auf
-                <a href="https://embed.eventfrog.ch/de/p/party/electro/sub-factory-with-benny-page-amoss-fd-creatures-7054797958168861153.html" target="_blank">
-                    Eventfrog
-                </a>
-                verfügbar
-            </p>
-            <iframe allowpaymentrequest="true"
-                    src="https://embed.eventfrog.ch/de/p/party/electro/sub-factory-with-benny-page-amoss-fd-creatures-7054797958168861153.html?color=60BF00&infobox=0&description=0&location=0&organisator=0&sponsors=0"
-                    width="100%"
-                    height="500"
-                    style="border: 1px solid black"
-                    frameborder="0">
-            </iframe>
-        </div>
-    </div>
-
-    <!-- Vepflegung -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Verpflegung</h2>
-            <p>
-                Auf dem Gelände stehen Foodtrucks zur Verpflegung zur Verfügung. Der Truck von
-                <a href="http://www.incontropizza.ch/" target="_blank">'Incontro'</a>
-                bietet dir eine der besten Pizzen der Stadt und für vegane Köstlichkeiten kann man sich beim Truck
-                von der <a href="https://steibichuchi.ch/" target="_blank">'Steibi Chuchi'</a> verwöhnen lassen.
-            </p>
-        </div>
-    </div>
-
-    <!-- Anreise -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Anreise</h2>
-            <p>
-                Das Zeughausareal ist vom Bahnhof Winterthur einfach zu
-                Fuss oder per Bus und zu Fuss erreichbar. Zu Fuss vom Bahnhof 15
-                Minuten. Ansonsten Bus Linie 2 oder 3 Richtung Oberseen bis Haltestelle
-                Technikum und dann zu Fuss. Auf dem Gelände stehen keine Parkplätze zur
-                Verfügung.
-            </p>
-
-            <iframe style="border: 1px solid black" width="100%" height="250" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=8.732620775699617%2C47.49334170186654%2C8.736456334590914%2C47.49489482337585&amp;layer=mapnik&amp;marker=47.49411917450164%2C8.734538555145264"></iframe>
-            <br/><small><a href="https://www.openstreetmap.org/?mlat=47.49412&amp;mlon=8.73454#map=19/47.49412/8.73454">View Larger Map</a></small>
-        </div>
-    </div>
-
-    <!-- Rave Etiquette -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Rave Etiquette</h2>
-            <ol>
-                <li>Respektiere die persönlichen Grenzen anderer</li>
-                <li>Pass auf dich und auf andere auf</li>
-                <li>Halte die Tanzfläche sauber und respektiere den Raum der anderen, um ein harmonisches Miteinander zu
-                    gewährleisten
-                </li>
-                <li>Solltest du dich in irgendeiner Weise unwohl fühlen oder
-                    etwas beobachten, was dir nicht in Ordnung erscheint, setze dich bitte
-                    mit einem Barmitarbeiter, dem Eingangspersonal oder einem anderen
-                    Mitarbeiter in Verbindung
-                </li>
-            </ol>
-        </div>
-    </div>
-
-    <!-- Partner -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Partner:innen</h2>
-            <ul>
-                <li><a href="https://www.zeughaus1.ch/" target="_blank">ZEUGHAUS1</a></li>
-                <li><a href="https://www.kraftfeld.ch/" target="_blank">Kraftfeld Winterthur</a></li>
-                <li><a href="https://www.hakogetraenke.ch/" target="_blank">Hako Getränke</a></li>
-                <li><a href="https://www.helfereinsatz.ch/" target="_blank">Helfereinsatz.ch</a></li>
-                <li><a href="https://eventfrog.ch/de/home.html" target="_blank">Eventfrog</a></li>
-            </ul>
-        </div>
-    </div>
-</div>
-
-<!--<script src="SubFactory_files/jquery-3.2.1.slim.min.js"></script>-->
-<!--<script src="SubFactory_files/popper.min.js"></script>-->
-<!--<script src="SubFactory_files/bootstrap.min.js"></script>-->
-
-
-<script type="module">
-    import * as THREE from 'https://unpkg.com/three/build/three.module.js';
-
-    let camera, scene, renderer;
-    let uniforms;
-    let texture;
-    let downsample_quality = 1.;
-    init();
-    render();
-
-    function init() {
-        camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
-        scene = new THREE.Scene();
-        const geometry = new THREE.PlaneGeometry( 2, 2 );
-
-        const loader = new THREE.TextureLoader();
-        const texture = loader.load('noise.png');
-        texture.wrapS = THREE.RepeatWrapping;
-        texture.wrapT = THREE.RepeatWrapping;
-
-
-
-        uniforms = {
-            iTime: { value: 1.0 },
-            iResolution: { value: new THREE.Vector2(1.0,1.0) },
-            iMouse: { value: new THREE.Vector2(0.0,0.0) },
-            iChannel0: { value: texture },
-        };
-
-        const material = new THREE.ShaderMaterial( {
-            uniforms: uniforms,
-            vertexShader: document.getElementById( 'vertexShader' ).textContent,
-            fragmentShader: document.getElementById( 'fragmentShader' ).textContent
-        } );
-
-        const mesh = new THREE.Mesh( geometry, material );
-        scene.add( mesh );
-
-        const canvas = document.querySelector('#hecksshader');
-        renderer = new THREE.WebGLRenderer({antialias: true, canvas});
-
-        document.addEventListener( 'pointermove', onPointerMove);
-    }
-
-    function onPointerMove(event) {
-        var clientX = event.clientX;
-        var clientY = event.clientY;
-        var mouseX = clientX;
-        var mouseY = 1 - clientY;
-        uniforms[ 'iMouse' ].value = new THREE.Vector2(mouseX, mouseY);
-    }
-
-    function rendererNeedsResize(renderer) {
-        const canvas = renderer.domElement;
-        const width = canvas.clientWidth;
-        const height = canvas.clientHeight;
-        const needResize = canvas.width !== width || canvas.height !== height;
-        return true;
-    }
-
-    function render() {
-        requestAnimationFrame( render );
-
-        if ( rendererNeedsResize(renderer)) {
-            const canvas = renderer.domElement;
-            renderer.setSize(canvas.clientWidth, canvas.clientHeight, false);
-            camera.aspect = canvas.clientWidth / canvas.clientHeight;
-            camera.updateProjectionMatrix();
-            uniforms['iResolution'].value = new THREE.Vector2( canvas.clientWidth / downsample_quality, canvas.clientHeight / downsample_quality );
-        }
-
-        uniforms[ 'iTime' ].value = performance.now();
-
-        renderer.render( scene, camera );
-    }
-
-
-
-</script>
-</body>
-</html>
diff --git a/html/preview2_1.html b/html/preview2_1.html
deleted file mode 100644
index aa0670a..0000000
--- a/html/preview2_1.html
+++ /dev/null
@@ -1,483 +0,0 @@
-<!DOCTYPE html>
-<html lang="de">
-<head>
-    <title>Sub Factory</title>
-    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-    <meta charset="utf-8">
-
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.3/css/all.css">
-
-    <link rel="icon" type="image/png" href="./images/favicon.png">
-
-
-    <!--    Shaders -->
-    <script id="vertexShader" type="x-shader/x-vertex">
-        varying vec2 vUv;
-
-        void main()    {
-            vUv = uv;
-            gl_Position = vec4(position, 1.0);
-        }
-    </script>
-    <script id="fragmentShader" type="x-shader/x-fragment">
-        #ifdef GL_ES
-        precision highp float;
-        #endif
-
-        //    #extension GL_OES_standard_derivatives : enable
-
-        uniform float iTime;
-        uniform vec2 iMouse;
-        uniform vec2 iResolution;
-        uniform sampler2D iChannel0;
-
-
-        vec2 GetGradient(vec2 intPos, float t) {
-            float rand = texture(iChannel0, intPos / 64.0).r * 4.0;
-            float angle = 6.283185 * rand + 4.0 * t * rand;
-            return vec2(cos(angle), sin(angle));
-        }
-
-        float Pseudo3dNoise(vec3 pos) {
-            vec2 i = floor(pos.xy);
-            vec2 f = pos.xy - i;
-            vec2 blend = f * f * (3.0 -(2.0 * f));
-            float noiseVal =
-            mix(
-            mix(
-            dot(GetGradient(i + vec2(0, 0), pos.z), f - vec2(0, 0)),
-            dot(GetGradient(i + vec2(1, 0), pos.z), f - vec2(1, 0)),
-            blend.x),
-            mix(
-            dot(GetGradient(i + vec2(0, 1), pos.z), f - vec2(0, 1)),
-            dot(GetGradient(i + vec2(1, 1), pos.z), f - vec2(1, 1)),
-            blend.x),
-            blend.y
-            );
-            return noiseVal / 0.7;
-        }
-
-        void mainImage(out vec4 fragColor, in vec2 fragCoord) {
-            vec2 uv = fragCoord.xy / iResolution.y;
-            vec2 uvm = iMouse.xy / iResolution.y;
-
-            float time = (80.-(1.*uvm.y)) * sin(iTime / 30000.);
-
-            float noiseVal = 0.5 + 0.1 + (time/100.) * Pseudo3dNoise(vec3(uv * (6. + (0.07 * uvm.x)), time/10.));
-
-            float val = sin(noiseVal * time + (sin(time) * time / 10.));
-            fragColor.rgba = vec4(vec3(val), 1.0);
-        }
-
-        void main() {
-            mainImage(gl_FragColor, gl_FragCoord.xy);
-        }
-    </script>
-
-    <style>
-        body {
-            background-color: #5fa873;
-        }
-
-        #hecksshader {
-            width: 100%;
-            height: 100%;
-            display: block;
-            position: fixed;
-            top: 0;
-            left: 0;
-            z-index: -9999;
-            opacity: 0.15;
-        }
-
-        .shadercontainer {
-            position: relative;
-        }
-
-        .shadertitle {
-            position: absolute;
-            display: block;
-            padding: 10rem 0;
-
-            margin-left: auto;
-            margin-right: auto;
-            width: 75%;
-            opacity: 0.98;
-            z-index: -1;
-        }
-
-        .hidden_desktop{
-            visibility: visible;
-            display: block;
-        }
-        .hidden_mobile {
-            visibility: hidden;
-            display: none;
-        }
-
-        @media (min-width: 1000px) {
-          .hidden_desktop{
-              visibility: hidden;
-              display: none;
-          }
-          .hidden_mobile {
-              visibility: visible;
-              display: block;
-          }
-        }
-
-        #shadersoundsystem {
-            left: 0px;
-            top: 0px;
-            z-index: -50;
-            width: 100%;
-            opacity: 0.01;
-        }
-
-
-        h2 {
-            font-family: 'Lato black', sans-serif;
-            font-size: 2.0rem;
-            text-transform: uppercase;
-            color: #111111;
-            margin-top: 4vh;
-            margin-bottom: 4vh;
-        }
-
-        .card-title {
-            font-family: 'Lato black', sans-serif;
-            color: #222222;
-            font-size: 1.5rem;
-        }
-
-        p, li {
-            font-family: 'Lato', sans-serif;
-            letter-spacing: 0.05em;
-            font-size: 1.4em;
-            color: #333333;
-            hyphens: auto;
-        }
-
-        img {
-            width:100%;
-        }
-
-        a:link {
-            color: #b2c778;
-        }
-
-        a:visited {
-            color: #b2c778;
-        }
-
-        a:hover {
-            color: silver;
-        }
-
-        a:active {
-            color: #b2c778;
-        }
-
-        .card {
-            width: 100%;
-            background-color: #5fa873;
-        }
-
-        .card-body {
-            border-style: solid;
-            border-top: 1px solid #dee2e6!important;
-            border-bottom: 1px solid #dee2e6!important;
-            border-left: 0;
-            border-right: 0;
-        }
-
-        .container {
-            background-color: #5fa873;
-            width: 100%;
-            border-left: 1px solid #dee2e6!important;
-            border-right: 1px solid #dee2e6!important;
-            margin-right: auto;
-            margin-left: auto;
-            padding: 0;
-        }
-
-        .row {
-            margin-left:0;
-            margin-right:0;
-        }
-
-        .col-12 {
-            padding-left:3vw;
-            padding-right:3vw;
-        }
-
-        .card {
-            border: 0px solid #dee2e6!important;
-        }
-
-        .fas, .fab {
-            color: white;
-            font-size: 2em;
-        }
-
-        .section, .cardcontainer {
-            margin-bottom: 5vh;
-            border-top: 1px solid #dee2e6!important;
-        }
-
-        .logo {
-            margin-left: auto;
-            margin-right: auto;
-            width: 40%;
-            display:block;
-        }
-    </style>
-</head>
-
-<body>
-<audio autoplay>
-    <source src="./audio/SubfactoryClip_Faded2.wav">
-</audio>
-
-<canvas id="hecksshader"></canvas>
-
-<div class="container">
-    <div class="row">
-        <div class="img">
-            <img src="images/230518_subfactory_flyer_0.4.webp" alt="Subfactory Banner">
-        </div>
-    </div>
-
-    <div class="cardcontainer pt-2">
-        <h2 class="text-center">Präsentiert von</h2>
-        <div class="card-group">
-            <div class="card shadow-none">
-                <div class="card-body text-center">
-                    <div class="fix_height">
-                        <h5 class="card-title">Eulachbass</h5>
-                    </div>
-                    <img class="logo" src="images/eulachbass_logo.webp" alt="Eulachbass Logo">
-                    <a href="https://eulachbass.ch/" target="_blank" class="card-link"><i class="fas fa-globe mr-2"></i></a>
-                    <a href="https://www.instagram.com/eulachbass" target="_blank" class="card-link"><i
-                            class="fab fa-instagram mr-2"></i></a>
-                    <a href="https://www.facebook.com/eulachbass/" target="_blank" class="card-link"><i
-                            class="fab fa-facebook mr-2"></i></a>
-                    <a href="https://soundcloud.com/eulachbass" target="_blank" class="card-link"><i
-                            class="fab fa-soundcloud mr-2"></i></a>
-                </div>
-            </div>
-
-            <div class="card shadow-none">
-                <div class="card-body text-center">
-                    <div class="fix_height">
-                        <h5 class="card-title">Sector B</h5>
-                    </div>
-                    <img class="logo" src="images/sectorb_logo.webp" alt="Eulachbass Logo">
-                    <a href="https://www.instagram.com/sectorbevents/" target="_blank" class="card-link"><i
-                            class="fab fa-instagram mr-2"></i></a>
-                    <a href="https://www.facebook.com/sectorbevents/" target="_blank" class="card-link"><i
-                            class="fab fa-facebook mr-2"></i></a>
-                </div>
-            </div>
-
-            <div class="card shadow-none">
-                <div class="card-body text-center">
-                    <div class="fix_height">
-                        <h5 class="card-title">Subsanity Soundystem</h5>
-                    </div>
-                    <img class="logo" src="images/subsanity_logo.webp" alt="Eulachbass Logo">
-                    <a href="https://www.instagram.com/subsanitysoundsystem" target="_blank" class="card-link"><i
-                            class="fab fa-instagram mr-2"></i></a>
-                    <a href="https://www.facebook.com/subsanitysound" target="_blank" class="card-link"><i
-                            class="fab fa-facebook mr-2"></i></a>
-                    <a href="https://soundcloud.com/user-937924022" target="_blank" class="card-link"><i
-                            class="fab fa-soundcloud mr-2"></i></a>
-                </div>
-
-            </div>
-        </div>
-    </div>
-
-    <!-- INFO -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center">Info</h2>
-            <p>
-                Streiche dir den <b>17. Juni im Kalender fett</b> an! Von 13:00 bis
-                22:00 findet auf dem Zeughausareal in Winterthur erstmalig ein Drum and
-                Bass Day Rave statt. Präsentiert werden internationale DnB Grössen wie
-                Benny Page (UK), Amoss (UK), FD (UK), und Creatures (UK). Unterstützt
-                werden sie von local DJs Delilah (Divercity), switch/case (Random) und
-                DJs aus unseren eigenen Reihen (Sector B und Eulachbass). Falls du nach
-                22:00 noch weiter möchtest, gilt dein Eintrittsbändel als free entry für
-                die Afterparty im Kraftfeld Winterthur.
-            </p>
-        </div>
-    </div>
-
-    <!-- Tickets -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center">Tickets</h2>
-            <p>
-                Tickets sind auf
-                <a href="https://embed.eventfrog.ch/de/p/party/electro/sub-factory-with-benny-page-amoss-fd-creatures-7054797958168861153.html" target="_blank">
-                    Eventfrog
-                </a>
-                verfügbar
-            </p>
-            <iframe allowpaymentrequest="true"
-                    src="https://embed.eventfrog.ch/de/p/party/electro/sub-factory-with-benny-page-amoss-fd-creatures-7054797958168861153.html?color=60BF00&infobox=0&description=0&location=0&organisator=0&sponsors=0"
-                    width="100%"
-                    height="500"
-                    style="border: 1px solid black"
-                    frameborder="0">
-            </iframe>
-        </div>
-    </div>
-
-    <!-- Vepflegung -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Verpflegung</h2>
-            <p>
-                Auf dem Gelände stehen Foodtrucks zur Verpflegung zur Verfügung. Der Truck von
-                <a href="http://www.incontropizza.ch/" target="_blank">'Incontro'</a>
-                bietet dir eine der besten Pizzen der Stadt und für vegane Köstlichkeiten kann man sich beim Truck
-                von der <a href="https://steibichuchi.ch/" target="_blank">'Steibi Chuchi'</a> verwöhnen lassen.
-            </p>
-        </div>
-    </div>
-
-    <!-- Anreise -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Anreise</h2>
-            <p>
-                Das Zeughausareal ist vom Bahnhof Winterthur einfach zu
-                Fuss oder per Bus und zu Fuss erreichbar. Zu Fuss vom Bahnhof 15
-                Minuten. Ansonsten Bus Linie 2 oder 3 Richtung Oberseen bis Haltestelle
-                Technikum und dann zu Fuss. Auf dem Gelände stehen keine Parkplätze zur
-                Verfügung.
-            </p>
-
-            <iframe style="border: 1px solid black" width="100%" height="250" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=8.732620775699617%2C47.49334170186654%2C8.736456334590914%2C47.49489482337585&amp;layer=mapnik&amp;marker=47.49411917450164%2C8.734538555145264"></iframe>
-            <br/><small><a href="https://www.openstreetmap.org/?mlat=47.49412&amp;mlon=8.73454#map=19/47.49412/8.73454">View Larger Map</a></small>
-        </div>
-    </div>
-
-    <!-- Rave Etiquette -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Rave Etiquette</h2>
-            <ul>
-                <li>Diskriminierung jeglicher art wird nicht toleriert</li>
-                <li>Respektiere die persönlichen Grenzen anderer</li>
-                <li>Pass auf dich und auf andere auf</li>
-                <li>Respektiere den Raum der anderen, um ein harmonisches Miteinander zu gewährleisten</li>
-                <li>Solltest du dich in irgendeiner Weise unwohl fühlen oder
-                    etwas beobachten, was dir nicht in Ordnung erscheint, setze dich bitte
-                    mit einem Barmitarbeiter, dem Eingangspersonal oder einem anderen
-                    Mitarbeiter in Verbindung
-                </li>
-            </ul>
-        </div>
-    </div>
-
-    <!-- Partner -->
-    <div class="row">
-        <div class="col-12 section">
-            <h2 class="text-center ">Partner:innen</h2>
-            <ul>
-                <li><a href="https://www.zeughaus1.ch/" target="_blank">ZEUGHAUS1</a></li>
-                <li><a href="https://www.kraftfeld.ch/" target="_blank">Kraftfeld Winterthur</a></li>
-                <li><a href="https://www.hakogetraenke.ch/" target="_blank">Hako Getränke</a></li>
-                <li><a href="https://www.helfereinsatz.ch/" target="_blank">Helfereinsatz.ch</a></li>
-                <li><a href="https://eventfrog.ch/de/home.html" target="_blank">Eventfrog</a></li>
-            </ul>
-        </div>
-    </div>
-</div>
-
-
-<script type="module">
-    import * as THREE from 'https://unpkg.com/three/build/three.module.js';
-
-    let camera, scene, renderer;
-    let uniforms;
-    let texture;
-    let downsample_quality = 1.;
-    init();
-    render();
-
-    function init() {
-        camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
-        scene = new THREE.Scene();
-        const geometry = new THREE.PlaneGeometry( 2, 2 );
-
-        const loader = new THREE.TextureLoader();
-        const texture = loader.load('noise.png');
-        texture.wrapS = THREE.RepeatWrapping;
-        texture.wrapT = THREE.RepeatWrapping;
-
-
-
-        uniforms = {
-            iTime: { value: 1.0 },
-            iResolution: { value: new THREE.Vector2(1.0,1.0) },
-            iMouse: { value: new THREE.Vector2(0.0,0.0) },
-            iChannel0: { value: texture },
-        };
-
-        const material = new THREE.ShaderMaterial( {
-            uniforms: uniforms,
-            vertexShader: document.getElementById( 'vertexShader' ).textContent,
-            fragmentShader: document.getElementById( 'fragmentShader' ).textContent
-        } );
-
-        const mesh = new THREE.Mesh( geometry, material );
-        scene.add( mesh );
-
-        const canvas = document.querySelector('#hecksshader');
-        renderer = new THREE.WebGLRenderer({antialias: true, canvas});
-
-        document.addEventListener( 'pointermove', onPointerMove);
-    }
-
-    function onPointerMove(event) {
-        var clientX = event.clientX;
-        var clientY = event.clientY;
-        var mouseX = clientX;
-        var mouseY = 1 - clientY;
-        uniforms[ 'iMouse' ].value = new THREE.Vector2(mouseX, mouseY);
-    }
-
-    function rendererNeedsResize(renderer) {
-        const canvas = renderer.domElement;
-        const width = canvas.clientWidth;
-        const height = canvas.clientHeight;
-        const needResize = canvas.width !== width || canvas.height !== height;
-        return true;
-    }
-
-    function render() {
-        requestAnimationFrame( render );
-
-        if ( rendererNeedsResize(renderer)) {
-            const canvas = renderer.domElement;
-            renderer.setSize(canvas.clientWidth, canvas.clientHeight, false);
-            camera.aspect = canvas.clientWidth / canvas.clientHeight;
-            camera.updateProjectionMatrix();
-            uniforms['iResolution'].value = new THREE.Vector2( canvas.clientWidth / downsample_quality, canvas.clientHeight / downsample_quality );
-        }
-
-        uniforms[ 'iTime' ].value = performance.now();
-
-        renderer.render( scene, camera );
-    }
-</script>
-</body>
-</html>