diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/BehaviorHandlerReloadingStrategy.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/BehaviorHandlerReloadingStrategy.java
index 5c9e645..da2c571 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/BehaviorHandlerReloadingStrategy.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/BehaviorHandlerReloadingStrategy.java
@@ -19,10 +19,11 @@
 
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet;
 
-import org.apache.myfaces.extensions.scripting.api.ScriptingWeaver;
-import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
-import org.apache.myfaces.extensions.scripting.core.util.Cast;
-import org.apache.myfaces.extensions.scripting.core.util.ReflectUtil;
+
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.Cast;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
+import rewrite.org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
 
 import javax.faces.view.facelets.BehaviorConfig;
 import javax.faces.view.facelets.BehaviorHandler;
@@ -38,15 +39,16 @@
  * @version $Revision$ $Date$
  */
 
-public class BehaviorHandlerReloadingStrategy extends SimpleReloadingStrategy {
-    public BehaviorHandlerReloadingStrategy(ScriptingWeaver weaver) {
-        super(weaver);
+public class BehaviorHandlerReloadingStrategy extends SimpleReloadingStrategy
+{
+    public BehaviorHandlerReloadingStrategy() {
+        super();
     }
 
     @Override
     public Object reload(Object scriptingInstance, int artifactType) {
         if (!(scriptingInstance instanceof ComponentHandler)) return scriptingInstance;
-        Class aclass = _weaver.reloadScriptingClass(scriptingInstance.getClass());
+        Class aclass = WeavingContext.getInstance().reload(scriptingInstance.getClass());
         if (aclass.hashCode() == scriptingInstance.getClass().hashCode()) {
             //class of this object has not changed although
             // reload is enabled we can skip the rest now
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ComponentHandlerReloadingStrategy.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ComponentHandlerReloadingStrategy.java
index d0ff115..01c4370 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ComponentHandlerReloadingStrategy.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ComponentHandlerReloadingStrategy.java
@@ -19,10 +19,10 @@
 
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet;
 
-import org.apache.myfaces.extensions.scripting.api.ScriptingWeaver;
-import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
-import org.apache.myfaces.extensions.scripting.core.util.Cast;
-import org.apache.myfaces.extensions.scripting.core.util.ReflectUtil;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.Cast;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
+import rewrite.org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
 
 import javax.faces.view.facelets.ComponentConfig;
 import javax.faces.view.facelets.ComponentHandler;
@@ -32,16 +32,17 @@
  * @version $Revision$ $Date$
  */
 
-public class ComponentHandlerReloadingStrategy extends SimpleReloadingStrategy {
+public class ComponentHandlerReloadingStrategy extends SimpleReloadingStrategy
+{
 
-    public ComponentHandlerReloadingStrategy(ScriptingWeaver weaver) {
-        super(weaver);
+    public ComponentHandlerReloadingStrategy() {
+        super();
     }
 
     @Override
     public Object reload(Object scriptingInstance, int artifactType) {
         if (!(scriptingInstance instanceof ComponentHandler)) return scriptingInstance;
-        Class aclass = _weaver.reloadScriptingClass(scriptingInstance.getClass());
+        Class aclass = WeavingContext.getInstance().reload(scriptingInstance.getClass());
         if (aclass.hashCode() == scriptingInstance.getClass().hashCode()) {
             //class of this object has not changed although
             // reload is enabled we can skip the rest now
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ConverterHandlerReloadingStrategy.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ConverterHandlerReloadingStrategy.java
index 692133d..bcaa740 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ConverterHandlerReloadingStrategy.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ConverterHandlerReloadingStrategy.java
@@ -19,10 +19,10 @@
 
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet;
 
-import org.apache.myfaces.extensions.scripting.api.ScriptingWeaver;
-import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
-import org.apache.myfaces.extensions.scripting.core.util.Cast;
-import org.apache.myfaces.extensions.scripting.core.util.ReflectUtil;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.Cast;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
+import rewrite.org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
 
 import javax.faces.view.facelets.ComponentHandler;
 import javax.faces.view.facelets.ConverterConfig;
@@ -38,16 +38,17 @@
  * @version $Revision$ $Date$
  */
 @SuppressWarnings("unused")//used dynamically
-public class ConverterHandlerReloadingStrategy extends SimpleReloadingStrategy {
+public class ConverterHandlerReloadingStrategy extends SimpleReloadingStrategy
+{
 
-    public ConverterHandlerReloadingStrategy(ScriptingWeaver weaver) {
-        super(weaver);
+    public ConverterHandlerReloadingStrategy() {
+        super();
     }
 
     @Override
     public Object reload(Object scriptingInstance, int artifactType) {
         if (!(scriptingInstance instanceof ComponentHandler)) return scriptingInstance;
-        Class aclass = _weaver.reloadScriptingClass(scriptingInstance.getClass());
+        Class aclass = WeavingContext.getInstance().reload(scriptingInstance.getClass());
         if (aclass.hashCode() == scriptingInstance.getClass().hashCode()) {
             //class of this object has not changed although
             // reload is enabled we can skip the rest now
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReroutingResourceResolver.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/MyFacesReroutingResourceResolver.java
similarity index 88%
rename from extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReroutingResourceResolver.java
rename to extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/MyFacesReroutingResourceResolver.java
index 74a0650..4e692d1 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReroutingResourceResolver.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/MyFacesReroutingResourceResolver.java
@@ -18,8 +18,9 @@
  */
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet;
 
-import org.apache.myfaces.extensions.scripting.core.util.WeavingContext;
+
 import org.apache.myfaces.view.facelets.impl.DefaultResourceResolver;
+import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
 
 import java.io.File;
 import java.net.MalformedURLException;
@@ -32,7 +33,8 @@
  * decorated Facelet resource resolver to reroute
  * the resource requests to our source path if possible
  */
-public class ReroutingResourceResolver extends DefaultResourceResolver {
+public class MyFacesReroutingResourceResolver extends DefaultResourceResolver
+{
 
     DefaultResourceResolver _delegate = new DefaultResourceResolver();
     volatile boolean _initiated = false;
@@ -44,7 +46,7 @@
     public URL resolveUrl(String path) {
 
         if (!_initiated) {
-            _resourceDirs = WeavingContext.getConfiguration().getResourceDirs();
+            _resourceDirs = WeavingContext.getInstance().getConfiguration().getResourceDirs();
             _initiated = true;
         }
 
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingBehaviorTagHandlerDelegate.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingBehaviorTagHandlerDelegate.java
index deab937..8533f7f 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingBehaviorTagHandlerDelegate.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingBehaviorTagHandlerDelegate.java
@@ -19,9 +19,10 @@
 
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet;
 
-import org.apache.myfaces.extensions.scripting.api.ScriptingConst;
-import org.apache.myfaces.extensions.scripting.core.util.WeavingContext;
+
 import org.apache.myfaces.view.facelets.tag.jsf.BehaviorTagHandlerDelegate;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.ScriptingConst;
+import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
 
 import javax.faces.component.UIComponent;
 import javax.faces.view.facelets.BehaviorHandler;
@@ -53,8 +54,9 @@
 
     @Override
     public void apply(FaceletContext ctx, UIComponent comp) throws IOException {
-        if (WeavingContext.isDynamic(_owner.getClass())) {
-            BehaviorHandler newOwner = (BehaviorHandler) WeavingContext.getWeaver().reloadScriptingInstance(_owner, ScriptingConst.ARTIFACT_TYPE_BEHAVIOR_HANDLER);
+        if (WeavingContext.getInstance().isDynamic(_owner.getClass())) {
+            BehaviorHandler newOwner = (BehaviorHandler) WeavingContext.getInstance().reload(_owner,
+                    ScriptingConst.ARTIFACT_TYPE_BEHAVIOR_HANDLER);
             if (!newOwner.getClass().equals(_owner.getClass())) {
                 applyOwner(newOwner);
             }
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingComponentTagHandlerDelegate.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingComponentTagHandlerDelegate.java
index 488ea34..75567f0 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingComponentTagHandlerDelegate.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingComponentTagHandlerDelegate.java
@@ -19,10 +19,14 @@
 
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet;
 
-import org.apache.myfaces.extensions.scripting.api.ScriptingConst;
-import org.apache.myfaces.extensions.scripting.core.util.WeavingContext;
-import org.apache.myfaces.extensions.scripting.facelet.support.SwitchingMetarulesetImpl;
-import org.apache.myfaces.view.facelets.tag.jsf.*;
+import org.apache.myfaces.view.facelets.tag.jsf.ActionSourceRule;
+import org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate;
+import org.apache.myfaces.view.facelets.tag.jsf.EditableValueHolderRule;
+import org.apache.myfaces.view.facelets.tag.jsf.ValueHolderRule;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.ScriptingConst;
+import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
+import rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet.support.ComponentRule;
+import rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet.support.SwitchingMetarulesetImpl;
 
 import javax.faces.component.ActionSource;
 import javax.faces.component.EditableValueHolder;
@@ -56,8 +60,9 @@
 
     @Override
     public void apply(FaceletContext ctx, UIComponent comp) throws IOException {
-        if (WeavingContext.isDynamic(_owner.getClass())) {
-            ComponentHandler newOwner = (ComponentHandler) WeavingContext.getWeaver().reloadScriptingInstance(_owner, ScriptingConst.ARTIFACT_TYPE_COMPONENT_HANDLER);
+        if (WeavingContext.getInstance().isDynamic(_owner.getClass())) {
+            ComponentHandler newOwner = (ComponentHandler) WeavingContext.getInstance().reload(_owner,
+                    ScriptingConst.ARTIFACT_TYPE_COMPONENT_HANDLER);
             if (!newOwner.getClass().equals(_owner.getClass())) {
                 applyOwner(newOwner);
             }
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingConverterTagHandlerDelegate.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingConverterTagHandlerDelegate.java
index c0eea69..7b3361c 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingConverterTagHandlerDelegate.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingConverterTagHandlerDelegate.java
@@ -19,9 +19,10 @@
 
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet;
 
-import org.apache.myfaces.extensions.scripting.api.ScriptingConst;
-import org.apache.myfaces.extensions.scripting.core.util.WeavingContext;
+
 import org.apache.myfaces.view.facelets.tag.jsf.ConverterTagHandlerDelegate;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.ScriptingConst;
+import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
 
 import javax.faces.component.UIComponent;
 import javax.faces.view.facelets.ConverterHandler;
@@ -51,8 +52,9 @@
 
     @Override
         public void apply(FaceletContext ctx, UIComponent comp) throws IOException {
-            if (WeavingContext.isDynamic(_owner.getClass())) {
-                ConverterHandler newOwner = (ConverterHandler) WeavingContext.getWeaver().reloadScriptingInstance(_owner, ScriptingConst.ARTIFACT_TYPE_CONVERTER_HANDLER);
+            if (WeavingContext.getInstance().isDynamic(_owner.getClass())) {
+                ConverterHandler newOwner = (ConverterHandler) WeavingContext.getInstance().reload(_owner,
+                        ScriptingConst.ARTIFACT_TYPE_CONVERTER_HANDLER);
                 if(!newOwner.getClass().equals(_owner.getClass())) {
                     applyOwner(newOwner);
                 }
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingValidatorTagHandlerDelegate.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingValidatorTagHandlerDelegate.java
index dcb0224..d57cc24 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingValidatorTagHandlerDelegate.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ReloadingValidatorTagHandlerDelegate.java
@@ -19,9 +19,10 @@
 
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet;
 
-import org.apache.myfaces.extensions.scripting.api.ScriptingConst;
-import org.apache.myfaces.extensions.scripting.core.util.WeavingContext;
+
 import org.apache.myfaces.view.facelets.tag.jsf.ValidatorTagHandlerDelegate;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.ScriptingConst;
+import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
 
 import javax.faces.component.UIComponent;
 import javax.faces.view.facelets.FaceletContext;
@@ -51,8 +52,9 @@
 
     @Override
     public void apply(FaceletContext ctx, UIComponent comp) throws IOException {
-        if (WeavingContext.isDynamic(_owner.getClass())) {
-            ValidatorHandler newOwner = (ValidatorHandler) WeavingContext.getWeaver().reloadScriptingInstance(_owner, ScriptingConst.ARTIFACT_TYPE_VALIDATOR_HANDLER);
+        if (WeavingContext.getInstance().isDynamic(_owner.getClass())) {
+            ValidatorHandler newOwner = (ValidatorHandler) WeavingContext.getInstance().reload(_owner,
+                    ScriptingConst.ARTIFACT_TYPE_VALIDATOR_HANDLER);
             if (!newOwner.getClass().equals(_owner.getClass())) {
                 applyOwner(newOwner);
             }
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/TagHandlerDelegateFactoryImpl.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/TagHandlerDelegateFactoryImpl.java
index 873c2d8..eccae73 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/TagHandlerDelegateFactoryImpl.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/TagHandlerDelegateFactoryImpl.java
@@ -19,10 +19,11 @@
 
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet;
 
-import org.apache.myfaces.extensions.scripting.core.util.WeavingContext;
+
 import org.apache.myfaces.view.facelets.tag.jsf.BehaviorTagHandlerDelegate;
 import org.apache.myfaces.view.facelets.tag.jsf.ConverterTagHandlerDelegate;
 import org.apache.myfaces.view.facelets.tag.jsf.ValidatorTagHandlerDelegate;
+import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
 
 import javax.faces.view.facelets.*;
 
@@ -35,7 +36,7 @@
     @Override
     public TagHandlerDelegate createBehaviorHandlerDelegate(
             BehaviorHandler owner) {
-        if (WeavingContext.isDynamic(owner.getClass())) {
+        if (WeavingContext.getInstance().isDynamic(owner.getClass())) {
             return new ReloadingBehaviorTagHandlerDelegate(owner);
         } else {
             return new BehaviorTagHandlerDelegate(owner);
@@ -51,7 +52,7 @@
     @Override
     public TagHandlerDelegate createConverterHandlerDelegate(
             ConverterHandler owner) {
-        if (WeavingContext.isDynamic(owner.getClass())) {
+        if (WeavingContext.getInstance().isDynamic(owner.getClass())) {
             return new ReloadingConverterTagHandlerDelegate(owner);
         } else {
             return new ConverterTagHandlerDelegate(owner);
@@ -61,7 +62,7 @@
     @Override
     public TagHandlerDelegate createValidatorHandlerDelegate(
             ValidatorHandler owner) {
-        if (WeavingContext.isDynamic(owner.getClass())) {
+        if (WeavingContext.getInstance().isDynamic(owner.getClass())) {
             return new ReloadingValidatorTagHandlerDelegate(owner);
         } else {
             return new ValidatorTagHandlerDelegate(owner);
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ValidatorHandlerReloadingStrategy.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ValidatorHandlerReloadingStrategy.java
index 68168bf..153eaf9 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ValidatorHandlerReloadingStrategy.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/ValidatorHandlerReloadingStrategy.java
@@ -19,10 +19,11 @@
 
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet;
 
-import org.apache.myfaces.extensions.scripting.api.ScriptingWeaver;
-import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
-import org.apache.myfaces.extensions.scripting.core.util.Cast;
-import org.apache.myfaces.extensions.scripting.core.util.ReflectUtil;
+
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.Cast;
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
+import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
+import rewrite.org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
 
 import javax.faces.view.facelets.ComponentHandler;
 import javax.faces.view.facelets.ValidatorConfig;
@@ -33,16 +34,17 @@
  * @version $Revision$ $Date$
  */
 
-public class ValidatorHandlerReloadingStrategy extends SimpleReloadingStrategy {
+public class ValidatorHandlerReloadingStrategy extends SimpleReloadingStrategy
+{
 
-    public ValidatorHandlerReloadingStrategy(ScriptingWeaver weaver) {
-        super(weaver);
+    public ValidatorHandlerReloadingStrategy() {
+        super();
     }
 
     @Override
     public Object reload(Object scriptingInstance, int artifactType) {
         if (!(scriptingInstance instanceof ComponentHandler)) return scriptingInstance;
-        Class aclass = _weaver.reloadScriptingClass(scriptingInstance.getClass());
+        Class aclass = WeavingContext.getInstance().reload(scriptingInstance.getClass());
         if (aclass.hashCode() == scriptingInstance.getClass().hashCode()) {
             //class of this object has not changed although
             // reload is enabled we can skip the rest now
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/support/InvokeDynamicBeanPropertyTagRule.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/support/InvokeDynamicBeanPropertyTagRule.java
index a483cab..007705a 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/support/InvokeDynamicBeanPropertyTagRule.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/support/InvokeDynamicBeanPropertyTagRule.java
@@ -18,7 +18,8 @@
  */
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet.support;
 
-import org.apache.myfaces.extensions.scripting.core.util.ReflectUtil;
+
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.ReflectUtil;
 
 import javax.faces.view.facelets.FaceletContext;
 import javax.faces.view.facelets.Metadata;
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/support/SwitchingBeanPropertyTagRule.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/support/SwitchingBeanPropertyTagRule.java
index 5cf24ab..7348428 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/support/SwitchingBeanPropertyTagRule.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/facelet/support/SwitchingBeanPropertyTagRule.java
@@ -18,8 +18,8 @@
  */
 package rewrite.org.apache.myfaces.extensions.scripting.jsf.facelet.support;
 
-import org.apache.myfaces.extensions.scripting.core.util.WeavingContext;
 import org.apache.myfaces.view.facelets.tag.BeanPropertyTagRule;
+import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
 
 import javax.faces.view.facelets.MetaRule;
 import javax.faces.view.facelets.Metadata;
@@ -42,7 +42,7 @@
 
     @Override
     public Metadata applyRule(String name, TagAttribute attribute, MetadataTarget meta) {
-        if (WeavingContext.isDynamic(meta.getTargetClass())) {
+        if (WeavingContext.getInstance().isDynamic(meta.getTargetClass())) {
             return _invokeDynamic.applyRule(name, attribute, meta);
         } else {
             return _invokeStatic.applyRule(name, attribute, meta);
