diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/loader/ThrowAwayClassloader.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/loader/ThrowAwayClassloader.java
index fc54f87..6032f8d 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/loader/ThrowAwayClassloader.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/core/loader/ThrowAwayClassloader.java
@@ -19,6 +19,7 @@
 
 package rewrite.org.apache.myfaces.extensions.scripting.core.loader;
 
+import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
 import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
 import rewrite.org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
 
@@ -131,8 +132,10 @@
 
     private File resolveClassFile(String name)
     {
-        return new File(WeavingContext.getInstance().getConfiguration().getCompileTarget().getAbsolutePath() + File
-                .separator + name);
+        return ClassUtils.classNameToFile(WeavingContext.getInstance().getConfiguration().getCompileTarget()
+                .getAbsolutePath
+                (), name);
+
     }
 
 }
diff --git a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/adapters/CustomChainLoader.java b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/adapters/CustomChainLoader.java
index 404a741..b6ce9e6 100644
--- a/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/adapters/CustomChainLoader.java
+++ b/extscript-core-root/extscript-core/src/main/java/rewrite/org/apache/myfaces/extensions/scripting/jsf/adapters/CustomChainLoader.java
@@ -22,8 +22,8 @@
 import org.apache.myfaces.shared.util.ClassLoaderExtension;
 import rewrite.org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
 import rewrite.org.apache.myfaces.extensions.scripting.core.context.WeavingContext;
-import rewrite.org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
 import rewrite.org.apache.myfaces.extensions.scripting.core.loader.ThrowAwayClassloader;
+import rewrite.org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
 
 import javax.servlet.ServletContext;
 import java.io.File;
@@ -34,11 +34,11 @@
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
- *
- * The chainloader docks onto the forName handler
- * in the myfaces classutils which load the
- * artifacting classes, we dock onto this extension point
- * neutrally by indirection over the MyFacesSPI
+ *          <p/>
+ *          The chainloader docks onto the forName handler
+ *          in the myfaces classutils which load the
+ *          artifacting classes, we dock onto this extension point
+ *          neutrally by indirection over the MyFacesSPI
  */
 
 public class CustomChainLoader extends ClassLoaderExtension
@@ -96,7 +96,14 @@
         } else if (name.startsWith("org.apache") && name.startsWith("org.apache.myfaces.config"))
         {
             return null;
+        } else if (name.startsWith("org.apache") && name.startsWith("org.apache.myfaces.spi"))
+        {
+            return null;
+        } else if (name.startsWith("org.apache") && name.startsWith("org.apache.myfaces.application"))
+        {
+            return null;
         }
+        //
         try
         {
             return loadClass(name);
@@ -113,7 +120,8 @@
         File target = ClassUtils.classNameToFile(targetDirectory.getAbsolutePath(), name);
         if (!target.exists()) return null;
         //otherwise check if tainted and if not simply return the class stored
-        if(name.contains("TestNavigationHandler")) {
+        if (name.contains("TestNavigationHandler"))
+        {
             System.out.println("debugpoint found");
         }
         ClassResource resource = (ClassResource) WeavingContext.getInstance().getResource(name);
