diff --git a/packages/qr-code-scanner/src/qr-code-scanner.js b/packages/qr-code-scanner/src/qr-code-scanner.js
index c1ad065ef2f5b49e35d8dba2feeca78b96ac7f0d..9dd915c28d8ba28dbfd543c270b0254ba8d8d889 100644
--- a/packages/qr-code-scanner/src/qr-code-scanner.js
+++ b/packages/qr-code-scanner/src/qr-code-scanner.js
@@ -19,6 +19,7 @@ export class QrCodeScanner extends DBPLitElement {
         this.askPermission = false;
         this.videoRunning = false;
         this.notSupported = false;
+        this.front = false;
 
         this.scanIsOk = true;
         this.showOutput = true;
@@ -40,6 +41,7 @@ export class QrCodeScanner extends DBPLitElement {
             askPermission: { type: Boolean, attribute: false },
             videoRunning: { type: Boolean, attribute: false },
             notSupported: { type: Boolean, attribute: false },
+            front: { type: Boolean, attribute: false },
             scanIsOk: { type: Boolean, attribute: true },
             showOutput: { type: Boolean, attribute: true }
         };
@@ -51,17 +53,6 @@ export class QrCodeScanner extends DBPLitElement {
         const that = this;
 
         this.updateComplete.then(()=>{
-
-            // Check for support & cams
-           if (!!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
-               navigator.mozGetUserMedia || navigator.msGetUserMedia) && !(!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices)) {
-               console.log("Everything works");
-               this.notSupported = false;
-           } else {
-               this.notSupported = true;
-               console.log("not supportet");
-           }
-
            let devices_map = new Map();
 
            const that = this;
@@ -73,10 +64,16 @@ export class QrCodeScanner extends DBPLitElement {
                             " id = " + device.deviceId);
                         if(device.kind === 'videoinput') {
                             // TODO Ãœbersetzen
-                            devices_map.set(device.deviceId, device.label || 'camera ' + (devices_map.size + 1));
+                            let id = device.deviceId;
+                            if ( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
+                               devices_map.set('user', 'Frontcamera');
+                               devices_map.set('environment', 'Backcamera');
+                            } else {
+                                devices_map.set(device.deviceId ? device.deviceId : true, device.label || 'camera ' + (devices_map.size + 1));
+                            }
                         }
                     });
-                    if(devices_map.size < 1) {
+                    if (devices_map.size < 1) {
                         that.notSupported = true;
                     }
                     for (let [id, label] of devices_map)
@@ -86,6 +83,7 @@ export class QrCodeScanner extends DBPLitElement {
                         opt.text = label;
                         that._('#videoSource').appendChild(opt);
                     }
+                    console.log(devices_map);
                 })
                 .catch(function(err) {
                     console.log(err.name + ": " + err.message);
@@ -126,8 +124,10 @@ export class QrCodeScanner extends DBPLitElement {
         }
 
         const that = this;
-        // Use facingMode: environment to attemt to get the front camera on phones
-        navigator.mediaDevices.getUserMedia({ video: { deviceId: this._('#videoSource').val } }).then(function(stream) {
+        if ( this._('#videoSource').val === 'user') {
+            this.front = true;
+        }
+        navigator.mediaDevices.getUserMedia({ video:  { deviceId: this._('#videoSource').val, facingMode: (this.front ? "user" : "environment") } }).then(function(stream) {
             video.srcObject = stream;
             video.setAttribute("playsinline", true); // required to tell iOS safari we don't want fullscreen
             video.play();
@@ -204,15 +204,8 @@ export class QrCodeScanner extends DBPLitElement {
             ${commonStyles.getThemeCSS()}
             ${commonStyles.getGeneralCSS()}
             ${commonStyles.getSelect2CSS()}
+            ${commonStyles.getButtonCSS()}
             
-             body {
-              font-family: 'Ropa Sans', sans-serif;
-              color: #333;
-              max-width: 640px;
-              margin: 0 auto;
-              position: relative;
-            }
-
             #loadingMessage {
               text-align: center;
               padding: 40px;
@@ -256,11 +249,11 @@ export class QrCodeScanner extends DBPLitElement {
                     <div class="${classMap({hidden: this.notSupported})}">
                     
                         <div class="button-wrapper border">
+                            <button class="start button is-primary ${classMap({hidden: this.videoRunning})}" @click="${() => this.qrCodeScannerInit()}">start scanning</button>
+                            <button class="stop button is-primary ${classMap({hidden: !this.videoRunning})}" @click="${() => this.stopScanning()}">stop scanning</button>
                             <span class="select">
                                 <select id="videoSource"></select>
                             </span>
-                            <button class="start button is-primary ${classMap({hidden: this.videoRunning})}" @click="${() => this.qrCodeScannerInit()}">start scanning</button>
-                            <button class="stop button is-primary ${classMap({hidden: !this.videoRunning})}" @click="${() => this.stopScanning()}">stop scanning</button>
                         </div>
                         <div id="loadingMessage" class="${classMap({hidden: !this.askPermission})}">🎥 Unable to access video stream (please make sure you have a webcam enabled)</div>
                         <canvas id="canvas" hidden></canvas>