<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>IronMvcSpecs/IronMvcSpecs.stproj</filename>
    </added>
    <added>
      <filename>IronMvcSpecs/Rakefile.rb</filename>
    </added>
    <added>
      <filename>IronMvcSpecs/bacon_helper.rb</filename>
    </added>
    <added>
      <filename>IronMvcSpecs/extensions/extensions.rb</filename>
    </added>
    <added>
      <filename>IronMvcSpecs/extensions/ienumerable_extensions_spec.rb</filename>
    </added>
    <added>
      <filename>IronMvcSpecs/extensions/object_extensions_spec.rb</filename>
    </added>
    <added>
      <filename>IronMvcSpecs/extensions/string_extensions_spec.rb</filename>
    </added>
    <added>
      <filename>IronMvcSpecs/lib/amok.rb</filename>
    </added>
    <added>
      <filename>IronMvcSpecs/workarounds/Workarounds.cs</filename>
    </added>
    <added>
      <filename>IronRubyMvc/Core/MvcApplication.cs</filename>
    </added>
    <added>
      <filename>IronRubyMvc/Core/MvcScriptHost.cs</filename>
    </added>
    <added>
      <filename>IronRubyMvc/Core/PathProviderPAL.cs</filename>
    </added>
    <added>
      <filename>IronRubyMvc/Core/TypeConverter.cs</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -20,4 +20,4 @@ IronRubyMvc/Controllers/._controller.rb
 IronRubyMvc/Core/._RubyEngine.cs
 dependencies/IronRuby.Tests.exe
 dependencies/IronRuby.Tests.pdb
-IronRubyMvcLibrarySpecs/bin/*.*
\ No newline at end of file
+IronMvcSpecs/bin/*.*
\ No newline at end of file</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,7 @@ namespace System.Web.Mvc.IronRuby.Tests.Core
 
         protected override void Because()
         {
-            _engine = RubyEngine.InitializeIronRubyMvc(_pathProvider, &quot;~/routes.rb&quot;, path =&gt; new TestStreamContentProvider(path));
+            _engine = RubyEngine.InitializeIronRubyMvc(_pathProvider, &quot;~/routes.rb&quot;);
         }
         
 </diff>
      <filename>IronRubyMvc.Tests/Core/RubyEngineSpec.cs</filename>
    </modified>
    <modified>
      <diff>@@ -13,6 +13,8 @@ Project(&quot;{2150E333-8FDC-42A3-9474-1A3956D46DE8}&quot;) = &quot;Solution Items&quot;, &quot;Solution
 		README.markdown = README.markdown
 	EndProjectSection
 EndProject
+Project(&quot;{325B8569-0C7C-4A6A-8AF8-89C3B6BC9E74}&quot;) = &quot;IronMvcSpecs&quot;, &quot;IronMvcSpecs\IronMvcSpecs.stproj&quot;, &quot;{4B1E7B70-F827-46A0-9D8D-68498B5EF73D}&quot;
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug_Signed|Any CPU = Debug_Signed|Any CPU
@@ -45,6 +47,14 @@ Global
 		{13CD326E-5C1A-4404-A1AB-8D0BA6D9FDF9}.Release_Signed|Any CPU.Build.0 = Release_Signed|Any CPU
 		{13CD326E-5C1A-4404-A1AB-8D0BA6D9FDF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{13CD326E-5C1A-4404-A1AB-8D0BA6D9FDF9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{4B1E7B70-F827-46A0-9D8D-68498B5EF73D}.Debug_Signed|Any CPU.ActiveCfg = Debug|Any CPU
+		{4B1E7B70-F827-46A0-9D8D-68498B5EF73D}.Debug_Signed|Any CPU.Build.0 = Debug|Any CPU
+		{4B1E7B70-F827-46A0-9D8D-68498B5EF73D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{4B1E7B70-F827-46A0-9D8D-68498B5EF73D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{4B1E7B70-F827-46A0-9D8D-68498B5EF73D}.Release_Signed|Any CPU.ActiveCfg = Release|Any CPU
+		{4B1E7B70-F827-46A0-9D8D-68498B5EF73D}.Release_Signed|Any CPU.Build.0 = Release|Any CPU
+		{4B1E7B70-F827-46A0-9D8D-68498B5EF73D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{4B1E7B70-F827-46A0-9D8D-68498B5EF73D}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE</diff>
      <filename>IronRubyMvc.sln</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,4 @@
+extern alias clr3;
 #region Usings
 
 using System.Collections;
@@ -7,6 +8,8 @@ using System.Web.Mvc.IronRuby.Core;
 using System.Web.Mvc.IronRuby.Extensions;
 using IronRuby.Builtins;
 
+using clr3::System.Linq;
+
 #endregion
 
 namespace System.Web.Mvc.IronRuby.Controllers
@@ -54,7 +57,7 @@ namespace System.Web.Mvc.IronRuby.Controllers
             var methodAliases = (Hash) _rubyEngine.CallMethod(ControllerClass, &quot;name_selectors&quot;);
             AliasedMethods = methodAliases.Map(pair =&gt; KeyValuePairFor(pair));
             NonAliasedMethods =
-                methodNames.Where(
+                clr3::System.Linq.Enumerable.Where(methodNames,
                     method =&gt;
                     AliasedMethods.DoesNotContain(
                         pair =&gt; String.Equals(pair.Key, method.Underscore(), StringComparison.OrdinalIgnoreCase) || String.Equals(pair.Key, method.Pascalize(), StringComparison.OrdinalIgnoreCase)
@@ -77,7 +80,7 @@ namespace System.Web.Mvc.IronRuby.Controllers
             PopulateLookupTables(controllerContext); // dynamic languages can add methods at runtime
             var methodsMatchingName = GetMatchingAliasedMethods(controllerContext, actionName);
             methodsMatchingName.AddRange(
-                NonAliasedMethods.Where(
+                clr3::System.Linq.Enumerable.Where(NonAliasedMethods,
                     name =&gt; String.Equals(name, actionName.Underscore(), StringComparison.OrdinalIgnoreCase) || String.Equals(name, actionName.Pascalize(), StringComparison.OrdinalIgnoreCase)));
             var finalMethods = RunSelectionFilters(controllerContext, methodsMatchingName);
 </diff>
      <filename>IronRubyMvc/Controllers/RubyActionMethodSelector.cs</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,10 @@
+extern alias clr3;
 #region Usings
 
 using System.Web.Mvc.IronRuby.Core;
 using System.Web.Mvc.IronRuby.Extensions;
 using IronRuby.Builtins;
-
+using clr3::System.Linq;
 #endregion
 
 namespace System.Web.Mvc.IronRuby.Controllers</diff>
      <filename>IronRubyMvc/Controllers/RubyControllerDescriptor.cs</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,55 @@ def debugger
     System::Diagnostics::Debugger.break if System::Diagnostics::Debugger.launch
 end
 
+module System
+
+  module Web 
+    class HttpRequestBase
+
+      def post?
+        self.http_method.to_s.downcase.to_sym == :post
+      end
+      
+      def put?
+        self.http_method.to_s.downcase.to_sym == :put
+      end
+      
+      def get?
+        self.http_method.to_s.downcase.to_sym == :get
+      end
+      
+      def delete?
+        self.http_method.to_s.downcase.to_sym == :delete
+      end
+      
+      def head?
+        self.http_method.to_s.downcase.to_sym == :head
+      end
+    end
+  end
+  
+  class Object
+
+    class &lt;&lt; self
+        
+      def create_from_hash(options)
+        result = self.new
+        result.populate_from_hash options
+        result
+      end
+      
+    end
+    
+    def populate_from_hash(options)
+      options.each do |k, v|
+        mn = &quot;#{k}=&quot;.to_sym
+        self.send(mn, v) if self.respond_to?(mn)
+      end
+    end
+  end
+
+end
+
 module IronRubyMvc
     
     module Controllers
@@ -222,6 +271,35 @@ module IronRubyMvc
         
     end
     
+    class PropertyDescriptor
+      
+      attr_accessor :name
+      
+    end
+    
+    class DefaultModelBinder
+      def initialize(target, values)
+        @target = target
+        @values = values
+      end
+      
+      def bind
+        @target
+      end
+      
+      def self.bind(target, values)
+        binder = DefaultModelBinder.new target, values
+        
+        binder.bind
+      end
+      
+      private
+      
+      def has_property?
+        target.get_type
+      end
+    end
+    
     #module Controllers
     
     class Controller &lt; System::Web::Mvc::IronRuby::Controllers::RubyController
@@ -235,9 +313,7 @@ module IronRubyMvc
             instance_variables.each { |varname| view_data.add(varname[1..-1], instance_variable_get(varname.to_sym)) }
         end
         
-        def post?
-            controller_context.http_context.request.http_method.to_s.downcase.to_sym == :post
-        end
+        
         
     end
     </diff>
      <filename>IronRubyMvc/Controllers/controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,15 @@ namespace System.Web.Mvc.IronRuby.Core
     {
         string ApplicationPhysicalPath { get; }
         bool FileExists(string filePath);
+        bool DirectoryExists(string dirPath);
+        string[] GetDirectories(string path, string searchPattern);
+        string[] GetFiles(string path, string searchPattern);
         Stream Open(string filePath);
         string MapPath(string filePath);
+        bool IsAbsolutePath(string path);
+        string GetFullPath(string path);
+
+        Stream Open(string path, FileMode mode, FileAccess access, FileShare share);
+        Stream Open(string path, FileMode mode, FileAccess access, FileShare share, int size);
     }
 }
\ No newline at end of file</diff>
      <filename>IronRubyMvc/Core/IPathProvider.cs</filename>
    </modified>
    <modified>
      <diff>@@ -15,22 +15,6 @@ namespace System.Web.Mvc.IronRuby.Core
     /// &lt;/summary&gt;
     public interface IRubyEngine
     {
-//        /// &lt;summary&gt;
-//        /// Loads the controller.
-//        /// &lt;/summary&gt;
-//        /// &lt;param name=&quot;requestContext&quot;&gt;The request context.&lt;/param&gt;
-//        /// &lt;param name=&quot;controllerName&quot;&gt;Name of the controller.&lt;/param&gt;
-//        /// &lt;returns&gt;&lt;/returns&gt;
-//        RubyController LoadController(RequestContext requestContext, string controllerName);
-//
-//        /// &lt;summary&gt;
-//        /// Configures the controller.
-//        /// &lt;/summary&gt;
-//        /// &lt;param name=&quot;rubyClass&quot;&gt;The ruby class.&lt;/param&gt;
-//        /// &lt;param name=&quot;requestContext&quot;&gt;The request context.&lt;/param&gt;
-//        /// &lt;returns&gt;&lt;/returns&gt;
-//        RubyController ConfigureController(RubyClass rubyClass, RequestContext requestContext);
-
         /// &lt;summary&gt;
         /// Calls the method.
         /// &lt;/summary&gt;
@@ -40,16 +24,6 @@ namespace System.Web.Mvc.IronRuby.Core
         /// &lt;returns&gt;&lt;/returns&gt;
         object CallMethod(object receiver, string message, params object[] args);
 
-//        /// &lt;summary&gt;
-//        /// Determines whether the specified controller as the action.
-//        /// &lt;/summary&gt;
-//        /// &lt;param name=&quot;controller&quot;&gt;The controller.&lt;/param&gt;
-//        /// &lt;param name=&quot;actionName&quot;&gt;Name of the action.&lt;/param&gt;
-//        /// &lt;returns&gt;
-//        /// 	&lt;c&gt;true&lt;/c&gt; if the specified controller has the action; otherwise, &lt;c&gt;false&lt;/c&gt;.
-//        /// &lt;/returns&gt;
-//        bool HasControllerAction(RubyController controller, string actionName);
-
         /// &lt;summary&gt;
         /// Gets the method names for the controller class.
         /// &lt;/summary&gt;
@@ -86,6 +60,68 @@ namespace System.Web.Mvc.IronRuby.Core
         object ExecuteScript(string script, ScriptScope scope);
 
         /// &lt;summary&gt;
+        /// Executes the file.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;path&quot;&gt;The path.&lt;/param&gt;
+        /// &lt;param name=&quot;scope&quot;&gt;The scope.&lt;/param&gt;
+        /// &lt;param name=&quot;throwIfNotExist&quot;&gt;if set to &lt;c&gt;true&lt;/c&gt; [throw if not exist].&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        object ExecuteFile(string path, ScriptScope scope, bool throwIfNotExist);
+
+        /// &lt;summary&gt;
+        /// Executes the file.
+        /// &lt;/summary&gt;
+        /// &lt;typeparam name=&quot;T&quot;&gt;&lt;/typeparam&gt;
+        /// &lt;param name=&quot;path&quot;&gt;The path.&lt;/param&gt;
+        /// &lt;param name=&quot;throwIfNotExist&quot;&gt;if set to &lt;c&gt;true&lt;/c&gt; [throw if not exist].&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        T ExecuteFile&lt;T&gt;(string path, bool throwIfNotExist);
+
+
+        /// &lt;summary&gt;
+        /// Executes the file.
+        /// &lt;/summary&gt;
+        /// &lt;typeparam name=&quot;T&quot;&gt;&lt;/typeparam&gt;
+        /// &lt;param name=&quot;path&quot;&gt;The path.&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        T ExecuteFile&lt;T&gt;(string path);
+
+        /// &lt;summary&gt;
+        /// Executes the script.
+        /// &lt;/summary&gt;
+        /// &lt;typeparam name=&quot;T&quot;&gt;&lt;/typeparam&gt;
+        /// &lt;param name=&quot;script&quot;&gt;The script.&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        T ExecuteScript&lt;T&gt;(string script);
+
+        /// &lt;summary&gt;
+        /// Executes the script.
+        /// &lt;/summary&gt;
+        /// &lt;typeparam name=&quot;T&quot;&gt;&lt;/typeparam&gt;
+        /// &lt;param name=&quot;script&quot;&gt;The script.&lt;/param&gt;
+        /// &lt;param name=&quot;scope&quot;&gt;The scope.&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        T ExecuteScript&lt;T&gt;(string script, ScriptScope scope);
+
+        /// &lt;summary&gt;
+        /// Executes the file.
+        /// &lt;/summary&gt;
+        /// &lt;typeparam name=&quot;T&quot;&gt;&lt;/typeparam&gt;
+        /// &lt;param name=&quot;path&quot;&gt;The path.&lt;/param&gt;
+        /// &lt;param name=&quot;scope&quot;&gt;The scope.&lt;/param&gt;
+        /// &lt;param name=&quot;throwIfNotExist&quot;&gt;if set to &lt;c&gt;true&lt;/c&gt; [throw if not exist].&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        T ExecuteFile&lt;T&gt;(string path, ScriptScope scope, bool throwIfNotExist);
+
+
+        /// &lt;summary&gt;
+        /// Executes the file.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;path&quot;&gt;The path.&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
+        object ExecuteFile(string path);
+
+        /// &lt;summary&gt;
         /// Defines the read only global variable.
         /// &lt;/summary&gt;
         /// &lt;param name=&quot;variableName&quot;&gt;Name of the variable.&lt;/param&gt;</diff>
      <filename>IronRubyMvc/Core/IRubyEngine.cs</filename>
    </modified>
    <modified>
      <diff>@@ -26,8 +26,6 @@ namespace System.Web.Mvc.IronRuby.Core
     /// &lt;/summary&gt;
     public class RubyEngine : IRubyEngine
     {
-        private readonly Func&lt;string, StreamContentProvider&gt; _contentProviderFactory;
-
         /// &lt;summary&gt;
         /// Initializes a new instance of the &lt;see cref=&quot;RubyEngine&quot;/&gt; class.
         /// &lt;/summary&gt;
@@ -37,15 +35,6 @@ namespace System.Web.Mvc.IronRuby.Core
         {
             Runtime = runtime;
             PathProvider = pathProvider;
-            _contentProviderFactory = path =&gt; new VirtualPathStreamContentProvider(path);
-            Initialize();
-        }
-
-        internal RubyEngine(ScriptRuntime runtime, IPathProvider pathProvider, Func&lt;string, StreamContentProvider&gt; contentProviderFactory)
-        {
-            Runtime = runtime;
-            PathProvider = pathProvider;
-            _contentProviderFactory = contentProviderFactory;
             Initialize();
         }
 
@@ -172,6 +161,51 @@ namespace System.Web.Mvc.IronRuby.Core
             return Engine.Execute(script, scope ?? CurrentScope);
         }
 
+        public object ExecuteFile(string path, ScriptScope scope, bool throwIfNotExist)
+        {
+            path.EnsureArgumentNotNull(&quot;path&quot;);
+            scope.EnsureArgumentNotNull(&quot;scope&quot;);
+
+            if (throwIfNotExist &amp;&amp; !PathProvider.FileExists(path)) throw new FileNotFoundException(&quot;Can't find the file&quot;, path);
+            
+            if(!PathProvider.FileExists(path)) return null;
+
+            var source = Engine.CreateScriptSourceFromFile(path); 
+
+            return source.Execute(scope);
+        }
+
+        public T ExecuteFile&lt;T&gt;(string path)
+        {
+            return (T) ExecuteFile(path);
+        }
+
+        public T ExecuteFile&lt;T&gt;(string path, bool throwIfNotExist)
+        {
+            return (T)ExecuteFile(path, CurrentScope, throwIfNotExist);
+        }
+
+
+        public T ExecuteScript&lt;T&gt;(string script)
+        {
+            return (T) ExecuteScript(script);
+        }
+
+        public T ExecuteScript&lt;T&gt;(string script, ScriptScope scope)
+        {
+            return (T) ExecuteScript(script, scope);
+        }
+
+        public T ExecuteFile&lt;T&gt;(string path, ScriptScope scope, bool throwIfNotExist)
+        {
+            return (T) ExecuteFile(path, scope, throwIfNotExist);
+        }
+
+        public object ExecuteFile(string path)
+        {
+            return Engine.ExecuteFile(path, CurrentScope);
+        }
+
         /// &lt;summary&gt;
         /// Defines the read only global variable.
         /// &lt;/summary&gt;
@@ -231,7 +265,7 @@ namespace System.Web.Mvc.IronRuby.Core
         public void RequireRubyFile(string path, ReaderType readerType)
         {
             Engine.CreateScriptSource(readerType == ReaderType.File
-                                          ? _contentProviderFactory(path)
+                                          ? (StreamContentProvider)new VirtualPathStreamContentProvider(path)
                                           : new AssemblyStreamContentProvider(path, typeof (IRubyEngine).Assembly), null, Encoding.ASCII).Execute();
         }
 
@@ -262,7 +296,7 @@ namespace System.Web.Mvc.IronRuby.Core
         private void RequireControllerFile()
         {
 //            RequireRubyFile(PathProvider.MapPath(&quot;~/Controllers/controller.rb&quot;));
-            RequireRubyFile(&quot;System.Web.Mvc.IronRuby.Controllers.controller.rb&quot;, ReaderType.AssemblyResource);
+            Engine.CreateScriptSource(new AssemblyStreamContentProvider(&quot;System.Web.Mvc.IronRuby.Controllers.controller.rb&quot;, typeof(IRubyEngine).Assembly), null, Encoding.ASCII).Execute(CurrentScope);
         }
 
         /// &lt;summary&gt;
@@ -275,7 +309,7 @@ namespace System.Web.Mvc.IronRuby.Core
             var filtersDir = Path.Combine(PathProvider.ApplicationPhysicalPath, Constants.Filters);
             var helpersDir = Path.Combine(PathProvider.ApplicationPhysicalPath, Constants.Helpers);
 
-            Context.Loader.SetLoadPaths(new[] {controllersDir, modelsDir, filtersDir, helpersDir});
+            Context.Loader.SetLoadPaths(new[] {PathProvider.ApplicationPhysicalPath, controllersDir, modelsDir, filtersDir, helpersDir});
         }
 
 
@@ -286,40 +320,29 @@ namespace System.Web.Mvc.IronRuby.Core
         /// &lt;param name=&quot;routesPath&quot;&gt;The routes path.&lt;/param&gt;
         public static RubyEngine InitializeIronRubyMvc(IPathProvider pathProvider, string routesPath)
         {
-            return InitializeIronRubyMvc(pathProvider, routesPath, path =&gt; new VirtualPathStreamContentProvider(path));
-        }
-
-        /// &lt;summary&gt;
-        /// Initializes the ironruby MVC.
-        /// &lt;/summary&gt;
-        /// &lt;param name=&quot;pathProvider&quot;&gt;The path provider.&lt;/param&gt;
-        /// &lt;param name=&quot;routesPath&quot;&gt;The routes path.&lt;/param&gt;
-        /// &lt;param name=&quot;contentProviderFactory&quot;&gt;The content provider factory.&lt;/param&gt;
-        /// &lt;returns&gt;&lt;/returns&gt;
-        public static RubyEngine InitializeIronRubyMvc(IPathProvider pathProvider, string routesPath, Func&lt;string, StreamContentProvider&gt; contentProviderFactory)
-        {
-            var engine = InitializeIronRuby(pathProvider, contentProviderFactory);
+            var engine = InitializeIronRuby(pathProvider);
             ProcessRubyRoutes(engine, pathProvider, routesPath);
             IntializeMvc(pathProvider, engine);
             return engine;
         }
 
-        private static void IntializeMvc(IPathProvider pathProvider, IRubyEngine engine)
+         private static void IntializeMvc(IPathProvider pathProvider, IRubyEngine engine)
         {
             var factory = new RubyControllerFactory(pathProvider, ControllerBuilder.Current.GetControllerFactory(), engine);
             ControllerBuilder.Current.SetControllerFactory(factory);
             ViewEngines.Engines.Add(new RubyViewEngine(engine));
         }
 
-        private static RubyEngine InitializeIronRuby(IPathProvider vpp, Func&lt;string, StreamContentProvider&gt; contentProviderFactory)
+        private static RubyEngine InitializeIronRuby(IPathProvider vpp)
         {
             var rubySetup = Ruby.CreateRubySetup();
             var runtimeSetup = new ScriptRuntimeSetup();
             runtimeSetup.LanguageSetups.Add(rubySetup);
             runtimeSetup.DebugMode = true;
+//            runtimeSetup.HostType = typeof (MvcScriptHost);
 
             var runtime = Ruby.CreateRuntime(runtimeSetup);
-            return new RubyEngine(runtime, vpp, contentProviderFactory);
+            return new RubyEngine(runtime, vpp);
         }
 
         private static void ProcessRubyRoutes(IRubyEngine engine, IPathProvider vpp, string routesPath)</diff>
      <filename>IronRubyMvc/Core/RubyEngine.cs</filename>
    </modified>
    <modified>
      <diff>@@ -6,9 +6,21 @@ namespace System.Web.Mvc.IronRuby.Core
 {
     public class RubyMvcApplication : HttpApplication
     {
+        public IRubyEngine RubyEngine
+        {
+            get
+            {
+                return Application[&quot;___RubyEngine&quot;] as IRubyEngine;
+            }
+            set
+            {
+                Application[&quot;___RubyEngine&quot;] = value;
+            }
+        }
         protected void Application_Start(object sender, EventArgs e)
         {
-            RubyEngine.InitializeIronRubyMvc(new VirtualPathProvider(), &quot;~/routes.rb&quot;);
+            var pathProvider = new VirtualPathProvider();
+            RubyEngine = Core.RubyEngine.InitializeIronRubyMvc(pathProvider, &quot;~/routes.rb&quot;);
             OnStart();
         }
 </diff>
      <filename>IronRubyMvc/Core/RubyMvcApplication.cs</filename>
    </modified>
    <modified>
      <diff>@@ -4,34 +4,116 @@ namespace System.Web.Mvc.IronRuby.Core
 {
     public class RubyMvcModule : IHttpModule
     {
+
+        private IRubyEngine _rubyEngine;
+        private MvcApplication _mvcApplication;
+        private HttpApplication _application;
+
         #region Implementation of IHttpModule
 
         /// &lt;summary&gt;
-        ///   nitializes a module and prepares it to handle requests.
+        /// initializes a module and prepares it to handle requests.
         /// &lt;/summary&gt;
         /// &lt;param name=&quot;context&quot;&gt;
         ///  An &lt;see cref=&quot;T:System.Web.HttpApplication&quot; /&gt; that provides access to the methods, properties, and events common to all application objects within an ASP.NET application 
         /// &lt;/param&gt;
         public void Init(HttpApplication context)
         {
-            context.Error += context_Error;
+            context.EnsureArgumentNotNull(&quot;context&quot;);
+
+            if (!InitializeRubyEngine(context)) return;
+            if (!InitializeRubyApplication(context)) return;
+            InitializeRubyApplicationHooks(context);
+            
+            _application = context;
+        }
+
+        private void InitializeRubyApplicationHooks(HttpApplication context)
+        {
+            if (_mvcApplication.IsNull()) return;
+
+            context.Error += (sender, args) =&gt; _mvcApplication.Error(sender, args);
+            context.AcquireRequestState += (sender, args) =&gt; _mvcApplication.AcquireRequestState(sender, args);
+            context.AuthenticateRequest += (sender, args) =&gt; _mvcApplication.AuthenticateRequest(sender, args);
+            context.AuthorizeRequest += (sender, args) =&gt; _mvcApplication.AuthorizeRequest(sender, args);
+            context.BeginRequest += (sender, args) =&gt; _mvcApplication.BeginRequest(sender, args);
+            context.Disposed += (sender, args) =&gt; _mvcApplication.Disposed(sender, args);
+            context.EndRequest += (sender, args) =&gt; _mvcApplication.EndRequest(sender, args);
+            context.LogRequest += (sender, args) =&gt; _mvcApplication.LogRequest(sender, args);
+            context.PostAcquireRequestState += (sender, args) =&gt; _mvcApplication.PostAcquireRequestState(sender, args);
+            context.MapRequestHandler += (sender, args) =&gt; _mvcApplication.MapRequestHandler(sender, args);
+            context.PostAuthenticateRequest += (sender, args) =&gt; _mvcApplication.PostAuthenticateRequest(sender, args);
+            context.PostAuthorizeRequest += (sender, args) =&gt; _mvcApplication.PostAuthorizeRequest(sender, args);
+            context.PostLogRequest += (sender, args) =&gt; _mvcApplication.PostLogRequest(sender, args);
+            context.PostMapRequestHandler += (sender, args) =&gt; _mvcApplication.PostMapRequestHandler(sender, args);
+            context.PostReleaseRequestState += (sender, args) =&gt; _mvcApplication.PostReleaseRequestState(sender, args);
+            context.PostRequestHandlerExecute += (sender, args) =&gt; _mvcApplication.PostRequestHandlerExecute(sender, args);
+            context.PostResolveRequestCache += (sender, args) =&gt; _mvcApplication.PostResolveRequestCache(sender, args);
+            context.PostUpdateRequestCache += (sender, args) =&gt; _mvcApplication.PostUpdateRequestCache(sender, args);
+            context.PreRequestHandlerExecute += (sender, args) =&gt; _mvcApplication.PreRequestHandlerExecute(sender, args);
+            context.PreSendRequestContent += (sender, args) =&gt; _mvcApplication.PreSendRequestContent(sender, args);
+            context.PreSendRequestHeaders += (sender, args) =&gt; _mvcApplication.PreSendRequestHeaders(sender, args);
+            context.ReleaseRequestState += (sender, args) =&gt; _mvcApplication.ReleaseRequestState(sender, args);
+            context.ResolveRequestCache += (sender, args) =&gt; _mvcApplication.ResolveRequestCache(sender, args);
+            context.UpdateRequestCache += (sender, args) =&gt; _mvcApplication.UpdateRequestCache(sender, args);
+           
         }
 
-        void context_Error(object sender, EventArgs e)
+        private bool InitializeRubyApplication(HttpApplication context)
         {
-            var application = sender as RubyMvcApplication;
-            if(sender.IsNotNull())
-            {
-                application.Context.Error 
-            }
+            if (_mvcApplication.IsNotNull()) return false;
+
+            _mvcApplication = _rubyEngine.ExecuteFile&lt;MvcApplication&gt;(&quot;~/mvc_application.rb&quot;,  false);
+            if(_mvcApplication.IsNotNull()) _mvcApplication.Start(context, EventArgs.Empty);
+            return true;
         }
 
+        private bool InitializeRubyEngine(HttpApplication context)
+        {
+            var rubyMvcApp = context as RubyMvcApplication;
+            if(rubyMvcApp.IsNull()) return false;
+            
+            if(rubyMvcApp.RubyEngine.IsNull())
+                rubyMvcApp.RubyEngine = RubyEngine.InitializeIronRubyMvc(new VirtualPathProvider(), &quot;~/routes.rb&quot;);
+
+            if (_rubyEngine.IsNull())
+                _rubyEngine = rubyMvcApp.RubyEngine;
+
+            return true;
+        }
+
+
         /// &lt;summary&gt;
-        ///                     Disposes of the resources (other than memory) used by the module that implements &lt;see cref=&quot;T:System.Web.IHttpModule&quot; /&gt;.
+        /// Disposes of the resources (other than memory) used by the module that implements &lt;see cref=&quot;T:System.Web.IHttpModule&quot; /&gt;.
         /// &lt;/summary&gt;
         public void Dispose()
         {
-            throw new System.NotImplementedException();
+            if (_application.IsNull()) return;
+
+            _application.Error -= (sender, args) =&gt; _mvcApplication.Error(sender, args);
+            _application.AcquireRequestState -= (sender, args) =&gt; _mvcApplication.AcquireRequestState(sender, args);
+            _application.AuthenticateRequest -= (sender, args) =&gt; _mvcApplication.AuthenticateRequest(sender, args);
+            _application.AuthorizeRequest -= (sender, args) =&gt; _mvcApplication.AuthorizeRequest(sender, args);
+            _application.BeginRequest -= (sender, args) =&gt; _mvcApplication.BeginRequest(sender, args);
+            _application.Disposed -= (sender, args) =&gt; _mvcApplication.Disposed(sender, args);
+            _application.EndRequest -= (sender, args) =&gt; _mvcApplication.EndRequest(sender, args);
+            _application.LogRequest -= (sender, args) =&gt; _mvcApplication.LogRequest(sender, args);
+            _application.PostAcquireRequestState -= (sender, args) =&gt; _mvcApplication.PostAcquireRequestState(sender, args);
+            _application.MapRequestHandler -= (sender, args) =&gt; _mvcApplication.MapRequestHandler(sender, args);
+            _application.PostAuthenticateRequest -= (sender, args) =&gt; _mvcApplication.PostAuthenticateRequest(sender, args);
+            _application.PostAuthorizeRequest -= (sender, args) =&gt; _mvcApplication.PostAuthorizeRequest(sender, args);
+            _application.PostLogRequest -= (sender, args) =&gt; _mvcApplication.PostLogRequest(sender, args);
+            _application.PostMapRequestHandler -= (sender, args) =&gt; _mvcApplication.PostMapRequestHandler(sender, args);
+            _application.PostReleaseRequestState -= (sender, args) =&gt; _mvcApplication.PostReleaseRequestState(sender, args);
+            _application.PostRequestHandlerExecute -= (sender, args) =&gt; _mvcApplication.PostRequestHandlerExecute(sender, args);
+            _application.PostResolveRequestCache -= (sender, args) =&gt; _mvcApplication.PostResolveRequestCache(sender, args);
+            _application.PostUpdateRequestCache -= (sender, args) =&gt; _mvcApplication.PostUpdateRequestCache(sender, args);
+            _application.PreRequestHandlerExecute -= (sender, args) =&gt; _mvcApplication.PreRequestHandlerExecute(sender, args);
+            _application.PreSendRequestContent -= (sender, args) =&gt; _mvcApplication.PreSendRequestContent(sender, args);
+            _application.PreSendRequestHeaders -= (sender, args) =&gt; _mvcApplication.PreSendRequestHeaders(sender, args);
+            _application.ReleaseRequestState -= (sender, args) =&gt; _mvcApplication.ReleaseRequestState(sender, args);
+            _application.ResolveRequestCache -= (sender, args) =&gt; _mvcApplication.ResolveRequestCache(sender, args);
+            _application.UpdateRequestCache -= (sender, args) =&gt; _mvcApplication.UpdateRequestCache(sender, args);
         }
 
         #endregion</diff>
      <filename>IronRubyMvc/Core/RubyMvcModule.cs</filename>
    </modified>
    <modified>
      <diff>@@ -14,9 +14,25 @@ namespace System.Web.Mvc.IronRuby.Core
 
         public bool FileExists(string filePath)
         {
+            
             return HostingEnvironment.VirtualPathProvider.FileExists(filePath);
         }
 
+        public bool DirectoryExists(string dirPath)
+        {
+            return HostingEnvironment.VirtualPathProvider.DirectoryExists(dirPath);
+        }
+
+        public string[] GetDirectories(string path, string searchPattern)
+        {
+            return Directory.GetDirectories(HostingEnvironment.MapPath(path) ?? ApplicationPhysicalPath, searchPattern);
+        }
+
+        public string[] GetFiles(string path, string searchPattern)
+        {
+            return Directory.GetFiles(HostingEnvironment.MapPath(path) ?? ApplicationPhysicalPath, searchPattern);
+        }
+
         public Stream Open(string filePath)
         {
             var file = HostingEnvironment.VirtualPathProvider.GetFile(filePath);
@@ -28,6 +44,26 @@ namespace System.Web.Mvc.IronRuby.Core
             return HostingEnvironment.MapPath(filePath);
         }
 
+        public bool IsAbsolutePath(string path)
+        {
+            return new Uri(GetFullPath(path), UriKind.RelativeOrAbsolute).IsAbsoluteUri;
+        }
+
+        public string GetFullPath(string path)
+        {
+            return path.Replace(Path.DirectorySeparatorChar, '/');
+        }
+
+        public Stream Open(string path, FileMode mode, FileAccess access, FileShare share)
+        {
+            return new FileStream(MapPath(path), mode, access, share);
+        }
+
+        public Stream Open(string path, FileMode mode, FileAccess access, FileShare share, int size)
+        {
+            return new FileStream(MapPath(path), mode, access, share, size);
+        }
+
         public string ApplicationPhysicalPath
         {
             get { return HostingEnvironment.ApplicationPhysicalPath; }</diff>
      <filename>IronRubyMvc/Core/VirtualPathProvider.cs</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,13 @@
-&#65279;#region Usings
+&#65279;extern alias clr3;
+
+#region Usings
 
 using System.Collections;
 using System.Collections.Generic;
 using System.Web.Routing;
 using IronRuby.Builtins;
 using Microsoft.Scripting;
-
+using clr3::System.Linq;
 #endregion
 
 namespace System.Web.Mvc.IronRuby.Extensions
@@ -67,7 +69,10 @@ namespace System.Web.Mvc.IronRuby.Extensions
             var filters = new List&lt;TITarget&gt;();
             var key = SymbolTable.StringToId(actionName);
             var hasKey = filterDescriptions.ContainsKey(key);
-            if (hasKey) filters.AddRange((filterDescriptions[key] as RubyArray).Cast&lt;TITarget&gt;());
+            if (hasKey)
+            {
+                filters.AddRange((filterDescriptions[key] as RubyArray).Cast&lt;TITarget&gt;());
+            }
             return filters;
         }
 </diff>
      <filename>IronRubyMvc/Extensions/IDictionaryExtensions.cs</filename>
    </modified>
    <modified>
      <diff>@@ -30,6 +30,7 @@ namespace System.Web.Mvc.IronRuby.Extensions
         [SuppressMessage(&quot;Microsoft.Performance&quot;, &quot;CA1804:RemoveUnusedLocals&quot;, MessageId = &quot;o&quot;)]
         public static bool IsEmpty&lt;T&gt;(this IEnumerable&lt;T&gt; collection)
         {
+            // not guarding for null foreach does that for me
             foreach (var o in collection)
             {
                 return false;
@@ -40,6 +41,7 @@ namespace System.Web.Mvc.IronRuby.Extensions
         [SuppressMessage(&quot;Microsoft.Performance&quot;, &quot;CA1804:RemoveUnusedLocals&quot;, MessageId = &quot;o&quot;)]
         public static bool IsEmpty(this IEnumerable collection)
         {
+            // not guarding for null, foreach does that for me
             foreach (var o in collection)
             {
                 return false;
@@ -47,34 +49,7 @@ namespace System.Web.Mvc.IronRuby.Extensions
             return true;
         }
 
-        public static bool Contains&lt;T&gt;(this IEnumerable&lt;T&gt; collection, T value)
-        {
-            foreach (var t in collection)
-            {
-                if ((t.IsNull() &amp;&amp; value.IsNull()) || (t.IsNotNull() &amp;&amp; t.Equals(value))) return true;
-            }
-            return false;
-        }
-
-        public static bool DoesNotContain&lt;T&gt;(this IEnumerable&lt;T&gt; collection, T value)
-        {
-            foreach (var t in collection)
-            {
-                if (t.Equals(value)) return false;
-            }
-            return true;
-        }
-
-        public static bool DoesNotContain(this IEnumerable collection, object value)
-        {
-            foreach (var t in collection)
-            {
-                if (t.Equals(value)) return false;
-            }
-            return true;
-        }
-
-        public static bool DoesNotContain&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; collection, Func&lt;TSource, bool&gt; predicate)
+        internal static bool DoesNotContain&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; collection, Func&lt;TSource, bool&gt; predicate)
         {
             foreach (var o in collection)
             {
@@ -83,88 +58,6 @@ namespace System.Web.Mvc.IronRuby.Extensions
             return true;
         }
 
-        public static bool Contains(this IEnumerable collection, Predicate&lt;object&gt; predicate)
-        {
-            foreach (var o in collection)
-            {
-                if (predicate(o)) return true;
-            }
-            return false;
-        }
-
-        public static bool Contains(this IEnumerable collection, object value)
-        {
-            foreach (var t in collection)
-            {
-                if (t.Equals(value)) return true;
-            }
-            return false;
-        }
-
-        public static IEnumerable&lt;TSource&gt; Where&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; collection, Predicate&lt;TSource&gt; predicate)
-        {
-            foreach (var source in collection)
-            {
-                if (predicate(source)) yield return source;
-            }
-        }
-
-        public static TSource FirstOrDefault&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; collection, Predicate&lt;TSource&gt; predicate)
-        {
-            foreach (var source in collection)
-            {
-                if (predicate(source)) return source;
-            }
-            return default(TSource);
-        }
-
-        public static TSource FirstOrDefault&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; collection)
-        {
-            foreach (var source in collection)
-            {
-                return source;
-            }
-            return default(TSource);
-        }
-
-        public static bool All&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; collection, Predicate&lt;TSource&gt; predicate)
-        {
-            foreach (var source in collection)
-            {
-                if (!predicate(source)) return false;
-            }
-            return true;
-        }
-
-        public static bool Any&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; collection, Predicate&lt;TSource&gt; predicate)
-        {
-            foreach (var source in collection)
-            {
-                if (predicate(source)) return true;
-            }
-            return false;
-        }
-
-        public static IEnumerable Where(this IEnumerable collection, Predicate&lt;object&gt; predicate)
-        {
-            foreach (var source in collection)
-            {
-                if (predicate(source)) yield return source;
-            }
-        }
-
-
-        internal static IEnumerable&lt;TTarget&gt; Cast&lt;TTarget&gt;(this IEnumerable collection) where TTarget : class
-        {
-            var result = new List&lt;TTarget&gt;();
-            collection.ForEach(item =&gt;
-                                   {
-                                       var casted = (typeof (TTarget) == typeof (string)) ? item.ToString() as TTarget : item as TTarget;
-                                       if (casted.IsNotNull()) result.Add(casted);
-                                   });
-            return result;
-        }
-
         internal static IEnumerable&lt;TTarget&gt; Map&lt;TSource, TTarget&gt;(this IEnumerable&lt;TSource&gt; collection, Func&lt;TSource, TTarget&gt; iterator)
         {
             foreach (var source in collection)
@@ -181,36 +74,6 @@ namespace System.Web.Mvc.IronRuby.Extensions
             }
         }
 
-        internal static int Count(this IEnumerable collection)
-        {
-            var count = 0;
-            foreach (var o in collection)
-            {
-                count++;
-            }
-            return count;
-        }
-
-        internal static int Count&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; collection, Predicate&lt;TSource&gt; predicate)
-        {
-            var count = 0;
-            foreach (var o in collection)
-            {
-                if (predicate(o)) count++;
-            }
-            return count;
-        }
-
-        internal static TSource[] ToArray&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; collection)
-        {
-            var result = new TSource[collection.Count()];
-            var idx = 0;
-
-            collection.ForEach(item =&gt; result[idx++] = item);
-
-            return result;
-        }
-
         internal static IEnumerable&lt;SelectListItem&gt; ToSelectListItemList(this IEnumerable collection)
         {
             var result = new List&lt;SelectListItem&gt;();</diff>
      <filename>IronRubyMvc/Extensions/IEnumerableExtensions.cs</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,10 @@
+extern alias clr3;
 #region Usings
 
 using System.Collections.Generic;
 using IronRuby.Builtins;
-
+using Microsoft.Scripting.Runtime;
+using clr3::System.Linq;
 #endregion
 
 namespace System.Web.Mvc.IronRuby.Extensions
@@ -41,11 +43,16 @@ namespace System.Web.Mvc.IronRuby.Extensions
         /// &lt;/summary&gt;
         /// &lt;param name=&quot;value&quot;&gt;The value.&lt;/param&gt;
         /// &lt;param name=&quot;argumentName&quot;&gt;Name of the argument.&lt;/param&gt;
-        public static void EnsureArgumentNotNull(this object value, string argumentName)
+        internal static void EnsureArgumentNotNull(this object value, string argumentName)
         {
             if (value.IsNull()) throw new ArgumentNullException(argumentName, &quot;Cannot be null&quot;);
         }
 
+        /// &lt;summary&gt;
+        /// Converts the object to a string collection.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;value&quot;&gt;The value.&lt;/param&gt;
+        /// &lt;returns&gt;&lt;/returns&gt;
         internal static IEnumerable&lt;string&gt; ToStringCollection(this object value)
         {
             var array = (RubyArray) value;</diff>
      <filename>IronRubyMvc/Extensions/ObjectExtensions.cs</filename>
    </modified>
    <modified>
      <diff>@@ -52,7 +52,7 @@ namespace System.Web.Mvc.IronRuby.Extensions
         /// &lt;/summary&gt;
         /// &lt;param name=&quot;value&quot;&gt;The value.&lt;/param&gt;
         /// &lt;returns&gt;&lt;/returns&gt;
-        public static SymbolId ToSymbolId(this string value)
+        internal static SymbolId ToSymbolId(this string value)
         {
             return ToSymbolId(value, true);
         }
@@ -63,7 +63,7 @@ namespace System.Web.Mvc.IronRuby.Extensions
         /// &lt;param name=&quot;value&quot;&gt;The value.&lt;/param&gt;
         /// &lt;param name=&quot;caseSensitive&quot;&gt;if set to &lt;c&gt;true&lt;/c&gt; the &lt;see cref=&quot;SymbolId&quot;/&gt; will be case-sensitive.&lt;/param&gt;
         /// &lt;returns&gt;&lt;/returns&gt;
-        public static SymbolId ToSymbolId(this string value, bool caseSensitive)
+        internal static SymbolId ToSymbolId(this string value, bool caseSensitive)
         {
             return caseSensitive ? SymbolTable.StringToId(value) : SymbolTable.StringToCaseInsensitiveId(value);
         }
@@ -73,7 +73,7 @@ namespace System.Web.Mvc.IronRuby.Extensions
         /// &lt;/summary&gt;
         /// &lt;param name=&quot;value&quot;&gt;The value.&lt;/param&gt;
         /// &lt;param name=&quot;argumentName&quot;&gt;Name of the argument.&lt;/param&gt;
-        public static void EnsureArgumentNotEmpty(this string value, string argumentName)
+        internal static void EnsureArgumentNotEmpty(this string value, string argumentName)
         {
             if (value.IsNullOrBlank()) throw new ArgumentNullException(argumentName, &quot;Cannot be null&quot;);
         }</diff>
      <filename>IronRubyMvc/Extensions/StringExtensions.cs</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,13 @@
-using System.Collections.Generic;
+#region Usings
+
 using System.Web.Mvc.Ajax;
 using System.Web.Mvc.Html;
 using System.Web.Mvc.IronRuby.Extensions;
 using System.Web.Routing;
 using IronRuby.Builtins;
 
+#endregion
+
 namespace System.Web.Mvc.IronRuby.Helpers
 {
     public class RubyAjaxHelper : AjaxHelper
@@ -51,7 +54,8 @@ namespace System.Web.Mvc.IronRuby.Helpers
             return _helper.ActionLink(linkText, actionName, controllerName, routeValues.ToRouteDictionary(), ajaxOptions, htmlAttributes.ToDictionary());
         }
 
-        public string ActionLink(string linkText, string actionName, string controllerName, string protocol, string hostName, string fragment, Hash routeValues, AjaxOptions ajaxOptions, Hash htmlAttributes)
+        public string ActionLink(string linkText, string actionName, string controllerName, string protocol, string hostName, string fragment, Hash routeValues, AjaxOptions ajaxOptions,
+                                 Hash htmlAttributes)
         {
             return _helper.ActionLink(linkText, actionName, controllerName, protocol, hostName, fragment, routeValues.ToRouteDictionary(), ajaxOptions, htmlAttributes.ToDictionary());
         }
@@ -136,7 +140,5 @@ namespace System.Web.Mvc.IronRuby.Helpers
         {
             return _helper.RouteLink(linkText, routeName, routeValues.ToRouteDictionary(), ajaxOptions, htmlAttributes.ToDictionary());
         }
-
- 
     }
 }
\ No newline at end of file</diff>
      <filename>IronRubyMvc/Helpers/RubyAjaxHelper.cs</filename>
    </modified>
    <modified>
      <diff>@@ -77,6 +77,10 @@
     &lt;/Reference&gt;
     &lt;Reference Include=&quot;System&quot; /&gt;
     &lt;Reference Include=&quot;System.configuration&quot; /&gt;
+    &lt;Reference Include=&quot;System.Core&quot;&gt;
+      &lt;RequiredTargetFramework&gt;3.5&lt;/RequiredTargetFramework&gt;
+      &lt;Aliases&gt;clr3&lt;/Aliases&gt;
+    &lt;/Reference&gt;
     &lt;Reference Include=&quot;System.Web&quot; /&gt;
     &lt;Reference Include=&quot;System.Data&quot; /&gt;
     &lt;Reference Include=&quot;System.Web.Abstractions&quot;&gt;
@@ -103,7 +107,15 @@
     &lt;Compile Include=&quot;Controllers\RubyResultFilter.cs&quot; /&gt;
     &lt;Compile Include=&quot;Core\Constants.cs&quot; /&gt;
     &lt;Compile Include=&quot;Core\Enums.cs&quot; /&gt;
-    &lt;Compile Include=&quot;Core\RubyMvcApplication.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Core\MvcApplication.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Core\MvcScriptHost.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Core\PathProviderPAL.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Core\RubyMvcApplication.cs&quot;&gt;
+      &lt;SubType&gt;Code&lt;/SubType&gt;
+    &lt;/Compile&gt;
+    &lt;Compile Include=&quot;Core\RubyMvcModule.cs&quot;&gt;
+      &lt;SubType&gt;Code&lt;/SubType&gt;
+    &lt;/Compile&gt;
     &lt;Compile Include=&quot;Core\RubyRoutes.cs&quot; /&gt;
     &lt;Compile Include=&quot;Controllers\RubyActionDescriptor.cs&quot; /&gt;
     &lt;Compile Include=&quot;Controllers\RubyController.cs&quot; /&gt;
@@ -111,6 +123,7 @@
     &lt;Compile Include=&quot;Controllers\RubyControllerDescriptor.cs&quot; /&gt;
     &lt;Compile Include=&quot;Controllers\RubyControllerFactory.cs&quot; /&gt;
     &lt;Compile Include=&quot;Core\RubyEngine.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Core\TypeConverter.cs&quot; /&gt;
     &lt;Compile Include=&quot;Core\VirtualPathProvider.cs&quot; /&gt;
     &lt;Compile Include=&quot;Core\VirtualPathStreamContentProvider.cs&quot; /&gt;
     &lt;Compile Include=&quot;Extensions\FilterInfoExtensions.cs&quot; /&gt;</diff>
      <filename>IronRubyMvc/System.Web.Mvc.IronRuby.csproj</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,3 @@
 &#65279;&lt;%@ Page Language=&quot;C#&quot; %&gt;
 &lt;%
-    Response.Redirect(&quot;~/Home&quot;);%&gt;
\ No newline at end of file
+Response.Redirect(&quot;~/Home&quot;);%&gt;
\ No newline at end of file</diff>
      <filename>IronRubyMvcWeb/Default.aspx</filename>
    </modified>
    <modified>
      <diff>@@ -80,6 +80,7 @@
 			&lt;add verb=&quot;GET,HEAD&quot; path=&quot;ScriptResource.axd&quot; type=&quot;System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot; validate=&quot;false&quot;/&gt;
 		&lt;/httpHandlers&gt;
 		&lt;httpModules&gt;
+&lt;!--            &lt;add name=&quot;RubyMvcModule&quot; type=&quot;System.Web.Mvc.IronRuby.Core.RubyMvcModule, System.Web.Mvc.IronRuby&quot;/&gt;--&gt;
 			&lt;add name=&quot;ScriptModule&quot; type=&quot;System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt;
 			&lt;add name=&quot;UrlRoutingModule&quot; type=&quot;System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt;
 		&lt;/httpModules&gt;
@@ -109,6 +110,7 @@
         &lt;modules runAllManagedModulesForAllRequests=&quot;true&quot;&gt;
             &lt;remove name=&quot;ScriptModule&quot;/&gt;
             &lt;remove name=&quot;UrlRoutingModule&quot;/&gt;
+&lt;!--            &lt;add name=&quot;RubyMvcModule&quot; type=&quot;System.Web.Mvc.IronRuby.Core.RubyMvcModule, System.Web.Mvc.IronRuby&quot;/&gt;--&gt;
             &lt;add name=&quot;ScriptModule&quot; preCondition=&quot;managedHandler&quot; type=&quot;System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt;
             &lt;add name=&quot;UrlRoutingModule&quot; type=&quot;System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&gt;
         &lt;/modules&gt;</diff>
      <filename>IronRubyMvcWeb/Web.config</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.Libraries.Yaml.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.Libraries.Yaml.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.Libraries.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.Libraries.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.Core.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.Core.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.ExtensionAttribute.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.ExtensionAttribute.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/xUnit.BDDExtensions.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/xUnit.BDDExtensions.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/xunit.dll</filename>
    </modified>
    <modified>
      <diff>@@ -1486,14 +1486,7 @@
             &lt;summary&gt;
             Creates a new instance of the &lt;see cref=&quot;T:Xunit.Sdk.AssemblyResult&quot;/&gt; class.
             &lt;/summary&gt;
-            &lt;param name=&quot;assemblyFilename&quot;&gt;The filename of the assembly&lt;/param&gt;
-        &lt;/member&gt;
-        &lt;member name=&quot;M:Xunit.Sdk.AssemblyResult.#ctor(System.String,System.String)&quot;&gt;
-            &lt;summary&gt;
-            Creates a new instance of the &lt;see cref=&quot;T:Xunit.Sdk.AssemblyResult&quot;/&gt; class.
-            &lt;/summary&gt;
-            &lt;param name=&quot;assemblyFilename&quot;&gt;The filename of the assembly&lt;/param&gt;
-            &lt;param name=&quot;configFilename&quot;&gt;The configuration filename&lt;/param&gt;
+            &lt;param name=&quot;filename&quot;&gt;The filename of the assembly&lt;/param&gt;
         &lt;/member&gt;
         &lt;member name=&quot;M:Xunit.Sdk.AssemblyResult.ToXml(System.Xml.XmlNode)&quot;&gt;
             &lt;summary&gt;
@@ -1502,11 +1495,6 @@
             &lt;param name=&quot;parentNode&quot;&gt;The parent node.&lt;/param&gt;
             &lt;returns&gt;The newly created XML node.&lt;/returns&gt;
         &lt;/member&gt;
-        &lt;member name=&quot;P:Xunit.Sdk.AssemblyResult.ConfigFilename&quot;&gt;
-            &lt;summary&gt;
-            Gets the fully qualified filename of the configuration file.
-            &lt;/summary&gt;
-        &lt;/member&gt;
         &lt;member name=&quot;P:Xunit.Sdk.AssemblyResult.Directory&quot;&gt;
             &lt;summary&gt;
             Gets the directory where the assembly resides.</diff>
      <filename>dependencies/xunit.xml</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c2ab2f4c4008de66783fae617bf835b54046125e</id>
    </parent>
  </parents>
  <author>
    <name>Ivan Porto Carrero</name>
    <email>ivan@flanders.co.nz</email>
  </author>
  <url>http://github.com/jschementi/ironrubymvc/commit/39143f05182d7eebdeeb5c8c22532c5663ad3ece</url>
  <id>39143f05182d7eebdeeb5c8c22532c5663ad3ece</id>
  <committed-date>2009-05-01T11:34:15-07:00</committed-date>
  <authored-date>2009-05-01T11:34:15-07:00</authored-date>
  <message>Started writing bacon specs before going any further</message>
  <tree>e8d549e728442fecadb5a65b1d5af4800e200fdf</tree>
  <committer>
    <name>Ivan Porto Carrero</name>
    <email>ivan@flanders.co.nz</email>
  </committer>
</commit>
