diff --git a/packages/language-select/assets/index.html b/packages/language-select/assets/index.html
index 40d6e96c3ad87e44092cc0c95613afe417c96b54..3c2b6d66a671e008550e8d421100140968757ad7 100644
--- a/packages/language-select/assets/index.html
+++ b/packages/language-select/assets/index.html
@@ -2,7 +2,7 @@
 <html>
 <head>
     <meta charset="UTF-8">
-    <script type="module" src="bundle.js"></script>
+    <script type="module" src="vpu-language-select-demo.js"></script>
     <style>
     body {
         font-family: sans;
diff --git a/packages/language-select/package.json b/packages/language-select/package.json
index db13c3dfddbc7361f85d9a5c7b159ea35c857d98..5aa037e6c305ccbb4796e28c01b51dcd8276721f 100644
--- a/packages/language-select/package.json
+++ b/packages/language-select/package.json
@@ -1,7 +1,7 @@
 {
   "name": "vpu-language-select",
   "version": "1.0.0",
-  "main": "src/index.js",
+  "main": "src/vpu-language-select.js",
   "devDependencies": {
     "karma": "^4.2.0",
     "karma-chai": "^0.1.0",
@@ -20,6 +20,7 @@
     "rollup-plugin-terser": "^5.1.1",
     "rollup-plugin-json": "^4.0.0",
     "rollup-plugin-multi-entry": "^2.1.0",
+    "rollup-plugin-delete": "^1.1.0",
     "i18next-scanner": "^2.10.2",
     "vpu-common": "file:./vendor/common"
   },
diff --git a/packages/language-select/rollup.config.js b/packages/language-select/rollup.config.js
index 9de7bfa684e409913b939b5e4f23797634dadfc8..d970fac607bd6332d785b1342a4840f3f475dacb 100644
--- a/packages/language-select/rollup.config.js
+++ b/packages/language-select/rollup.config.js
@@ -7,18 +7,25 @@ import json from 'rollup-plugin-json';
 import serve from 'rollup-plugin-serve';
 import multiEntry from 'rollup-plugin-multi-entry';
 import consts from 'rollup-plugin-consts';
+import del from 'rollup-plugin-delete';
 
 const build = (typeof process.env.BUILD !== 'undefined') ? process.env.BUILD : 'local';
 console.log("build: " + build);
 
 export default {
-    input: (build != 'test') ? 'src/demo.js' : 'test/**/*.js',
+    input: (build != 'test') ? ['src/vpu-language-select.js', 'src/vpu-language-select-demo.js'] : 'test/**/*.js',
     output: {
-        file: 'dist/bundle.js',
-        format: 'esm'
+        dir: 'dist',
+        entryFileNames: '[name].js',
+        chunkFileNames: 'shared/[name].[hash].[format].js',
+        format: 'esm',
+        sourcemap: true
     },
     plugins: [
-        multiEntry(),
+        del({
+            targets: 'dist/*'
+        }),
+        (build == 'test') ? multiEntry() : false,
         consts({
             environment: build,
         }),
diff --git a/packages/language-select/src/demo.js b/packages/language-select/src/demo.js
index faab804e6d105207c1646061c08ed00a7a8001c7..372555e26851f19f50a70e59c992c022301bc8fe 100644
--- a/packages/language-select/src/demo.js
+++ b/packages/language-select/src/demo.js
@@ -1,38 +1 @@
-import {html, LitElement} from 'lit-element';
-import './language-select.js';
-import * as commonUtils from 'vpu-common/utils';
-
-class LanguageSelectDemo extends LitElement {
-
-    constructor() {
-        super();
-        this.lang = 'de';
-        this.handleChange =  this.handleChange.bind(this);
-    }
-
-    static get properties() {
-        return {
-            lang: {type: String},
-        };
-    }
-
-    handleChange(e) {
-        this.lang = e.detail.lang;
-    }
-
-    connectedCallback() {
-        super.connectedCallback();
-        window.addEventListener('vpu-language-changed', this.handleChange);
-    }
-
-    disconnectedCallback() {
-        window.removeEventListener('vpu-language-changed', this.handleChange);
-        super.disconnectedCallback();
-    }
-
-    render() {
-        return html`${this.lang}`;
-    }
-}
-
-commonUtils.defineCustomElement('vpu-language-select-demo', LanguageSelectDemo);
+import './vpu-language-select-demo.js';
\ No newline at end of file
diff --git a/packages/language-select/src/index.js b/packages/language-select/src/index.js
deleted file mode 100644
index 0792a1f13f8ed433cd4c1dc3d5e00338fc70fc24..0000000000000000000000000000000000000000
--- a/packages/language-select/src/index.js
+++ /dev/null
@@ -1 +0,0 @@
-import './language-select.js';
diff --git a/packages/language-select/src/vpu-language-select-demo.js b/packages/language-select/src/vpu-language-select-demo.js
new file mode 100644
index 0000000000000000000000000000000000000000..d5d7ea769eafa63c90f05cb1a0c81a429475173d
--- /dev/null
+++ b/packages/language-select/src/vpu-language-select-demo.js
@@ -0,0 +1,38 @@
+import {html, LitElement} from 'lit-element';
+import './vpu-language-select.js';
+import * as commonUtils from 'vpu-common/utils';
+
+class LanguageSelectDemo extends LitElement {
+
+    constructor() {
+        super();
+        this.lang = 'de';
+        this.handleChange =  this.handleChange.bind(this);
+    }
+
+    static get properties() {
+        return {
+            lang: {type: String},
+        };
+    }
+
+    handleChange(e) {
+        this.lang = e.detail.lang;
+    }
+
+    connectedCallback() {
+        super.connectedCallback();
+        window.addEventListener('vpu-language-changed', this.handleChange);
+    }
+
+    disconnectedCallback() {
+        window.removeEventListener('vpu-language-changed', this.handleChange);
+        super.disconnectedCallback();
+    }
+
+    render() {
+        return html`${this.lang}`;
+    }
+}
+
+commonUtils.defineCustomElement('vpu-language-select-demo', LanguageSelectDemo);
diff --git a/packages/language-select/src/language-select.js b/packages/language-select/src/vpu-language-select.js
similarity index 100%
rename from packages/language-select/src/language-select.js
rename to packages/language-select/src/vpu-language-select.js
diff --git a/packages/language-select/test/unit.js b/packages/language-select/test/unit.js
index 1ac3cc0c04b54d1a7b7dbbf56129f3e9191e0e36..b79ca875a906147e1621e9016f6ea09b4f6644a4 100644
--- a/packages/language-select/test/unit.js
+++ b/packages/language-select/test/unit.js
@@ -1,4 +1,4 @@
-import '../src/language-select.js';
+import '../src/vpu-language-select.js';
 import '../src/demo.js';
 
 describe('vpu-language-select basics', () => {