diff --git a/toolkit-showcase/assets/check-in-place-select.metadata.json b/toolkit-showcase/assets/check-in-place-select.metadata.json
index 9edd3ffbf4bb8b6dee638fd492b4c8ef1f1f0c25..cc76f8534372f6f13e4807a9fd6f55f2331987a0 100644
--- a/toolkit-showcase/assets/check-in-place-select.metadata.json
+++ b/toolkit-showcase/assets/check-in-place-select.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Ort Web Component",
     "en": "Check-in place select web component"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/common.metadata.json b/toolkit-showcase/assets/common.metadata.json
index 92ca074f875e09988177f58a4cc4761e56ad88ef..6316c87ac3456393453e3130b4edd72671b0c3f5 100644
--- a/toolkit-showcase/assets/common.metadata.json
+++ b/toolkit-showcase/assets/common.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Gemeinsame Web Components",
     "en": "Common web components"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/data-table-view.metadata.json b/toolkit-showcase/assets/data-table-view.metadata.json
index df4855a91973e65b5d055e6216ae13fe56c65720..ad646391847cdcbbf977a84f2ae14e1198a22af8 100644
--- a/toolkit-showcase/assets/data-table-view.metadata.json
+++ b/toolkit-showcase/assets/data-table-view.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "DataTable: mit Daten, Paginierung, Such- und Exportfunktion",
     "en": "DataTable: with data, paging and searching AND exportable"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs b/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs
index e61f1237c63f36e3ad693c28d63eb4133bbed8be..3ec8d00f78b36bc352dd29034784dd46a44472a8 100644
--- a/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs
+++ b/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs
@@ -53,14 +53,23 @@
 </head>
 
 <body>
-<<%= name %>
-    lang="de"
-    src="<%= getUrl(name + '.topic.metadata.json') %>"
-    entry-point-url="<%= entryPointURL %>"
-    base-path="<%= getUrl('') %>"
-    keycloak-config='{"url": "<%= keyCloakBaseURL %>", "realm": "tugraz", "clientId": "<%= keyCloakClientId %>", "silentCheckSsoRedirectUri": "<%= getUrl('silent-check-sso.html') %>"}'
-    matomo-url="<%= matomoUrl %>" matomo-site-id="<%= matomoSiteId %>"
-><dbp-loading-spinner></dbp-loading-spinner></<%= name %>>
+<dbp-provider id="root"
+              lang="de" entry-point-url="<%= entryPointURL %>"
+              nextcloud-web-app-password-url="<%= nextcloudWebAppPasswordURL %>"
+              nextcloud-webdav-url="<%= nextcloudWebDavURL %>"
+              nextcloud-name="<%= nextcloudName %>"
+              nextcloud-file-url="<%= nextcloudFileURL %>">
+    <<%= name %>
+        src="<%= getUrl(name + '.topic.metadata.json') %>"
+        base-path="<%= getUrl('') %>"
+        keycloak-config='{"url": "<%= keyCloakBaseURL %>", "realm": "tugraz", "clientId": "<%= keyCloakClientId %>", "silentCheckSsoRedirectUri": "<%= getUrl('silent-check-sso.html') %>"}'
+        matomo-url="<%= matomoUrl %>" matomo-site-id="<%= matomoSiteId %>"
+        git-info='<%= buildInfo.info %>'
+        build-url='<%= buildInfo.url %>'
+        build-time='<%= buildInfo.time %>'
+        env='<%= buildInfo.env %>'
+    ><dbp-loading-spinner></dbp-loading-spinner></<%= name %>>
+</dbp-provider>
 
 <!-- Error handling for too old browsers -->
 <script src="<%= getPrivateUrl('browser-check.js') %>" defer></script>
diff --git a/toolkit-showcase/assets/file-handling.metadata.json b/toolkit-showcase/assets/file-handling.metadata.json
index 4047b9db334547b6b5abd30c17e7a53bfa59457c..7dbd87f8370ffbebf6a5be538b4fc63b4f3edbc8 100644
--- a/toolkit-showcase/assets/file-handling.metadata.json
+++ b/toolkit-showcase/assets/file-handling.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Web Componente für file sink und file source. Für mehrere verschiedenen Quellen.",
     "en": "Web components for file sink and file source. For several different sources."
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url,nextcloud-web-app-password-url:nextcloud-web-app-password-url,nextcloud-webdav-url:nextcloud-webdav-url,nextcloud-name:nextcloud-name,nextcloud-file-url:nextcloud-file-url,show-nextcloud-file-picker:show-nextcloud-file-picker"
 }
diff --git a/toolkit-showcase/assets/knowledge-base-web-page-element-view.metadata.json b/toolkit-showcase/assets/knowledge-base-web-page-element-view.metadata.json
index a43a6b0405ec279937136b0bf4711f370a256db2..46a1d01136bd085253ef85cdcc42e356ede21dbc 100644
--- a/toolkit-showcase/assets/knowledge-base-web-page-element-view.metadata.json
+++ b/toolkit-showcase/assets/knowledge-base-web-page-element-view.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Erlaubt das Einfügen von Webinhalten",
     "en": "Allows the inserting of web content"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/language-select.metadata.json b/toolkit-showcase/assets/language-select.metadata.json
index aae8a6b3cb100e7584cd0979914b5d94daac0e1a..21a66e2d24296281249f02479515796d59db908d 100644
--- a/toolkit-showcase/assets/language-select.metadata.json
+++ b/toolkit-showcase/assets/language-select.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Sprachauswahl Web Component",
     "en": "Language select web component"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/matomo.metadata.json b/toolkit-showcase/assets/matomo.metadata.json
index 9c0dc18a99cb39fc0b10240372d88e3aa32be914..6e472d64e71e7c4336c5fdd79caa99b6d1f87c70 100644
--- a/toolkit-showcase/assets/matomo.metadata.json
+++ b/toolkit-showcase/assets/matomo.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Matomo Web Component",
     "en": "Matomo web component"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/notification.metadata.json b/toolkit-showcase/assets/notification.metadata.json
index 4798122c0d01cb7d79799b0168da2a438b830771..06d42c717f798117944e5e0a90be036274d894ab 100644
--- a/toolkit-showcase/assets/notification.metadata.json
+++ b/toolkit-showcase/assets/notification.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Zeigt eine Benachrichtigung an",
     "en": "Shows a message"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/person-profile.metadata.json b/toolkit-showcase/assets/person-profile.metadata.json
index 047007404145d14c0284baeefc2c23e9ca77dcc5..93e534167268e333dea21a4645e382c3d7c38943 100644
--- a/toolkit-showcase/assets/person-profile.metadata.json
+++ b/toolkit-showcase/assets/person-profile.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Gemeinsame Web Components",
     "en": "Person profile web components"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/person-select.metadata.json b/toolkit-showcase/assets/person-select.metadata.json
index 4321c5bb2ae0492bcd5963013b6b8c4f9a65d012..3c67077d64be87597189cea28172fa6bb1c948b5 100644
--- a/toolkit-showcase/assets/person-select.metadata.json
+++ b/toolkit-showcase/assets/person-select.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Erlaubt das Suchen von Personen",
     "en": "Allows searching for persons"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/qr-code-scanner.metadata.json b/toolkit-showcase/assets/qr-code-scanner.metadata.json
index 18a0fa4e481297a6f518bec70791be9ed0848afe..c58d7eda4684e958ce73de0507d6007dfa796ee4 100644
--- a/toolkit-showcase/assets/qr-code-scanner.metadata.json
+++ b/toolkit-showcase/assets/qr-code-scanner.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Scannt Qr Codes",
     "en": "Scans Qr Codes"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/rollup.config.js b/toolkit-showcase/rollup.config.js
index f0ea097f0b9602c1268efa984685568e71266b24..73f47a9d64b4d8dbe57db35851980cf176e31b52 100644
--- a/toolkit-showcase/rollup.config.js
+++ b/toolkit-showcase/rollup.config.js
@@ -9,6 +9,7 @@ import json from '@rollup/plugin-json';
 import replace from "@rollup/plugin-replace";
 import serve from 'rollup-plugin-serve';
 import urlPlugin from "@rollup/plugin-url";
+// TODO: remove consts if "environment" isn't needed because "getAPiUrl" is removed
 import consts from 'rollup-plugin-consts';
 import license from 'rollup-plugin-license';
 import del from 'rollup-plugin-delete';
@@ -164,14 +165,9 @@ export default (async () => {return {
         del({
           targets: 'dist/*'
         }),
+        // TODO: remove consts if "environment" isn't needed because "getAPiUrl" is removed
         consts({
           environment: build,
-          buildinfo: getBuildInfo(),
-          nextcloudWebAppPasswordURL: nextcloudWebAppPasswordURL,
-          nextcloudWebDavURL: nextcloudWebDavURL,
-          nextcloudBaseURL: nextcloudBaseURL,
-          nextcloudFileURL: nextcloudFileURL,
-          nextcloudName: nextcloudName,
         }),
         emitEJS({
           src: 'assets',
@@ -186,6 +182,10 @@ export default (async () => {return {
             name: pkg.name,
             entryPointURL: entryPointURL,
             nextcloudBaseURL: nextcloudBaseURL,
+            nextcloudWebAppPasswordURL: nextcloudWebAppPasswordURL,
+            nextcloudWebDavURL: nextcloudWebDavURL,
+            nextcloudFileURL: nextcloudFileURL,
+            nextcloudName: nextcloudName,
             keyCloakServer: keyCloakServer,
             keyCloakBaseURL: keyCloakBaseURL,
             keyCloakClientId: keyCloakClientId,
diff --git a/toolkit-showcase/src/dbp-check-in-place-select-demo-activity.js b/toolkit-showcase/src/dbp-check-in-place-select-demo-activity.js
index 00d009a1861eebfd87685a7870bd30e46f44770e..764d89bef44463f5e61fc20c65fd4cc3e4abfad9 100644
--- a/toolkit-showcase/src/dbp-check-in-place-select-demo-activity.js
+++ b/toolkit-showcase/src/dbp-check-in-place-select-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/check-in-place-select/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpActivityNameDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-check-in-place-select-demo': CheckInPlaceSelectDemo,
@@ -16,8 +17,8 @@ class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-common-demo-activity.js b/toolkit-showcase/src/dbp-common-demo-activity.js
index ecb7d7245ed711555e495e56423edd070f59a966..7214dab344aeb346c082f68ac1d342ddae0e8998 100644
--- a/toolkit-showcase/src/dbp-common-demo-activity.js
+++ b/toolkit-showcase/src/dbp-common-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/common/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpCommonDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpCommonDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-common-demo': DbpCommonDemo,
@@ -16,8 +17,8 @@ class DbpCommonDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-data-table-view-demo-activity.js b/toolkit-showcase/src/dbp-data-table-view-demo-activity.js
index 8d723ef2895d0aee70ee8d0347ced5750a337dc0..5bff3ed1b59f9da9fc78dce5195cb08b751be3cd 100644
--- a/toolkit-showcase/src/dbp-data-table-view-demo-activity.js
+++ b/toolkit-showcase/src/dbp-data-table-view-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/data-table-view/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) { //TODO
+class DbpActivityNameDemoActivity extends ScopedElementsMixin(AdapterLitElement) { //TODO
     static get scopedElements() {
         return {
             'dbp-data-table-view-demo': DataTableViewDemo,
@@ -16,8 +17,8 @@ class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) { //TO
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-demo-template.js b/toolkit-showcase/src/dbp-demo-template.js
index 0d2989452eaa134f2916614f9dc28b962bcaf49c..fc80b919841b3a0d7b04e587eb4f38ab85c9d14d 100644
--- a/toolkit-showcase/src/dbp-demo-template.js
+++ b/toolkit-showcase/src/dbp-demo-template.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 // import readme from '@dbp-toolkit/class-name/README.md'; TODO
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) { //TODO
+class DbpActivityNameDemoActivity extends ScopedElementsMixin(AdapterLitElement) { //TODO
     static get scopedElements() {
         return {
             // TODO
@@ -17,8 +18,8 @@ class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) { //TO
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-file-handling-demo-activity.js b/toolkit-showcase/src/dbp-file-handling-demo-activity.js
index f748a7f5d8487bdf367e21f8d445711734fd6df5..ab4657e67faf6e126c907be94329c758636a9ca7 100644
--- a/toolkit-showcase/src/dbp-file-handling-demo-activity.js
+++ b/toolkit-showcase/src/dbp-file-handling-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/file-handling/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpFileHandlingDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpFileHandlingDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-file-handling-demo': FileSourceDemo,
@@ -16,8 +17,8 @@ class DbpFileHandlingDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-knowledge-base-web-page-element-view-demo-activity.js b/toolkit-showcase/src/dbp-knowledge-base-web-page-element-view-demo-activity.js
index f7549313d520c86918a95b6947ca70050bfeb604..419766d0be4890f4198243bfbb6d4e35a53fd1ac 100644
--- a/toolkit-showcase/src/dbp-knowledge-base-web-page-element-view-demo-activity.js
+++ b/toolkit-showcase/src/dbp-knowledge-base-web-page-element-view-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/knowledge-base-web-page-element-view/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class KnowledgeBaseWebPageElementViewDemoActivity extends ScopedElementsMixin(LitElement) {
+class KnowledgeBaseWebPageElementViewDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-knowledge-base-web-page-element-view-demo': KnowledgeBaseWebPageElementViewDemo,
@@ -16,8 +17,8 @@ class KnowledgeBaseWebPageElementViewDemoActivity extends ScopedElementsMixin(Li
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-language-select-demo-activity.js b/toolkit-showcase/src/dbp-language-select-demo-activity.js
index fec163752f51fbaebbaa8e4094c8732f31cac8c6..f9fb39ec1896cab6a0a651ee94fa56dbc29772ba 100644
--- a/toolkit-showcase/src/dbp-language-select-demo-activity.js
+++ b/toolkit-showcase/src/dbp-language-select-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/language-select/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpLanguageSelectDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpLanguageSelectDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-language-select-demo': LanguageSelectDemo,
@@ -16,8 +17,8 @@ class DbpLanguageSelectDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-matomo-demo-activity.js b/toolkit-showcase/src/dbp-matomo-demo-activity.js
index 07a3b648f640ff4ca27f7068c2ec5acd4715f069..72a3b9ffd8b6ac1d856fa0053f61874fa41fe7fe 100644
--- a/toolkit-showcase/src/dbp-matomo-demo-activity.js
+++ b/toolkit-showcase/src/dbp-matomo-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/matomo/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpMatomoDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpMatomoDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-matomo-demo': MatomoDemo,
@@ -16,8 +17,8 @@ class DbpMatomoDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-notification-demo-activity.js b/toolkit-showcase/src/dbp-notification-demo-activity.js
index 77523c03e333be83ab8d05766ced82c30aec4d73..a07261bcb7554d49d29e6db7df425f7e34240ada 100644
--- a/toolkit-showcase/src/dbp-notification-demo-activity.js
+++ b/toolkit-showcase/src/dbp-notification-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/notification/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpNotificationDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpNotificationDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-notification-demo': NotificationDemo,
@@ -16,8 +17,8 @@ class DbpNotificationDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-person-profile-demo-activity.js b/toolkit-showcase/src/dbp-person-profile-demo-activity.js
index 715a1ac53babb462a395d0e2bd620bf9a5b5f91b..9721483184335339d7c8aba2ab86da131aa40f09 100644
--- a/toolkit-showcase/src/dbp-person-profile-demo-activity.js
+++ b/toolkit-showcase/src/dbp-person-profile-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/person-profile/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpPersonProfileDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpPersonProfileDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-person-profile-demo': PersonProfileDemo,
@@ -16,8 +17,8 @@ class DbpPersonProfileDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-person-select-demo-activity.js b/toolkit-showcase/src/dbp-person-select-demo-activity.js
index 41ffb9bb71dea1d4ee2fa72cc6707cbefb581af8..57d147f60a5de0afd242ad87eaf9eb75330eaac6 100644
--- a/toolkit-showcase/src/dbp-person-select-demo-activity.js
+++ b/toolkit-showcase/src/dbp-person-select-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/person-select/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpPersonSelectDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpPersonSelectDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
           'dbp-person-select-demo': PersonSelectDemo,
@@ -16,8 +17,8 @@ class DbpPersonSelectDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-qr-code-scanner-demo-activity.js b/toolkit-showcase/src/dbp-qr-code-scanner-demo-activity.js
index 15a02feef78598e0d7772f957cbd2357f8fc36f5..45f4684920ca5cc469e7c08d5e4d13465d56cfff 100644
--- a/toolkit-showcase/src/dbp-qr-code-scanner-demo-activity.js
+++ b/toolkit-showcase/src/dbp-qr-code-scanner-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/qr-code-scanner/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from './styles';
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpQrCodeScannerDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpQrCodeScannerDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-qr-code-scanner-demo': QrCodeScannerDemo,
@@ -16,8 +17,8 @@ class DbpQrCodeScannerDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-toolkit-showcase.js b/toolkit-showcase/src/dbp-toolkit-showcase.js
index 89c224bbe6053071aa7471c359d34a10ab82f2b7..3d2bde72e5e70e10403e4332ddf4a5ec8fdeb532 100644
--- a/toolkit-showcase/src/dbp-toolkit-showcase.js
+++ b/toolkit-showcase/src/dbp-toolkit-showcase.js
@@ -1,4 +1,7 @@
 import {AppShell} from '@dbp-toolkit/app-shell';
 import * as commonUtils from '@dbp-toolkit/common/utils';
+import {Provider} from '@dbp-toolkit/provider';
 
+// It's important that the Provider is created before the AppShell, so the AppShell can subscribe to the Provider
+commonUtils.defineCustomElement('dbp-provider', Provider);
 commonUtils.defineCustomElement('dbp-toolkit-showcase', AppShell);