diff --git a/core/js/dist/main.js b/core/js/dist/main.js
index d8d1cb6c0b13a8973b88202c9b8fe27fcbcead60..fc9033ea988e89daa2a5b1fb18cd02bd361f788f 100644
Binary files a/core/js/dist/main.js and b/core/js/dist/main.js differ
diff --git a/core/js/dist/main.js.map b/core/js/dist/main.js.map
index e1c5b4c5579b7a74fd4f4ef2f241c8bee457f981..f9ce82afa6b3ad0b42b65cb5c84f41ef19502e62 100644
Binary files a/core/js/dist/main.js.map and b/core/js/dist/main.js.map differ
diff --git a/core/js/js.js b/core/js/js.js
index bc4a8413e0b30672a91ffe2f871e17b7e1b698ac..ec2f53d332f71a1a0e9f887c8c92f487ef1bb01e 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -18,16 +18,6 @@ if (typeof oc_webroot === "undefined") {
 		oc_webroot = oc_webroot.substr(0, oc_webroot.lastIndexOf('/'));
 	}
 }
-if (typeof console === "undefined" || typeof console.log === "undefined") {
-	if (!window.console) {
-		window.console = {};
-	}
-	var noOp = function() { };
-	var methods = ['log', 'debug', 'warn', 'info', 'error', 'assert', 'time', 'timeEnd'];
-	for (var i = 0; i < methods.length; i++) {
-		console[methods[i]] = noOp;
-	}
-}
 
 /** @namespace OCP */
 var OCP = Object.assign({}, window.OCP);
@@ -2308,14 +2298,3 @@ OC.set=function(name, value) {
 	}
 	context[tail]=value;
 };
-
-// fix device width on windows phone
-(function() {
-	if ("-ms-user-select" in document.documentElement.style && navigator.userAgent.match(/IEMobile\/10\.0/)) {
-		var msViewportStyle = document.createElement("style");
-		msViewportStyle.appendChild(
-			document.createTextNode("@-ms-viewport{width:auto!important}")
-		);
-		document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
-	}
-})();
diff --git a/core/src/Polyfill/console.js b/core/src/Polyfill/console.js
new file mode 100644
index 0000000000000000000000000000000000000000..72a1165e43777eaa3090d428823a489a15cdf76d
--- /dev/null
+++ b/core/src/Polyfill/console.js
@@ -0,0 +1,31 @@
+/*
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (typeof console === "undefined" || typeof console.log === "undefined") {
+	if (!window.console) {
+		window.console = {};
+	}
+	const noOp = () => {};
+	const methods = ['log', 'debug', 'warn', 'info', 'error', 'assert', 'time', 'timeEnd'];
+	for (var i = 0; i < methods.length; i++) {
+		console[methods[i]] = noOp;
+	}
+}
diff --git a/core/src/Polyfill/index.js b/core/src/Polyfill/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..055ab6343a43e35f8d9e12dae477d987850f4720
--- /dev/null
+++ b/core/src/Polyfill/index.js
@@ -0,0 +1,23 @@
+/*
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import './console'
+import './windows-phone'
diff --git a/core/src/Polyfill/windows-phone.js b/core/src/Polyfill/windows-phone.js
new file mode 100644
index 0000000000000000000000000000000000000000..3d59074856bb58febacd93e95a9667f3f6816e83
--- /dev/null
+++ b/core/src/Polyfill/windows-phone.js
@@ -0,0 +1,29 @@
+/*
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// fix device width on windows phone
+if ("-ms-user-select" in document.documentElement.style && navigator.userAgent.match(/IEMobile\/10\.0/)) {
+	const msViewportStyle = document.createElement("style");
+	msViewportStyle.appendChild(
+		document.createTextNode("@-ms-viewport{width:auto!important}")
+	);
+	document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
+}
diff --git a/core/src/main.js b/core/src/main.js
index baded7067b4707e03c1b39cbb0e9659c6ab71fe3..4d963a1795cfe88ccdd7953aed1479d75b9c13e7 100644
--- a/core/src/main.js
+++ b/core/src/main.js
@@ -20,6 +20,7 @@
  */
 
 import '@babel/polyfill'
+import './Polyfill/index'
 
 import './globals'
 import $ from 'jquery'