diff --git a/Classes/Loader.php b/Classes/Loader.php
index 65bb532f0b956f1f6dfece29dc83835ca28eab92..98ea57f55f8aacef40bf3f75dda44c1e53c91d5b 100644
--- a/Classes/Loader.php
+++ b/Classes/Loader.php
@@ -136,7 +136,7 @@ class Loader {
 				}
 			};
 			SG.initTinyMceLoadFunction();
-			SG.initTinyMceLoadInterval = window.setInterval(SG.initTinyMceLoadFunction, 1000);
+			SG.initTinyMceLoadInterval = window.setInterval(SG.initTinyMceLoadFunction, 333);
 		';
 		$configuration .= $this->tinymceConfiguration['postJS'];
 
@@ -228,10 +228,15 @@ class Loader {
 			$configuration = file_get_contents($configurationFile);
 		}
 
-		// split config into first and last javascript parts (applied later again into the config variables)
-		// additionally the config part is matched to get the options
-		$pattern = '/(.*)tinymce\.init\s*\(\s*\{(.*?)\}\s*\)\s*;?(.*)/is';
-		preg_match($pattern, $configuration, $matches);
+		// first try to find the configuration via the "subpart" ###TINYMCE_INIT###
+		$pattern = '/(.*)?tinymce\.init\s*\(\s*\{\s*\/\*\s?###TINYMCE_INIT###.*?\*\/(.*)\/\*\s*###TINYMCE_INIT###.*?\*\/\s*\}\s*\);*(.*)?/is';
+		if (@preg_match($pattern, $configuration, $matches)) {
+			// fine :)
+		} else {
+			// if nothing is found, try it the legacy way (note: this may cause problems with a complex setups, since parenthesis-matching is not perfect here)
+			$pattern = '/(.*)tinymce\.init\s*\(\s*\{(.*?)\}\s*\)\s*;?(.*)/is';
+			preg_match($pattern, $configuration, $matches);
+		}
 
 		// add preJS and postJS
 		$configurationArray['preJS'] = trim($matches[1]);
diff --git a/Resources/Public/JavaScript/TinymcePlugins/shy/plugin.js b/Resources/Public/JavaScript/TinymcePlugins/shy/plugin.js
index 3321d7232190ed164a5380c6acc747810dbf3c05..7e927653972d4d97e0ec3edbcf066230ee57ad00 100755
--- a/Resources/Public/JavaScript/TinymcePlugins/shy/plugin.js
+++ b/Resources/Public/JavaScript/TinymcePlugins/shy/plugin.js
@@ -16,7 +16,7 @@ tinymce.PluginManager.add('shy', function(editor) {
 
 	editor.addButton('shy', {
 		title: 'Soft hyphen',
-		image: tinyMCE.baseURL + '/plugins/shy/icon.png',
+		image: tinyMCE.baseURL + '/../../Resources/Public/JavaScript/TinymcePlugins/shy/icon.png',
 		cmd: 'mceShy'
 	});
 
diff --git a/Resources/Public/JavaScript/TinymcePlugins/shy/plugin.min.js b/Resources/Public/JavaScript/TinymcePlugins/shy/plugin.min.js
index c976692eb2eff103816d4b0aca4cc41dcda57cf9..01f526e2c9c040e121d48ef3c385ff2258a244de 100755
--- a/Resources/Public/JavaScript/TinymcePlugins/shy/plugin.min.js
+++ b/Resources/Public/JavaScript/TinymcePlugins/shy/plugin.min.js
@@ -1 +1 @@
-tinymce.PluginManager.requireLangPack("shy","de");tinymce.PluginManager.add("shy",function(e){e.addCommand("mceShy",function(){e.insertContent(e.plugins.visualchars&&e.plugins.visualchars.state?'<span class="mce-shy">&shy;</span>':"&shy;");e.dom.setAttrib(e.dom.select("span.mce-shy"),"data-mce-bogus","1")});e.addButton("shy",{title:"Soft hyphen",image:tinyMCE.baseURL+"/plugins/shy/icon.png",cmd:"mceShy"});e.addMenuItem("shy",{text:"Soft hyphen",cmd:"mceShy",context:"insert"})})
\ No newline at end of file
+tinymce.PluginManager.requireLangPack("shy","de");tinymce.PluginManager.add("shy",function(e){e.addCommand("mceShy",function(){e.insertContent(e.plugins.visualchars&&e.plugins.visualchars.state?'<span class="mce-shy">&shy;</span>':"&shy;");e.dom.setAttrib(e.dom.select("span.mce-shy"),"data-mce-bogus","1")});e.addButton("shy",{title:"Soft hyphen",image:tinyMCE.baseURL+"/../../Resources/Public/JavaScript/TinymcePlugins/shy/icon.png",cmd:"mceShy"});e.addMenuItem("shy",{text:"Soft hyphen",cmd:"mceShy",context:"insert"})})
\ No newline at end of file