diff --git a/IISExpress/AppServer/applicationhost.config b/IISExpress/AppServer/applicationhost.config
index 351a77d65..6c56a7b72 100644
--- a/IISExpress/AppServer/applicationhost.config
+++ b/IISExpress/AppServer/applicationhost.config
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <!--
 
     IIS configuration sections.
@@ -17,9 +17,7 @@
           %SYSTEMDRIVE% - The drive letter of %IIS_BIN%
 
 -->
-
 <configuration>
-
   <!--
 
         The <configSections> section controls the registration of sections.
@@ -58,7 +56,6 @@
       <section name="sites" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
       <section name="webLimits" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
     </sectionGroup>
-
     <sectionGroup name="system.webServer">
       <section name="asp" overrideModeDefault="Deny" />
       <section name="caching" overrideModeDefault="Allow" />
@@ -117,7 +114,6 @@
       </sectionGroup>
     </sectionGroup>
   </configSections>
-
   <configProtectedData>
     <providers>
       <add name="IISWASOnlyRsaProvider" type="" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
@@ -125,9 +121,7 @@
       <add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAA4WoiRJ8KHwzAG8AgejPxEOO4/2Vhkolbwo/8gZeNdUDSD36m55hWv4uC9tr/MlKdnwRLL0NhT50Gccyftqz5xTZ0dg5FtvQhTw/he1NwexTKbV+I4Zrd+sZUqHZTsr7JiEr6OHGXL70qoISW5G2m9U8wKT3caPiDPNj2aAaYPLo=" />
     </providers>
   </configProtectedData>
-
   <system.applicationHost>
-
     <applicationPools>
       <!--            <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
             <add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
@@ -139,7 +133,6 @@
         <processModel />
       </applicationPoolDefaults>
     </applicationPools>
-
     <!--
 
           The <listenerAdapters> section defines the protocols with which the
@@ -149,14 +142,13 @@
     <listenerAdapters>
       <add name="http" />
     </listenerAdapters>
-
     <sites>
       <site name="NZBDrone" id="1" serverAutoStart="true">
         <application path="/">
           <virtualDirectory path="/" physicalPath="%NZBDRONE_PATH%\NZBDrone.Web" />
         </application>
         <bindings>
-          <binding protocol="http" bindingInformation="*:8981:" />
+          <binding protocol="http" bindingInformation="*:8989:" />
         </bindings>
       </site>
       <siteDefaults>
@@ -166,25 +158,16 @@
       <applicationDefaults applicationPool="IISExpressAppPool" />
       <virtualDirectoryDefaults allowSubDirConfig="true" />
     </sites>
-
     <webLimits />
-
   </system.applicationHost>
-
   <system.webServer>
-
     <serverRuntime />
-
     <asp scriptErrorSentToBrowser="true">
       <cache diskTemplateCacheDirectory="%TEMP%\iisexpress\ASP Compiled Templates" />
       <limits />
     </asp>
-
-    <caching enabled="true" enableKernelCache="true">
-    </caching>
-
+    <caching enabled="true" enableKernelCache="true"></caching>
     <cgi />
-
     <defaultDocument enabled="true">
       <files>
         <add value="Default.htm" />
@@ -194,11 +177,8 @@
         <add value="default.aspx" />
       </files>
     </defaultDocument>
-
     <directoryBrowse enabled="false" />
-
     <fastCgi />
-
     <!--
 
           The <globalModules> section defines all native-code modules.
@@ -244,7 +224,6 @@
       <add name="ManagedEngine" image="%windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness32" />
       <add name="ManagedEngineV4.0_32bit" image="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" />
     </globalModules>
-
     <httpCompression directory="%TEMP%\iisexpress\IIS Temporary Compressed Files">
       <scheme name="gzip" dll="%IIS_BIN%\gzip.dll" />
       <dynamicTypes>
@@ -262,7 +241,6 @@
         <add mimeType="*/*" enabled="false" />
       </staticTypes>
     </httpCompression>
-
     <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
       <error statusCode="401" prefixLanguageFilePath="%IIS_BIN%\custerr" path="401.htm" />
       <error statusCode="403" prefixLanguageFilePath="%IIS_BIN%\custerr" path="403.htm" />
@@ -274,9 +252,7 @@
       <error statusCode="501" prefixLanguageFilePath="%IIS_BIN%\custerr" path="501.htm" />
       <error statusCode="502" prefixLanguageFilePath="%IIS_BIN%\custerr" path="502.htm" />
     </httpErrors>
-
     <httpLogging dontLog="false" />
-
     <httpProtocol>
       <customHeaders>
         <clear />
@@ -286,60 +262,39 @@
         <clear />
       </redirectHeaders>
     </httpProtocol>
-
     <httpRedirect enabled="false" />
-
-    <httpTracing>
-    </httpTracing>
-
+    <httpTracing></httpTracing>
     <isapiFilters>
       <filter name="ASP.Net_2.0.50727.0" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv2.0" />
       <filter name="ASP.Net_2.0_for_v1.1" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv1.1" />
       <filter name="ASP.Net_4.0_32bit" path="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv4.0" />
     </isapiFilters>
-
     <odbcLogging />
-
     <security>
-
       <access sslFlags="None" />
-
       <applicationDependencies>
         <application name="Active Server Pages" groupId="ASP" />
       </applicationDependencies>
-
       <authentication>
-
         <anonymousAuthentication enabled="true" userName="" />
-
         <basicAuthentication enabled="false" />
-
         <clientCertificateMappingAuthentication enabled="false" />
-
         <digestAuthentication enabled="false" />
-
-        <iisClientCertificateMappingAuthentication enabled="false">
-        </iisClientCertificateMappingAuthentication>
-
+        <iisClientCertificateMappingAuthentication enabled="false"></iisClientCertificateMappingAuthentication>
         <windowsAuthentication enabled="false">
           <providers>
             <add value="Negotiate" />
             <add value="NTLM" />
           </providers>
         </windowsAuthentication>
-
       </authentication>
-
       <authorization>
         <add accessType="Allow" users="*" />
       </authorization>
-
       <ipSecurity allowUnlisted="true" />
-
       <isapiCgiRestriction notListedIsapisAllowed="true" notListedCgisAllowed="true">
         <add path="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
       </isapiCgiRestriction>
-
       <requestFiltering>
         <fileExtensions allowUnlisted="true" applyToWebDAV="true">
           <add fileExtension=".asa" allowed="false" />
@@ -399,11 +354,8 @@
           <add segment="App_Browsers" />
         </hiddenSegments>
       </requestFiltering>
-
     </security>
-
     <serverSideInclude ssiExecDisable="false" />
-
     <staticContent lockAttributes="isDocFooterFileName">
       <mimeMap fileExtension=".323" mimeType="text/h323" />
       <mimeMap fileExtension=".aaf" mimeType="application/octet-stream" />
@@ -752,9 +704,7 @@
       <mimeMap fileExtension=".z" mimeType="application/x-compress" />
       <mimeMap fileExtension=".zip" mimeType="application/x-zip-compressed" />
     </staticContent>
-
     <tracing>
-
       <traceProviderDefinitions>
         <add name="WWW Server" guid="{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}">
           <areas>
@@ -791,7 +741,6 @@
           </areas>
         </add>
       </traceProviderDefinitions>
-
       <traceFailedRequests>
         <add path="*">
           <traceAreas>
@@ -803,11 +752,8 @@
           <failureDefinitions statusCodes="200-999" />
         </add>
       </traceFailedRequests>
-
     </tracing>
-
     <urlCompression />
-
     <validation />
     <webdav>
       <globalSettings>
@@ -817,14 +763,12 @@
         <lockStores>
           <add name="webdav_simple_lock" image="%IIS_BIN%\webdav_simple_lock.dll" image32="%windir%\syswow64\inetsrv\webdav_simple_lock.dll" />
         </lockStores>
-
       </globalSettings>
       <authoring>
         <locks enabled="true" lockStore="webdav_simple_lock" />
       </authoring>
       <authoringRules />
     </webdav>
-
   </system.webServer>
   <location path="" overrideMode="Allow">
     <system.webServer>
@@ -950,4 +894,4 @@
       </handlers>
     </system.webServer>
   </location>
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/NzbDrone.Core.Test/DbConfigControllerTest.cs b/NzbDrone.Core.Test/DbConfigControllerTest.cs
index 4e7f962aa..456c46a3c 100644
--- a/NzbDrone.Core.Test/DbConfigControllerTest.cs
+++ b/NzbDrone.Core.Test/DbConfigControllerTest.cs
@@ -5,8 +5,8 @@ using Gallio.Framework;
 using MbUnit.Framework;
 using MbUnit.Framework.ContractVerifiers;
 using Moq;
-using NzbDrone.Core.Entities;
 using NzbDrone.Core.Providers;
+using NzbDrone.Core.Repository;
 using SubSonic.Repository;
 
 namespace NzbDrone.Core.Test
diff --git a/NzbDrone.Core.Test/EpisodeProviderTest.cs b/NzbDrone.Core.Test/EpisodeProviderTest.cs
index 95e9c5c5e..c8f4fabac 100644
--- a/NzbDrone.Core.Test/EpisodeProviderTest.cs
+++ b/NzbDrone.Core.Test/EpisodeProviderTest.cs
@@ -21,11 +21,11 @@ namespace NzbDrone.Core.Test
     public class EpisodeProviderTest
     {
         [Test]
-        public void BulkAddSpeedTest()
+        public void RefreshEpisodeInfo()
         {
             //Arrange
             int seriesId = 71663;
-            int episodeCount = 500;
+            int episodeCount = 10;
             var fakeEpisodes = Builder<TvdbSeries>.CreateNew().With(
                 c => c.Episodes =
                     new List<TvdbEpisode>(Builder<TvdbEpisode>.CreateListOfSize(episodeCount).
diff --git a/NzbDrone.Core.Test/Libs/Moq.pdb b/NzbDrone.Core.Test/Libs/Moq.pdb
new file mode 100644
index 000000000..8ec9d72f8
Binary files /dev/null and b/NzbDrone.Core.Test/Libs/Moq.pdb differ
diff --git a/NzbDrone.Core.Test/MediaFileProviderTests (X201's conflicted copy 2010-10-19).cs b/NzbDrone.Core.Test/MediaFileProviderTests (X201's conflicted copy 2010-10-19).cs
new file mode 100644
index 000000000..a8825b3f6
--- /dev/null
+++ b/NzbDrone.Core.Test/MediaFileProviderTests (X201's conflicted copy 2010-10-19).cs	
@@ -0,0 +1,105 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using Gallio.Framework;
+using MbUnit.Framework;
+using MbUnit.Framework.ContractVerifiers;
+using Moq;
+using Ninject;
+using Ninject.Moq;
+using NzbDrone.Core.Entities;
+using NzbDrone.Core.Entities.Episode;
+using NzbDrone.Core.Entities.Quality;
+using NzbDrone.Core.Providers;
+using SubSonic.Repository;
+
+namespace NzbDrone.Core.Test
+{
+    [TestFixture]
+    // ReSharper disable InconsistentNaming
+    public class MediaFileProviderTests
+    {
+        [Test]
+        public void scan_test()
+        {
+            //Arrange
+            var repository = new Mock<IRepository>();
+            repository.Setup(c => c.Update(It.IsAny<EpisodeInfo>())).Verifiable();
+
+            var diskProvider = MockLib.GetStandardDisk(1, 2);
+
+            var kernel = new MockingKernel();
+            kernel.Bind<IDiskProvider>().ToConstant(diskProvider);
+            kernel.Bind<IRepository>().ToConstant(repository.Object);
+            kernel.Bind<IMediaFileProvider>().To<MediaFileProvider>();
+
+            var fakeSeries = new Series()
+            {
+                Path = MockLib.StandardSeries[0]
+            };
+
+            //Act
+            kernel.Get<IMediaFileProvider>().Scan(fakeSeries);
+
+            //Assert
+            repository.Verify(c => c.Update(It.IsAny<EpisodeInfo>()), Times.Exactly(1 * 2));
+
+
+        }
+
+        [Test]
+        [Row("WEEDS.S03E01-06.DUAL.BDRip.XviD.AC3.-HELLYWOOD", 3, 1)]
+        [Row("Two.and.a.Half.Me.103.720p.HDTV.X264-DIMENSION", 1, 3)]
+        [Row("Chuck.4x05.HDTV.XviD-LOL", 4, 5)]
+        [Row("The.Girls.Next.Door.S03E06.DVDRip.XviD-WiDE", 3, 6)]
+        [Row("Degrassi.S10E27.WS.DSR.XviD-2HD", 10, 27)]
+        public void episode_parse(string path, int season, int episode)
+        {
+            var result = Parser.ParseBasicEpisode(path);
+            Assert.AreEqual(season, result.SeasonNumber);
+            Assert.AreEqual(episode, result.EpisodeNumber);
+        }
+
+        [Test]
+        [Row("WEEDS.S03E01-06.DUAL.BDRip.XviD.AC3.-HELLYWOOD", QualityTypes.DVD)]
+        [Row("WEEDS.S03E01-06.DUAL.BDRip.AC3.-HELLYWOOD", QualityTypes.Bluray)]
+        [Row("Two.and.a.Half.Men.S08E05.720p.HDTV.X264-DIMENSION", QualityTypes.HDTV)]
+        [Row("Chuck.S04E05.HDTV.XviD-LOL", QualityTypes.TV)]
+        [Row("The.Girls.Next.Door.S03E06.DVDRip.XviD-WiDE", QualityTypes.DVD)]
+        [Row("Degrassi.S10E27.WS.DSR.XviD-2HD", QualityTypes.TV)]
+        [Row("Sonny.With.a.Chance.S02E15.720p.WEB-DL.DD5.1.H.264-SURFER", QualityTypes.WEBDL)]
+        [Row("Sonny.With.a.Chance.S02E15.720p", QualityTypes.HDTV)]
+        [Row("Sonny.With.a.Chance.S02E15.mkv", QualityTypes.HDTV)]
+        [Row("Sonny.With.a.Chance.S02E15.avi", QualityTypes.TV)]
+        [Row("Sonny.With.a.Chance.S02E15.xvid", QualityTypes.TV)]
+        [Row("Sonny.With.a.Chance.S02E15.divx", QualityTypes.TV)]
+        [Row("Sonny.With.a.Chance.S02E15", QualityTypes.Unknown)]
+        public void quality_parse(string path, object quality)
+        {
+            var result = Parser.ParseQuality(path);
+            Assert.AreEqual(quality, result);
+        }
+
+        [Test]
+        [Timeout(2)]
+        public void quality_parse()
+        {
+            var sw = Stopwatch.StartNew();
+            var name = "WEEDSawdawdadawdawd\\awdawdawdadadad.mkv";
+            var quality = QualityTypes.HDTV;
+
+            for (int i = 0; i < 100000; i++)
+            {
+                Assert.AreEqual(quality, Parser.ParseQuality(name));
+            }
+
+            Console.WriteLine(sw.Elapsed.ToString());
+
+
+        }
+
+    }
+
+
+}
diff --git a/NzbDrone.Core.Test/MediaFileProviderTests.cs b/NzbDrone.Core.Test/MediaFileProviderTests.cs
new file mode 100644
index 000000000..dbbb77012
--- /dev/null
+++ b/NzbDrone.Core.Test/MediaFileProviderTests.cs
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Gallio.Framework;
+using MbUnit.Framework;
+using MbUnit.Framework.ContractVerifiers;
+using Moq;
+using Ninject;
+using Ninject.Moq;
+using NzbDrone.Core.Providers;
+using NzbDrone.Core.Repository;
+using NzbDrone.Core.Repository.Quality;
+using SubSonic.Repository;
+
+namespace NzbDrone.Core.Test
+{
+    [TestFixture]
+    // ReSharper disable InconsistentNaming
+    public class MediaFileProviderTests
+    {
+        [Test]
+        public void scan_test()
+        {
+            //Arrange
+            var repository = new Mock<IRepository>();
+            repository.Setup(c => c.Update(It.IsAny<Episode>())).Verifiable();
+
+            var diskProvider = MockLib.GetStandardDisk(1, 2);
+
+            var kernel = new MockingKernel();
+            kernel.Bind<IDiskProvider>().ToConstant(diskProvider);
+            kernel.Bind<IRepository>().ToConstant(repository.Object);
+            kernel.Bind<IMediaFileProvider>().To<MediaFileProvider>();
+
+            var fakeSeries = new Series()
+            {
+                Path = MockLib.StandardSeries[0]
+            };
+
+            //Act
+            kernel.Get<IMediaFileProvider>().Scan(fakeSeries);
+
+            //Assert
+            repository.Verify(c => c.Update(It.IsAny<Episode>()), Times.Exactly(1 * 2));
+
+
+        }
+
+        [Test]
+        [Row("WEEDS.S03E01-06.DUAL.BDRip.XviD.AC3.-HELLYWOOD", 3, 1)]
+        [Row("Two.and.a.Half.Me.103.720p.HDTV.X264-DIMENSION", 1, 3)]
+        [Row("Chuck.4x05.HDTV.XviD-LOL", 4, 5)]
+        [Row("The.Girls.Next.Door.S03E06.DVDRip.XviD-WiDE", 3, 6)]
+        [Row("Degrassi.S10E27.WS.DSR.XviD-2HD", 10, 27)]
+        public void episode_parse(string path, int season, int episode)
+        {
+            var result = Parser.ParseEpisodeInfo(path);
+            Assert.Count(1, result);
+            Assert.AreEqual(season, result[0].SeasonNumber);
+            Assert.AreEqual(episode, result[0].EpisodeNumber);
+        }
+
+        [Test]
+        [Row("WEEDS.S03E01-06.DUAL.BDRip.XviD.AC3.-HELLYWOOD", QualityTypes.DVD)]
+        [Row("WEEDS.S03E01-06.DUAL.BDRip.AC3.-HELLYWOOD", QualityTypes.Bluray)]
+        [Row("Two.and.a.Half.Men.S08E05.720p.HDTV.X264-DIMENSION", QualityTypes.HDTV)]
+        [Row("Chuck.S04E05.HDTV.XviD-LOL", QualityTypes.TV)]
+        [Row("The.Girls.Next.Door.S03E06.DVDRip.XviD-WiDE", QualityTypes.DVD)]
+        [Row("Degrassi.S10E27.WS.DSR.XviD-2HD", QualityTypes.TV)]
+        [Row("Sonny.With.a.Chance.S02E15.720p.WEB-DL.DD5.1.H.264-SURFER", QualityTypes.WEBDL)]
+        [Row("Sonny.With.a.Chance.S02E15.720p", QualityTypes.HDTV)]
+        [Row("Sonny.With.a.Chance.S02E15.mkv", QualityTypes.HDTV)]
+        [Row("Sonny.With.a.Chance.S02E15.avi", QualityTypes.TV)]
+        [Row("Sonny.With.a.Chance.S02E15.xvid", QualityTypes.TV)]
+        [Row("Sonny.With.a.Chance.S02E15.divx", QualityTypes.TV)]
+        [Row("Sonny.With.a.Chance.S02E15", QualityTypes.Unknown)]
+
+        public void quality_parse(string path, object quality)
+        {
+            var result = Parser.ParseQuality(path);
+            Assert.AreEqual(quality, result);
+        }
+
+    }
+
+
+}
diff --git a/NzbDrone.Core.Test/MockLib.cs b/NzbDrone.Core.Test/MockLib.cs
index befc76cf1..1a23a270c 100644
--- a/NzbDrone.Core.Test/MockLib.cs
+++ b/NzbDrone.Core.Test/MockLib.cs
@@ -1,9 +1,10 @@
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.IO;
 using System.Linq;
 using System.Text;
-
+using FizzWare.NBuilder;
 using Moq;
 using NLog;
 using NzbDrone.Core.Providers;
@@ -50,11 +51,28 @@ namespace NzbDrone.Core.Test
             }
         }
 
-        public static IDiskProvider GetStandardDisk()
+        public static IDiskProvider GetStandardDisk(int seasons, int episodes)
         {
             var mock = new Mock<IDiskProvider>();
             mock.Setup(c => c.GetDirectories(It.IsAny<String>())).Returns(StandardSeries);
             mock.Setup(c => c.Exists(It.Is<String>(d => StandardSeries.Contains(d)))).Returns(true);
+
+
+            foreach (var series in StandardSeries)
+            {
+                var file = new List<String>();
+                for (int s = 0; s < seasons; s++)
+                {
+                    for (int e = 0; e < episodes; e++)
+                    {
+                        file.Add(String.Format("{0}\\Seasons {1}\\myepname.S{1:00}E{2:00}.avi", series, s, e));
+                    }
+                }
+
+                string series1 = series;
+                mock.Setup(c => c.GetFiles(series1, "*.avi", SearchOption.AllDirectories)).Returns(file.ToArray());
+            }
+
             return mock.Object;
         }
     }
diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
index 0ea79321a..f360342de 100644
--- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
+++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
@@ -31,16 +31,20 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Accessibility">
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+    </Reference>
+    <Reference Include="Castle.Core, Version=2.5.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\NzbDrone.Core\Libraries\Castle.Core.dll</HintPath>
+    </Reference>
     <Reference Include="FizzWare.NBuilder, Version=2.1.9.0, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>Libs\FizzWare.NBuilder.dll</HintPath>
     </Reference>
     <Reference Include="Gallio, Version=3.2.0.0, Culture=neutral, PublicKeyToken=eb9cfa67ee6ab36e, processorArchitecture=MSIL" />
     <Reference Include="MbUnit, Version=3.2.0.0, Culture=neutral, PublicKeyToken=eb9cfa67ee6ab36e, processorArchitecture=MSIL" />
-    <Reference Include="Moq, Version=4.0.10827.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>Moq\Moq.dll</HintPath>
-    </Reference>
+    <Reference Include="Moq, Version=4.0.10827.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL" />
     <Reference Include="Ninject, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\NzbDrone.Core\Libraries\Ninject.dll</HintPath>
@@ -62,6 +66,7 @@
     </Reference>
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="MediaFileProviderTests.cs" />
     <Compile Include="DbConfigControllerTest.cs" />
     <Compile Include="EpisodeProviderTest.cs" />
     <Compile Include="Fixtures.cs" />
@@ -84,8 +89,6 @@
   </ItemGroup>
   <ItemGroup>
     <Content Include="Libs\FizzWare.NBuilder.dll" />
-    <Content Include="Libs\Moq.dll" />
-    <Content Include="Libs\Moq.xml" />
     <Content Include="Files\Queue.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -95,6 +98,9 @@
     <Content Include="Files\QueueError.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Libs\Moq.dll" />
+    <Content Include="Libs\Moq.pdb" />
+    <Content Include="Libs\Moq.xml" />
     <Content Include="Libs\System.Data.SQLite.DLL">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
diff --git a/NzbDrone.Core.Test/QualityProfileTest.cs b/NzbDrone.Core.Test/QualityProfileTest.cs
index 04ec44b91..8796bbc02 100644
--- a/NzbDrone.Core.Test/QualityProfileTest.cs
+++ b/NzbDrone.Core.Test/QualityProfileTest.cs
@@ -1,7 +1,7 @@
 using System.Collections.Generic;
 using System.IO;
 using MbUnit.Framework;
-using NzbDrone.Core.Entities.Quality;
+using NzbDrone.Core.Repository.Quality;
 
 namespace NzbDrone.Core.Test
 {
@@ -23,7 +23,7 @@ namespace NzbDrone.Core.Test
             var repo = MockLib.GetEmptyRepository();
             var testProfile = new QualityProfile
             {
-                Cutoff = QualityTypes.SDTV,
+                Cutoff = QualityTypes.TV,
                 Allowed = new List<QualityTypes>() { QualityTypes.HDTV, QualityTypes.DVD },
             };
 
diff --git a/NzbDrone.Core.Test/RepoTest.cs b/NzbDrone.Core.Test/RepoTest.cs
index 26b937592..bf0fa2ce1 100644
--- a/NzbDrone.Core.Test/RepoTest.cs
+++ b/NzbDrone.Core.Test/RepoTest.cs
@@ -6,8 +6,8 @@ using FizzWare.NBuilder;
 using Gallio.Framework;
 using MbUnit.Framework;
 using MbUnit.Framework.ContractVerifiers;
-using NzbDrone.Core.Entities;
-using NzbDrone.Core.Entities.Episode;
+using NzbDrone.Core.Model;
+using NzbDrone.Core.Repository;
 
 namespace NzbDrone.Core.Test
 {
@@ -20,7 +20,7 @@ namespace NzbDrone.Core.Test
         {
             //Arrange
             var fakeSeries = Builder<Series>.CreateNew().With(s => s.SeriesId = 69).Build();
-            var fakeEpisode = Builder<EpisodeInfo>.CreateNew().With(c => c.SeriesId = 69).Build();
+            var fakeEpisode = Builder<Episode>.CreateNew().With(c => c.SeriesId = 69).Build();
 
             //Act
             var repo = MockLib.GetEmptyRepository();
@@ -55,5 +55,12 @@ namespace NzbDrone.Core.Test
             Assert.IsNotEmpty(allSeries);
             Assert.AreEqual(tvdbId, allSeries.First().SeriesId);
         }
+
+        [Test]
+        public void enteties_toString()
+        {
+            Console.WriteLine(new Episode().ToString());
+            Console.WriteLine(new EpisodeModel().ToString());
+        }
     }
 }
diff --git a/NzbDrone.Core.Test/SeriesProviderTest.cs b/NzbDrone.Core.Test/SeriesProviderTest.cs
index 8ef28b900..6fe849e35 100644
--- a/NzbDrone.Core.Test/SeriesProviderTest.cs
+++ b/NzbDrone.Core.Test/SeriesProviderTest.cs
@@ -10,8 +10,8 @@ using MbUnit.Framework.ContractVerifiers;
 using Moq;
 using Ninject;
 using Ninject.Moq;
-using NzbDrone.Core.Entities;
 using NzbDrone.Core.Providers;
+using NzbDrone.Core.Repository;
 using SubSonic.Repository;
 using TvdbLib.Data;
 using System.Linq;
@@ -59,10 +59,11 @@ namespace NzbDrone.Core.Test
         [Row(new object[] { "Van.Duin.Op.Zn.Best.S02E05.DUTCH.WS.PDTV.XViD-DiFFERENT", "Van Duin Op Zn Best" })]
         [Row(new object[] { "Dollhouse.S02E06.The.Left.Hand.720p.BluRay.x264-SiNNERS", "Dollhouse" })]
         [Row(new object[] { "Heroes.S02.COMPLETE.German.PROPER.DVDRip.XviD-Prim3time", "Heroes" })]
+        [Ignore("should be updated to validate agains a remote episode instance rather than just the title string")]
         public void Test_Parse_Success(string postTitle, string title)
         {
-            var result = SeriesProvider.ParseTitle(postTitle);
-            Assert.AreEqual(title, result, postTitle);
+            var result = Parser.ParseEpisodeInfo(postTitle);
+            //Assert.AreEqual(title, result, postTitle);
         }
 
         [Test]
@@ -73,7 +74,8 @@ namespace NzbDrone.Core.Test
 
 
             kernel.Bind<ISeriesProvider>().To<SeriesProvider>();
-            kernel.Bind<IDiskProvider>().ToConstant(MockLib.GetStandardDisk());
+            kernel.Bind<IDiskProvider>().ToConstant(MockLib.GetStandardDisk(0, 0));
+            kernel.Bind<IConfigProvider>().ToConstant(MockLib.StandardConfig);
 
             var seriesController = kernel.Get<ISeriesProvider>();
 
@@ -84,6 +86,6 @@ namespace NzbDrone.Core.Test
             Assert.AreElementsEqualIgnoringOrder(MockLib.StandardSeries, unmappedFolder);
         }
 
-    
+
     }
 }
diff --git a/NzbDrone.Core/CentralDispatch.cs b/NzbDrone.Core/CentralDispatch.cs
index e928bd1f5..0464d7a5a 100644
--- a/NzbDrone.Core/CentralDispatch.cs
+++ b/NzbDrone.Core/CentralDispatch.cs
@@ -5,10 +5,9 @@ using System.Web;
 using Ninject;
 using NLog.Config;
 using NLog.Targets;
-using NzbDrone.Core.Entities;
-using NzbDrone.Core.Entities.Episode;
 using NzbDrone.Core.Providers;
 using NzbDrone.Core.Providers.Fakes;
+using NzbDrone.Core.Repository;
 using SubSonic.DataProviders;
 using SubSonic.Repository;
 using NLog;
@@ -76,7 +75,7 @@ namespace NzbDrone.Core
         private static void ForceMigration(IRepository repository)
         {
             repository.GetPaged<Series>(0, 1);
-            repository.GetPaged<EpisodeInfo>(0, 1);
+            repository.GetPaged<Episode>(0, 1);
         }
 
 
diff --git a/NzbDrone.Core/Entities/Episode/BasicEpisode.cs b/NzbDrone.Core/Entities/Episode/BasicEpisode.cs
deleted file mode 100644
index 0b093c0d0..000000000
--- a/NzbDrone.Core/Entities/Episode/BasicEpisode.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using SubSonic.SqlGeneration.Schema;
-
-namespace NzbDrone.Core.Entities.Episode
-{
-    public class BasicEpisode
-    {
-        public virtual int SeriesId { get; set; }
-        public int SeasonNumber { get; set; }
-        public int EpisodeNumber { get; set; }
-
-        [SubSonicToOneRelation(ThisClassContainsJoinKey = true)]
-        public virtual Series Series { get; private set; }
-    }
-}
\ No newline at end of file
diff --git a/NzbDrone.Core/Entities/Episode/RemoteEpisode.cs b/NzbDrone.Core/Entities/Episode/RemoteEpisode.cs
deleted file mode 100644
index 6e40440a6..000000000
--- a/NzbDrone.Core/Entities/Episode/RemoteEpisode.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using System.ServiceModel.Syndication;
-using NzbDrone.Core.Entities.Quality;
-
-namespace NzbDrone.Core.Entities.Episode
-{
-    public class RemoteEpisode : BasicEpisode
-    {
-        public QualityTypes Quality { get; set; }
-        public SyndicationItem Feed { get; set; }
-        public bool Proper { get; set; }
-    }
-}
diff --git a/NzbDrone.Core/Entities/Notification/NotificationStatus.cs b/NzbDrone.Core/Entities/Notification/NotificationStatus.cs
deleted file mode 100644
index d9e791143..000000000
--- a/NzbDrone.Core/Entities/Notification/NotificationStatus.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace NzbDrone.Core.Entities.Notification
-{
-    public enum NotificationStatus
-    {
-        InProgress = 0,
-        Completed = 1,
-        Failed = 2
-    }
-}
\ No newline at end of file
diff --git a/NzbDrone.Core/Entities/Notification/NotificationType.cs b/NzbDrone.Core/Entities/Notification/NotificationType.cs
deleted file mode 100644
index 845b55691..000000000
--- a/NzbDrone.Core/Entities/Notification/NotificationType.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace NzbDrone.Core.Entities.Notification
-{
-    public enum NotificationType
-    {
-        Info = 0,
-        Warrning = 1,
-        Error = 2
-    }
-}
\ No newline at end of file
diff --git a/NzbDrone.Core/Libraries/Castle.Core.dll b/NzbDrone.Core/Libraries/Castle.Core.dll
new file mode 100644
index 000000000..31dc49548
Binary files /dev/null and b/NzbDrone.Core/Libraries/Castle.Core.dll differ
diff --git a/NzbDrone.Core/Libraries/Castle.Core.pdb b/NzbDrone.Core/Libraries/Castle.Core.pdb
new file mode 100644
index 000000000..1f8f1d471
Binary files /dev/null and b/NzbDrone.Core/Libraries/Castle.Core.pdb differ
diff --git a/NzbDrone.Core/Libraries/Castle.Core.xml b/NzbDrone.Core/Libraries/Castle.Core.xml
new file mode 100644
index 000000000..d3d950979
--- /dev/null
+++ b/NzbDrone.Core/Libraries/Castle.Core.xml
@@ -0,0 +1,4937 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>Castle.Core</name>
+    </assembly>
+    <members>
+        <member name="T:Castle.Components.DictionaryAdapter.DictionaryBehaviorAttribute">
+            <summary>
+            Assignes a specific dictionary key.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryBehavior">
+            <summary>
+            Defines the contract for customizing dictionary access.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.IDictionaryBehavior.ExecutionOrder">
+            <summary>
+            Determines relative order to apply related behaviors.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.DictionaryBehaviorAttribute.ExecutionOrder">
+            <summary>
+            Determines relative order to apply related behaviors.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter">
+            <summary>
+            Defines the contract for updating dictionary values.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertySetter.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <summary>
+            Sets the stored dictionary value.
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+            <param name="key">The key.</param>
+            <param name="value">The stored value.</param>
+            <param name="property">The property.</param>
+            <returns>true if the property should be stored.</returns>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter">
+            <summary>
+            Abstract adapter for the <see cref="T:System.Collections.IDictionary"/> support
+            needed by the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory"/>
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Add(System.Object,System.Object)">
+            <summary>
+            Adds an element with the provided key and value to the <see cref="T:System.Collections.IDictionary"></see> object.
+            </summary>
+            <param name="key">The <see cref="T:System.Object"></see> to use as the key of the element to add.</param>
+            <param name="value">The <see cref="T:System.Object"></see> to use as the value of the element to add.</param>
+            <exception cref="T:System.ArgumentException">An element with the same key already exists in the <see cref="T:System.Collections.IDictionary"></see> object. </exception>
+            <exception cref="T:System.ArgumentNullException">key is null. </exception>
+            <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Clear">
+            <summary>
+            Removes all elements from the <see cref="T:System.Collections.IDictionary"></see> object.
+            </summary>
+            <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only. </exception>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Contains(System.Object)">
+            <summary>
+            Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key.
+            </summary>
+            <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param>
+            <returns>
+            true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">key is null. </exception>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.GetEnumerator">
+            <summary>
+            Returns an <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object.
+            </summary>
+            <returns>
+            An <see cref="T:System.Collections.IDictionaryEnumerator"></see> object for the <see cref="T:System.Collections.IDictionary"></see> object.
+            </returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Remove(System.Object)">
+            <summary>
+            Removes the element with the specified key from the <see cref="T:System.Collections.IDictionary"></see> object.
+            </summary>
+            <param name="key">The key of the element to remove.</param>
+            <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"></see> object is read-only.-or- The <see cref="T:System.Collections.IDictionary"></see> has a fixed size. </exception>
+            <exception cref="T:System.ArgumentNullException">key is null. </exception>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.CopyTo(System.Array,System.Int32)">
+            <summary>
+            Copies the elements of the <see cref="T:System.Collections.ICollection"></see> to an <see cref="T:System.Array"></see>, starting at a particular <see cref="T:System.Array"></see> index.
+            </summary>
+            <param name="array">The one-dimensional <see cref="T:System.Array"></see> that is the destination of the elements copied from <see cref="T:System.Collections.ICollection"></see>. The <see cref="T:System.Array"></see> must have zero-based indexing.</param>
+            <param name="index">The zero-based index in array at which copying begins.</param>
+            <exception cref="T:System.ArgumentNullException">array is null. </exception>
+            <exception cref="T:System.ArgumentException">The type of the source <see cref="T:System.Collections.ICollection"></see> cannot be cast automatically to the type of the destination array. </exception>
+            <exception cref="T:System.ArgumentOutOfRangeException">index is less than zero. </exception>
+            <exception cref="T:System.ArgumentException">array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source <see cref="T:System.Collections.ICollection"></see> is greater than the available space from index to the end of the destination array. </exception>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.System#Collections#IEnumerable#GetEnumerator">
+            <summary>
+            Returns an enumerator that iterates through a collection.
+            </summary>
+            <returns>
+            An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection.
+            </returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsFixedSize">
+            <summary>
+            Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size.
+            </summary>
+            <value></value>
+            <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object has a fixed size; otherwise, false.</returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsReadOnly">
+            <summary>
+            Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only.
+            </summary>
+            <value></value>
+            <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Keys">
+            <summary>
+            Gets an <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object.
+            </summary>
+            <value></value>
+            <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the keys of the <see cref="T:System.Collections.IDictionary"></see> object.</returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Values">
+            <summary>
+            Gets an <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object.
+            </summary>
+            <value></value>
+            <returns>An <see cref="T:System.Collections.ICollection"></see> object containing the values in the <see cref="T:System.Collections.IDictionary"></see> object.</returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Item(System.Object)">
+            <summary>
+            Gets or sets the <see cref="T:System.Object"/> with the specified key.
+            </summary>
+            <value></value>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.Count">
+            <summary>
+            Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"></see>.
+            </summary>
+            <value></value>
+            <returns>The number of elements contained in the <see cref="T:System.Collections.ICollection"></see>.</returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.IsSynchronized">
+            <summary>
+            Gets a value indicating whether access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe).
+            </summary>
+            <value></value>
+            <returns>true if access to the <see cref="T:System.Collections.ICollection"></see> is synchronized (thread safe); otherwise, false.</returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapter.SyncRoot">
+            <summary>
+            Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>.
+            </summary>
+            <value></value>
+            <returns>An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"></see>.</returns>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.AbstractDictionaryAdapterVisitor">
+            <summary>
+            Abstract implementation of <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor"/>.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterVisitor">
+            <summary>
+            Conract for traversing a <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.ComponentAttribute">
+            <summary>
+            Identifies a property should be represented as a nested component.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder">
+            <summary>
+            Defines the contract for building typed dictionary keys.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <summary>
+            Builds the specified key.
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+            <param name="key">The current key.</param>
+            <param name="property">The property.</param>
+            <returns>The updated key</returns>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter">
+            <summary>
+            Defines the contract for retrieving dictionary values.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)">
+            <summary>
+            Gets the effective dictionary value.
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+            <param name="key">The key.</param>
+            <param name="storedValue">The stored value.</param>
+            <param name="property">The property.</param>
+            <param name="ifExists">true if return only existing.</param>
+            <returns>The effective property value.</returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.NoPrefix">
+            <summary>
+            Applies no prefix.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.ComponentAttribute.Prefix">
+            <summary>
+            Gets or sets the prefix.
+            </summary>
+            <value>The prefix.</value>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterAttribute">
+            <summary>
+            Identifies the dictionary adapter types.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.FetchAttribute">
+            <summary>
+            Identifies an interface or property to be pre-feteched.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor">
+            <summary>
+            Instructs fetching to occur.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.FetchAttribute.#ctor(System.Boolean)">
+            <summary>
+            Instructs fetching according to <paramref name="fetch"/>
+            </summary>
+            <param name="fetch"></param>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.FetchAttribute.Fetch">
+            <summary>
+            Gets whether or not fetching should occur.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.GroupAttribute">
+            <summary>
+            Assigns a property to a group.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object)">
+            <summary>
+            Constructs a group assignment.
+            </summary>
+            <param name="group">The group name.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.GroupAttribute.#ctor(System.Object[])">
+            <summary>
+            Constructs a group assignment.
+            </summary>
+            <param name="group">The group name.</param>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.GroupAttribute.Group">
+            <summary>
+            Gets the group the property is assigned to.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.KeyAttribute">
+            <summary>
+            Assigns a specific dictionary key.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class.
+            </summary>
+            <param name="key">The key.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.KeyAttribute.#ctor(System.String[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyAttribute"/> class.
+            </summary>
+            <param name="keys">The compound key.</param>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute">
+            <summary>
+            Assigns a prefix to the keyed properties of an interface.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor">
+            <summary>
+            Initializes a default instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeyPrefixAttribute"/> class.
+            </summary>
+            <param name="keyPrefix">The prefix for the keyed properties of the interface.</param>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.KeyPrefixAttribute.KeyPrefix">
+            <summary>
+            Gets the prefix key added to the properties of the interface.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute">
+            <summary>
+            Substitutes part of key with another string.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute.#ctor(System.String,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.KeySubstitutionAttribute"/> class.
+            </summary>
+            <param name="oldValue">The old value.</param>
+            <param name="newValue">The new value.</param>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.MultiLevelEditAttribute">
+            <summary>
+            Requests support for multi-level editing.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryInitializer">
+            <summary>
+             Contract for dictionary initialization.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.Object[])">
+            <summary>
+            Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+            <param name="behaviors">The dictionary behaviors.</param>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.NewGuidAttribute">
+            <summary>
+            Generates a new GUID on demand.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.OnDemandAttribute">
+            <summary>
+            Support for on-demand value resolution.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.PropagateNotificationsAttribute">
+            <summary>
+            Suppress property change notifications.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.StringFormatAttribute">
+            <summary>
+            Provides simple string formatting from existing properties.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Format">
+            <summary>
+            Gets the string format.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.StringFormatAttribute.Properties">
+            <summary>
+            Gets the format properties.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.StringListAttribute">
+            <summary>
+            Identifies a property should be represented as a delimited string value.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.StringListAttribute.Separator">
+            <summary>
+            Gets the separator.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.StringValuesAttribute">
+            <summary>
+            Converts all properties to strings.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.StringValuesAttribute.Format">
+            <summary>
+            Gets or sets the format.
+            </summary>
+            <value>The format.</value>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.SuppressNotificationsAttribute">
+            <summary>
+            Suppress property change notifications.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer">
+            <summary>
+             Contract for property descriptor initialization.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IPropertyDescriptorInitializer.Initialize(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Object[])">
+            <summary>
+            Performs any initialization of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="propertyDescriptor">The property descriptor.</param>
+            <param name="behaviors">The property behaviors.</param>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.TypeKeyPrefixAttribute">
+            <summary>
+            Assigns a prefix to the keyed properties using the interface name.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter">
+            <summary>
+            Manages conversion between property values.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.#ctor(System.ComponentModel.TypeConverter)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.DefaultPropertyGetter"/> class.
+            </summary>
+            <param name="converter">The converter.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)">
+            <summary>
+            Gets the effective dictionary value.
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+            <param name="key">The key.</param>
+            <param name="storedValue">The stored value.</param>
+            <param name="property">The property.</param>
+            <param name="ifExists">true if return only existing.</param>
+            <returns>The effective property value.</returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.DefaultPropertyGetter.ExecutionOrder">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryCreate">
+            <summary>
+            Contract for creating additional Dictionary adapters.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter">
+            <summary>
+            Contract for manipulating the Dictionary adapter.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryEdit">
+            <summary>
+            Contract for editing the Dictionary adapter.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryNotify">
+            <summary>
+            Contract for managing Dictionary adapter notifications.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidate">
+            <summary>
+            Contract for validating Dictionary adapter.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory">
+            <summary>
+            Uses Reflection.Emit to expose the properties of a dictionary
+            through a dynamic implementation of a typed interface.
+            </summary>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory">
+            <summary>
+            Defines the contract for building typed dictionary adapters.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)">
+            <summary>
+            Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>.
+            </summary>
+            <typeparam name="T">The typed interface.</typeparam>
+            <param name="dictionary">The underlying source of properties.</param>
+            <returns>An implementation of the typed interface bound to the dictionary.</returns>
+            <remarks>
+            The type represented by T must be an interface with properties.
+            </remarks>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)">
+            <summary>
+            Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>.
+            </summary>
+            <param name="type">The typed interface.</param>
+            <param name="dictionary">The underlying source of properties.</param>
+            <returns>An implementation of the typed interface bound to the dictionary.</returns>
+            <remarks>
+            The type represented by T must be an interface with properties.
+            </remarks>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <summary>
+            Gets a typed adapter bound to the <see cref="T:System.Collections.IDictionary"/>.
+            </summary>
+            <param name="type">The typed interface.</param>
+            <param name="dictionary">The underlying source of properties.</param>
+            <param name="descriptor">The property descriptor.</param>
+            <returns>An implementation of the typed interface bound to the dictionary.</returns>
+            <remarks>
+            The type represented by T must be an interface with properties.
+            </remarks>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)">
+            <summary>
+            Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>.
+            </summary>
+            <typeparam name="T">The typed interface.</typeparam>
+            <param name="nameValues">The underlying source of properties.</param>
+            <returns>An implementation of the typed interface bound to the namedValues.</returns>
+            <remarks>
+            The type represented by T must be an interface with properties.
+            </remarks>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)">
+            <summary>
+            Gets a typed adapter bound to the <see cref="T:System.Collections.Specialized.NameValueCollection"/>.
+            </summary>
+            <param name="type">The typed interface.</param>
+            <param name="nameValues">The underlying source of properties.</param>
+            <returns>An implementation of the typed interface bound to the namedValues.</returns>
+            <remarks>
+            The type represented by T must be an interface with properties.
+            </remarks>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter``1(System.Xml.XPath.IXPathNavigable)">
+            <summary>
+            Gets a typed adapter bound to the <see cref="T:System.Xml.XPath.IXPathNavigable"/>.
+            </summary>
+            <typeparam name="T">The typed interface.</typeparam>
+            <param name="xpathNavigable">The underlying source of properties.</param>
+            <returns>An implementation of the typed interface bound to the xpath navigable.</returns>
+            <remarks>
+            The type represented by T must be an interface with properties.
+            </remarks>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XPath.IXPathNavigable)">
+            <summary>
+            Gets a typed adapter bound to the <see cref="T:System.Xml.XPath.IXPathNavigable"/>.
+            </summary>
+            <param name="type">The typed interface.</param>
+            <param name="xpathNavigable">The underlying source of properties.</param>
+            <returns>An implementation of the typed interface bound to the xpath navigable.</returns>
+            <remarks>
+            The type represented by T must be an interface with properties.
+            </remarks>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type)">
+            <summary>
+            Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type.
+            </summary>
+            <param name="type">The typed interface.</param>
+            <returns>The adapter meta-data.</returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <summary>
+            Gets the <see cref="T:Castle.Components.DictionaryAdapter.DictionaryAdapterMeta"/> associated with the type.
+            </summary>
+            <param name="type">The typed interface.</param>
+            <param name="descriptor">The property descriptor.</param>
+            <returns>The adapter meta-data.</returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.IDictionary)">
+            <inheritdoc />
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary)">
+            <inheritdoc />
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.IDictionary,Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <inheritdoc />
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``2(System.Collections.Generic.IDictionary{System.String,``1})">
+            <inheritdoc />
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Type,System.Collections.Generic.IDictionary{System.String,``0})">
+            <inheritdoc />
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Collections.Specialized.NameValueCollection)">
+            <inheritdoc />
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Collections.Specialized.NameValueCollection)">
+            <inheritdoc />
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter``1(System.Xml.XPath.IXPathNavigable)">
+            <inheritdoc />
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapter(System.Type,System.Xml.XPath.IXPathNavigable)">
+            <inheritdoc />
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type)">
+            <inheritdoc />
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryAdapterFactory.GetAdapterMeta(System.Type,Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <inheritdoc />
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.PropertyDescriptor">
+            <summary>
+            Describes a dictionary property.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor">
+            <summary>
+            Initializes an empty <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.#ctor(System.Reflection.PropertyInfo,System.Object[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/> class.
+            </summary>
+            <param name="property">The property.</param>
+            <param name="behaviors">The property behaviors.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetKey(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <summary>
+            Gets the key.
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+            <param name="key">The key.</param>
+            <param name="descriptor">The descriptor.</param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddKeyBuilder(Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder[])">
+            <summary>
+            Adds the key builder.
+            </summary>
+            <param name="builders">The builder.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddKeyBuilders(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder})">
+            <summary>
+            Adds the key builders.
+            </summary>
+            <param name="builders">The builders.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyKeyBuilders(Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <summary>
+            Copies the key builders to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyKeyBuilders(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryKeyBuilder,System.Boolean})">
+            <summary>
+            Copies the selected key builders to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <param name="selector"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.GetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object,Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Boolean)">
+            <summary>
+            Gets the property value.
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+            <param name="key">The key.</param>
+            <param name="storedValue">The stored value.</param>
+            <param name="descriptor">The descriptor.</param>
+            <param name="ifExists">true if return only existing.</param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddGetter(Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter[])">
+            <summary>
+            Adds the dictionary getter.
+            </summary>
+            <param name="getters">The getter.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddGetters(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter})">
+            <summary>
+            Adds the dictionary getters.
+            </summary>
+            <param name="gets">The getters.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyGetters(Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <summary>
+            Copies the property getters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyGetters(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryPropertyGetter,System.Boolean})">
+            <summary>
+            Copies the selected property getters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <param name="selector"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.SetPropertyValue(Castle.Components.DictionaryAdapter.IDictionaryAdapter,System.String,System.Object@,Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <summary>
+            Sets the property value.
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+            <param name="key">The key.</param>
+            <param name="value">The value.</param>
+            <param name="descriptor">The descriptor.</param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddSetter(Castle.Components.DictionaryAdapter.IDictionaryPropertySetter[])">
+            <summary>
+            Adds the dictionary setter.
+            </summary>
+            <param name="setters">The setter.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddSetters(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryPropertySetter})">
+            <summary>
+            Adds the dictionary setters.
+            </summary>
+            <param name="sets">The setters.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopySetters(Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <summary>
+            Copies the property setters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopySetters(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryPropertySetter,System.Boolean})">
+            <summary>
+            Copies the selected property setters to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <param name="selector"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehavior(Castle.Components.DictionaryAdapter.IDictionaryBehavior[])">
+            <summary>
+            Adds the behaviors.
+            </summary>
+            <param name="behaviors"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.AddBehaviors(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryBehavior})">
+            <summary>
+            Adds the behaviors.
+            </summary>
+            <param name="behaviors"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <summary>
+            Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.PropertyDescriptor.CopyBehaviors(Castle.Components.DictionaryAdapter.PropertyDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryBehavior,System.Boolean})">
+            <summary>
+            Copies the behaviors to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <param name="selector"></param>
+            <returns></returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.ExecutionOrder">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyName">
+            <summary>
+            Gets the property name.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.PropertyType">
+            <summary>
+            Gets the property type.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Property">
+            <summary>
+            Gets the property.
+            </summary>
+            <value>The property.</value>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.IsDynamicProperty">
+            <summary>
+            Returns true if the property is dynamic.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.State">
+            <summary>
+            Gets additional state.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Fetch">
+            <summary>
+            Determines if property should be fetched.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.SuppressNotifications">
+            <summary>
+            Determines if notifications should occur.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Behaviors">
+            <summary>
+            Gets the property behaviors.
+            </summary>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.TypeConverter">
+            <summary>
+            Gets the type converter.
+            </summary>
+            <value>The type converter.</value>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.KeyBuilders">
+            <summary>
+            Gets the key builders.
+            </summary>
+            <value>The key builders.</value>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Setters">
+            <summary>
+            Gets the setter.
+            </summary>
+            <value>The setter.</value>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.PropertyDescriptor.Getters">
+            <summary>
+            Gets the getter.
+            </summary>
+            <value>The getter.</value>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.AddInitializer(Castle.Components.DictionaryAdapter.IDictionaryInitializer[])">
+            <summary>
+            Adds the dictionary initializers.
+            </summary>
+            <param name="inits">The initializers.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.AddInitializers(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryInitializer})">
+            <summary>
+            Adds the dictionary initializers.
+            </summary>
+            <param name="inits">The initializers.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.CopyInitializers(Castle.Components.DictionaryAdapter.DictionaryDescriptor)">
+            <summary>
+            Copies the initializers to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.CopyInitializers(Castle.Components.DictionaryAdapter.DictionaryDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryInitializer,System.Boolean})">
+            <summary>
+            Copies the filtered initializers to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <param name="selector"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.AddMetaInitializer(Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer[])">
+            <summary>
+            Adds the dictionary meta-data initializers.
+            </summary>
+            <param name="inits">The meta-data initializers.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.AddMetaInitializers(System.Collections.Generic.IEnumerable{Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer})">
+            <summary>
+            Adds the dictionary meta-data initializers.
+            </summary>
+            <param name="inits">The meta-data initializers.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.CopyMetaInitializers(Castle.Components.DictionaryAdapter.DictionaryDescriptor)">
+            <summary>
+            Copies the meta-initializers to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.DictionaryDescriptor.CopyMetaInitializers(Castle.Components.DictionaryAdapter.DictionaryDescriptor,System.Func{Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer,System.Boolean})">
+            <summary>
+            Copies the filtered meta-initializers to the other <see cref="T:Castle.Components.DictionaryAdapter.PropertyDescriptor"/>
+            </summary>
+            <param name="other"></param>
+            <param name="selector"></param>
+            <returns></returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.DictionaryDescriptor.Initializers">
+            <summary>
+            Gets the initializers.
+            </summary>
+            <value>The initializers.</value>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.DictionaryDescriptor.MetaInitializers">
+            <summary>
+            Gets the meta-data initializers.
+            </summary>
+            <value>The meta-data initializers.</value>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer">
+            <summary>
+             Contract for dictionary meta-data initialization.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryMetaInitializer.Initialize(Castle.Components.DictionaryAdapter.IDictionaryAdapterFactory,Castle.Components.DictionaryAdapter.DictionaryAdapterMeta)">
+            <summary>
+            Performs any initialization of the dictionary adapter meta-data.
+            </summary>
+            <param name="factory">The dictionary adapter factory.</param>
+            <param name="dictionaryMeta">The dictionary adapter meta.</param>
+            
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDictionaryValidator">
+            <summary>
+            Contract for dictionary validation.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.IsValid(Castle.Components.DictionaryAdapter.IDictionaryAdapter)">
+            <summary>
+            Determines if <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> is valid.
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+            <returns>true if valid.</returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)">
+            <summary>
+            Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/>.
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+            <returns>The error summary information.</returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Validate(Castle.Components.DictionaryAdapter.IDictionaryAdapter,Castle.Components.DictionaryAdapter.PropertyDescriptor)">
+            <summary>
+            Validates the <see cref="T:Castle.Components.DictionaryAdapter.IDictionaryAdapter"/> for a property.
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+            <param name="property">The property to validate.</param>
+            <returns>The property summary information.</returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.IDictionaryValidator.Invalidate(Castle.Components.DictionaryAdapter.IDictionaryAdapter)">
+            <summary>
+            Invalidates any results cached by the validator.
+            </summary>
+            <param name="dictionaryAdapter">The dictionary adapter.</param>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.#ctor(System.Collections.Specialized.NameValueCollection)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter"/> class.
+            </summary>
+            <param name="nameValues">The name values.</param>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Contains(System.Object)">
+            <summary>
+            Determines whether the <see cref="T:System.Collections.IDictionary"></see> object contains an element with the specified key.
+            </summary>
+            <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"></see> object.</param>
+            <returns>
+            true if the <see cref="T:System.Collections.IDictionary"></see> contains an element with the key; otherwise, false.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">key is null. </exception>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Adapt(System.Collections.Specialized.NameValueCollection)">
+            <summary>
+            Adapts the specified name values.
+            </summary>
+            <param name="nameValues">The name values.</param>
+            <returns></returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.IsReadOnly">
+            <summary>
+            Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"></see> object is read-only.
+            </summary>
+            <value></value>
+            <returns>true if the <see cref="T:System.Collections.IDictionary"></see> object is read-only; otherwise, false.</returns>
+        </member>
+        <member name="P:Castle.Components.DictionaryAdapter.NameValueCollectionAdapter.Item(System.Object)">
+            <summary>
+            Gets or sets the <see cref="T:System.Object"/> with the specified key.
+            </summary>
+            <value></value>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.AttributesUtil">
+            <summary>
+            Helper class for retrieving attributes.
+            </summary>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AttributesUtil.GetTypeAttribute``1(System.Type)">
+            <summary>
+            Gets the type attribute.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>The type attribute.</returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AttributesUtil.GetAttribute``1(System.Reflection.MemberInfo)">
+            <summary>
+            Gets the attribute.
+            </summary>
+            <param name="member">The member.</param>
+            <returns>The member attribute.</returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AttributesUtil.GetTypeAttributes``1(System.Type)">
+            <summary>
+            Gets the type attributes.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>The type attributes.</returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AttributesUtil.GetAttributes``1(System.Reflection.MemberInfo)">
+            <summary>
+            Gets the attributes.
+            </summary>
+            <param name="member">The member.</param>
+            <returns>The member attributes.</returns>
+        </member>
+        <member name="M:Castle.Components.DictionaryAdapter.AttributesUtil.GetTypeConverter(System.Reflection.MemberInfo)">
+            <summary>
+            Gets the type converter.
+            </summary>
+            <param name="member">The member.</param>
+            <returns></returns>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue`1">
+            <summary>
+            Contract for typed dynamic value resolution.
+            </summary>
+            <typeparam name="T"></typeparam>
+        </member>
+        <member name="T:Castle.Components.DictionaryAdapter.IDynamicValue">
+            <summary>
+            Contract for dynamic value resolution.
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.IInvocation">
+            <summary>
+            Encapsulates an invocation of a proxied method.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.IInvocation.SetArgumentValue(System.Int32,System.Object)">
+            <summary>
+            Overrides the value of an argument at the given <paramref name="index"/> with the
+            new <paramref name="value"/> provided.
+            </summary>
+            <remarks>
+            This method accepts an <see cref="T:System.Object"/>, however the value provided must be compatible
+            with the type of the argument defined on the method, otherwise an exception will be thrown.
+            </remarks>
+            <param name="index">The index of the argument to override.</param>
+            <param name="value">The new value for the argument.</param>
+        </member>
+        <member name="M:Castle.DynamicProxy.IInvocation.GetArgumentValue(System.Int32)">
+            <summary>
+            Gets the value of the argument at the specified <paramref name="index"/>.
+            </summary>
+            <param name="index">The index.</param>
+            <returns>The value of the argument at the specified <paramref name="index"/>.</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethod">
+            <summary>
+            Returns the concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/>, with any generic
+            parameters bound to real types.
+            </summary>
+            <returns>
+            The concrete instantiation of the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/>, or the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> if
+            not a generic method.
+            </returns>
+            <remarks>Can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.Method"/>.</remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.IInvocation.GetConcreteMethodInvocationTarget">
+            <summary>
+            Returns the concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, with any
+            generic parameters bound to real types.
+            </summary>
+            <returns>The concrete instantiation of <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>, or
+            <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/> if not a generic method.</returns>
+            <remarks>Can be slower than calling <see cref="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget"/>.</remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.IInvocation.Proceed">
+            <summary>
+            Proceeds the call to the next interceptor in line, and ultimately to the target method.
+            </summary>
+            <remarks>
+            Since interface proxies without a target don't have the target implementation to proceed to,
+            it is important, that the last interceptor does not call this method, otherwise a
+            <see cref="T:System.NotImplementedException"/> will be thrown.
+            </remarks>
+        </member>
+        <member name="P:Castle.DynamicProxy.IInvocation.Proxy">
+            <summary>
+            Gets the proxy object on which the intercepted method is invoked.
+            </summary>
+            <value>Proxy object on which the intercepted method is invoked.</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.IInvocation.InvocationTarget">
+            <summary>
+            Gets the object on which the invocation is performed. This is different from proxy object
+            because most of the time this will be the proxy target object.
+            </summary>
+            <seealso cref="T:Castle.DynamicProxy.IChangeProxyTarget"/>
+            <value>The invocation target.</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.IInvocation.TargetType">
+            <summary>
+            Gets the type of the target object for the intercepted method.
+            </summary>
+            <value>The type of the target object.</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.IInvocation.Arguments">
+            <summary>
+            Gets the arguments that the <see cref="P:Castle.DynamicProxy.IInvocation.Method"/> has been invoked with.
+            </summary>
+            <value>The arguments the method was invoked with.</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.IInvocation.GenericArguments">
+            <summary>
+            Gets the generic arguments of the method.
+            </summary>
+            <value>The generic arguments, or null if not a generic method.</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.IInvocation.Method">
+            <summary>
+            Gets the <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked.
+            </summary>
+            <value>The <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked.</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.IInvocation.MethodInvocationTarget">
+            <summary>
+            For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class.
+            </summary>
+            <value>The method invocation target.</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.IInvocation.ReturnValue">
+            <summary>
+            Gets or sets the return value of the method.
+            </summary>
+            <value>The return value of the method.</value>
+        </member>
+        <member name="T:Castle.DynamicProxy.IProxyGenerationHook">
+            <summary>
+            Used during the target type inspection process. Implementors have a chance to customize the
+            proxy generation process.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.IProxyGenerationHook.ShouldInterceptMethod(System.Type,System.Reflection.MethodInfo)">
+            <summary>
+            Invoked by the generation process to determine if the specified method should be proxied.
+            </summary>
+            <param name="type">The type which declares the given method.</param>
+            <param name="methodInfo">The method to inspect.</param>
+            <returns>True if the given method should be proxied; false otherwise.</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.IProxyGenerationHook.NonProxyableMemberNotification(System.Type,System.Reflection.MemberInfo)">
+            <summary>
+            Invoked by the generation process to notify that a member was not marked as virtual.
+            </summary>
+            <param name="type">The type which declares the non-virtual member.</param>
+            <param name="memberInfo">The non-virtual member.</param>
+            <remarks>
+            This method gives an opportunity to inspect any non-proxyable member of a type that has 
+            been requested to be proxied, and if appropriate - throw an exception to notify the caller.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.IProxyGenerationHook.MethodsInspected">
+            <summary>
+            Invoked by the generation process to notify that the whole process has completed.
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.Contributors.ITypeContributor">
+            <summary>
+            Interface describing elements composing generated type
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.IsAccessible(System.Reflection.MethodBase)">
+            <summary>
+            Checks if the method is public or protected.
+            </summary>
+            <param name="method"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.AcceptMethod(System.Reflection.MethodInfo,System.Boolean,Castle.DynamicProxy.IProxyGenerationHook)">
+            <summary>
+            Performs some basic screening and invokes the <see cref="T:Castle.DynamicProxy.IProxyGenerationHook"/>
+            to select methods.
+            </summary>
+            <param name="method"></param>
+            <param name="onlyVirtuals"></param>
+            <param name="hook"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Castle.DynamicProxy.IAttributeDisassembler">
+            <summary>
+            Provides functionality for disassembling instances of attributes to CustomAttributeBuilder form, during the process of emiting new types by Dynamic Proxy.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.IAttributeDisassembler.Disassemble(System.Attribute)">
+            <summary>
+            Disassembles given attribute instance back to corresponding CustomAttributeBuilder.
+            </summary>
+            <param name="attribute">An instance of attribute to disassemble</param>
+            <returns><see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> corresponding 1 to 1 to given attribute instance, or null reference.</returns>
+            <remarks>
+            Implementers should return <see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> that corresponds to given attribute instance 1 to 1,
+            that is after calling specified constructor with specified arguments, and setting specified properties and fields with values specified
+            we should be able to get an attribute instance identical to the one passed in <paramref name="attribute"/>. Implementer can return null
+            if it wishes to opt out of replicating the attribute. Notice however, that for some cases, like attributes passed explicitly by the user
+            it is illegal to return null, and doing so will result in exception.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.HandleError(System.Type,System.Exception)">
+            <summary>
+            Handles error during disassembly process
+            </summary>
+            <param name="attributeType">Type of the attribute being disassembled</param>
+            <param name="exception">Exception thrown during the process</param>
+            <returns>usually null, or (re)throws the exception</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.InitializeConstructorArgs(System.Type,System.Attribute,System.Object[],System.Reflection.ParameterInfo[])">
+            <summary>
+            Here we try to match a constructor argument to its value.
+            Since we can't get the values from the assembly, we use some heuristics to get it.
+            a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument
+            b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string).
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ReplaceIfBetterMatch(System.Reflection.ParameterInfo,System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)">
+            <summary>
+            We have the following rules here.
+            Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that
+            we can convert it.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ConvertValue(System.Object,System.Type)">
+            <summary>
+            Attributes can only accept simple types, so we return null for null,
+            if the value is passed as string we call to string (should help with converting), 
+            otherwise, we use the value as is (enums, integer, etc).
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.CacheMappingsAttribute">
+            <summary>
+            Applied to the assemblies saved by <see cref="T:Castle.DynamicProxy.ModuleScope"/> in order to persist the cache data included in the persisted assembly.
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator">
+            <summary>
+            Base class that exposes the common functionalities
+            to proxy generation.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)">
+            <summary>
+            Generates a parameters constructor that initializes the proxy
+            state with <see cref="T:Castle.DynamicProxy.StandardInterceptor"/> just to make it non-null.
+            <para>
+            This constructor is important to allow proxies to be XML serializable
+            </para>
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AddMappingNoCheck(System.Type,Castle.DynamicProxy.Contributors.ITypeContributor,System.Collections.Generic.IDictionary{System.Type,Castle.DynamicProxy.Contributors.ITypeContributor})">
+            <summary>
+            It is safe to add mapping (no mapping for the interface exists)
+            </summary>
+            <param name="implementer"></param>
+            <param name="interface"></param>
+            <param name="mapping"></param>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetBaseCtorArguments(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Reflection.ConstructorInfo@)">
+            <summary>
+            Generates the constructor for the class that extends
+            <see cref="T:Castle.DynamicProxy.AbstractInvocation"/>
+            </summary>
+            <param name="targetFieldType"></param>
+            <param name="proxyGenerationOptions"></param>
+            <param name="baseConstructor"></param>
+        </member>
+        <member name="T:Castle.DynamicProxy.DefaultProxyBuilder">
+            <summary>
+            Default implementation of <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> interface producing in-memory proxy assemblies.
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.IProxyBuilder">
+            <summary>
+            Abstracts the implementation of proxy type construction.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Creates a proxy type for given <paramref name="classToProxy"/>, using <paramref name="options"/> provided.
+            </summary>
+            <param name="classToProxy">The class type to proxy.</param>
+            <param name="options">The proxy generation options.</param>
+            <returns>The generated proxy type.</returns>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> is not public.
+            Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> 
+            pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
+            <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/>
+        </member>
+        <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Creates a proxy type for given <paramref name="classToProxy"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided.
+            </summary>
+            <param name="classToProxy">The class type to proxy.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param>
+            <param name="options">The proxy generation options.</param>
+            <returns>The generated proxy type.</returns>
+            <remarks>
+            Implementers should return a proxy type for the specified class and interfaces.
+            Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.)
+            </remarks>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public.
+            Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> 
+            pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
+            <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/>
+        </member>
+        <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Creates a proxy type for given <paramref name="classToProxy"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided.
+            </summary>
+            <param name="classToProxy">The class type to proxy.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param>
+            <param name="options">The proxy generation options.</param>
+            <returns>The generated proxy type.</returns>
+            <remarks>
+            Implementers should return a proxy type for the specified class and interfaces.
+            Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.)
+            </remarks>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public.
+            Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> 
+            pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
+            <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/>
+        </member>
+        <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Creates a proxy type that proxies calls to <paramref name="interfaceToProxy"/> members on <paramref name="targetType"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided.
+            </summary>
+            <param name="interfaceToProxy">The interface type to proxy.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param>
+            <param name="targetType">Type implementing <paramref name="interfaceToProxy"/> on which calls to the interface members should be intercepted.</param>
+            <param name="options">The proxy generation options.</param>
+            <returns>The generated proxy type.</returns>
+            <remarks>
+            Implementers should return a proxy type for the specified interface that 'proceeds' executions to the specified target.
+            Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.)
+            </remarks>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public.
+            Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> 
+            pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
+            <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator"/>
+        </member>
+        <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Creates a proxy type for given <paramref name="interfaceToProxy"/> that delegates all calls to the provided interceptors.
+            </summary>
+            <param name="interfaceToProxy">The interface type to proxy.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param>
+            <param name="options">The proxy generation options.</param>
+            <returns>The generated proxy type.</returns>
+            <remarks>
+            Implementers should return a proxy type for the specified interface and additional interfaces that delegate all executions to the specified interceptors.
+            </remarks>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public.
+            Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> 
+            pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
+            <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithoutTargetGenerator"/>
+        </member>
+        <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Creates a proxy type for given <paramref name="interfaceToProxy"/> and <parmaref name="additionalInterfacesToProxy"/> that delegates all calls to the provided interceptors and allows interceptors to switch the actual target of invocation.
+            </summary>
+            <param name="interfaceToProxy">The interface type to proxy.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param>
+            <param name="options">The proxy generation options.</param>
+            <returns>The generated proxy type.</returns>
+            <remarks>
+            Implementers should return a proxy type for the specified interface(s) that delegate all executions to the specified interceptors
+            and uses an instance of the interface as their targets (i.e. <see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>), rather than a class. All <see cref="T:Castle.DynamicProxy.IInvocation"/> classes should then implement <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface,
+            to allow interceptors to switch invocation target with instance of another type implementing called interface.
+            </remarks>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public.
+            Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/> 
+            pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
+            <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetInterfaceGenerator"/>
+        </member>
+        <member name="P:Castle.DynamicProxy.IProxyBuilder.Logger">
+            <summary>
+            Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> logs to.
+            </summary>
+        </member>
+        <member name="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope">
+            <summary>
+            Gets the <see cref="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"/> associated with this builder.
+            </summary>
+            <value>The module scope associated with this builder.</value>
+        </member>
+        <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class with new <see cref="T:Castle.DynamicProxy.ModuleScope"/>.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.DefaultProxyBuilder.#ctor(Castle.DynamicProxy.ModuleScope)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.DefaultProxyBuilder"/> class.
+            </summary>
+            <param name="scope">The module scope for generated proxy types.</param>
+        </member>
+        <member name="M:Castle.DynamicProxy.AttributeUtil.AddDisassembler``1(Castle.DynamicProxy.IAttributeDisassembler)">
+            <summary>
+            Registers custom disassembler to handle disassembly of specified type of attributes.
+            </summary>
+            <typeparam name="TAttribute">Type of attributes to handle</typeparam>
+            <param name="disassembler">Disassembler converting existing instances of Attributes to CustomAttributeBuilders</param>
+            <remarks>
+            When disassembling an attribute Dynamic Proxy will first check if an custom disassembler has been registered to handle attributes of that type, 
+            and if none is found, it'll use the <see cref="P:Castle.DynamicProxy.AttributeUtil.FallbackDisassembler"/>.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.AttributeUtil.ShouldSkipAttributeReplication(System.Type)">
+            <summary>
+            Attributes should be replicated if they are non-inheritable,
+            but there are some special cases where the attributes means
+            something to the CLR, where they should be skipped.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Reflection.MemberInfo,System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class.
+            </summary>
+            <param name="target">Target element. This is either target type or target method for invocation types.</param>
+            <param name="type">The type of the proxy. This is base type for invocation types.</param>
+            <param name="interfaces">The interfaces.</param>
+            <param name="options">The options.</param>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class.
+            </summary>
+            <param name="target">Type of the target.</param>
+            <param name="interfaces">The interfaces.</param>
+            <param name="options">The options.</param>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.ClassProxyGenerator">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.Emitters.LdcOpCodesDictionary">
+            <summary>s
+            Provides appropriate Ldc.X opcode for the type of primitive value to be loaded.
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.Emitters.LdindOpCodesDictionary">
+            <summary>
+            Provides appropriate Ldind.X opcode for 
+            the type of primitive value to be loaded indirectly.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForConstantValue(System.Reflection.Emit.ILGenerator,System.Object)">
+            <summary>
+            Emits a load opcode of the appropriate kind for a constant string or
+            primitive value.
+            </summary>
+            <param name="gen"></param>
+            <param name="value"></param>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadOpCodeForDefaultValueOfType(System.Reflection.Emit.ILGenerator,System.Type)">
+            <summary>
+            Emits a load opcode of the appropriate kind for the constant default value of a
+            type, such as 0 for value types and null for reference types.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitLoadIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)">
+            <summary>
+            Emits a load indirect opcode of the appropriate type for a value or object reference.
+            Pops a pointer off the evaluation stack, dereferences it and loads
+            a value of the specified type.
+            </summary>
+            <param name="gen"></param>
+            <param name="type"></param>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.Emitters.OpCodeUtil.EmitStoreIndirectOpCodeForType(System.Reflection.Emit.ILGenerator,System.Type)">
+            <summary>
+            Emits a store indirectopcode of the appropriate type for a value or object reference.
+            Pops a value of the specified type and a pointer off the evaluation stack, and
+            stores the value.
+            </summary>
+            <param name="gen"></param>
+            <param name="type"></param>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.Emitters.PropertiesCollection">
+            <summary>
+            Summary description for PropertiesCollection.
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.IndirectReference">
+            <summary>
+            Wraps a reference that is passed 
+            ByRef and provides indirect load/store support.
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.NewArrayExpression">
+            <summary>
+            Summary description for NewArrayExpression.
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.ReferencesToObjectArrayExpression">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.Emitters.StindOpCodesDictionary">
+            <summary>
+            Provides appropriate Stind.X opcode 
+            for the type of primitive value to be stored indirectly.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.Emitters.TypeUtil.GetAllInterfaces(System.Type[])">
+            <summary>
+              Returns list of all unique interfaces implemented given types, including their base interfaces.
+            </summary>
+            <param name="types"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.MetaEvent.#ctor(System.String,System.Type,System.Type,Castle.DynamicProxy.Generators.MetaMethod,Castle.DynamicProxy.Generators.MetaMethod,System.Reflection.EventAttributes)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.MetaEvent"/> class.
+            </summary>
+            <param name="name">The name.</param>
+            <param name="declaringType">Type declaring the original event being overriten, or null.</param>
+            <param name="eventDelegateType"></param>
+            <param name="adder">The add method.</param>
+            <param name="remover">The remove method.</param>
+            <param name="attributes">The attributes.</param>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.INamingScope">
+            <summary>
+            Represents the scope of uniquenes of names for types and their members
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)">
+            <summary>
+            Gets a unique name based on <paramref name="suggestedName"/>
+            </summary>
+            <param name="suggestedName">Name suggested by the caller</param>
+            <returns>Unique name based on <paramref name="suggestedName"/>.</returns>
+            <remarks>
+            Implementers should provide name as closely resembling <paramref name="suggestedName"/> as possible.
+            Generally if no collision occurs it is suggested to return suggested name, otherwise append sequential suffix.
+            Implementers must return deterministic names, that is when <see cref="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"/> is called twice 
+            with the same suggested name, the same returned name should be provided each time. Non-deterministic return
+            values, like appending random suffices will break serialization of proxies.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.Generators.INamingScope.SafeSubScope">
+            <summary>
+            Returns new, disposable naming scope. It is responsibilty of the caller to make sure that no naming collision
+            with enclosing scope, or other subscopes is possible.
+            </summary>
+            <returns>New naming scope.</returns>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.Generators.MethodFinder">
+            <summary>
+            Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue
+            where duplicate MethodInfos are returned by Type.GetMethods() after a token of a generic type's method was loaded.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.InternalsHelper.IsInternalToDynamicProxy(System.Reflection.Assembly)">
+            <summary>
+            Determines whether this assembly has internals visible to dynamic proxy.
+            </summary>
+            <param name="asm">The assembly to inspect.</param>
+        </member>
+        <member name="M:Castle.DynamicProxy.InternalsHelper.IsInternal(System.Reflection.MethodInfo)">
+            <summary>
+            Determines whether the specified method is internal.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>
+            	<c>true</c> if the specified method is internal; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.MixinData.#ctor(System.Collections.Generic.IEnumerable{System.Object})">
+            <summary>
+            Because we need to cache the types based on the mixed in mixins, we do the following here:
+             - Get all the mixin interfaces
+             - Sort them by full name
+             - Return them by position
+            
+            The idea is to have reproducable behavior for the case that mixins are registered in different orders.
+            This method is here because it is required 
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.ModuleScope">
+            <summary>
+            Summary description for ModuleScope.
+            </summary>
+        </member>
+        <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME">
+            <summary>
+            The default file name used when the assembly is saved using <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/>.
+            </summary>
+        </member>
+        <member name="F:Castle.DynamicProxy.ModuleScope.DEFAULT_ASSEMBLY_NAME">
+            <summary>
+            The default assembly (simple) name used for the assemblies generated by a <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class; assemblies created by this instance will not be saved.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance
+            should be saved.
+            </summary>
+            <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,System.String,System.String,System.String,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance
+            should be saved and what simple names are to be assigned to them.
+            </summary>
+            <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param>
+            <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+            <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+            <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+            <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,Castle.DynamicProxy.Generators.INamingScope,System.String,System.String,System.String,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance
+            should be saved and what simple names are to be assigned to them.
+            </summary>
+            <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param>
+            <param name="namingScope">Naming scope used to provide unique names to generated types and their members (usually via sub-scopes).</param>
+            <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+            <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+            <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+            <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.GetFromCache(Castle.DynamicProxy.Generators.CacheKey)">
+            <summary>
+            Returns a type from this scope's type cache, or null if the key cannot be found.
+            </summary>
+            <param name="key">The key to be looked up in the cache.</param>
+            <returns>The type from this scope's type cache matching the key, or null if the key cannot be found</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.RegisterInCache(Castle.DynamicProxy.Generators.CacheKey,System.Type)">
+            <summary>
+            Registers a type in this scope's type cache.
+            </summary>
+            <param name="key">The key to be associated with the type.</param>
+            <param name="type">The type to be stored in the cache.</param>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.GetKeyPair">
+            <summary>
+            Gets the key pair used to sign the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(System.Boolean)">
+            <summary>
+            Gets the specified module generated by this scope, creating a new one if none has yet been generated.
+            </summary>
+            <param name="isStrongNamed">If set to true, a strong-named module is returned; otherwise, a weak-named module is returned.</param>
+            <returns>A strong-named or weak-named module generated by this scope, as specified by the <paramref name="isStrongNamed"/> parameter.</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName">
+            <summary>
+            Gets the strong-named module generated by this scope, creating a new one if none has yet been generated.
+            </summary>
+            <returns>A strong-named module generated by this scope.</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithWeakName">
+            <summary>
+            Gets the weak-named module generated by this scope, creating a new one if none has yet been generated.
+            </summary>
+            <returns>A weak-named module generated by this scope.</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.SaveAssembly">
+            <summary>
+            Saves the generated assembly with the name and directory information given when this <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance was created (or with
+            the <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/> and current directory if none was given).
+            </summary>
+            <remarks>
+            <para>
+            This method stores the generated assembly in the directory passed as part of the module information specified when this instance was
+            constructed (if any, else the current directory is used). If both a strong-named and a weak-named assembly
+            have been generated, it will throw an exception; in this case, use the <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"/> overload.
+            </para>
+            <para>
+            If this <see cref="T:Castle.DynamicProxy.ModuleScope"/> was created without indicating that the assembly should be saved, this method does nothing.
+            </para></remarks>
+            <exception cref="T:System.InvalidOperationException">Both a strong-named and a weak-named assembly have been generated.</exception>
+            <returns>The path of the generated assembly file, or null if no file has been generated.</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)">
+            <summary>
+            Saves the specified generated assembly with the name and directory information given when this <see cref="T:Castle.DynamicProxy.ModuleScope"/> instance was created
+            (or with the <see cref="F:Castle.DynamicProxy.ModuleScope.DEFAULT_FILE_NAME"/> and current directory if none was given).
+            </summary>
+            <param name="strongNamed">True if the generated assembly with a strong name should be saved (see <see cref="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule"/>);
+              false if the generated assembly without a strong name should be saved (see <see cref="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule"/>.</param>
+            <remarks>
+            <para>
+            This method stores the specified generated assembly in the directory passed as part of the module information specified when this instance was
+            constructed (if any, else the current directory is used).
+            </para>
+            <para>
+            If this <see cref="T:Castle.DynamicProxy.ModuleScope"/> was created without indicating that the assembly should be saved, this method does nothing.
+            </para>
+            </remarks>
+            <exception cref="T:System.InvalidOperationException">No assembly has been generated that matches the <paramref name="strongNamed"/> parameter.
+            </exception>
+            <returns>The path of the generated assembly file, or null if no file has been generated.</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.ModuleScope.LoadAssemblyIntoCache(System.Reflection.Assembly)">
+            <summary>
+            Loads the generated types from the given assembly into this <see cref="T:Castle.DynamicProxy.ModuleScope"/>'s cache.
+            </summary>
+            <param name="assembly">The assembly to load types from. This assembly must have been saved via <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly(System.Boolean)"/> or
+            <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/>, or it must have the <see cref="T:Castle.DynamicProxy.CacheMappingsAttribute"/> manually applied.</param>
+            <remarks>
+            This method can be used to load previously generated and persisted proxy types from disk into this scope's type cache, eg. in order
+            to avoid the performance hit associated with proxy generation.
+            </remarks>
+        </member>
+        <member name="P:Castle.DynamicProxy.ModuleScope.Lock">
+            <summary>
+            Users of this <see cref="T:Castle.DynamicProxy.ModuleScope"/> should use this lock when accessing the cache.
+            </summary>
+        </member>
+        <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModule">
+            <summary>
+            Gets the strong-named module generated by this scope, or <see langword="null"/> if none has yet been generated.
+            </summary>
+            <value>The strong-named module generated by this scope, or <see langword="null"/> if none has yet been generated.</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleName">
+            <summary>
+            Gets the file name of the strongly named module generated by this scope.
+            </summary>
+            <value>The file name of the strongly named module generated by this scope.</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.ModuleScope.StrongNamedModuleDirectory">
+            <summary>
+            Gets the directory where the strongly named module generated by this scope will be saved, or <see langword="null"/> if the current directory
+            is used.
+            </summary>
+            <value>The directory where the strongly named module generated by this scope will be saved when <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/> is called
+            (if this scope was created to save modules).</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModule">
+            <summary>
+            Gets the weak-named module generated by this scope, or <see langword="null"/> if none has yet been generated.
+            </summary>
+            <value>The weak-named module generated by this scope, or <see langword="null"/> if none has yet been generated.</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleName">
+            <summary>
+            Gets the file name of the weakly named module generated by this scope.
+            </summary>
+            <value>The file name of the weakly named module generated by this scope.</value>
+        </member>
+        <member name="P:Castle.DynamicProxy.ModuleScope.WeakNamedModuleDirectory">
+            <summary>
+            Gets the directory where the weakly named module generated by this scope will be saved, or <see langword="null"/> if the current directory
+            is used.
+            </summary>
+            <value>The directory where the weakly named module generated by this scope will be saved when <see cref="M:Castle.DynamicProxy.ModuleScope.SaveAssembly"/> is called
+            (if this scope was created to save modules).</value>
+        </member>
+        <member name="T:Castle.DynamicProxy.PersistentProxyBuilder">
+            <summary>
+            ProxyBuilder that persists the generated type.
+            </summary>
+            <remarks>
+            The saved assembly contains just the last generated type.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.PersistentProxyBuilder.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.PersistentProxyBuilder"/> class.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.PersistentProxyBuilder.SaveAssembly">
+            <summary>
+            Saves the generated assembly to a physical file. Note that this renders the <see cref="T:Castle.DynamicProxy.PersistentProxyBuilder"/> unusable.
+            </summary>
+            <returns>The path of the generated assembly file, or null if no assembly has been generated.</returns>
+            <remarks>This method does not support saving multiple files. If both a signed and an unsigned module have been generated, use the 
+            respective methods of the <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor(Castle.DynamicProxy.IProxyGenerationHook)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class.
+            </summary>
+            <param name="hook">The hook.</param>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerationOptions.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/> class.
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.ProxyGenerator">
+            <summary>
+            Provides proxy objects for classes and interfaces.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor(Castle.DynamicProxy.IProxyBuilder)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class.
+            </summary>
+            <param name="builder">Proxy types builder.</param>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> class.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            </summary>
+            <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object.</returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+            use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])"/> method.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            </summary>
+            <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <typeparamref name="TInterface"/> on <paramref name="target"/> object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/>is not an interface type.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+            use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+            use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])"/> method.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+            use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types  on <paramref name="target"/> object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+            use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])"/> method.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+            use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])"/> method.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+            </summary>
+            <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+            </summary>
+            <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
+            Interceptors can use <see cref="T:Castle.DynamicProxy.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception>
+            <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor)">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptor"/>.
+            </summary>
+            <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam>
+            <param name="interceptor">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception>
+            <remarks>
+            Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations.
+            They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
+            As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>.
+            </summary>
+            <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception>
+            <remarks>
+            Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations.
+            They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
+            As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>.
+            </summary>
+            <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception>
+            <remarks>
+            Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations.
+            They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
+            As a result of that also at least one <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementation must be provided.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor)">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptor"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface which will be proxied.</param>
+            <param name="interceptor">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <remarks>
+            Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations.
+            They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface which will be proxied.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <remarks>
+            Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations.
+            They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface which will be proxied.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <remarks>
+            Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations.
+            They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface which will be proxied.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> on generated target object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/>  is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <remarks>
+            They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="interfaceToProxy">Type of the interface which will be proxied.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on generated target object.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
+            <remarks>
+            Since this method uses an empty-shell implementation of <paramref name="additionalInterfacesToProxy"/> to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations.
+            They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <typeparam name="TClass">Type of class which will be proxied.</typeparam>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <typeparam name="TClass">Type of class which will be proxied.</typeparam>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,System.Object[],Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyWithTarget(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="target">The target object, calls to which will be intercepted.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <typeparam name="TClass">Type of class which will be proxied.</typeparam>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <typeparam name="TClass">Type of class which will be proxied.</typeparam>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Object[],Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
+            </summary>
+            <param name="classToProxy">Type of class which will be proxied.</param>
+            <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
+            <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
+            <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param>
+            <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
+            <returns>
+            New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
+            <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
+            <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
+            <remarks>
+            This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
+            As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
+            </remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Creates the proxy type for class proxy with given <paramref name="classToProxy"/> class, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>.
+            </summary>
+            <param name="classToProxy">The base class for proxy type.</param>
+            <param name="additionalInterfacesToProxy">The interfaces that proxy type should implement.</param>
+            <param name="options">The options for proxy generation process.</param>
+            <returns><see cref="T:System.Type"/> of proxy.</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Creates the proxy type for interface proxy with target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="targetType"/> and using provided <paramref name="options"/>.
+            </summary>
+            <param name="interfaceToProxy">The interface proxy type should implement.</param>
+            <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param>
+            <param name="targetType">Actual type that the proxy type will encompass.</param>
+            <param name="options">The options for proxy generation process.</param>
+            <returns><see cref="T:System.Type"/> of proxy.</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Creates the proxy type for interface proxy with target interface for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="interfaceToProxy"/> and using provided <paramref name="options"/>.
+            </summary>
+            <param name="interfaceToProxy">The interface proxy type should implement.</param>
+            <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param>
+            <param name="options">The options for proxy generation process.</param>
+            <returns><see cref="T:System.Type"/> of proxy.</returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
+            <summary>
+            Creates the proxy type for interface proxy without target for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> and using provided <paramref name="options"/>.
+            </summary>
+            <param name="interfaceToProxy">The interface proxy type should implement.</param>
+            <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param>
+            <param name="options">The options for proxy generation process.</param>
+            <returns><see cref="T:System.Type"/> of proxy.</returns>
+        </member>
+        <member name="P:Castle.DynamicProxy.ProxyGenerator.Logger">
+            <summary>
+            Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> log to.
+            </summary>
+        </member>
+        <member name="P:Castle.DynamicProxy.ProxyGenerator.ProxyBuilder">
+            <summary>
+            Gets the proxy builder instance used to generate proxy types.
+            </summary>
+            <value>The proxy builder.</value>
+        </member>
+        <member name="M:Castle.DynamicProxy.RemotableInvocation.Proceed">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="P:Castle.DynamicProxy.RemotableInvocation.Method">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Castle.DynamicProxy.RemotableInvocation.MethodInvocationTarget">
+            <summary>
+            For interface proxies, this will point to the
+            <see cref="T:System.Reflection.MethodInfo"/> on the target class
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.Serialization.ProxyObjectReference">
+            <summary>
+            Handles the deserialization of proxies.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.ResetScope">
+            <summary>
+            Resets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization to a new scope.
+            </summary>
+            <remarks>This is useful for test cases.</remarks>
+        </member>
+        <member name="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.SetScope(Castle.DynamicProxy.ModuleScope)">
+            <summary>
+            Resets the <see cref="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope"/> used for deserialization to a given <paramref name="scope"/>.
+            </summary>
+            <param name="scope">The scope to be used for deserialization.</param>
+            <remarks>By default, the deserialization process uses a different scope than the rest of the application, which can lead to multiple proxies
+            being generated for the same type. By explicitly setting the deserialization scope to the application's scope, this can be avoided.</remarks>
+        </member>
+        <member name="P:Castle.DynamicProxy.Serialization.ProxyObjectReference.ModuleScope">
+            <summary>
+            Gets the <see cref="T:Castle.DynamicProxy.ModuleScope"/> used for deserialization.
+            </summary>
+            <value>As <see cref="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"/> has no way of automatically determining the scope used by the application (and the application
+            might use more than one scope at the same time), <see cref="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"/> uses a dedicated scope instance for deserializing proxy
+            types. This instance can be reset and set to a specific value via <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.ResetScope"/> and <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.SetScope(Castle.DynamicProxy.ModuleScope)"/>.</value>
+        </member>
+        <member name="T:Castle.DynamicProxy.Tokens.InvocationMethods">
+            <summary>
+            Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> class.
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.Tokens.SerializationInfoMethods">
+            <summary>
+            Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:System.Runtime.Serialization.SerializationInfo"/> class.
+            </summary>
+        </member>
+        <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Bool">
+            <summary>
+            <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Boolean)"/>
+            </summary>
+        </member>
+        <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Int32">
+            <summary>
+            <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Int32)"/>
+            </summary>
+        </member>
+        <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Object">
+            <summary>
+            <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Object)"/>
+            </summary>
+        </member>
+        <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.GetValue">
+            <summary>
+            <see cref="M:System.Runtime.Serialization.SerializationInfo.GetValue(System.String,System.Type)"/>
+            </summary>
+        </member>
+        <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.SetType">
+            <summary>
+            <see cref="M:System.Runtime.Serialization.SerializationInfo.SetType(System.Type)"/>
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.IInterceptorSelector">
+            <summary>
+            Provides an extension point that allows proxies to choose specific interceptors on
+            a per method basis.
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.IInterceptorSelector.SelectInterceptors(System.Type,System.Reflection.MethodInfo,Castle.DynamicProxy.IInterceptor[])">
+            <summary>
+            Selects the interceptors that should intercept calls to the given <paramref name="method"/>.
+            </summary>
+            <param name="type">The type declaring the method to intercept.</param>
+            <param name="method">The method that will be intercepted.</param>
+            <param name="interceptors">All interceptors registered with the proxy.</param>
+            <returns>An array of interceptors to invoke upon calling the <paramref name="method"/>.</returns>
+            <remarks>
+            This method is called only once per proxy instance, upon the first call to the
+            <paramref name="method"/>. Either an empty array or null are valid return values to indicate
+            that no interceptor should intercept calls to the method. Although it is not advised, it is
+            legal to return other <see cref="T:Castle.DynamicProxy.IInterceptor"/> implementations than these provided in
+            <paramref name="interceptors"/>.
+            </remarks>
+        </member>
+        <member name="M:Castle.Core.Internal.Lock.Create">
+            <summary>
+            Creates a new lock.
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Castle.Core.IServiceProviderExAccessor">
+            <summary>
+            This interface should be implemented by classes
+            that are available in a bigger context, exposing
+            the container to different areas in the same application.
+            <para>
+            For example, in Web application, the (global) HttpApplication
+            subclasses should implement this interface to expose 
+            the configured container
+            </para>
+            </summary>
+        </member>
+        <member name="T:Castle.DynamicProxy.IChangeProxyTarget">
+            <summary>
+            Exposes means to change target objects of proxies and invocations
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeInvocationTarget(System.Object)">
+            <summary>
+            Changes the target object (<see cref="P:Castle.DynamicProxy.IInvocation.InvocationTarget"/>) of current <see cref="T:Castle.DynamicProxy.IInvocation"/>.
+            </summary>
+            <param name="target">The new value of target of invocation.</param>
+            <remarks>
+            Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to <see cref="P:Castle.DynamicProxy.IInvocation.TargetType"/>, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown.
+            Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target.
+            In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws.
+            Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow.
+            In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws.
+            </remarks>
+            <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception>
+        </member>
+        <member name="M:Castle.DynamicProxy.IChangeProxyTarget.ChangeProxyTarget(System.Object)">
+            <summary>
+            Permanently changes the target object of the proxy. This does not affect target of the current invocation.
+            </summary>
+            <param name="target">The new value of target of the proxy.</param>
+            <remarks>
+            Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to proxy's target type, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown.
+            Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target.
+            In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws.
+            Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow.
+            In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.DynamicProxy.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws.
+            </remarks>
+            <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception>
+        </member>
+        <member name="T:Castle.DynamicProxy.IInterceptor">
+            <summary>
+            New interface that is going to be used by DynamicProxy 2
+            </summary>
+        </member>
+        <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.DynProxyGetTarget">
+            <summary>
+            Get the proxy target (note that null is a valid target!)
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.DynamicProxy.IProxyTargetAccessor.GetInterceptors">
+            <summary>
+            Gets the interceptors for the proxy
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Castle.Core.IServiceEnabledComponent">
+            <summary>
+            Defines that the implementation wants a 
+            <see cref="T:System.IServiceProvider"/> in order to 
+            access other components. The creator must be aware
+            that the component might (or might not) implement 
+            the interface.
+            </summary>
+            <remarks>
+            Used by Castle Project components to, for example, 
+            gather logging factories
+            </remarks>
+        </member>
+        <member name="T:Castle.Core.IServiceProviderEx">
+            <summary>
+            Increments <c>IServiceProvider</c> with a generic service resolution operation.
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Logging.IExtendedLoggerFactory">
+            <summary>
+            Provides a factory that can produce either <see cref="T:Castle.Core.Logging.ILogger"/> or
+            <see cref="T:Castle.Core.Logging.IExtendedLogger"/> classes.
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Logging.ILoggerFactory">
+            <summary>
+            Manages the instantiation of <see cref="T:Castle.Core.Logging.ILogger"/>s.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type)">
+            <summary>
+            Creates a new logger, getting the logger name from the specified type.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String)">
+            <summary>
+            Creates a new logger.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new logger, getting the logger name from the specified type.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.ILoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new logger.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type)">
+            <summary>
+            Creates a new extended logger, getting the logger name from the specified type.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String)">
+            <summary>
+            Creates a new extended logger.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new extended logger, getting the logger name from the specified type.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.IExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new extended logger.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type)">
+            <summary>
+            Creates a new extended logger, getting the logger name from the specified type.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String)">
+            <summary>
+            Creates a new extended logger.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.Type,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new extended logger, getting the logger name from the specified type.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new extended logger.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type)">
+            <summary>
+            Creates a new logger, getting the logger name from the specified type.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String)">
+            <summary>
+            Creates a new logger.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.Type,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new logger, getting the logger name from the specified type.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.Castle#Core#Logging#ILoggerFactory#Create(System.String,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new logger.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.AbstractExtendedLoggerFactory.GetConfigFile(System.String)">
+            <summary>
+            Gets the configuration file.
+            </summary>
+            <param name="fileName">i.e. log4net.config</param>
+            <returns></returns>
+        </member>
+        <member name="T:Castle.Core.Logging.TraceLoggerFactory">
+            <summary>
+            Used to create the TraceLogger implementation of ILogger interface. See <see cref="T:Castle.Core.Logging.TraceLogger"/>. 
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.AbstractLoggerFactory.GetConfigFile(System.String)">
+            <summary>
+            Gets the configuration file.
+            </summary>
+            <param name="fileName">i.e. log4net.config</param>
+            <returns></returns>
+        </member>
+        <member name="T:Castle.Core.Logging.IContextProperties">
+            <summary>
+            Interface for Context Properties implementations
+            </summary>
+            <remarks>
+            <para>
+            This interface defines a basic property get set accessor.
+            </para>
+            <para>
+            Based on the ContextPropertiesBase of log4net, by Nicko Cadell.
+            </para>
+            </remarks>
+        </member>
+        <member name="P:Castle.Core.Logging.IContextProperties.Item(System.String)">
+            <summary>
+            Gets or sets the value of a property
+            </summary>
+            <value>
+            The value for the property with the specified key
+            </value>
+            <remarks>
+            <para>
+            Gets or sets the value of a property
+            </para>
+            </remarks>
+        </member>
+        <member name="T:Castle.Core.Logging.NullLogFactory">
+            <summary>
+            NullLogFactory used when logging is turned off.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String)">
+            <summary>
+            Creates an instance of ILogger with the specified name.
+            </summary>
+            <param name="name">Name.</param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogFactory.Create(System.String,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates an instance of ILogger with the specified name and LoggerLevel.
+            </summary>
+            <param name="name">Name.</param>
+            <param name="level">Level.</param>
+            <returns></returns>
+        </member>
+        <member name="T:Castle.Core.Logging.StreamLoggerFactory">
+            <summary>
+            Creates <see cref="T:Castle.Core.Logging.StreamLogger"/> outputing 
+            to files. The name of the file is derived from the log name
+            plus the 'log' extension.
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Logging.IExtendedLogger">
+            <summary>
+            Provides an interface that supports <see cref="T:Castle.Core.Logging.ILogger"/> and
+            allows the storage and retrieval of Contexts. These are supported in
+            both log4net and NLog.
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Logging.ILogger">
+            <summary>
+            Manages logging.
+            </summary>
+            <remarks>
+            This is a facade for the different logging subsystems.
+            It offers a simplified interface that follows IOC patterns
+            and a simplified priority/level/severity abstraction. 
+            </remarks>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Debug(System.String)">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Debug(System.String,System.Exception)">
+            <summary>
+            Logs a debug message. 
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Debug(System.String,System.Object[])">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.String,System.Object[])">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Info(System.String)">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Info(System.String,System.Exception)">
+            <summary>
+            Logs an info message. 
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Info(System.String,System.Object[])">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.String,System.Object[])">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Warn(System.String)">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Warn(System.String,System.Exception)">
+            <summary>
+            Logs a warn message. 
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Warn(System.String,System.Object[])">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.String,System.Object[])">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Error(System.String)">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Error(System.String,System.Exception)">
+            <summary>
+            Logs an error message. 
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Error(System.String,System.Object[])">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.String,System.Object[])">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String)">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String,System.Exception)">
+            <summary>
+            Logs a fatal message. 
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.Fatal(System.String,System.Object[])">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.String,System.Object[])">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.FatalError(System.String)">
+            <summary>
+            Logs a fatal error message.
+            </summary>
+            <param name="message">The Message</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.FatalError(System.String,System.Exception)">
+            <summary>
+            Logs a fatal error message.
+            </summary>
+            <param name="message">The Message</param>
+            <param name="exception">The Exception</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.FatalError(System.String,System.Object[])">
+            <summary>
+            Logs a fatal error message.
+            </summary>
+            <param name="format">Message format</param>
+            <param name="args">Array of objects to write using format</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ILogger.CreateChildLogger(System.String)">
+            <summary>
+            Create a new child logger.
+            The name of the child logger is [current-loggers-name].[passed-in-name]
+            </summary>
+            <param name="loggerName">The Subname of this logger.</param>
+            <returns>The New ILogger instance.</returns> 
+            <exception cref="T:System.ArgumentException">If the name has an empty element name.</exception>
+        </member>
+        <member name="P:Castle.Core.Logging.ILogger.IsDebugEnabled">
+            <summary>
+            Determines if messages of priority "debug" will be logged.
+            </summary>
+            <value>True if "debug" messages will be logged.</value> 
+        </member>
+        <member name="P:Castle.Core.Logging.ILogger.IsInfoEnabled">
+            <summary>
+            Determines if messages of priority "info" will be logged.
+            </summary>
+            <value>True if "info" messages will be logged.</value> 
+        </member>
+        <member name="P:Castle.Core.Logging.ILogger.IsWarnEnabled">
+            <summary>
+            Determines if messages of priority "warn" will be logged.
+            </summary>
+            <value>True if "warn" messages will be logged.</value> 
+        </member>
+        <member name="P:Castle.Core.Logging.ILogger.IsErrorEnabled">
+            <summary>
+            Determines if messages of priority "error" will be logged.
+            </summary>
+            <value>True if "error" messages will be logged.</value> 
+        </member>
+        <member name="P:Castle.Core.Logging.ILogger.IsFatalEnabled">
+            <summary>
+            Determines if messages of priority "fatal" will be logged.
+            </summary>
+            <value>True if "fatal" messages will be logged.</value> 
+        </member>
+        <member name="P:Castle.Core.Logging.ILogger.IsFatalErrorEnabled">
+            <summary>
+            Determines if messages of priority "fatalError" will be logged.
+            </summary>
+            <value>True if "fatalError" messages will be logged.</value>
+        </member>
+        <member name="P:Castle.Core.Logging.IExtendedLogger.GlobalProperties">
+            <summary>
+            Exposes the Global Context of the extended logger. 
+            </summary>
+        </member>
+        <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadProperties">
+            <summary>
+            Exposes the Thread Context of the extended logger.
+            </summary>
+        </member>
+        <member name="P:Castle.Core.Logging.IExtendedLogger.ThreadStacks">
+            <summary>
+            Exposes the Thread Stack of the extended logger.
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Logging.LoggerLevel">
+            <summary>
+            Supporting Logger levels.
+            </summary>
+        </member>
+        <member name="F:Castle.Core.Logging.LoggerLevel.Off">
+            <summary>
+            Logging will be off
+            </summary>
+        </member>
+        <member name="F:Castle.Core.Logging.LoggerLevel.Fatal">
+            <summary>
+            Fatal logging level
+            </summary>
+        </member>
+        <member name="F:Castle.Core.Logging.LoggerLevel.Error">
+            <summary>
+            Error logging level
+            </summary>
+        </member>
+        <member name="F:Castle.Core.Logging.LoggerLevel.Warn">
+            <summary>
+            Warn logging level
+            </summary>
+        </member>
+        <member name="F:Castle.Core.Logging.LoggerLevel.Info">
+            <summary>
+            Info logging level
+            </summary>
+        </member>
+        <member name="F:Castle.Core.Logging.LoggerLevel.Debug">
+            <summary>
+            Debug logging level
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Logging.ConsoleLogger">
+            <summary>
+            The Logger sending everything to the standard output streams.
+            This is mainly for the cases when you have a utility that
+            does not have a logger to supply.
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Logging.LevelFilteredLogger">
+            <summary>
+            The Level Filtered Logger class.  This is a base clase which
+            provides a LogLevel attribute and reroutes all functions into
+            one Log method.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.#ctor">
+            <summary>
+            Creates a new <c>LevelFilteredLogger</c>.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.InitializeLifetimeService">
+            <summary>
+            Keep the instance alive in a remoting scenario
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String)">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String,System.Exception)">
+            <summary>
+            Logs a debug message. 
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.String,System.Object[])">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Debug(System.String,System.Object[])">
+            <summary>
+            Logs a debug message.
+            </summary>
+            <param name="format">Message format</param>
+            <param name="args">Array of objects to write using format</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String)">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String,System.Exception)">
+            <summary>
+            Logs an info message. 
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.String,System.Object[])">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Info(System.String,System.Object[])">
+            <summary>
+            Logs an info message.
+            </summary>
+            <param name="format">Message format</param>
+            <param name="args">Array of objects to write using format</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String)">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String,System.Exception)">
+            <summary>
+            Logs a warn message. 
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.String,System.Object[])">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Warn(System.String,System.Object[])">
+            <summary>
+            Logs a warn message.
+            </summary>
+            <param name="format">Message format</param>
+            <param name="args">Array of objects to write using format</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String)">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String,System.Exception)">
+            <summary>
+            Logs an error message. 
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.String,System.Object[])">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Error(System.String,System.Object[])">
+            <summary>
+            Logs an error message.
+            </summary>
+            <param name="format">Message format</param>
+            <param name="args">Array of objects to write using format</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String)">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String,System.Exception)">
+            <summary>
+            Logs a fatal message. 
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="message">The message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.String,System.Object[])">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="exception">The exception to log</param>
+            <param name="formatProvider">The format provider to use</param>
+            <param name="format">Format string for the message to log</param>
+            <param name="args">Format arguments for the message to log</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Fatal(System.String,System.Object[])">
+            <summary>
+            Logs a fatal message.
+            </summary>
+            <param name="format">Message format</param>
+            <param name="args">Array of objects to write using format</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalError(System.String)">
+            <summary>
+            Logs a fatal error message.
+            </summary>
+            <param name="message">The Message</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalError(System.String,System.Exception)">
+            <summary>
+            Logs a fatal error message.
+            </summary>
+            <param name="message">The Message</param>
+            <param name="exception">The Exception</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.FatalError(System.String,System.Object[])">
+            <summary>
+            Logs a fatal error message.
+            </summary>
+            <param name="format">Message format</param>
+            <param name="args">Array of objects to write using format</param>
+        </member>
+        <member name="M:Castle.Core.Logging.LevelFilteredLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)">
+            <summary>
+            Implementors output the log content by implementing this method only.
+            Note that exception can be null
+            </summary>
+            <param name="loggerLevel"></param>
+            <param name="loggerName"></param>
+            <param name="message"></param>
+            <param name="exception"></param>
+        </member>
+        <member name="P:Castle.Core.Logging.LevelFilteredLogger.Level">
+            <value>
+            The <c>LoggerLevel</c> that this logger
+            will be using. Defaults to <c>LoggerLevel.Off</c>
+            </value>
+        </member>
+        <member name="P:Castle.Core.Logging.LevelFilteredLogger.Name">
+            <value>
+            The name that this logger will be using. 
+            Defaults to <c>String.Empty</c>
+            </value>
+        </member>
+        <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsDebugEnabled">
+            <summary>
+            Determines if messages of priority "debug" will be logged.
+            </summary>
+            <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Debug"/> bit</value> 
+        </member>
+        <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsInfoEnabled">
+            <summary>
+            Determines if messages of priority "info" will be logged.
+            </summary>
+            <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Info"/> bit</value> 
+        </member>
+        <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsWarnEnabled">
+            <summary>
+            Determines if messages of priority "warn" will be logged.
+            </summary>
+            <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Warn"/> bit</value> 
+        </member>
+        <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsErrorEnabled">
+            <summary>
+            Determines if messages of priority "error" will be logged.
+            </summary>
+            <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Error"/> bit</value> 
+        </member>
+        <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsFatalEnabled">
+            <summary>
+            Determines if messages of priority "fatal" will be logged.
+            </summary>
+            <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Fatal"/> bit</value> 
+        </member>
+        <member name="P:Castle.Core.Logging.LevelFilteredLogger.IsFatalErrorEnabled">
+            <summary>
+            Determines if messages of priority "fatal" will be logged.
+            </summary>
+            <value><c>true</c> if log level flags include the <see cref="F:Castle.Core.Logging.LoggerLevel.Fatal"/> bit</value> 
+        </member>
+        <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor">
+            <summary>
+            Creates a new ConsoleLogger with the <c>Level</c>
+            set to <c>LoggerLevel.Debug</c> and the <c>Name</c>
+            set to <c>String.Empty</c>.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new ConsoleLogger with the <c>Name</c>
+            set to <c>String.Empty</c>.
+            </summary>
+            <param name="logLevel">The logs Level.</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String)">
+            <summary>
+            Creates a new ConsoleLogger with the <c>Level</c>
+            set to <c>LoggerLevel.Debug</c>.
+            </summary>
+            <param name="name">The logs Name.</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ConsoleLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new ConsoleLogger.
+            </summary>
+            <param name="name">The logs Name.</param>
+            <param name="logLevel">The logs Level.</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ConsoleLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)">
+            <summary>
+            A Common method to log.
+            </summary>
+            <param name="loggerLevel">The level of logging</param>
+            <param name="loggerName">The name of the logger</param>
+            <param name="message">The Message</param>
+            <param name="exception">The Exception</param>
+        </member>
+        <member name="M:Castle.Core.Logging.ConsoleLogger.CreateChildLogger(System.String)">
+            <summary>
+            Returns a new <c>ConsoleLogger</c> with the name
+            added after this loggers name, with a dot in between.
+            </summary>
+            <param name="loggerName">The added hierarchical name.</param>
+            <returns>A new <c>ConsoleLogger</c>.</returns> 
+        </member>
+        <member name="T:Castle.Core.Logging.DiagnosticsLogger">
+            <summary>
+            The Logger using standart Diagnostics namespace.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String)">
+            <summary>
+            Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>.
+            </summary>
+            <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param>
+        </member>
+        <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String,System.String)">
+            <summary>
+            Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>.
+            </summary>
+            <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param>
+            <param name="source"><see cref="P:System.Diagnostics.EventLog.Source"/></param>
+        </member>
+        <member name="M:Castle.Core.Logging.DiagnosticsLogger.#ctor(System.String,System.String,System.String)">
+            <summary>
+            Creates a logger based on <see cref="T:System.Diagnostics.EventLog"/>.
+            </summary>
+            <param name="logName"><see cref="P:System.Diagnostics.EventLog.Log"/></param>
+            <param name="machineName"><see cref="P:System.Diagnostics.EventLog.MachineName"/></param>
+            <param name="source"><see cref="P:System.Diagnostics.EventLog.Source"/></param>
+        </member>
+        <member name="T:Castle.Core.Logging.NullLogger">
+            <summary>
+            The Null Logger class.  This is useful for implementations where you need
+            to provide a logger to a utility class, but do not want any output from it.
+            It also helps when you have a utility that does not have a logger to supply.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.#ctor">
+            <summary>
+            Creates a new <c>NullLogger</c>.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String)">
+            <summary>
+            No-op.
+            </summary>
+            <param name="message">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String,System.Exception)">
+            <summary>
+            No-op. 
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="message">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Debug(System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="formatProvider">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.DebugFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="formatProvider">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Info(System.String)">
+            <summary>
+            No-op.
+            </summary>
+            <param name="message">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Info(System.String,System.Exception)">
+            <summary>
+            No-op. 
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="message">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Info(System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="formatProvider">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.InfoFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="formatProvider">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String)">
+            <summary>
+            No-op.
+            </summary>
+            <param name="message">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String,System.Exception)">
+            <summary>
+            No-op. 
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="message">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Warn(System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="formatProvider">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.WarnFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="formatProvider">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Error(System.String)">
+            <summary>
+            No-op.
+            </summary>
+            <param name="message">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Error(System.String,System.Exception)">
+            <summary>
+            No-op. 
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="message">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Error(System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="formatProvider">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.ErrorFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="formatProvider">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String)">
+            <summary>
+            No-op.
+            </summary>
+            <param name="message">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String,System.Exception)">
+            <summary>
+            No-op.
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="message">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.Fatal(System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="formatProvider">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.FatalFormat(System.Exception,System.IFormatProvider,System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="exception">Ignored</param>
+            <param name="formatProvider">Ignored</param>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.FatalError(System.String)">
+            <summary>
+            No-op.
+            </summary>
+            <param name="message">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.FatalError(System.String,System.Exception)">
+            <summary>
+            No-op.
+            </summary>
+            <param name="message">Ignored</param>
+            <param name="exception">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.FatalError(System.String,System.Object[])">
+            <summary>
+            No-op.
+            </summary>
+            <param name="format">Ignored</param>
+            <param name="args">Ignored</param>
+        </member>
+        <member name="M:Castle.Core.Logging.NullLogger.CreateChildLogger(System.String)">
+            <summary>
+            Returns this <c>NullLogger</c>.
+            </summary>
+            <param name="loggerName">Ignored</param>
+            <returns>This ILogger instance.</returns> 
+        </member>
+        <member name="P:Castle.Core.Logging.NullLogger.IsDebugEnabled">
+            <summary>
+            No-op.
+            </summary>
+            <value>false</value>
+        </member>
+        <member name="P:Castle.Core.Logging.NullLogger.IsInfoEnabled">
+            <summary>
+            No-op.
+            </summary>
+            <value>false</value>
+        </member>
+        <member name="P:Castle.Core.Logging.NullLogger.IsWarnEnabled">
+            <summary>
+            No-op.
+            </summary>
+            <value>false</value>
+        </member>
+        <member name="P:Castle.Core.Logging.NullLogger.IsErrorEnabled">
+            <summary>
+            No-op.
+            </summary>
+            <value>false</value>
+        </member>
+        <member name="P:Castle.Core.Logging.NullLogger.IsFatalEnabled">
+            <summary>
+            No-op.
+            </summary>
+            <value>false</value>
+        </member>
+        <member name="P:Castle.Core.Logging.NullLogger.IsFatalErrorEnabled">
+            <summary>
+            No-op.
+            </summary>
+            <value>false</value>
+        </member>
+        <member name="P:Castle.Core.Logging.NullLogger.GlobalProperties">
+            <summary>
+            Returns empty context properties.
+            </summary>
+        </member>
+        <member name="P:Castle.Core.Logging.NullLogger.ThreadProperties">
+            <summary>
+            Returns empty context properties.
+            </summary>
+        </member>
+        <member name="P:Castle.Core.Logging.NullLogger.ThreadStacks">
+            <summary>
+            Returns empty context stacks.
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Logging.StreamLogger">
+            <summary>
+            The Stream Logger class.  This class can stream log information
+            to any stream, it is suitable for storing a log file to disk,
+            or to a <c>MemoryStream</c> for testing your components.
+            </summary>
+            <remarks>
+            This logger is not thread safe.
+            </remarks>
+        </member>
+        <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream)">
+            <summary>
+            Creates a new <c>StreamLogger</c> with default encoding 
+            and buffer size. Initial Level is set to Debug.
+            </summary>
+            <param name="name">
+            The name of the log.
+            </param>
+            <param name="stream">
+            The stream that will be used for logging,
+            seeking while the logger is alive 
+            </param>
+        </member>
+        <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding)">
+            <summary>
+            Creates a new <c>StreamLogger</c> with default buffer size.
+            Initial Level is set to Debug.
+            </summary>
+            <param name="name">
+            The name of the log.
+            </param>
+            <param name="stream">
+            The stream that will be used for logging,
+            seeking while the logger is alive 
+            </param>
+            <param name="encoding">
+            The encoding that will be used for this stream.
+            <see cref="T:System.IO.StreamWriter"/>
+            </param>
+        </member>
+        <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.Stream,System.Text.Encoding,System.Int32)">
+            <summary>
+            Creates a new <c>StreamLogger</c>. 
+            Initial Level is set to Debug.
+            </summary>
+            <param name="name">
+            The name of the log.
+            </param>
+            <param name="stream">
+            The stream that will be used for logging,
+            seeking while the logger is alive 
+            </param>
+            <param name="encoding">
+            The encoding that will be used for this stream.
+            <see cref="T:System.IO.StreamWriter"/>
+            </param>
+            <param name="bufferSize">
+            The buffer size that will be used for this stream.
+            <see cref="T:System.IO.StreamWriter"/>
+            </param>
+        </member>
+        <member name="M:Castle.Core.Logging.StreamLogger.#ctor(System.String,System.IO.StreamWriter)">
+            <summary>
+            Creates a new <c>StreamLogger</c> with 
+            Debug as default Level.
+            </summary>
+            <param name="name">The name of the log.</param>
+            <param name="writer">The <c>StreamWriter</c> the log will write to.</param>
+        </member>
+        <member name="T:Castle.Core.Logging.TraceLogger">
+            <summary>
+            The TraceLogger sends all logging to the System.Diagnostics.TraceSource
+            built into the .net framework. 
+            </summary>
+            <remarks>
+            Logging can be configured in the system.diagnostics configuration 
+            section. 
+            
+            If logger doesn't find a source name with a full match it will
+            use source names which match the namespace partially. For example you can
+            configure from all castle components by adding a source name with the
+            name "Castle". 
+            
+            If no portion of the namespace matches the source named "Default" will
+            be used.
+            </remarks>
+        </member>
+        <member name="M:Castle.Core.Logging.TraceLogger.#ctor(System.String)">
+            <summary>
+            Build a new trace logger based on the named TraceSource
+            </summary>
+            <param name="name">The name used to locate the best TraceSource. In most cases comes from the using type's fullname.</param>
+        </member>
+        <member name="M:Castle.Core.Logging.TraceLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Build a new trace logger based on the named TraceSource
+            </summary>
+            <param name="name">The name used to locate the best TraceSource. In most cases comes from the using type's fullname.</param>
+            <param name="level">The default logging level at which this source should write messages. In almost all cases this
+            default value will be overridden in the config file. </param>
+        </member>
+        <member name="M:Castle.Core.Logging.TraceLogger.CreateChildLogger(System.String)">
+            <summary>
+            Create a new child logger.
+            The name of the child logger is [current-loggers-name].[passed-in-name]
+            </summary>
+            <param name="loggerName">The Subname of this logger.</param>
+            <returns>The New ILogger instance.</returns> 
+        </member>
+        <member name="T:Castle.Core.Logging.WebLogger">
+            <summary>
+            The WebLogger sends everything to the HttpContext.Trace 
+            </summary>
+            <remarks>
+            Trace must be enabled on the Asp.Net configuration file (web.config or machine.config)
+            </remarks>
+        </member>
+        <member name="M:Castle.Core.Logging.WebLogger.#ctor">
+            <summary>
+            Creates a new WebLogger with the priority set to DEBUG.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Logging.WebLogger.#ctor(Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new WebLogger.
+            </summary>
+            <param name="logLevel">The Log level typecode.</param>
+        </member>
+        <member name="M:Castle.Core.Logging.WebLogger.#ctor(System.String)">
+            <summary>
+            Creates a new WebLogger.
+            </summary>
+            <param name="name">The Log name.</param>
+        </member>
+        <member name="M:Castle.Core.Logging.WebLogger.#ctor(System.String,Castle.Core.Logging.LoggerLevel)">
+            <summary>
+            Creates a new WebLogger.
+            </summary>
+            <param name="name">The Log name.</param>
+            <param name="loggerLevel">The Log level typecode.</param>
+        </member>
+        <member name="M:Castle.Core.Logging.WebLogger.Log(Castle.Core.Logging.LoggerLevel,System.String,System.String,System.Exception)">
+            <summary>
+            A Common method to log.
+            </summary>
+            <param name="loggerLevel">The level of logging</param>
+            <param name="loggerName">The Log name.</param>
+            <param name="message">The Message</param>
+            <param name="exception">The Exception</param>
+        </member>
+        <member name="M:Castle.Core.Logging.WebLogger.CreateChildLogger(System.String)">
+            <summary>
+            Just returns this logger (<c>WebLogger</c> is not hierarchical).
+            </summary>
+            <param name="loggerName">Ignored</param>
+            <returns>This ILogger instance.</returns> 
+        </member>
+        <member name="M:Castle.Core.Logging.WebLogger.TryToGetTraceContext">
+            <summary>
+            Tries to get the current http context's trace context.
+            </summary>
+            <returns>The current http context's trace context or null if none is 
+            available</returns>
+        </member>
+        <member name="T:Castle.Core.Configuration.AbstractConfiguration">
+            <summary>
+            This is an abstract <see cref="T:Castle.Core.Configuration.IConfiguration"/> implementation
+            that deals with methods that can be abstracted away
+            from underlying implementations.
+            </summary>
+            <remarks>
+            <para><b>AbstractConfiguration</b> makes easier to implementers 
+            to create a new version of <see cref="T:Castle.Core.Configuration.IConfiguration"/></para>
+            </remarks>
+        </member>
+        <member name="T:Castle.Core.Configuration.IConfiguration">
+            <summary>
+            <see cref="T:Castle.Core.Configuration.IConfiguration"/> is a interface encapsulating a configuration node
+            used to retrieve configuration values.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Configuration.IConfiguration.GetValue(System.Type,System.Object)">
+            <summary>
+            Gets the value of the node and converts it 
+            into specified <see cref="T:System.Type"/>.
+            </summary>
+            <param name="type">The <see cref="T:System.Type"/></param>
+            <param name="defaultValue">
+            The Default value returned if the convertion fails.
+            </param>
+            <returns>The Value converted into the specified type.</returns>
+        </member>
+        <member name="P:Castle.Core.Configuration.IConfiguration.Name">
+            <summary>
+            Gets the name of the node.
+            </summary>
+            <value>
+            The Name of the node.
+            </value> 
+        </member>
+        <member name="P:Castle.Core.Configuration.IConfiguration.Value">
+            <summary>
+            Gets the value of the node.
+            </summary>
+            <value>
+            The Value of the node.
+            </value> 
+        </member>
+        <member name="P:Castle.Core.Configuration.IConfiguration.Children">
+            <summary>
+            Gets an <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of <see cref="T:Castle.Core.Configuration.IConfiguration"/>
+            elements containing all node children.
+            </summary>
+            <value>The Collection of child nodes.</value>
+        </member>
+        <member name="P:Castle.Core.Configuration.IConfiguration.Attributes">
+            <summary>
+            Gets an <see cref="T:System.Collections.IDictionary"/> of the configuration attributes.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Configuration.AbstractConfiguration.GetValue(System.Type,System.Object)">
+            <summary>
+            Gets the value of the node and converts it
+            into specified <see cref="T:System.Type"/>.
+            </summary>
+            <param name="type">The <see cref="T:System.Type"/></param>
+            <param name="defaultValue">
+            The Default value returned if the convertion fails.
+            </param>
+            <returns>The Value converted into the specified type.</returns>
+        </member>
+        <member name="P:Castle.Core.Configuration.AbstractConfiguration.Name">
+            <summary>
+            Gets the name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>.
+            </summary>
+            <value>
+            The Name of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>.
+            </value>
+        </member>
+        <member name="P:Castle.Core.Configuration.AbstractConfiguration.Value">
+            <summary>
+            Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>.
+            </summary>
+            <value>
+            The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>.
+            </value>
+        </member>
+        <member name="P:Castle.Core.Configuration.AbstractConfiguration.Children">
+            <summary>
+            Gets all child nodes.
+            </summary>
+            <value>The <see cref="T:Castle.Core.Configuration.ConfigurationCollection"/> of child nodes.</value>
+        </member>
+        <member name="P:Castle.Core.Configuration.AbstractConfiguration.Attributes">
+            <summary>
+            Gets node attributes.
+            </summary>
+            <value>
+            All attributes of the node.
+            </value>
+        </member>
+        <member name="T:Castle.Core.Configuration.ConfigurationCollection">
+            <summary>
+            A collection of <see cref="T:Castle.Core.Configuration.IConfiguration"/> objects.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor">
+            <summary>
+            Creates a new instance of <c>ConfigurationCollection</c>.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Configuration.ConfigurationCollection.#ctor(System.Collections.Generic.IEnumerable{Castle.Core.Configuration.IConfiguration})">
+            <summary>
+            Creates a new instance of <c>ConfigurationCollection</c>.
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Configuration.MutableConfiguration">
+            <summary>
+            Summary description for MutableConfiguration.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Configuration.MutableConfiguration.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.Core.Configuration.MutableConfiguration"/> class.
+            </summary>
+            <param name="name">The name.</param>
+        </member>
+        <member name="P:Castle.Core.Configuration.MutableConfiguration.Value">
+            <summary>
+            Gets the value of <see cref="T:Castle.Core.Configuration.IConfiguration"/>.
+            </summary>
+            <value>
+            The Value of the <see cref="T:Castle.Core.Configuration.IConfiguration"/>.
+            </value>
+        </member>
+        <member name="T:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer">
+            <summary>
+            Pendent
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer.Deserialize(System.Xml.XmlNode)">
+            <summary>
+            Deserializes the specified node into an abstract representation of configuration.
+            </summary>
+            <param name="node">The node.</param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Core.Configuration.Xml.XmlConfigurationDeserializer.GetConfigValue(System.String)">
+            <summary>
+            If a config value is an empty string we return null, this is to keep
+            backward compability with old code
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Pair`2">
+            <summary>
+            General purpose class to represent a standard pair of values. 
+            </summary>
+            <typeparam name="TFirst">Type of the first value</typeparam>
+            <typeparam name="TSecond">Type of the second value</typeparam>
+        </member>
+        <member name="M:Castle.Core.Pair`2.#ctor(`0,`1)">
+            <summary>
+            Constructs a pair with its values
+            </summary>
+            <param name="first"></param>
+            <param name="second"></param>
+        </member>
+        <member name="T:Castle.Core.ProxyServices">
+            <summary>
+            List of utility methods related to dynamic proxy operations
+            </summary>
+        </member>
+        <member name="M:Castle.Core.ProxyServices.IsDynamicProxy(System.Type)">
+            <summary>
+            Determines whether the specified type is a proxy generated by
+            DynamicProxy (1 or 2).
+            </summary>
+            <param name="type">The type.</param>
+            <returns>
+            	<c>true</c> if it is a proxy; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="T:Castle.Core.ReflectionBasedDictionaryAdapter">
+            <summary>
+            Pendent
+            </summary>
+        </member>
+        <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.Core.ReflectionBasedDictionaryAdapter"/> class.
+            </summary>
+            <param name="target">The target.</param>
+        </member>
+        <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Contains(System.Object)">
+            <summary>
+            Determines whether the <see cref="T:System.Collections.IDictionary"/> object contains an element with the specified key.
+            </summary>
+            <param name="key">The key to locate in the <see cref="T:System.Collections.IDictionary"/> object.</param>
+            <returns>
+            true if the <see cref="T:System.Collections.IDictionary"/> contains an element with the key; otherwise, false.
+            </returns>
+            <exception cref="T:System.ArgumentNullException">
+            	<paramref name="key"/> is null. </exception>
+        </member>
+        <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Add(System.Object,System.Object)">
+            <summary>
+            Adds an element with the provided key and value to the <see cref="T:System.Collections.IDictionary"/> object.
+            </summary>
+            <param name="key">The <see cref="T:System.Object"/> to use as the key of the element to add.</param>
+            <param name="value">The <see cref="T:System.Object"/> to use as the value of the element to add.</param>
+            <exception cref="T:System.ArgumentNullException">
+            	<paramref name="key"/> is null. </exception>
+            <exception cref="T:System.ArgumentException">An element with the same key already exists in the <see cref="T:System.Collections.IDictionary"/> object. </exception>
+            <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"/> is read-only.-or- The <see cref="T:System.Collections.IDictionary"/> has a fixed size. </exception>
+        </member>
+        <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Clear">
+            <summary>
+            Removes all elements from the <see cref="T:System.Collections.IDictionary"/> object.
+            </summary>
+            <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"/> object is read-only. </exception>
+        </member>
+        <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.System#Collections#IDictionary#GetEnumerator">
+            <summary>
+            Returns an <see cref="T:System.Collections.IDictionaryEnumerator"/> object for the <see cref="T:System.Collections.IDictionary"/> object.
+            </summary>
+            <returns>
+            An <see cref="T:System.Collections.IDictionaryEnumerator"/> object for the <see cref="T:System.Collections.IDictionary"/> object.
+            </returns>
+        </member>
+        <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.Remove(System.Object)">
+            <summary>
+            Removes the element with the specified key from the <see cref="T:System.Collections.IDictionary"/> object.
+            </summary>
+            <param name="key">The key of the element to remove.</param>
+            <exception cref="T:System.ArgumentNullException">
+            	<paramref name="key"/> is null. </exception>
+            <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.IDictionary"/> object is read-only.-or- The <see cref="T:System.Collections.IDictionary"/> has a fixed size. </exception>
+        </member>
+        <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.CopyTo(System.Array,System.Int32)">
+            <summary>
+            Copies the elements of the <see cref="T:System.Collections.ICollection"/> to an <see cref="T:System.Array"/>, starting at a particular <see cref="T:System.Array"/> index.
+            </summary>
+            <param name="array">The one-dimensional <see cref="T:System.Array"/> that is the destination of the elements copied from <see cref="T:System.Collections.ICollection"/>. The <see cref="T:System.Array"/> must have zero-based indexing.</param>
+            <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
+            <exception cref="T:System.ArgumentNullException">
+            	<paramref name="array"/> is null. </exception>
+            <exception cref="T:System.ArgumentOutOfRangeException">
+            	<paramref name="index"/> is less than zero. </exception>
+            <exception cref="T:System.ArgumentException">
+            	<paramref name="array"/> is multidimensional.-or- <paramref name="index"/> is equal to or greater than the length of <paramref name="array"/>.-or- The number of elements in the source <see cref="T:System.Collections.ICollection"/> is greater than the available space from <paramref name="index"/> to the end of the destination <paramref name="array"/>. </exception>
+            <exception cref="T:System.ArgumentException">The type of the source <see cref="T:System.Collections.ICollection"/> cannot be cast automatically to the type of the destination <paramref name="array"/>. </exception>
+        </member>
+        <member name="M:Castle.Core.ReflectionBasedDictionaryAdapter.GetEnumerator">
+            <summary>
+            Returns an enumerator that iterates through a collection.
+            </summary>
+            <returns>
+            An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
+            </returns>
+        </member>
+        <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Item(System.Object)">
+            <summary>
+            Gets or sets the <see cref="T:System.Object"/> with the specified key.
+            </summary>
+            <value></value>
+        </member>
+        <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Keys">
+            <summary>
+            Gets an <see cref="T:System.Collections.ICollection"/> object containing the keys of the <see cref="T:System.Collections.IDictionary"/> object.
+            </summary>
+            <value></value>
+            <returns>An <see cref="T:System.Collections.ICollection"/> object containing the keys of the <see cref="T:System.Collections.IDictionary"/> object.</returns>
+        </member>
+        <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Values">
+            <summary>
+            Gets an <see cref="T:System.Collections.ICollection"/> object containing the values in the <see cref="T:System.Collections.IDictionary"/> object.
+            </summary>
+            <value></value>
+            <returns>An <see cref="T:System.Collections.ICollection"/> object containing the values in the <see cref="T:System.Collections.IDictionary"/> object.</returns>
+        </member>
+        <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsReadOnly">
+            <summary>
+            Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"/> object is read-only.
+            </summary>
+            <value></value>
+            <returns>true if the <see cref="T:System.Collections.IDictionary"/> object is read-only; otherwise, false.</returns>
+        </member>
+        <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsFixedSize">
+            <summary>
+            Gets a value indicating whether the <see cref="T:System.Collections.IDictionary"/> object has a fixed size.
+            </summary>
+            <value></value>
+            <returns>true if the <see cref="T:System.Collections.IDictionary"/> object has a fixed size; otherwise, false.</returns>
+        </member>
+        <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.Count">
+            <summary>
+            Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"/>.
+            </summary>
+            <value></value>
+            <returns>The number of elements contained in the <see cref="T:System.Collections.ICollection"/>.</returns>
+        </member>
+        <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.SyncRoot">
+            <summary>
+            Gets an object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>.
+            </summary>
+            <value></value>
+            <returns>An object that can be used to synchronize access to the <see cref="T:System.Collections.ICollection"/>.</returns>
+        </member>
+        <member name="P:Castle.Core.ReflectionBasedDictionaryAdapter.IsSynchronized">
+            <summary>
+            Gets a value indicating whether access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread safe).
+            </summary>
+            <value></value>
+            <returns>true if access to the <see cref="T:System.Collections.ICollection"/> is synchronized (thread safe); otherwise, false.</returns>
+        </member>
+        <member name="T:Castle.Core.Resource.IResource">
+            <summary>
+            Represents a 'streamable' resource. Can
+            be a file, a resource in an assembly.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Resource.IResource.GetStreamReader">
+            <summary>
+            Returns a reader for the stream
+            </summary>
+            <remarks>
+            It's up to the caller to dispose the reader.
+            </remarks>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Core.Resource.IResource.GetStreamReader(System.Text.Encoding)">
+            <summary>
+            Returns a reader for the stream
+            </summary>
+            <remarks>
+            It's up to the caller to dispose the reader.
+            </remarks>
+            <param name="encoding"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Core.Resource.IResource.CreateRelative(System.String)">
+            <summary>
+            Returns an instance of <see cref="T:Castle.Core.Resource.IResource"/>
+            created according to the <c>relativePath</c>
+            using itself as the root.
+            </summary>
+            <param name="relativePath"></param>
+            <returns></returns>
+        </member>
+        <member name="P:Castle.Core.Resource.IResource.FileBasePath">
+            <summary>
+            
+            </summary>
+            <remarks>
+            Only valid for resources that
+            can be obtained through relative paths
+            </remarks>
+        </member>
+        <member name="T:Castle.Core.Resource.AbstractStreamResource">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="F:Castle.Core.Resource.AbstractStreamResource.createStream">
+            <summary>
+            This returns a new stream instance each time it is called.
+            It is the responsability of the caller to dispose of this stream
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Resource.IResourceFactory">
+            <summary>
+            Depicts the contract for resource factories.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Resource.IResourceFactory.Accept(Castle.Core.Resource.CustomUri)">
+            <summary>
+            Used to check whether the resource factory
+            is able to deal with the given resource
+            identifier.
+            </summary>
+            <remarks>
+            Implementors should return <c>true</c>
+            only if the given identificator is supported
+            by the resource factory
+            </remarks>
+            <param name="uri"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri)">
+            <summary>
+            Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance
+            for the given resource identifier
+            </summary>
+            <param name="uri"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Castle.Core.Resource.IResourceFactory.Create(Castle.Core.Resource.CustomUri,System.String)">
+            <summary>
+            Creates an <see cref="T:Castle.Core.Resource.IResource"/> instance
+            for the given resource identifier
+            </summary>
+            <param name="uri"></param>
+            <param name="basePath"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Castle.Core.Resource.FileResource">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Resource.FileResourceFactory">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Resource.StaticContentResource">
+            <summary>
+            Adapts a static string content as an <see cref="T:Castle.Core.Resource.IResource"/>
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Resource.UncResource">
+            <summary>
+            Enable access to files on network shares
+            </summary>
+        </member>
+        <member name="T:Castle.Core.Smtp.IEmailSender">
+            <summary>
+            Email sender abstraction.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.String,System.String,System.String,System.String)">
+            <summary>
+            Sends a mail message.
+            </summary>
+            <param name="from">From field</param>
+            <param name="to">To field</param>
+            <param name="subject">E-mail's subject</param>
+            <param name="messageText">message's body</param>
+        </member>
+        <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Net.Mail.MailMessage)">
+            <summary>
+            Sends a <see cref="T:System.Net.Mail.MailMessage">message</see>. 
+            </summary>
+            <param name="message"><see cref="T:System.Net.Mail.MailMessage">Message</see> instance</param>
+        </member>
+        <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Collections.Generic.IEnumerable{System.Net.Mail.MailMessage})">
+            <summary>
+            Sends multiple <see cref="T:System.Net.Mail.MailMessage">messages</see>. 
+            </summary>
+            <param name="messages">List of <see cref="T:System.Net.Mail.MailMessage">messages</see></param>
+        </member>
+        <member name="T:Castle.Core.Smtp.DefaultSmtpSender">
+            <summary>
+            Default <see cref="T:Castle.Core.Smtp.IEmailSender"/> implementation.
+            </summary>
+        </member>
+        <member name="M:Castle.Core.Smtp.DefaultSmtpSender.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Castle.Core.Smtp.DefaultSmtpSender"/> class based on the <see cref="T:System.Net.Mail.SmtpClient"/> configuration provided in the application configuration file.
+            </summary>
+            <remarks>
+            This constructor is based on the default <see cref="T:System.Net.Mail.SmtpClient"/> configuration in the application configuration file.
+            </remarks> 
+        </member>
+        <member name="M:Castle.Core.Smtp.DefaultSmtpSender.#ctor(System.String)">
+            <summary>
+            This service implementation
+            requires a host name in order to work
+            </summary>
+            <param name="hostname">The smtp server name</param>
+        </member>
+        <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.String,System.String,System.String,System.String)">
+            <summary>
+            Sends a message. 
+            </summary>
+            <exception cref="T:System.ArgumentNullException">If any of the parameters is null</exception>
+            <param name="from">From field</param>
+            <param name="to">To field</param>
+            <param name="subject">e-mail's subject</param>
+            <param name="messageText">message's body</param>
+        </member>
+        <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.Net.Mail.MailMessage)">
+            <summary>
+            Sends a message. 
+            </summary>
+            <exception cref="T:System.ArgumentNullException">If the message is null</exception>
+            <param name="message">Message instance</param>
+        </member>
+        <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Configure(System.Net.Mail.SmtpClient)">
+            <summary>
+            Configures the sender
+            with port information and eventual credential
+            informed
+            </summary>
+            <param name="smtpClient">Message instance</param>
+        </member>
+        <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Port">
+            <summary>
+            Gets or sets the port used to 
+            access the SMTP server
+            </summary>
+        </member>
+        <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Hostname">
+            <summary>
+            Gets the hostname.
+            </summary>
+            <value>The hostname.</value>
+        </member>
+        <member name="P:Castle.Core.Smtp.DefaultSmtpSender.AsyncSend">
+            <summary>
+            Gets or sets a value which is used to 
+            configure if emails are going to be sent asyncrhonously or not.
+            </summary>
+        </member>
+        <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Timeout">
+            <summary>
+            Gets or sets a value that specifies 
+            the amount of time after which a synchronous Send call times out.
+            </summary>
+        </member>
+        <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UseSsl">
+            <summary>
+            Gets or sets a value indicating whether the email should be sent using 
+            a secure communication channel.
+            </summary>
+            <value><c>true</c> if should use SSL; otherwise, <c>false</c>.</value>
+        </member>
+        <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Domain">
+            <summary>
+            Gets or sets the domain.
+            </summary>
+            <value>The domain.</value>
+        </member>
+        <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UserName">
+            <summary>
+            Gets or sets the name of the user.
+            </summary>
+            <value>The name of the user.</value>
+        </member>
+        <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Password">
+            <summary>
+            Gets or sets the password.
+            </summary>
+            <value>The password.</value>
+        </member>
+        <member name="P:Castle.Core.Smtp.DefaultSmtpSender.HasCredentials">
+            <summary>
+            Gets a value indicating whether credentials were informed.
+            </summary>
+            <value>
+            <see langword="true"/> if this instance has credentials; otherwise, <see langword="false"/>.
+            </value>
+        </member>
+    </members>
+</doc>
diff --git a/NzbDrone.Core/Model/EpisodeModel.cs b/NzbDrone.Core/Model/EpisodeModel.cs
new file mode 100644
index 000000000..7656d89cb
--- /dev/null
+++ b/NzbDrone.Core/Model/EpisodeModel.cs
@@ -0,0 +1,16 @@
+using NzbDrone.Core.Repository.Quality;
+using SubSonic.SqlGeneration.Schema;
+
+namespace NzbDrone.Core.Model
+{
+    public class EpisodeModel
+    {
+        public string SeriesTitle { get; set; }
+        public int SeasonNumber { get; set; }
+        public int EpisodeNumber { get; set; }
+        public QualityTypes Quality { get; set; }
+        public string Path { get; set; }
+        public long Size { get; set; }
+        public bool Proper { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/NzbDrone.Core/Model/EpisodeParseResult.cs b/NzbDrone.Core/Model/EpisodeParseResult.cs
new file mode 100644
index 000000000..d280f539b
--- /dev/null
+++ b/NzbDrone.Core/Model/EpisodeParseResult.cs
@@ -0,0 +1,12 @@
+using NzbDrone.Core.Repository.Quality;
+using SubSonic.SqlGeneration.Schema;
+
+namespace NzbDrone.Core.Model
+{
+    internal struct EpisodeParseResult
+    {
+        internal string SeriesTitle { get; set; }
+        internal int SeasonNumber { get; set; }
+        internal int EpisodeNumber { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/NzbDrone.Core/Entities/Notification/BasicNotification.cs b/NzbDrone.Core/Model/Notification/BasicNotification.cs
similarity index 86%
rename from NzbDrone.Core/Entities/Notification/BasicNotification.cs
rename to NzbDrone.Core/Model/Notification/BasicNotification.cs
index ce256c7e8..3291763c9 100644
--- a/NzbDrone.Core/Entities/Notification/BasicNotification.cs
+++ b/NzbDrone.Core/Model/Notification/BasicNotification.cs
@@ -1,6 +1,6 @@
 using System;
 
-namespace NzbDrone.Core.Entities.Notification
+namespace NzbDrone.Core.Model.Notification
 {
     public class BasicNotification
     {
@@ -17,7 +17,7 @@ namespace NzbDrone.Core.Entities.Notification
 
         public String Title { get; set; }
 
-        public NotificationType Type { get; set; }
+        public BasicNotificationType Type { get; set; }
 
         /// <summary>
         /// Gets or sets a value indicating whether or not this message should be automatically dismissed after a period of time.
diff --git a/NzbDrone.Core/Model/Notification/BasicNotificationType.cs b/NzbDrone.Core/Model/Notification/BasicNotificationType.cs
new file mode 100644
index 000000000..d06d37907
--- /dev/null
+++ b/NzbDrone.Core/Model/Notification/BasicNotificationType.cs
@@ -0,0 +1,9 @@
+namespace NzbDrone.Core.Model.Notification
+{
+    public enum BasicNotificationType
+    {
+        Info = 0,
+        Warrning = 1,
+        Error = 2
+    }
+}
\ No newline at end of file
diff --git a/NzbDrone.Core/Entities/Notification/ProgressNotification.cs b/NzbDrone.Core/Model/Notification/ProgressNotification.cs
similarity index 82%
rename from NzbDrone.Core/Entities/Notification/ProgressNotification.cs
rename to NzbDrone.Core/Model/Notification/ProgressNotification.cs
index 68185c062..a25ce3946 100644
--- a/NzbDrone.Core/Entities/Notification/ProgressNotification.cs
+++ b/NzbDrone.Core/Model/Notification/ProgressNotification.cs
@@ -1,7 +1,7 @@
 using System;
 using NLog;
 
-namespace NzbDrone.Core.Entities.Notification
+namespace NzbDrone.Core.Model.Notification
 {
     public class ProgressNotification : IDisposable
     {
@@ -63,14 +63,14 @@ namespace NzbDrone.Core.Entities.Notification
         /// Gets or sets the status.
         /// </summary>
         /// <value>The status.</value>
-        public NotificationStatus Status { get; set; }
+        public ProgressNotificationStatus Status { get; set; }
 
         public void Dispose()
         {
-            if (Status == NotificationStatus.InProgress)
+            if (Status == ProgressNotificationStatus.InProgress)
             {
-                Logger.Error("Progress notification '{0}' was unexpectedly abandoned. ID:{1} Status:{2} CurrentStatus:{3} PercentComplete:{4}", Title, Id, Status, CurrentStatus, PercentComplete);
-                Status = NotificationStatus.Failed;
+                Logger.Warn("Progress notification '{0}' was unexpectedly abandoned. ID:{1} Status:{2} CurrentStatus:{3} PercentComplete:{4}", Title, Id, Status, CurrentStatus, PercentComplete);
+                Status = ProgressNotificationStatus.Failed;
             }
         }
     }
diff --git a/NzbDrone.Core/Model/Notification/ProgressNotificationStatus.cs b/NzbDrone.Core/Model/Notification/ProgressNotificationStatus.cs
new file mode 100644
index 000000000..b79707b34
--- /dev/null
+++ b/NzbDrone.Core/Model/Notification/ProgressNotificationStatus.cs
@@ -0,0 +1,9 @@
+namespace NzbDrone.Core.Model.Notification
+{
+    public enum ProgressNotificationStatus
+    {
+        InProgress = 0,
+        Completed = 1,
+        Failed = 2
+    }
+}
\ No newline at end of file
diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj
index e36678b54..bdfb08d1e 100644
--- a/NzbDrone.Core/NzbDrone.Core.csproj
+++ b/NzbDrone.Core/NzbDrone.Core.csproj
@@ -121,6 +121,7 @@
     <StartupObject />
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Castle.Core, Version=2.5.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL" />
     <Reference Include="Exceptioneer.WindowsFormsClient, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>Libraries\Exceptioneer.WindowsFormsClient.dll</HintPath>
@@ -149,20 +150,25 @@
     <Reference Include="UPnP, Version=1.0.3932.37442, Culture=neutral, processorArchitecture=MSIL" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Entities\MediaFile.cs" />
-    <Compile Include="Entities\Notification\BasicNotification.cs" />
-    <Compile Include="Entities\Notification\NotificationStatus.cs" />
-    <Compile Include="Entities\Notification\NotificationType.cs" />
+    <Compile Include="Model\EpisodeParseResult.cs" />
+    <Compile Include="Model\EpisodeModel.cs" />
+    <Compile Include="Repository\EpisodeFile.cs" />
+    <Compile Include="Model\Notification\BasicNotification.cs" />
+    <Compile Include="Model\Notification\ProgressNotificationStatus.cs" />
+    <Compile Include="Model\Notification\BasicNotificationType.cs" />
     <Compile Include="Instrumentation.cs" />
+    <Compile Include="Parser.cs" />
     <Compile Include="Providers\Fakes\FakeNotificationProvider.cs" />
+    <Compile Include="Providers\IMediaFileProvider.cs" />
     <Compile Include="Providers\INotificationProvider.cs" />
     <Compile Include="Providers\IMediaDiscoveryProvider.cs" />
     <Compile Include="Providers\IMediaProvider.cs" />
     <Compile Include="Providers\ISyncProvider.cs" />
     <Compile Include="Providers\MediaDiscoveryProvider.cs" />
+    <Compile Include="Providers\MediaFileProvider.cs" />
     <Compile Include="Providers\SyncProvider.cs" />
     <Compile Include="Providers\XBMCMediaProvider.cs" />
-    <Compile Include="Entities\Notification\ProgressNotification.cs" />
+    <Compile Include="Model\Notification\ProgressNotification.cs" />
     <Compile Include="Providers\NotificationProvider.cs" />
     <Compile Include="Providers\ConfigProvider.cs" />
     <Compile Include="Providers\EpisodeProvider.cs" />
@@ -175,15 +181,13 @@
     <Compile Include="Providers\ITvDbProvider.cs" />
     <Compile Include="Providers\SabProvider.cs" />
     <Compile Include="Providers\SeasonProvider.cs" />
-    <Compile Include="Entities\Episode\RemoteEpisode.cs" />
-    <Compile Include="Entities\Episode\EpisodeInfo.cs" />
-    <Compile Include="Entities\Quality\AllowedQuality.cs" />
-    <Compile Include="Entities\Config.cs" />
-    <Compile Include="Entities\Quality\QualityProfile.cs" />
-    <Compile Include="Entities\Season.cs" />
-    <Compile Include="Entities\Episode\BasicEpisode.cs" />
-    <Compile Include="Entities\Quality\QualityTypes.cs" />
-    <Compile Include="Entities\Series.cs" />
+    <Compile Include="Repository\Episode.cs" />
+    <Compile Include="Repository\Quality\AllowedQuality.cs" />
+    <Compile Include="Repository\Config.cs" />
+    <Compile Include="Repository\Quality\QualityProfile.cs" />
+    <Compile Include="Repository\Season.cs" />
+    <Compile Include="Repository\Quality\QualityTypes.cs" />
+    <Compile Include="Repository\Series.cs" />
     <Compile Include="CentralDispatch.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Providers\DiskProvider.cs" />
@@ -215,6 +219,9 @@
     </BootstrapperPackage>
   </ItemGroup>
   <ItemGroup>
+    <Content Include="Libraries\Castle.Core.dll" />
+    <Content Include="Libraries\Castle.Core.pdb" />
+    <Content Include="Libraries\Castle.Core.xml" />
     <Content Include="Libraries\Exceptioneer.WindowsFormsClient.dll" />
     <Content Include="Libraries\Ninject.dll" />
     <Content Include="Libraries\Ninject.xml" />
diff --git a/NzbDrone.Core/Parser.cs b/NzbDrone.Core/Parser.cs
new file mode 100644
index 000000000..65e4022d1
--- /dev/null
+++ b/NzbDrone.Core/Parser.cs
@@ -0,0 +1,135 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using NLog;
+using NzbDrone.Core.Model;
+using NzbDrone.Core.Providers;
+using NzbDrone.Core.Repository.Quality;
+
+namespace NzbDrone.Core
+{
+    internal static class Parser
+    {
+        private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
+
+        private static readonly Regex[] ReportTitleRegex = new[]
+                                                       {
+                                                         new Regex(@"(?<title>.+?)?\W(S)?(?<season>\d+)\w(?<episode>\d+)\W", RegexOptions.IgnoreCase | RegexOptions.Compiled)                                                        
+                                                       };
+
+        private static readonly Regex NormalizeRegex = new Regex(@"((\s|^)the(\s|$))|((\s|^)and(\s|$))|[^a-z]", RegexOptions.IgnoreCase | RegexOptions.Compiled);
+
+        /// <summary>
+        /// Parses a post title into list of episodes it contains
+        /// </summary>
+        /// <param name="title">Title of the report</param>
+        /// <returns>List of episodes contained to the post</returns>
+        internal static List<EpisodeParseResult> ParseEpisodeInfo(string title)
+        {
+            Logger.Trace("Parsing string '{0}'", title);
+
+            var result = new List<EpisodeParseResult>();
+
+            foreach (var regex in ReportTitleRegex)
+            {
+                var match = regex.Matches(title);
+
+                if (match.Count != 0)
+                {
+                    var seriesName = NormalizeTitle(match[0].Groups["title"].Value);
+
+                    foreach (Match matchGroup in match)
+                    {
+                        var tuple = new EpisodeParseResult
+                        {
+                            SeriesTitle = seriesName,
+                            SeasonNumber = Convert.ToInt32(matchGroup.Groups["season"].Value),
+                            EpisodeNumber = Convert.ToInt32(matchGroup.Groups["episode"].Value)
+                        };
+
+                        result.Add(tuple);
+
+                        Logger.Trace("Episode Parsed. {0}", tuple);
+                    }
+                }
+            }
+
+            Logger.Trace("{0} episodes parsed from string.", result.Count);
+
+            return result;
+        }
+
+        /// <summary>
+        /// Parses proper status out of a report title
+        /// </summary>
+        /// <param name="title">Title of the report</param>
+        /// <returns></returns>
+        internal static bool ParseProper(string title)
+        {
+            return title.ToLower().Contains("proper");
+        }
+
+        internal static QualityTypes ParseQuality(string name)
+        {
+            Logger.Trace("Trying to parse quality for {0}", name);
+
+            var result = QualityTypes.Unknown;
+            name = name.ToLowerInvariant();
+
+            if (name.Contains("dvd"))
+                return QualityTypes.DVD;
+            if (name.Contains("xvid") || name.Contains("divx"))
+            {
+                if (name.Contains("bluray") || name.Contains("bdrip"))
+                {
+                    return QualityTypes.DVD;
+                }
+                return QualityTypes.TV;
+            }
+
+            if (name.Contains("bluray") || name.Contains("bdrip"))
+                return QualityTypes.Bluray;
+            if (name.Contains("web-dl"))
+                return QualityTypes.WEBDL;
+            if (name.Contains("x264") || name.Contains("h264") || name.Contains("720p"))
+                return QualityTypes.HDTV;
+
+            //Based on extension
+            if (result == QualityTypes.Unknown)
+            {
+                switch (new FileInfo(name).Extension.ToLower())
+                {
+                    case ".avi":
+                    case ".xvid":
+                    case ".wmv":
+                        {
+                            result = QualityTypes.TV;
+                            break;
+                        }
+                    case ".mkv":
+                        {
+                            result = QualityTypes.HDTV;
+                            break;
+                        }
+                }
+            }
+
+            Logger.Trace("Quality Parsed:{0} Title:", result, name);
+            return result;
+        }
+
+        /// <summary>
+        /// Normalizes the title. removing all non-word characters as well as common tokens
+        /// such as 'the' and 'and'
+        /// </summary>
+        /// <param name="title">title</param>
+        /// <returns></returns>
+        internal static string NormalizeTitle(string title)
+        {
+            return NormalizeRegex.Replace(title, String.Empty).ToLower();
+        }
+    }
+}
diff --git a/NzbDrone.Core/Properties/AssemblyInfo.cs b/NzbDrone.Core/Properties/AssemblyInfo.cs
index ea01fbf9d..d6e8b0bfe 100644
--- a/NzbDrone.Core/Properties/AssemblyInfo.cs
+++ b/NzbDrone.Core/Properties/AssemblyInfo.cs
@@ -13,6 +13,7 @@
 //  * 
 //  */
 using System.Reflection;
+using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
 // General Information about an assembly is controlled through the following 
@@ -49,4 +50,5 @@ using System.Runtime.InteropServices;
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
 
-[assembly: AssemblyVersion("0.2.0.*")]
\ No newline at end of file
+[assembly: AssemblyVersion("0.2.0.*")]
+[assembly: InternalsVisibleTo("NzbDrone.Core.Test")]
\ No newline at end of file
diff --git a/NzbDrone.Core/Providers/ConfigProvider.cs b/NzbDrone.Core/Providers/ConfigProvider.cs
index d6e7531e9..748cc06f2 100644
--- a/NzbDrone.Core/Providers/ConfigProvider.cs
+++ b/NzbDrone.Core/Providers/ConfigProvider.cs
@@ -1,6 +1,6 @@
 using System;
 using NLog;
-using NzbDrone.Core.Entities;
+using NzbDrone.Core.Repository;
 using SubSonic.Repository;
 
 namespace NzbDrone.Core.Providers
diff --git a/NzbDrone.Core/Providers/DiskProvider.cs b/NzbDrone.Core/Providers/DiskProvider.cs
index b4062b1f0..29a2b0d57 100644
--- a/NzbDrone.Core/Providers/DiskProvider.cs
+++ b/NzbDrone.Core/Providers/DiskProvider.cs
@@ -17,6 +17,11 @@ namespace NzbDrone.Core.Providers
             return Directory.GetDirectories(path);
         }
 
+        public string[] GetFiles(string path, string pattern, SearchOption searchOption)
+        {
+            return Directory.GetFiles(path, pattern, searchOption);
+        }
+
         public String CreateDirectory(string path)
         {
             return Directory.CreateDirectory(path).FullName;
diff --git a/NzbDrone.Core/Providers/EpisodeProvider.cs b/NzbDrone.Core/Providers/EpisodeProvider.cs
index 5724f2a78..67031e04b 100644
--- a/NzbDrone.Core/Providers/EpisodeProvider.cs
+++ b/NzbDrone.Core/Providers/EpisodeProvider.cs
@@ -3,8 +3,8 @@ using System.Linq;
 using System.Collections.Generic;
 using System.Text.RegularExpressions;
 using NLog;
-using NzbDrone.Core.Entities.Episode;
-using NzbDrone.Core.Entities.Quality;
+using NzbDrone.Core.Model;
+using NzbDrone.Core.Repository;
 using SubSonic.Repository;
 
 namespace NzbDrone.Core.Providers
@@ -12,21 +12,6 @@ namespace NzbDrone.Core.Providers
     public class EpisodeProvider : IEpisodeProvider
     {
         //TODO: Remove parsing of the series name, it should be done in series provider
-        private static readonly Regex ParseRegex = new Regex(@"(?<showName>.*)
-(?:
-  s(?<seasonNumber>\d+)e(?<episodeNumber>\d+)-?e(?<episodeNumber2>\d+)
-| s(?<seasonNumber>\d+)e(?<episodeNumber>\d+)
-|  (?<seasonNumber>\d+)x(?<episodeNumber>\d+)
-|  (?<airDate>\d{4}.\d{2}.\d{2})
-)
-(?:
-  (?<episodeName>.*?)
-  (?<release>
-     (?:hdtv|pdtv|xvid|ws|720p|x264|bdrip|dvdrip|dsr|proper)
-     .*)
-| (?<episodeName>.*)
-)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace);
-
 
         private readonly IRepository _sonicRepo;
         private readonly ISeriesProvider _series;
@@ -43,35 +28,17 @@ namespace NzbDrone.Core.Providers
             _seasons = seasonProvider;
         }
 
-        public EpisodeInfo GetEpisode(long id)
+        public Episode GetEpisode(long id)
         {
-            return _sonicRepo.Single<EpisodeInfo>(e => e.EpisodeId == id);
+            return _sonicRepo.Single<Episode>(e => e.EpisodeId == id);
         }
 
-        public void UpdateEpisode(EpisodeInfo episode)
+        public IList<Episode> GetEpisodeBySeries(long seriesId)
         {
-            var episodeToUpdate = _sonicRepo.Single<EpisodeInfo>(e => e.EpisodeId == episode.EpisodeId);
-
-            episodeToUpdate.AirDate = episode.AirDate;
-            episodeToUpdate.Overview = episode.Overview;
-            episodeToUpdate.Title = episode.Title;
-            episodeToUpdate.EpisodeNumber = episode.EpisodeNumber;
-            episodeToUpdate.SeasonNumber = episode.SeasonNumber;
-
-            _sonicRepo.Update<EpisodeInfo>(episodeToUpdate);
+            return _sonicRepo.Find<Episode>(e => e.SeriesId == seriesId);
         }
 
-        public IList<EpisodeInfo> GetEpisodesBySeason(long seasonId)
-        {
-            return _sonicRepo.Find<EpisodeInfo>(e => e.SeasonId == seasonId);
-        }
-
-        public IList<EpisodeInfo> GetEpisodeBySeries(long seriesId)
-        {
-            return _sonicRepo.Find<EpisodeInfo>(e => e.SeriesId == seriesId);
-        }
-
-        public String GetSabTitle(BasicEpisode episode)
+        public String GetSabTitle(Episode episode)
         {
             var series = _series.GetSeries(episode.SeriesId);
             if (series == null) throw new ArgumentException("Unknown series. ID: " + episode.SeriesId);
@@ -85,7 +52,7 @@ namespace NzbDrone.Core.Providers
         /// </summary>
         /// <param name="episode">Episode that needs to be checked</param>
         /// <returns></returns>
-        public bool IsNeeded(RemoteEpisode episode)
+        public bool IsNeeded(EpisodeModel episode)
         {
             throw new NotImplementedException();
         }
@@ -97,8 +64,8 @@ namespace NzbDrone.Core.Providers
             int failCount = 0;
             var targetSeries = _tvDb.GetSeries(seriesId, true);
 
-            var updateList = new List<EpisodeInfo>();
-            var newList = new List<EpisodeInfo>();
+            var updateList = new List<Episode>();
+            var newList = new List<Episode>();
 
             Logger.Debug("Updating season info for series:{0}", seriesId);
             targetSeries.Episodes.Select(e => new { e.SeasonId, e.SeasonNumber })
@@ -110,7 +77,7 @@ namespace NzbDrone.Core.Providers
                 try
                 {
                     Logger.Debug("Updating info for series:{0} - episode:{1}", seriesId, episode.Id);
-                    var newEpisode = new EpisodeInfo()
+                    var newEpisode = new Episode()
                       {
                           AirDate = episode.FirstAired,
                           EpisodeId = episode.Id,
@@ -123,7 +90,7 @@ namespace NzbDrone.Core.Providers
                           Title = episode.EpisodeName
                       };
 
-                    if (_sonicRepo.Exists<EpisodeInfo>(e => e.EpisodeId == newEpisode.EpisodeId))
+                    if (_sonicRepo.Exists<Episode>(e => e.EpisodeId == newEpisode.EpisodeId))
                     {
                         updateList.Add(newEpisode);
                     }
@@ -146,38 +113,5 @@ namespace NzbDrone.Core.Providers
 
             Logger.Info("Finished episode refresh for series:{0}. Success:{1} - Fail:{2} ", seriesId, successCount, failCount);
         }
-
-
-
-        /// <summary>
-        /// Parses a post title into list of episode objects
-        /// </summary>
-        /// <param name="title">Title of the report</param>
-        /// <returns>List of episodes relating to the post</returns>
-        public static List<RemoteEpisode> Parse(string title)
-        {
-            var match = ParseRegex.Match(title);
-
-            if (!match.Success)
-                throw new ArgumentException(String.Format("Title doesn't match any know patterns. [{0}]", title));
-
-            var result = new List<RemoteEpisode>();
-
-            result.Add(new RemoteEpisode { EpisodeNumber = Convert.ToInt32(match.Groups["episodeNumber"].Value) });
-
-            if (match.Groups["episodeNumber2"].Success)
-            {
-                result.Add(new RemoteEpisode { EpisodeNumber = Convert.ToInt32(match.Groups["episodeNumber2"].Value) });
-            }
-
-            foreach (var ep in result)
-            {
-                ep.SeasonNumber = Convert.ToInt32(match.Groups["seasonNumber"].Value);
-                ep.Proper = title.Contains("PROPER");
-                ep.Quality = QualityTypes.Unknown;
-            }
-
-            return result;
-        }
     }
 }
\ No newline at end of file
diff --git a/NzbDrone.Core/Providers/Fakes/FakeNotificationProvider.cs b/NzbDrone.Core/Providers/Fakes/FakeNotificationProvider.cs
index fe0a4a461..f51e7d6fd 100644
--- a/NzbDrone.Core/Providers/Fakes/FakeNotificationProvider.cs
+++ b/NzbDrone.Core/Providers/Fakes/FakeNotificationProvider.cs
@@ -1,6 +1,6 @@
 using System;
 using System.Collections.Generic;
-using NzbDrone.Core.Entities.Notification;
+using NzbDrone.Core.Model.Notification;
 
 namespace NzbDrone.Core.Providers.Fakes
 {
@@ -33,8 +33,8 @@ namespace NzbDrone.Core.Providers.Fakes
 
             get
             {
-                fakeNotification.Status = NotificationStatus.InProgress;
-                fakeNotification.Status = NotificationStatus.InProgress;
+                fakeNotification.Status = ProgressNotificationStatus.InProgress;
+                fakeNotification.Status = ProgressNotificationStatus.InProgress;
                 fakeNotification2.CurrentStatus = DateTime.UtcNow.ToString();
                 fakeNotification.CurrentStatus = DateTime.Now.ToString();
                 return new List<ProgressNotification> { fakeNotification  };
diff --git a/NzbDrone.Core/Providers/IDiskProvider.cs b/NzbDrone.Core/Providers/IDiskProvider.cs
index ec7a0a9e0..6a2643c84 100644
--- a/NzbDrone.Core/Providers/IDiskProvider.cs
+++ b/NzbDrone.Core/Providers/IDiskProvider.cs
@@ -1,4 +1,5 @@
 using System;
+using System.IO;
 
 namespace NzbDrone.Core.Providers
 {
@@ -7,5 +8,6 @@ namespace NzbDrone.Core.Providers
         bool Exists(string path);
         string[] GetDirectories(string path);
         String CreateDirectory(string path);
+        string[] GetFiles(string path, string pattern, SearchOption searchOption);
     }
 }
\ No newline at end of file
diff --git a/NzbDrone.Core/Providers/IEpisodeProvider.cs b/NzbDrone.Core/Providers/IEpisodeProvider.cs
index 3c4addc88..df444ee75 100644
--- a/NzbDrone.Core/Providers/IEpisodeProvider.cs
+++ b/NzbDrone.Core/Providers/IEpisodeProvider.cs
@@ -1,23 +1,22 @@
 using System;
 using System.Collections.Generic;
-using NzbDrone.Core.Entities.Episode;
+using NzbDrone.Core.Model;
+using NzbDrone.Core.Repository;
 
 namespace NzbDrone.Core.Providers
 {
     public interface IEpisodeProvider
     {
-        EpisodeInfo GetEpisode(long id);
-        void UpdateEpisode(EpisodeInfo episode);
-        IList<EpisodeInfo> GetEpisodesBySeason(long seasonId);
-        IList<EpisodeInfo> GetEpisodeBySeries(long seriesId);
-        String GetSabTitle(BasicEpisode episode);
+        Episode GetEpisode(long id);
+        IList<Episode> GetEpisodeBySeries(long seriesId);
+        String GetSabTitle(Episode episode);
 
         /// <summary>
         /// Comprehensive check on whether or not this episode is needed.
         /// </summary>
         /// <param name="episode">Episode that needs to be checked</param>
         /// <returns></returns>
-        bool IsNeeded(RemoteEpisode episode);
+        bool IsNeeded(EpisodeModel episode);
 
         void RefreshEpisodeInfo(int seriesId);
     }
diff --git a/NzbDrone.Core/Providers/IMediaFileProvider.cs b/NzbDrone.Core/Providers/IMediaFileProvider.cs
new file mode 100644
index 000000000..41f1e4b59
--- /dev/null
+++ b/NzbDrone.Core/Providers/IMediaFileProvider.cs
@@ -0,0 +1,13 @@
+using NzbDrone.Core.Repository;
+
+namespace NzbDrone.Core.Providers
+{
+    public interface IMediaFileProvider
+    {
+        /// <summary>
+        /// Scans the specified series folder for media files
+        /// </summary>
+        /// <param name="series">The series to be scanned</param>
+        void Scan(Series series);
+    }
+}
\ No newline at end of file
diff --git a/NzbDrone.Core/Providers/INotificationProvider.cs b/NzbDrone.Core/Providers/INotificationProvider.cs
index e7680f1ff..d4b4c8c12 100644
--- a/NzbDrone.Core/Providers/INotificationProvider.cs
+++ b/NzbDrone.Core/Providers/INotificationProvider.cs
@@ -1,6 +1,6 @@
 using System;
 using System.Collections.Generic;
-using NzbDrone.Core.Entities.Notification;
+using NzbDrone.Core.Model.Notification;
 
 namespace NzbDrone.Core.Providers
 {
diff --git a/NzbDrone.Core/Providers/ISeasonProvider.cs b/NzbDrone.Core/Providers/ISeasonProvider.cs
index 354de4426..3a8f79854 100644
--- a/NzbDrone.Core/Providers/ISeasonProvider.cs
+++ b/NzbDrone.Core/Providers/ISeasonProvider.cs
@@ -1,5 +1,5 @@
 using System.Collections.Generic;
-using NzbDrone.Core.Entities;
+using NzbDrone.Core.Repository;
 
 namespace NzbDrone.Core.Providers
 {
diff --git a/NzbDrone.Core/Providers/ISeriesProvider.cs b/NzbDrone.Core/Providers/ISeriesProvider.cs
index 4c464abd6..53310ff75 100644
--- a/NzbDrone.Core/Providers/ISeriesProvider.cs
+++ b/NzbDrone.Core/Providers/ISeriesProvider.cs
@@ -1,7 +1,8 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
-using NzbDrone.Core.Entities;
+using NzbDrone.Core.Repository;
+using NzbDrone.Core.Repository;
 using TvdbLib.Data;
 
 namespace NzbDrone.Core.Providers
diff --git a/NzbDrone.Core/Providers/MediaFileProvider.cs b/NzbDrone.Core/Providers/MediaFileProvider.cs
new file mode 100644
index 000000000..ffdd2b0ce
--- /dev/null
+++ b/NzbDrone.Core/Providers/MediaFileProvider.cs
@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using NLog;
+using NzbDrone.Core.Repository;
+
+namespace NzbDrone.Core.Providers
+{
+    public class MediaFileProvider : IMediaFileProvider
+    {
+
+
+        private readonly IDiskProvider _diskProvider;
+        private readonly IEpisodeProvider _episodeProvider;
+
+        private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
+        private static readonly string[] MediaExtentions = new[] { "*.mkv", "*.avi", "*.wmv" };
+
+        public MediaFileProvider(IDiskProvider diskProvider, IEpisodeProvider episodeProvider)
+        {
+            _diskProvider = diskProvider;
+            _episodeProvider = episodeProvider;
+        }
+
+        /// <summary>
+        /// Scans the specified series folder for media files
+        /// </summary>
+        /// <param name="series">The series to be scanned</param>
+        public void Scan(Series series)
+        {
+            var mediaFileList = new List<string>();
+            Logger.Info("Scanning '{0}'", series.Path);
+            foreach (var ext in MediaExtentions)
+            {
+                mediaFileList.AddRange(_diskProvider.GetFiles(series.Path, ext, SearchOption.AllDirectories));
+            }
+
+            Logger.Info("{0} media files were found", mediaFileList.Count);
+
+            foreach (var file in mediaFileList)
+            {
+                var episode = Parser.ParseEpisodeInfo(file);
+            }
+        }
+    }
+}
diff --git a/NzbDrone.Core/Providers/NotificationProvider.cs b/NzbDrone.Core/Providers/NotificationProvider.cs
index a6e714a94..631430db3 100644
--- a/NzbDrone.Core/Providers/NotificationProvider.cs
+++ b/NzbDrone.Core/Providers/NotificationProvider.cs
@@ -1,7 +1,7 @@
 using System;
 using System.Linq;
 using System.Collections.Generic;
-using NzbDrone.Core.Entities.Notification;
+using NzbDrone.Core.Model.Notification;
 
 namespace NzbDrone.Core.Providers
 {
@@ -28,7 +28,7 @@ namespace NzbDrone.Core.Providers
 
         public List<ProgressNotification> GetProgressNotifications
         {
-            get { return new List<ProgressNotification>(_progressNotification.Values.Where(p => p.Status == NotificationStatus.InProgress)); }
+            get { return new List<ProgressNotification>(_progressNotification.Values.Where(p => p.Status == ProgressNotificationStatus.InProgress)); }
         }
 
         public void Dismiss(Guid notificationId)
diff --git a/NzbDrone.Core/Providers/SeasonProvider.cs b/NzbDrone.Core/Providers/SeasonProvider.cs
index fc04cf436..bb97862c8 100644
--- a/NzbDrone.Core/Providers/SeasonProvider.cs
+++ b/NzbDrone.Core/Providers/SeasonProvider.cs
@@ -1,7 +1,7 @@
 using System;
 using System.Collections.Generic;
 using NLog;
-using NzbDrone.Core.Entities;
+using NzbDrone.Core.Repository;
 using SubSonic.Repository;
 
 namespace NzbDrone.Core.Providers
diff --git a/NzbDrone.Core/Providers/SeriesProvider.cs b/NzbDrone.Core/Providers/SeriesProvider.cs
index 5b5661fb2..0e1906f3b 100644
--- a/NzbDrone.Core/Providers/SeriesProvider.cs
+++ b/NzbDrone.Core/Providers/SeriesProvider.cs
@@ -4,8 +4,7 @@ using System.IO;
 using System.Linq;
 using System.Text.RegularExpressions;
 using NLog;
-using NzbDrone.Core.Entities;
-using NzbDrone.Core.Entities.Notification;
+using NzbDrone.Core.Repository;
 using SubSonic.Repository;
 using TvdbLib.Data;
 
@@ -16,30 +15,12 @@ namespace NzbDrone.Core.Providers
         //TODO: Remove parsing of rest of tv show info we just need the show name
 
         //Trims all white spaces and separators from the end of the title.
-        private static readonly Regex CleanTitleRegex = new Regex(@"[\s.][^a-z]*$", RegexOptions.IgnoreCase | RegexOptions.Compiled);
-        private static readonly Regex ParseRegex = new Regex(@"(?<showName>.*)
-(?:
-  s(?<seasonNumber>\d+)e(?<episodeNumber>\d+)-?e(?<episodeNumber2>\d+)
-| s(?<seasonNumber>\d+)e(?<episodeNumber>\d+)
-|  (?<seasonNumber>\d+)x(?<episodeNumber>\d+)
-|  (?<airDate>\d{4}.\d{2}.\d{2})
-)
-(?:
-  (?<episodeName>.*?)
-  (?<release>
-     (?:hdtv|pdtv|xvid|ws|720p|x264|bdrip|dvdrip|dsr|proper)
-     .*)
-| (?<episodeName>.*)
-)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace);
-
-
 
         private readonly IConfigProvider _config;
         private readonly IDiskProvider _diskProvider;
         private readonly IRepository _sonioRepo;
         private readonly ITvDbProvider _tvDb;
         private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
-        private static readonly Regex CleanUpRegex = new Regex(@"((\s|^)the(\s|$))|((\s|^)and(\s|$))|[^a-z]", RegexOptions.IgnoreCase | RegexOptions.Compiled);
 
         public SeriesProvider(IDiskProvider diskProvider, IConfigProvider configProvider, IRepository dataRepository, ITvDbProvider tvDbProvider)
         {
@@ -71,21 +52,6 @@ namespace NzbDrone.Core.Providers
             return _sonioRepo.Exists<Series>(c => c.SeriesId == id && c.Monitored);
         }
 
-        /// <summary>
-        /// Parses series name out of a post title
-        /// </summary>
-        /// <param name="postTitle">Title of the report</param>
-        /// <returns>Name series this report belongs to</returns>
-        public static string ParseTitle(string postTitle)
-        {
-            var match = ParseRegex.Match(postTitle);
-
-            if (!match.Success)
-                throw new ArgumentException(String.Format("Title doesn't match any know patterns. [{0}]", postTitle));
-
-            return CleanTitleRegex.Replace(match.Groups["showName"].Value, String.Empty).Replace(".", " ");
-        }
-
         public List<String> GetUnmappedFolders()
         {
             Logger.Debug("Generating list of unmapped folders");
@@ -130,7 +96,7 @@ namespace NzbDrone.Core.Providers
             repoSeries.Status = series.Status;
             repoSeries.Language = series.Language != null ? series.Language.Abbriviation : string.Empty;
             repoSeries.Path = path;
-            repoSeries.CleanTitle = CleanUpRegex.Replace(series.SeriesName, "").ToLower();
+            repoSeries.CleanTitle = Parser.NormalizeTitle(series.SeriesName);
             _sonioRepo.Add(repoSeries);
         }
 
diff --git a/NzbDrone.Core/Providers/SyncProvider.cs b/NzbDrone.Core/Providers/SyncProvider.cs
index 8621c16fa..3db2c4ded 100644
--- a/NzbDrone.Core/Providers/SyncProvider.cs
+++ b/NzbDrone.Core/Providers/SyncProvider.cs
@@ -6,7 +6,7 @@ using System.Linq;
 using System.Text;
 using System.Threading;
 using NLog;
-using NzbDrone.Core.Entities.Notification;
+using NzbDrone.Core.Model.Notification;
 
 namespace NzbDrone.Core.Providers
 {
@@ -58,7 +58,6 @@ namespace NzbDrone.Core.Providers
                 {
                     _notificationProvider.Register(_seriesSyncNotification);
                     _seriesSyncNotification.CurrentStatus = "Analysing Folder";
-                    Thread.Sleep(20000);
                     var unmappedFolders = _seriesProvider.GetUnmappedFolders();
                     _seriesSyncNotification.ProgressMax = unmappedFolders.Count;
 
@@ -100,7 +99,7 @@ namespace NzbDrone.Core.Providers
                     _seriesSyncNotification.CurrentStatus = "Series Scan Completed";
                     Logger.Info("Series folders scan has successfully completed.");
                     Thread.Sleep(3000);
-                    _seriesSyncNotification.Status = NotificationStatus.Completed;
+                    _seriesSyncNotification.Status = ProgressNotificationStatus.Completed;
                 }
             }
             catch (Exception e)
diff --git a/NzbDrone.Core/Entities/Config.cs b/NzbDrone.Core/Repository/Config.cs
similarity index 86%
rename from NzbDrone.Core/Entities/Config.cs
rename to NzbDrone.Core/Repository/Config.cs
index bd65a1a57..898b69cf5 100644
--- a/NzbDrone.Core/Entities/Config.cs
+++ b/NzbDrone.Core/Repository/Config.cs
@@ -1,6 +1,6 @@
 using SubSonic.SqlGeneration.Schema;
 
-namespace NzbDrone.Core.Entities
+namespace NzbDrone.Core.Repository
 {
     [SubSonicTableNameOverride("Config")]
     public class Config
diff --git a/NzbDrone.Core/Entities/Episode/EpisodeInfo.cs b/NzbDrone.Core/Repository/Episode.cs
similarity index 60%
rename from NzbDrone.Core/Entities/Episode/EpisodeInfo.cs
rename to NzbDrone.Core/Repository/Episode.cs
index 34efad5ff..91445091f 100644
--- a/NzbDrone.Core/Entities/Episode/EpisodeInfo.cs
+++ b/NzbDrone.Core/Repository/Episode.cs
@@ -1,25 +1,29 @@
 using System;
 using SubSonic.SqlGeneration.Schema;
 
-namespace NzbDrone.Core.Entities.Episode
+namespace NzbDrone.Core.Repository
 {
-    [SubSonicTableNameOverride("EpisodeInfo")]
-    public class EpisodeInfo : BasicEpisode
+    public class Episode
     {
         [SubSonicPrimaryKey(false)]
         public virtual int EpisodeId { get; set; }
+        public virtual int SeriesId { get; set; }
+        public int SeasonNumber { get; set; }
+        public int EpisodeNumber { get; set; }
         public int SeasonId { get; set; }
         public string Title { get; set; }
         public DateTime AirDate { get; set; }
-        [SubSonicLongString]
         public string Overview { get; set; }
         public string Language { get; set; }
-        public int MediaFileId { get; set; }
+
+        [SubSonicNullString]
+        public string Path { get; set; }
+        public long? Size { get; set; }
 
         [SubSonicToOneRelation(ThisClassContainsJoinKey = true)]
         public virtual Season Season { get; set; }
 
         [SubSonicToOneRelation(ThisClassContainsJoinKey = true)]
-        public virtual MediaFile File { get; set; }
+        public virtual Series Series { get; private set; }
     }
 }
diff --git a/NzbDrone.Core/Entities/MediaFile.cs b/NzbDrone.Core/Repository/EpisodeFile.cs
similarity index 50%
rename from NzbDrone.Core/Entities/MediaFile.cs
rename to NzbDrone.Core/Repository/EpisodeFile.cs
index 6670c21aa..4a8891ee4 100644
--- a/NzbDrone.Core/Entities/MediaFile.cs
+++ b/NzbDrone.Core/Repository/EpisodeFile.cs
@@ -1,15 +1,21 @@
-using NzbDrone.Core.Entities.Quality;
+using System;
+using NzbDrone.Core.Repository.Quality;
 using SubSonic.SqlGeneration.Schema;
 
-namespace NzbDrone.Core.Entities
+namespace NzbDrone.Core.Repository
 {
-    public class MediaFile
+    class EpisodeFile
     {
         [SubSonicPrimaryKey]
         public virtual int FileId { get; set; }
+        public int EpisodeId { get; set; }
         public string Path { get; set; }
         public QualityTypes Quality { get; set; }
-        public long Size { get; set; }
         public bool Proper { get; set; }
+        public long Size { get; set; }
+        public DateTime DateAdded { get; set; }
+
+        [SubSonicToOneRelation]
+        public virtual Episode Episode { get; set; }
     }
 }
diff --git a/NzbDrone.Core/Entities/Quality/AllowedQuality.cs b/NzbDrone.Core/Repository/Quality/AllowedQuality.cs
similarity index 79%
rename from NzbDrone.Core/Entities/Quality/AllowedQuality.cs
rename to NzbDrone.Core/Repository/Quality/AllowedQuality.cs
index ad32a134b..3ff1663f2 100644
--- a/NzbDrone.Core/Entities/Quality/AllowedQuality.cs
+++ b/NzbDrone.Core/Repository/Quality/AllowedQuality.cs
@@ -1,4 +1,4 @@
-namespace NzbDrone.Core.Entities.Quality
+namespace NzbDrone.Core.Repository.Quality
 {
     public class AllowedQuality
     {
diff --git a/NzbDrone.Core/Entities/Quality/QualityProfile.cs b/NzbDrone.Core/Repository/Quality/QualityProfile.cs
similarity index 95%
rename from NzbDrone.Core/Entities/Quality/QualityProfile.cs
rename to NzbDrone.Core/Repository/Quality/QualityProfile.cs
index 325ae7d81..20e666170 100644
--- a/NzbDrone.Core/Entities/Quality/QualityProfile.cs
+++ b/NzbDrone.Core/Repository/Quality/QualityProfile.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
 using System.ComponentModel;
 using SubSonic.SqlGeneration.Schema;
 
-namespace NzbDrone.Core.Entities.Quality
+namespace NzbDrone.Core.Repository.Quality
 {
     public class QualityProfile
     {
diff --git a/NzbDrone.Core/Entities/Quality/QualityTypes.cs b/NzbDrone.Core/Repository/Quality/QualityTypes.cs
similarity index 92%
rename from NzbDrone.Core/Entities/Quality/QualityTypes.cs
rename to NzbDrone.Core/Repository/Quality/QualityTypes.cs
index c27c77d1e..58e2b87fc 100644
--- a/NzbDrone.Core/Entities/Quality/QualityTypes.cs
+++ b/NzbDrone.Core/Repository/Quality/QualityTypes.cs
@@ -1,4 +1,4 @@
-namespace NzbDrone.Core.Entities.Quality
+namespace NzbDrone.Core.Repository.Quality
 {
     // ReSharper disable InconsistentNaming
     /// <summary>
@@ -13,7 +13,7 @@ namespace NzbDrone.Core.Entities.Quality
         /// <summary>
         ///   SD File (Source could be HD)
         /// </summary>
-        SDTV = 1,
+        TV = 1,
         /// <summary>
         ///   SD File (DVD Source)
         /// </summary>
diff --git a/NzbDrone.Core/Entities/Season.cs b/NzbDrone.Core/Repository/Season.cs
similarity index 82%
rename from NzbDrone.Core/Entities/Season.cs
rename to NzbDrone.Core/Repository/Season.cs
index dc343ce3d..42e5ad1fd 100644
--- a/NzbDrone.Core/Entities/Season.cs
+++ b/NzbDrone.Core/Repository/Season.cs
@@ -1,7 +1,7 @@
 using System.Collections.Generic;
 using SubSonic.SqlGeneration.Schema;
 
-namespace NzbDrone.Core.Entities
+namespace NzbDrone.Core.Repository
 {
     public class Season
     {
@@ -13,7 +13,7 @@ namespace NzbDrone.Core.Entities
         public string Folder { get; set; }
 
         [SubSonicToManyRelation]
-        public virtual List<Episode.BasicEpisode> Episodes { get; private set; }
+        public virtual List<Episode> Episodes { get; private set; }
 
         [SubSonicToOneRelation(ThisClassContainsJoinKey = true)]
         public virtual Series Series { get; private set; }
diff --git a/NzbDrone.Core/Entities/Series.cs b/NzbDrone.Core/Repository/Series.cs
similarity index 84%
rename from NzbDrone.Core/Entities/Series.cs
rename to NzbDrone.Core/Repository/Series.cs
index 304ba27d7..40f70f2ac 100644
--- a/NzbDrone.Core/Entities/Series.cs
+++ b/NzbDrone.Core/Repository/Series.cs
@@ -1,9 +1,8 @@
 using System;
 using System.Collections.Generic;
-using NzbDrone.Core.Entities.Episode;
 using SubSonic.SqlGeneration.Schema;
 
-namespace NzbDrone.Core.Entities
+namespace NzbDrone.Core.Repository
 {
     public class Series
     {
@@ -14,6 +13,7 @@ namespace NzbDrone.Core.Entities
 
         public string CleanTitle { get; set; }
 
+        [SubSonicNullString]
         public string Status { get; set; }
 
         [SubSonicLongString]
@@ -33,7 +33,7 @@ namespace NzbDrone.Core.Entities
         public virtual List<Season> Seasons { get; private set; }
 
         [SubSonicToManyRelation]
-        public virtual List<EpisodeInfo> Episodes { get; private set; }
+        public virtual List<Episode> Episodes { get; private set; }
 
 
     }
diff --git a/NzbDrone.Web/Scripts/Notification.js b/NzbDrone.Web/Scripts/Notification.js
index 215a2dc9a..502978d7e 100644
--- a/NzbDrone.Web/Scripts/Notification.js
+++ b/NzbDrone.Web/Scripts/Notification.js
@@ -33,7 +33,7 @@ $(function () {
         //set the message text
         $("#msgText").text(sMsg);
         //show the message
-        $('#msgBox').slideUp(speed, null);
+        $('#msgBox').slideDown(speed, null);
     }
 
     function CloseMsg() {
diff --git a/NzbDrone.Web/Views/Series/Details.aspx b/NzbDrone.Web/Views/Series/Details.aspx
index 2f0f12f6c..0052d81ce 100644
--- a/NzbDrone.Web/Views/Series/Details.aspx
+++ b/NzbDrone.Web/Views/Series/Details.aspx
@@ -1,4 +1,4 @@
-<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<NzbDrone.Core.Entities.Series>" %>
+<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<NzbDrone.Core.Repository.Series>" %>
 
 <%@ Import Namespace="Telerik.Web.Mvc.UI" %>
 <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
diff --git a/NzbDrone.Web/Views/Series/index.aspx b/NzbDrone.Web/Views/Series/index.aspx
index 8e5e604d5..f8ba79d03 100644
--- a/NzbDrone.Web/Views/Series/index.aspx
+++ b/NzbDrone.Web/Views/Series/index.aspx
@@ -1,4 +1,4 @@
-<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<NzbDrone.Core.Entities.Series>>" %>
+<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<NzbDrone.Core.Repository.Series>>" %>
 
 <%@ Import Namespace="Telerik.Web.Mvc.UI" %>
 <%@ Import Namespace="System.Globalization" %>
diff --git a/NzbDrone/IISController.cs b/NzbDrone/IISController.cs
index 666948adc..13603c94a 100644
--- a/NzbDrone/IISController.cs
+++ b/NzbDrone/IISController.cs
@@ -1,10 +1,9 @@
 using System;
-using System.Collections.Generic;
 using System.Diagnostics;
 using System.IO;
 using System.Linq;
-using System.Text;
-using Microsoft.Web.Administration;
+using System.Xml.Linq;
+using System.Xml.XPath;
 using NLog;
 
 namespace NzbDrone
@@ -46,7 +45,16 @@ namespace NzbDrone
 
             //Set Variables for the config file.
             Environment.SetEnvironmentVariable("NZBDRONE_PATH", Config.ProjectRoot);
-            UpdateIISConfig();
+
+            try
+            {
+                UpdateIISConfig();
+            }
+            catch (Exception e)
+            {
+                Logger.Error("An error has occured while trying to update the config file.", e);
+            }
+
 
             Logger.Info("Starting process. [{0}]", IISProcess.StartInfo.FileName);
             IISProcess.Start();
@@ -101,10 +109,22 @@ namespace NzbDrone
 
         private static void UpdateIISConfig()
         {
+            string configPath = Path.Combine(IISFolder, @"AppServer\applicationhost.config");
+
+            Logger.Info(@"Server configuration file: {0}", configPath);
             Logger.Info(@"Configuring server to: [http://localhost:{0}]", Config.Port);
-            var serverManager = new ServerManager(Path.Combine(IISFolder, @"AppServer\applicationhost.config"));
-            serverManager.Sites["NZBDrone"].Bindings[0].BindingInformation = string.Format("*:{0}:", Config.Port);
-            serverManager.CommitChanges();
+
+            var configXml = XDocument.Load(configPath);
+
+            var bindings = configXml.XPathSelectElement("configuration/system.applicationHost/sites").Elements("site").Where(d => d.Attribute("name").Value.ToLowerInvariant() == "nzbdrone").First().Element("bindings");
+            bindings.Descendants().Remove();
+            bindings.Add(
+            new XElement("binding",
+            new XAttribute("protocol", "http"),
+            new XAttribute("bindingInformation", String.Format("*:{0}:", Config.Port))
+            ));
+
+            configXml.Save(configPath);
         }
 
         private static string CleanPath(string path)
diff --git a/NzbDrone/NzbDrone.csproj b/NzbDrone/NzbDrone.csproj
index 0b3851033..e3b4625cf 100644
--- a/NzbDrone/NzbDrone.csproj
+++ b/NzbDrone/NzbDrone.csproj
@@ -50,6 +50,9 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Accessibility">
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+    </Reference>
     <Reference Include="EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
       <EmbedInteropTypes>True</EmbedInteropTypes>
     </Reference>
@@ -60,9 +63,6 @@
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\NzbDrone.Core\Libraries\Exceptioneer.WindowsFormsClient.dll</HintPath>
     </Reference>
-    <Reference Include="Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
-      <Private>True</Private>
-    </Reference>
     <Reference Include="NLog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\NzbDrone.Core\Libraries\NLog.dll</HintPath>
diff --git a/NzbDrone/app.config b/NzbDrone/app.config
index 990c9b5e3..81d395705 100644
--- a/NzbDrone/app.config
+++ b/NzbDrone/app.config
@@ -4,6 +4,6 @@
     <supportedRuntime version="v4.0" />
   </startup>
   <appSettings>
-    <add key="port" value="8981" />
+    <add key="port" value="8989" />
   </appSettings>
 </configuration>
\ No newline at end of file