diff --git a/packages/qr-code-scanner/src/dbp-qr-code-scanner-demo.js b/packages/qr-code-scanner/src/dbp-qr-code-scanner-demo.js
index 7f97c4624bda928b720124c8e173c36b7044a1e3..5f46d87160e92e3bbb527130425e7fa7ac63e358 100644
--- a/packages/qr-code-scanner/src/dbp-qr-code-scanner-demo.js
+++ b/packages/qr-code-scanner/src/dbp-qr-code-scanner-demo.js
@@ -49,7 +49,7 @@ class QrCodeScannerDemo extends ScopedElementsMixin(LitElement) {
                 <div class="container">
                     <div class="columns is-centered">
                         <div class="column">
-                            <dbp-qr-code-scanner clip-mask show-output lang="${this.lang}"></dbp-qr-code-scanner>
+                            <dbp-qr-code-scanner show-output lang="${this.lang}"></dbp-qr-code-scanner>
                         </div>
                     </div>
                 </div>
diff --git a/packages/qr-code-scanner/src/qr-code-scanner.js b/packages/qr-code-scanner/src/qr-code-scanner.js
index 35464b4233b1c78a7d91b97ec4284d9cf76b752c..fb0b64b2d3b14b203e2f34bf9bba9bdc72711e6f 100644
--- a/packages/qr-code-scanner/src/qr-code-scanner.js
+++ b/packages/qr-code-scanner/src/qr-code-scanner.js
@@ -72,15 +72,13 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
         super();
         this.lang = 'de';
 
-        this.askPermission = false;
-        this.videoRunning = false;
-        this.front = false;
-        this.loading = false;
+        this._askPermission = false;
+        this._loading = false;
 
         this.showOutput = false;
         this.stopScan = false;
 
-        this.activeCamera = '';
+        this._activeCamera = '';
 
         this._devices = new Map();
         this._requestID = null;
@@ -89,6 +87,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
         this.matchRegex = '.*';
         this._videoElement = null;
         this._outputData = null;
+        this._videoRunning = false;
     }
 
     static get scopedElements() {
@@ -104,17 +103,16 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
     static get properties() {
         return {
             lang: { type: String },
-            askPermission: { type: Boolean, attribute: false },
-            videoRunning: { type: Boolean, attribute: false },
-            front: { type: Boolean, attribute: false },
-            loading: { type: Boolean, attribute: false },
             showOutput: { type: Boolean, attribute: 'show-output' },
             stopScan: { type: Boolean, attribute: 'stop-scan' },
-            activeCamera: { type: String, attribute: false },
+            matchRegex: { type: String, attribute: 'match-regex' },
+            _activeCamera: { type: String, attribute: false },
+            _loading: { type: Boolean, attribute: false },
             _devices: { type: Map, attribute: false},
             _loadingMessage: { type: String, attribute: false },
-            matchRegex: { type: String, attribute: 'match-regex' },
             _outputData: { type: String, attribute: false },
+            _askPermission: { type: Boolean, attribute: false },
+            _videoRunning: { type: Boolean, attribute: false },
         };
     }
 
@@ -124,7 +122,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
 
         this.updateComplete.then(async ()=>{
             let devices = await getVideoDevices();
-            this.activeCamera = getPrimaryDevice(devices) || '';
+            this._activeCamera = getPrimaryDevice(devices) || '';
             this._devices = devices;
 
             if (!this.stopScan) {
@@ -166,7 +164,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
         this.stopScanning();
 
         this.stopScan = false;
-        this.askPermission = true;
+        this._askPermission = true;
 
         let video = document.createElement("video");
         let canvasElement = this._("#canvas");
@@ -176,7 +174,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
         let okColor = getComputedStyle(this).getPropertyValue('--dbp-success-bg-color');
         let notOkColor = getComputedStyle(this).getPropertyValue('--dbp-danger-bg-color');
 
-        let videoId = this.activeCamera;
+        let videoId = this._activeCamera;
         let constraint = { video:  { deviceId: videoId } };
         if ( (videoId === 'environment' || videoId === '') ) {
             console.log("vid:", videoId);
@@ -193,13 +191,13 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
         } catch(e) {
             console.log(e);
         }
-        this.askPermission = false;
+        this._askPermission = false;
 
         if (stream !== null) {
             video.srcObject = stream;
             video.setAttribute("playsinline", true); // required to tell iOS safari we don't want fullscreen
             video.play();
-            this.videoRunning = true;
+            this._videoRunning = true;
 
             if (this._requestID !== null) {
                 cancelAnimationFrame(this._requestID);
@@ -207,7 +205,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
             }
             console.assert(this._requestID === null);
             this._videoElement = video;
-            this.loading = true;
+            this._loading = true;
             this._loadingMessage = i18n.t('loading-video');
             this._requestID = requestAnimationFrame(tick);
         }
@@ -220,7 +218,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
         function tick() {
             that._requestID = null;
             if (video.readyState === video.HAVE_ENOUGH_DATA) {
-                that.loading = false;
+                that._loading = false;
 
                 canvasElement.height = video.videoHeight;
                 canvasElement.width = video.videoWidth;
@@ -309,7 +307,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
      * @param e
      */
     updateSource(e) {
-        this.activeCamera = e.srcElement.value;
+        this._activeCamera = e.srcElement.value;
         this.stopScanning();
         this.startScanning();
         console.log("Changed Media");
@@ -333,11 +331,11 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
             this._requestID = null;
         }
 
-        this.askPermission = false;
-        this.videoRunning = false;
-        this.loading = false;
+        this._askPermission = false;
+        this._videoRunning = false;
+        this._loading = false;
 
-        this._loadingMessage = i18n.t('finished-scan');
+        this._loadingMessage = '';
     }
 
     /**
@@ -433,7 +431,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
 
     render() {
         let hasDevices = this._devices.size > 0;
-        let showCanvas = this.videoRunning && !this.askPermission && !this.loading;
+        let showCanvas = this._videoRunning && !this._askPermission && !this._loading;
 
         return html`
             <div class="columns">
@@ -443,8 +441,8 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
                     
                         
                         <div class="button-wrapper">
-                            <button class="start button is-primary ${classMap({hidden: this.videoRunning})}" @click="${() => this.startScanning()}" title="${i18n.t('start-scan')}">${i18n.t('start-scan')}</button>
-                            <button class="stop button is-primary ${classMap({hidden: !this.videoRunning})}" @click="${() => this.stopScanning()}" title="${i18n.t('stop-scan')}">${i18n.t('stop-scan')}</button>
+                            <button class="start button is-primary ${classMap({hidden: this._videoRunning})}" @click="${() => this.startScanning()}" title="${i18n.t('start-scan')}">${i18n.t('start-scan')}</button>
+                            <button class="stop button is-primary ${classMap({hidden: !this._videoRunning})}" @click="${() => this.stopScanning()}" title="${i18n.t('stop-scan')}">${i18n.t('stop-scan')}</button>
                             
                             <select id="videoSource" class="button" @change=${this.updateSource}>
                                 ${Array.from(this._devices).map(item => html`<option value="${item[0]}">${item[1]}</option>`)}
@@ -454,7 +452,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
                        
                         <div id="loadingMessage" class="${classMap({hidden: showCanvas})}">
                             <div class="wrapper-msg">
-                                <dbp-mini-spinner class="spinner ${classMap({hidden: !this.loading})}"></dbp-mini-spinner>
+                                <dbp-mini-spinner class="spinner ${classMap({hidden: !this._loading})}"></dbp-mini-spinner>
                                 <div class="loadingMsg">${this._loadingMessage}</div>
                             </div>
                        </div>