<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>IServiceOriented.ServiceBus/DeliveryException.cs</filename>
    </added>
    <added>
      <filename>IServiceOriented.ServiceBus/GlobalSuppressions.cs</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -4,8 +4,8 @@
   &lt;SharedProject&gt;True&lt;/SharedProject&gt;
   &lt;Stylesheet Apply=&quot;False&quot;&gt;c:\program files\microsoft fxcop 1.36\Xml\FxCopReport.xsl&lt;/Stylesheet&gt;
   &lt;SaveMessages&gt;
-   &lt;Project Status=&quot;Active, Excluded&quot; NewOnly=&quot;False&quot; /&gt;
-   &lt;Report Status=&quot;Active&quot; NewOnly=&quot;False&quot; /&gt;
+   &lt;Project Status=&quot;None&quot; NewOnly=&quot;False&quot; /&gt;
+   &lt;Report Status=&quot;None&quot; NewOnly=&quot;False&quot; /&gt;
   &lt;/SaveMessages&gt;
   &lt;ProjectFile Compress=&quot;True&quot; DefaultTargetCheck=&quot;True&quot; DefaultRuleCheck=&quot;True&quot; SaveByRuleGroup=&quot;&quot; Deterministic=&quot;True&quot; /&gt;
   &lt;EnableMultithreadedLoad&gt;True&lt;/EnableMultithreadedLoad&gt;
@@ -16,7 +16,7 @@
   &lt;Spelling Locale=&quot;en-US&quot; /&gt;
   &lt;OverrideRuleVisibilities&gt;False&lt;/OverrideRuleVisibilities&gt;
   &lt;CustomDictionaries SearchFxCopDir=&quot;True&quot; SearchUserProfile=&quot;True&quot; SearchProjectDir=&quot;True&quot; /&gt;
-  &lt;SearchGlobalAssemblyCache&gt;False&lt;/SearchGlobalAssemblyCache&gt;
+  &lt;SearchGlobalAssemblyCache&gt;True&lt;/SearchGlobalAssemblyCache&gt;
   &lt;DeadlockDetectionTimeout&gt;120&lt;/DeadlockDetectionTimeout&gt;
   &lt;IgnoreGeneratedCode&gt;False&lt;/IgnoreGeneratedCode&gt;
  &lt;/ProjectOptions&gt;
@@ -38,82 +38,5 @@
   &lt;Groups /&gt;
   &lt;Settings /&gt;
  &lt;/Rules&gt;
- &lt;FxCopReport Version=&quot;1.36&quot;&gt;
-  &lt;Targets&gt;
-   &lt;Target Name=&quot;$(ProjectDir)/IServiceOriented.ServiceBus/bin/Debug/IServiceOriented.ServiceBus.dll&quot;&gt;
-    &lt;Modules&gt;
-     &lt;Module Name=&quot;iserviceoriented.servicebus.dll&quot;&gt;
-      &lt;Namespaces&gt;
-       &lt;Namespace Name=&quot;IServiceOriented.ServiceBus&quot;&gt;
-        &lt;Types&gt;
-         &lt;Type Name=&quot;IMessageDeliveryQueue&quot;&gt;
-          &lt;Messages&gt;
-           &lt;Message TypeName=&quot;IdentifiersShouldNotHaveIncorrectSuffix&quot; Category=&quot;Microsoft.Naming&quot; CheckId=&quot;CA1711&quot; Created=&quot;2008-08-29 02:32:26Z&quot;&gt;
-            &lt;Issue Name=&quot;TypeNoAlternate&quot;&gt;
-             &lt;Item&gt;'IMessageDeliveryQueue'&lt;/Item&gt;
-             &lt;Item&gt;Queue&lt;/Item&gt;
-            &lt;/Issue&gt;
-           &lt;/Message&gt;
-          &lt;/Messages&gt;
-         &lt;/Type&gt;
-         &lt;Type Name=&quot;MsmqMessageDeliveryQueue&quot;&gt;
-          &lt;Messages&gt;
-           &lt;Message TypeName=&quot;IdentifiersShouldNotHaveIncorrectSuffix&quot; Category=&quot;Microsoft.Naming&quot; CheckId=&quot;CA1711&quot; Created=&quot;2008-08-29 02:32:26Z&quot;&gt;
-            &lt;Issue Name=&quot;TypeNoAlternate&quot;&gt;
-             &lt;Item&gt;'MsmqMessageDeliveryQueue'&lt;/Item&gt;
-             &lt;Item&gt;Queue&lt;/Item&gt;
-            &lt;/Issue&gt;
-           &lt;/Message&gt;
-          &lt;/Messages&gt;
-         &lt;/Type&gt;
-         &lt;Type Name=&quot;ServiceBusRuntime&quot;&gt;
-          &lt;Members&gt;
-           &lt;Member Name=&quot;#DeliverOne(IServiceOriented.ServiceBus.ServiceBusRuntime+DeliveryWork,IServiceOriented.ServiceBus.IMessageDeliveryQueue)&quot;&gt;
-            &lt;Messages&gt;
-             &lt;Message TypeName=&quot;DoNotCatchGeneralExceptionTypes&quot; Category=&quot;Microsoft.Design&quot; CheckId=&quot;CA1031&quot; Created=&quot;2008-08-29 02:32:26Z&quot;&gt;
-              &lt;Issue&gt;
-               &lt;Item&gt;'ServiceBusRuntime.DeliverOne(ServiceBusRuntime.DeliveryWork, IMessageDeliveryQueue)'&lt;/Item&gt;
-               &lt;Item&gt;'Exception'&lt;/Item&gt;
-              &lt;/Issue&gt;
-             &lt;/Message&gt;
-            &lt;/Messages&gt;
-           &lt;/Member&gt;
-           &lt;Member Name=&quot;#DoSafely(System.Action)&quot;&gt;
-            &lt;Messages&gt;
-             &lt;Message TypeName=&quot;DoNotCatchGeneralExceptionTypes&quot; Category=&quot;Microsoft.Design&quot; CheckId=&quot;CA1031&quot; Created=&quot;2008-08-29 02:32:26Z&quot;&gt;
-              &lt;Issue&gt;
-               &lt;Item&gt;'ServiceBusRuntime.DoSafely(Action)'&lt;/Item&gt;
-               &lt;Item&gt;'Exception'&lt;/Item&gt;
-              &lt;/Issue&gt;
-             &lt;/Message&gt;
-            &lt;/Messages&gt;
-           &lt;/Member&gt;
-           &lt;Member Name=&quot;#DoSafely`1(System.Action`1&amp;lt;!!0&amp;gt;,!!0)&quot;&gt;
-            &lt;Messages&gt;
-             &lt;Message TypeName=&quot;DoNotCatchGeneralExceptionTypes&quot; Category=&quot;Microsoft.Design&quot; CheckId=&quot;CA1031&quot; Created=&quot;2008-08-29 02:32:26Z&quot;&gt;
-              &lt;Issue&gt;
-               &lt;Item&gt;'ServiceBusRuntime.DoSafely&amp;lt;T&amp;gt;(Action&amp;lt;T&amp;gt;, T)'&lt;/Item&gt;
-               &lt;Item&gt;'Exception'&lt;/Item&gt;
-              &lt;/Issue&gt;
-             &lt;/Message&gt;
-            &lt;/Messages&gt;
-           &lt;/Member&gt;
-          &lt;/Members&gt;
-         &lt;/Type&gt;
-        &lt;/Types&gt;
-       &lt;/Namespace&gt;
-      &lt;/Namespaces&gt;
-     &lt;/Module&gt;
-    &lt;/Modules&gt;
-   &lt;/Target&gt;
-  &lt;/Targets&gt;
-  &lt;Rules&gt;
-   &lt;Rule TypeName=&quot;DoNotCatchGeneralExceptionTypes&quot; Category=&quot;Microsoft.Design&quot; CheckId=&quot;CA1031&quot;&gt;
-    &lt;Resolution Name=&quot;Default&quot;&gt;Modify {0} to catch a more specific exception than {1} or rethrow the exception.&lt;/Resolution&gt;
-   &lt;/Rule&gt;
-   &lt;Rule TypeName=&quot;IdentifiersShouldNotHaveIncorrectSuffix&quot; Category=&quot;Microsoft.Naming&quot; CheckId=&quot;CA1711&quot;&gt;
-    &lt;Resolution Name=&quot;TypeNoAlternate&quot;&gt;Rename type name {0} so that it does not end in '{1}'.&lt;/Resolution&gt;
-   &lt;/Rule&gt;
-  &lt;/Rules&gt;
- &lt;/FxCopReport&gt;
+ &lt;FxCopReport Version=&quot;1.36&quot; /&gt;
 &lt;/FxCopProject&gt;</diff>
      <filename>CodeReview.FxCop</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,7 @@ namespace IServiceOriented.ServiceBus.Samples.Chat
     }
 
     [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConfigurationName = &quot;ChatServerOut&quot;)]
-    [AutoSubscribe(&quot;Autosubscribed&quot;, &quot;ChatClientOut&quot;, typeof(IChatService), DispatcherType = typeof(WcfDispatcherWithUsernameCredentials))]
+    [AutoSubscribe(Name = &quot;Autosubscribed&quot;, ConfigurationName = &quot;ChatClientOut&quot;, ContractType = typeof(IChatService), DispatcherType = typeof(WcfDispatcherWithUsernameCredentials))]
     public class ChatClientService : IChatService
     {
         #region IChatService Members</diff>
      <filename>IServiceOriented.ServiceBus.Samples.Chat/ChatClient.cs</filename>
    </modified>
    <modified>
      <diff>@@ -30,8 +30,7 @@ namespace IServiceOriented.ServiceBus.UnitTests
                 {
                     string message = &quot;echo this&quot;;
 
-                    MessageDelivery[] output = null;
-                    runtime.Publish(new PublishRequest(typeof(void), &quot;Echo&quot;, message), PublishWait.Timeout, TimeSpan.FromSeconds(10), out output);
+                    MessageDelivery[] output = runtime.Publish(new PublishRequest(typeof(void), &quot;Echo&quot;, message), PublishWait.Timeout, TimeSpan.FromSeconds(10));
 
                     Assert.IsNotNull(output);
                     Assert.AreEqual(1, output.Length);</diff>
      <filename>IServiceOriented.ServiceBus.UnitTests/TestRequestResponse.cs</filename>
    </modified>
    <modified>
      <diff>@@ -66,7 +66,7 @@ namespace IServiceOriented.ServiceBus
             set;
         }
 
-        ServiceHostBase ServiceHost
+        public ServiceHostBase ServiceHost
         {
             get;
             set;
@@ -76,31 +76,14 @@ namespace IServiceOriented.ServiceBus
         #endregion
     }
 
-    public class AutoSubscribe : Attribute,  IServiceBehavior
+    [AttributeUsage(AttributeTargets.Class)]
+    public sealed class AutoSubscribeAttribute : Attribute,  IServiceBehavior
     {
-        public AutoSubscribe()
+        public AutoSubscribeAttribute()
         {
             UnsubscribeOnClosing = true;
         }
 
-        public AutoSubscribe(string name, string configurationName, Type contractType) 
-            : this()
-        {
-            Name = name;
-            ConfigurationName = configurationName;
-            ContractType = contractType;           
-        }
-
-        public AutoSubscribe(Guid subscriptionId, string name, string configurationName, Type contractType)
-            : this()
-        {
-            SubscriptionId = subscriptionId;
-            Name = name;
-            ConfigurationName = configurationName;
-            ContractType = contractType;
-        }
-
-
         #region IServiceBehavior Members
         
 </diff>
      <filename>IServiceOriented.ServiceBus/AutoSubscribeBehavior.cs</filename>
    </modified>
    <modified>
      <diff>@@ -11,12 +11,13 @@ namespace IServiceOriented.ServiceBus.Collections
     /// &lt;/summary&gt;
     /// &lt;typeparam name=&quot;K&quot;&gt;Key type&lt;/typeparam&gt;
     /// &lt;typeparam name=&quot;V&quot;&gt;Value type&lt;/typeparam&gt;
-    public interface IReadOnlyDictionary&lt;K,V&gt; : IEnumerable&lt;KeyValuePair&lt;K,V&gt;&gt;
+    [System.Diagnostics.CodeAnalysis.SuppressMessage(&quot;Microsoft.Naming&quot;, &quot;CA1711:IdentifiersShouldNotHaveIncorrectSuffix&quot;), System.Diagnostics.CodeAnalysis.SuppressMessage(&quot;Microsoft.Naming&quot;, &quot;CA1710:IdentifiersShouldHaveCorrectSuffix&quot;)]
+    public interface IReadOnlyDictionary&lt;TKey,TValue&gt; : IEnumerable&lt;KeyValuePair&lt;TKey,TValue&gt;&gt;
     {
         /// &lt;summary&gt;
         /// Get the keys associated with this dictionary instance.
         /// &lt;/summary&gt;
-        IEnumerable&lt;K&gt; Keys
+        IEnumerable&lt;TKey&gt; Keys
         {
             get;
         }
@@ -24,7 +25,7 @@ namespace IServiceOriented.ServiceBus.Collections
         /// &lt;summary&gt;
         /// Get the values contained by this dictionary instance.
         /// &lt;/summary&gt;
-        IEnumerable&lt;V&gt; Values
+        IEnumerable&lt;TValue&gt; Values
         {
             get;
         }
@@ -32,7 +33,7 @@ namespace IServiceOriented.ServiceBus.Collections
         /// &lt;summary&gt;
         /// Get the value associated with a specific key.
         /// &lt;/summary&gt;
-        V this[K key]
+        TValue this[TKey key]
         {
             get;
         }
@@ -48,11 +49,11 @@ namespace IServiceOriented.ServiceBus.Collections
         /// &lt;summary&gt;
         /// Check to see if the dictionary contains a specific key.
         /// &lt;/summary&gt;
-        bool ContainsKey(K key);
+        bool ContainsKey(TKey key);
         /// &lt;summary&gt;
         /// Check to see if the dictionary contains a specific key value pair.
         /// &lt;/summary&gt;
-        bool Contains(KeyValuePair&lt;K, V&gt; value);
+        bool Contains(KeyValuePair&lt;TKey, TValue&gt; value);
 
     }
 
@@ -64,9 +65,9 @@ namespace IServiceOriented.ServiceBus.Collections
         /// &lt;summary&gt;
         /// Convert a read only dictionary to a writeable dictionary.
         /// &lt;/summary&gt;
-        public static Dictionary&lt;K, V&gt; ToDictionary&lt;K,V&gt;(this IReadOnlyDictionary&lt;K, V&gt; readOnlyDictionary)
+        public static Dictionary&lt;TKey, TValue&gt; ToDictionary&lt;TKey,TValue&gt;(this IReadOnlyDictionary&lt;TKey, TValue&gt; readOnlyDictionary)
         {
-            Dictionary&lt;K, V&gt; dict = new Dictionary&lt;K, V&gt;();
+            Dictionary&lt;TKey, TValue&gt; dict = new Dictionary&lt;TKey, TValue&gt;();
             foreach (var kv in readOnlyDictionary)
             {
                 dict.Add(kv.Key, kv.Value);
@@ -77,7 +78,7 @@ namespace IServiceOriented.ServiceBus.Collections
         /// &lt;summary&gt;
         /// Convert a dictionary to a read only dictionary.
         /// &lt;/summary&gt;
-        public static ReadOnlyDictionary&lt;K, V&gt; MakeReadOnly&lt;K, V&gt;(this IDictionary&lt;K, V&gt; dictionary)
+        public static ReadOnlyDictionary&lt;TKey, TValue&gt; MakeReadOnly&lt;TKey, TValue&gt;(this IDictionary&lt;TKey, TValue&gt; dictionary)
         {
             return dictionary.MakeReadOnly(false);
         }
@@ -86,9 +87,9 @@ namespace IServiceOriented.ServiceBus.Collections
         /// Convert a dictionary to a read only dictionary.
         /// &lt;/summary&gt;
         /// &lt;param name=&quot;copy&quot;&gt;Specifies if the dictionary should be copied (true) or wrapped (false).&lt;/param&gt;
-        public static ReadOnlyDictionary&lt;K, V&gt; MakeReadOnly&lt;K, V&gt;(this IDictionary&lt;K, V&gt; dictionary, bool copy)
+        public static ReadOnlyDictionary&lt;TKey, TValue&gt; MakeReadOnly&lt;TKey, TValue&gt;(this IDictionary&lt;TKey, TValue&gt; dictionary, bool copy)
         {
-            return new ReadOnlyDictionary&lt;K, V&gt;(dictionary, copy);
+            return new ReadOnlyDictionary&lt;TKey, TValue&gt;(dictionary, copy);
         }
     }
     </diff>
      <filename>IServiceOriented.ServiceBus/Collections/IReadOnlyDictionary.cs</filename>
    </modified>
    <modified>
      <diff>@@ -13,42 +13,44 @@ namespace IServiceOriented.ServiceBus.Collections
     /// &lt;/summary&gt;
     /// &lt;typeparam name=&quot;K&quot;&gt;Key type&lt;/typeparam&gt;
     /// &lt;typeparam name=&quot;V&quot;&gt;Value type&lt;/typeparam&gt;
-    [Serializable]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage(&quot;Microsoft.Naming&quot;, &quot;CA1711:IdentifiersShouldNotHaveIncorrectSuffix&quot;), System.Diagnostics.CodeAnalysis.SuppressMessage(&quot;Microsoft.Naming&quot;, &quot;CA1710:IdentifiersShouldHaveCorrectSuffix&quot;), Serializable]
     [CollectionDataContract]
-    public class ReadOnlyDictionary&lt;K, V&gt; : IReadOnlyDictionary&lt;K, V&gt;
+    public class ReadOnlyDictionary&lt;TKey, TValue&gt; : IReadOnlyDictionary&lt;TKey, TValue&gt;
     {
-        IDictionary&lt;K, V&gt; _dictionary;
+        IDictionary&lt;TKey, TValue&gt; _dictionary;
 
         public ReadOnlyDictionary()
-            : this(new Dictionary&lt;K,V&gt;(), false)
+            : this(new Dictionary&lt;TKey,TValue&gt;(), false)
         {
             
         }
 
-        public ReadOnlyDictionary(IEnumerable&lt;KeyValuePair&lt;K, V&gt;&gt; pairs)
+        [System.Diagnostics.CodeAnalysis.SuppressMessage(&quot;Microsoft.Design&quot;, &quot;CA1006:DoNotNestGenericTypesInMemberSignatures&quot;)]
+        public ReadOnlyDictionary(IEnumerable&lt;KeyValuePair&lt;TKey, TValue&gt;&gt; pairs)
         {
-            _dictionary = new Dictionary&lt;K, V&gt;();
-            foreach (KeyValuePair&lt;K, V&gt; p in pairs)
+            _dictionary = new Dictionary&lt;TKey, TValue&gt;();
+            foreach (KeyValuePair&lt;TKey, TValue&gt; p in pairs)
             {
                 _dictionary.Add(p);
             }
         }
 
-        public ReadOnlyDictionary(IDictionary&lt;K, V&gt; from)
+        public ReadOnlyDictionary(IDictionary&lt;TKey, TValue&gt; from)
             : this(from, false)
         {
         }
 
-        private void Add(KeyValuePair&lt;K,V&gt; pair)
+
+        private void Add(KeyValuePair&lt;TKey,TValue&gt; pair)
         {
             _dictionary.Add(pair.Key, pair.Value);
         }
 
-        public ReadOnlyDictionary(IDictionary&lt;K, V&gt; from, bool copy)
+        public ReadOnlyDictionary(IDictionary&lt;TKey, TValue&gt; from, bool copy)
         {
             if (copy)
             {
-                _dictionary = new Dictionary&lt;K, V&gt;(from);
+                _dictionary = new Dictionary&lt;TKey, TValue&gt;(from);
             }
             else
             {
@@ -58,17 +60,17 @@ namespace IServiceOriented.ServiceBus.Collections
 
         #region IReadOnlyDictionary&lt;K,V&gt; Members
 
-        public IEnumerable&lt;K&gt; Keys
+        public IEnumerable&lt;TKey&gt; Keys
         {
             get { return _dictionary.Keys; }
         }
 
-        public IEnumerable&lt;V&gt; Values
+        public IEnumerable&lt;TValue&gt; Values
         {
             get { return _dictionary.Values; }
         }
 
-        public V this[K key]
+        public TValue this[TKey key]
         {
             get { return _dictionary[key]; }
         }
@@ -78,17 +80,17 @@ namespace IServiceOriented.ServiceBus.Collections
             get { return _dictionary.Count; }
         }
 
-        public bool ContainsKey(K key)
+        public bool ContainsKey(TKey key)
         {
             return _dictionary.ContainsKey(key);
         }
 
-        public bool Contains(KeyValuePair&lt;K, V&gt; value)
+        public bool Contains(KeyValuePair&lt;TKey, TValue&gt; value)
         {
             return _dictionary.Contains(value);
         }
 
-        public IEnumerator&lt;KeyValuePair&lt;K, V&gt;&gt; GetEnumerator()
+        public IEnumerator&lt;KeyValuePair&lt;TKey, TValue&gt;&gt; GetEnumerator()
         {
             return _dictionary.GetEnumerator();
         }</diff>
      <filename>IServiceOriented.ServiceBus/Collections/ReadOnlyDictionary.cs</filename>
    </modified>
    <modified>
      <diff>@@ -91,7 +91,7 @@ namespace IServiceOriented.ServiceBus.Data
                 string line = null;
                 while ((line = scriptReader.ReadLine()) != null)
                 {
-                    if (String.Compare(line.Trim(), &quot;go&quot;, StringComparison.InvariantCultureIgnoreCase) == 0)
+                    if (String.Compare(line.Trim(), &quot;go&quot;, StringComparison.OrdinalIgnoreCase) == 0)
                     {
                         create.CommandText = commandBuilder.ToString();
                         create.ExecuteNonQuery();</diff>
      <filename>IServiceOriented.ServiceBus/Data/SqlSubscriptionDB.cs</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using System.Collections.ObjectModel;
 
 namespace IServiceOriented.ServiceBus.Delivery
 {
@@ -12,13 +13,13 @@ namespace IServiceOriented.ServiceBus.Delivery
             
         }
 
-        public CorrelationMessageFilter(string[] correlationIds)
+        public CorrelationMessageFilter(IEnumerable&lt;string&gt; correlationIds)
         {
-            CorrelationIds = correlationIds;
+            CorrelationIds = new ReadOnlyCollection&lt;string&gt;(correlationIds.ToList());
         }
 
 
-        public string[] CorrelationIds
+        public ReadOnlyCollection&lt;string&gt; CorrelationIds
         {
             get;
             private set;</diff>
      <filename>IServiceOriented.ServiceBus/Delivery/CorrelationMessageFilter.cs</filename>
    </modified>
    <modified>
      <diff>@@ -15,10 +15,17 @@ namespace IServiceOriented.ServiceBus.Delivery
     {
         public override void Deliver(MessageDelivery delivery)
         {
-            SubscriptionEndpoint endpoint = Runtime.GetSubscription(delivery.SubscriptionEndpointId);
-            if (endpoint != null) // subscription may be removed
+            try
             {
-                endpoint.Dispatcher.Dispatch(delivery);
+                SubscriptionEndpoint endpoint = Runtime.GetSubscription(delivery.SubscriptionEndpointId);
+                if (endpoint != null) // subscription may be removed
+                {
+                    endpoint.Dispatcher.Dispatch(delivery);
+                }
+            }
+            catch(Exception ex)
+            {
+                throw new DeliveryException(&quot;Unhandled exception while attempting to deliver the message&quot;, ex);
             }
         }
     }</diff>
      <filename>IServiceOriented.ServiceBus/Delivery/DirectDeliveryCore.cs</filename>
    </modified>
    <modified>
      <diff>@@ -12,6 +12,7 @@ using IServiceOriented.ServiceBus.Collections;
 using System.Runtime.Serialization.Formatters.Binary;
 using System.ServiceModel;
 using IServiceOriented.ServiceBus.Delivery.Formatters;
+using System.Globalization;
 
 namespace IServiceOriented.ServiceBus.Delivery.Formatters
 {    
@@ -47,7 +48,7 @@ namespace IServiceOriented.ServiceBus.Delivery.Formatters
         {
             MessageDelivery delivery = obj as MessageDelivery;
                         
-            using (StringWriter writer = new StringWriter())
+            using (StringWriter writer = new StringWriter(CultureInfo.InvariantCulture))
             {
                 System.ServiceModel.Channels.Message msg = MessageDeliveryConverter.ToMessage(delivery);
 </diff>
      <filename>IServiceOriented.ServiceBus/Delivery/Formatters/MessageDeliveryFormatter.cs</filename>
    </modified>
    <modified>
      <diff>@@ -5,6 +5,7 @@ using System.Text;
 
 namespace IServiceOriented.ServiceBus.Delivery
 {
+    [System.Diagnostics.CodeAnalysis.SuppressMessage(&quot;Microsoft.Naming&quot;, &quot;CA1711:IdentifiersShouldNotHaveIncorrectSuffix&quot;)]
     public interface IMessageDeliveryQueue 
     {
         void Enqueue(MessageDelivery value);</diff>
      <filename>IServiceOriented.ServiceBus/Delivery/IMessageDeliveryQueue.cs</filename>
    </modified>
    <modified>
      <diff>@@ -16,6 +16,7 @@ namespace IServiceOriented.ServiceBus.Delivery
     /// &lt;summary&gt;
     /// Provides support for queuing messages using MSMQ
     /// &lt;/summary&gt;
+    [System.Diagnostics.CodeAnalysis.SuppressMessage(&quot;Microsoft.Naming&quot;, &quot;CA1711:IdentifiersShouldNotHaveIncorrectSuffix&quot;), System.Diagnostics.CodeAnalysis.SuppressMessage(&quot;Microsoft.Naming&quot;, &quot;CA1704:IdentifiersShouldBeSpelledCorrectly&quot;, MessageId = &quot;Msmq&quot;)]
     public class MsmqMessageDeliveryQueue : IMessageDeliveryQueue, IDisposable
     {
         public MsmqMessageDeliveryQueue(string path)</diff>
      <filename>IServiceOriented.ServiceBus/Delivery/MsmqMessageDeliveryQueue.cs</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,7 @@ namespace IServiceOriented.ServiceBus.Delivery
         }
 
 
-        public class DeliveryWork
+        protected class DeliveryWork
         {
             public DeliveryWork(CommittableTransaction transaction, MessageDelivery delivery, Semaphore deliverySemaphore)
             {
@@ -175,7 +175,7 @@ namespace IServiceOriented.ServiceBus.Delivery
                         {
                             try
                             {
-                                DoSafely(() =&gt; DeliverOne((DeliveryWork)deliverWork, _retryQueue ?? _messageDeliveryQueue, _failureQueue));
+                                DoSafely(() =&gt; DeliverOne((DeliveryWork)deliverWork));
                             }
                             finally
                             {
@@ -258,7 +258,7 @@ namespace IServiceOriented.ServiceBus.Delivery
             }
         }
 
-        protected void DeliverOne(DeliveryWork work, IMessageDeliveryQueue retryQueue, IMessageDeliveryQueue failQueue)
+        protected void DeliverOne(DeliveryWork work)
         {
             System.Transactions.Transaction.Current = work.Transaction;
             try
@@ -277,7 +277,7 @@ namespace IServiceOriented.ServiceBus.Delivery
                                 {
                                     System.Diagnostics.Debug.WriteLine(&quot;Time to process is &quot; + mDelay + &quot; milliseconds away. Requeuing in &quot; + FUTURE_SLEEP_MS);
                                     Thread.Sleep(FUTURE_SLEEP_MS); // Sleep briefly in case we are in a loop of future messages, should be a little smarter
-                                    Requeue(delivery);
+                                    QueueRetry(delivery);
                                     return;
                                 }
                             }
@@ -298,7 +298,7 @@ namespace IServiceOriented.ServiceBus.Delivery
                             }
                             else
                             {
-                                System.Diagnostics.Debug.WriteLine(String.Format(&quot;Subscription {0} no longer exists. Skipping delivery.&quot;, delivery.SubscriptionEndpointId));
+                                System.Diagnostics.Debug.WriteLine(String.Format(CultureInfo.InvariantCulture, &quot;Subscription {0} no longer exists. Skipping delivery.&quot;, delivery.SubscriptionEndpointId));
                             }
                         }
 
@@ -322,6 +322,8 @@ namespace IServiceOriented.ServiceBus.Delivery
                         NotifyFailure(work.Delivery, !retry);
                         
                         work.Transaction.Commit();
+
+                        throw new DeliveryException(&quot;Unhandled exception while attempting to deliver a message.&quot;, ex);
                     }
                 }
             }
@@ -337,7 +339,7 @@ namespace IServiceOriented.ServiceBus.Delivery
             _messageDeliveryQueue.Enqueue(delivery);
         }
 
-        protected void Requeue(MessageDelivery delivery)
+        protected void QueueRetry(MessageDelivery delivery)
         {
             MessageDelivery retryDelivery = delivery.CreateRetry(false, DateTime.Now.AddMilliseconds((_exponentialBackOff ? (_retryDelayMS * delivery.RetryCount * delivery.RetryCount) : _retryDelayMS)));
             (_retryQueue ?? _messageDeliveryQueue).Enqueue(retryDelivery);
@@ -362,7 +364,7 @@ namespace IServiceOriented.ServiceBus.Delivery
             {
                 action();
             }
-            catch (Exception ex)
+            catch (DeliveryException ex)
             {
                 System.Diagnostics.Trace.TraceError(&quot;UNHANDLED EXCEPTION: &quot; + ex);
                 NotifyUnhandledException(ex, false);
@@ -377,7 +379,7 @@ namespace IServiceOriented.ServiceBus.Delivery
                 action(value);
                 clean = true;
             }
-            catch (Exception ex)
+            catch (DeliveryException ex)
             {
                 System.Diagnostics.Trace.TraceError(&quot;UNHANDLED EXCEPTION: &quot; + ex);
                 NotifyUnhandledException(ex, false);</diff>
      <filename>IServiceOriented.ServiceBus/Delivery/QueuedDeliveryCore.cs</filename>
    </modified>
    <modified>
      <diff>@@ -21,7 +21,7 @@ namespace IServiceOriented.ServiceBus.Dispatchers
             
         }
 
-        public TransformationDispatcher(SubscriptionEndpoint endpoint) : base(endpoint)
+        protected TransformationDispatcher(SubscriptionEndpoint endpoint) : base(endpoint)
         {
 
         }
@@ -38,7 +38,7 @@ namespace IServiceOriented.ServiceBus.Dispatchers
         /// &lt;/summary&gt;
         public const string TransformedByKeyName = &quot;TransformedBy&quot;;
 
-        public class TransformationList : ReadOnlyCollection&lt;string&gt;
+        private class TransformationList : ReadOnlyCollection&lt;string&gt;
         {
             public TransformationList() : base (new string[0] )
             {</diff>
      <filename>IServiceOriented.ServiceBus/Dispatchers/TransformationDispatcher.cs</filename>
    </modified>
    <modified>
      <diff>@@ -80,10 +80,10 @@ namespace IServiceOriented.ServiceBus.Dispatchers
         {
             // TODO: Clean this up. Creating channel factory for each call is expensive
             Type channelType = typeof(ChannelFactory&lt;&gt;).MakeGenericType(Endpoint.ContractType);
-            object factory = Activator.CreateInstance(channelType, Endpoint.ConfigurationName);
-            ((ChannelFactory)factory).Endpoint.Address = new EndpointAddress(Endpoint.Address);
+            ChannelFactory factory = (ChannelFactory)Activator.CreateInstance(channelType, Endpoint.ConfigurationName);
+            factory.Endpoint.Address = new EndpointAddress(Endpoint.Address);
 
-            ApplySecurityContext(messageDelivery, (ChannelFactory)factory);
+            ApplySecurityContext(messageDelivery, factory);
 
             IClientChannel proxy = (IClientChannel)channelType.GetMethod(&quot;CreateChannel&quot;, new Type[] { }).Invoke(factory, new object[] { });
             bool success = false;
@@ -150,6 +150,7 @@ namespace IServiceOriented.ServiceBus.Dispatchers
             public Dictionary&lt;string, MethodInfo&gt; MethodLookup;
         }
 
+        [NonSerialized]
         ActionLookup _lookup;
 
         public static MessageFilter CreateMessageFilter(Type interfaceType)</diff>
      <filename>IServiceOriented.ServiceBus/Dispatchers/WcfDispatcher.cs</filename>
    </modified>
    <modified>
      <diff>@@ -25,6 +25,7 @@
     &lt;DefineConstants&gt;DEBUG;TRACE&lt;/DefineConstants&gt;
     &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
     &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
+    &lt;TreatWarningsAsErrors&gt;true&lt;/TreatWarningsAsErrors&gt;
   &lt;/PropertyGroup&gt;
   &lt;PropertyGroup Condition=&quot; '$(Configuration)|$(Platform)' == 'Release|AnyCPU' &quot;&gt;
     &lt;DebugType&gt;pdbonly&lt;/DebugType&gt;
@@ -33,6 +34,7 @@
     &lt;DefineConstants&gt;TRACE&lt;/DefineConstants&gt;
     &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
     &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
+    &lt;TreatWarningsAsErrors&gt;true&lt;/TreatWarningsAsErrors&gt;
   &lt;/PropertyGroup&gt;
   &lt;PropertyGroup Condition=&quot; '$(Configuration)|$(Platform)' == 'Debug with Scripting|AnyCPU' &quot;&gt;
     &lt;DebugSymbols&gt;true&lt;/DebugSymbols&gt;
@@ -43,6 +45,8 @@
     &lt;CodeAnalysisUseTypeNameInSuppression&gt;true&lt;/CodeAnalysisUseTypeNameInSuppression&gt;
     &lt;CodeAnalysisModuleSuppressionsFile&gt;GlobalSuppressions.cs&lt;/CodeAnalysisModuleSuppressionsFile&gt;
     &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
+    &lt;RunCodeAnalysis&gt;true&lt;/RunCodeAnalysis&gt;
+    &lt;TreatWarningsAsErrors&gt;true&lt;/TreatWarningsAsErrors&gt;
   &lt;/PropertyGroup&gt;
   &lt;PropertyGroup Condition=&quot; '$(Configuration)|$(Platform)' == 'Release with Scripting|AnyCPU' &quot;&gt;
     &lt;OutputPath&gt;bin\Release with Scripting\&lt;/OutputPath&gt;
@@ -53,6 +57,7 @@
     &lt;CodeAnalysisUseTypeNameInSuppression&gt;true&lt;/CodeAnalysisUseTypeNameInSuppression&gt;
     &lt;CodeAnalysisModuleSuppressionsFile&gt;GlobalSuppressions.cs&lt;/CodeAnalysisModuleSuppressionsFile&gt;
     &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
+    &lt;TreatWarningsAsErrors&gt;true&lt;/TreatWarningsAsErrors&gt;
   &lt;/PropertyGroup&gt;
   &lt;ItemGroup&gt;
     &lt;Reference Include=&quot;Microsoft.Practices.ServiceLocation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL&quot;&gt;
@@ -86,10 +91,12 @@
     &lt;Reference Include=&quot;System.Xml&quot; /&gt;
   &lt;/ItemGroup&gt;
   &lt;ItemGroup&gt;
+    &lt;Compile Include=&quot;DeliveryException.cs&quot; /&gt;
     &lt;Compile Include=&quot;Dispatchers\ActionDispatcher.cs&quot; /&gt;
     &lt;Compile Include=&quot;Delivery\DirectDeliveryCore.cs&quot; /&gt;
     &lt;Compile Include=&quot;Delivery\Formatters\MessageDeliveryConverter.cs&quot; /&gt;
     &lt;Compile Include=&quot;Delivery\Formatters\MessageDeliveryFormatter.cs&quot; /&gt;
+    &lt;Compile Include=&quot;GlobalSuppressions.cs&quot; /&gt;
     &lt;Compile Include=&quot;MessageDeliveryContext.cs&quot; /&gt;
     &lt;Compile Include=&quot;AutoSubscribeBehavior.cs&quot; /&gt;
     &lt;Compile Include=&quot;Threading\CountdownLatch.cs&quot; /&gt;</diff>
      <filename>IServiceOriented.ServiceBus/IServiceOriented.ServiceBus.csproj</filename>
    </modified>
    <modified>
      <diff>@@ -15,6 +15,7 @@ namespace IServiceOriented.ServiceBus
         public ListenerEndpoint(string name, string configurationName, string address, Type contractType, Listener listener)
             : base(Guid.NewGuid(), name, configurationName, address, contractType)
         {
+            Listener = listener;
         }
 
         public ListenerEndpoint(Guid id, string name, string configurationName, string address, Type contractType, Listener listener) : base(id, name, configurationName, address, contractType)</diff>
      <filename>IServiceOriented.ServiceBus/ListenerEndpoint.cs</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq;
 using System.Text;
+using System.Globalization;
 
 namespace IServiceOriented.ServiceBus
 {
@@ -26,7 +27,7 @@ namespace IServiceOriented.ServiceBus
                 }
                 if (item.Id == endpoint.Id)
                 {
-                    throw new DuplicateIdentifierException(String.Format(&quot;The id {0} is associated with another endpoint.&quot;, endpoint.Id));
+                    throw new DuplicateIdentifierException(String.Format(CultureInfo.InvariantCulture, &quot;The id {0} is associated with another endpoint.&quot;, endpoint.Id));
                 }
             }
         }   
@@ -60,12 +61,13 @@ namespace IServiceOriented.ServiceBus
         /// Gets the listener with the specified ID.
         /// &lt;/summary&gt;
         /// &lt;param name=&quot;value&quot;&gt;ID of the listener to get&lt;/param&gt;
-        public ListenerEndpoint this[Guid value]
+        public ListenerEndpoint Find(Guid value)
         {
-            get
-            {
-                return _fastLookup[value];
-            }
+            ListenerEndpoint endpoint;
+
+            _fastLookup.TryGetValue(value, out endpoint);
+
+            return endpoint;
         }
     }
 }</diff>
      <filename>IServiceOriented.ServiceBus/ListenerEndpointCollection.cs</filename>
    </modified>
    <modified>
      <diff>@@ -32,7 +32,7 @@ namespace IServiceOriented.ServiceBus.Listeners
         /// Gets the type that should be hosted by the ServiceHost
         /// &lt;/summary&gt;
         /// &lt;returns&gt;&lt;/returns&gt;
-        protected virtual Type GetServiceImplementationType()
+        protected virtual Type CreateServiceImplementationType()
         {
             Type hostType = WcfServiceHostFactory.CreateImplementationType(Endpoint.ContractType);
             return hostType;
@@ -44,7 +44,7 @@ namespace IServiceOriented.ServiceBus.Listeners
         /// &lt;returns&gt;&lt;/returns&gt;
         protected virtual ServiceHost CreateServiceHost()
         {
-            return WcfServiceHostFactory.CreateHost(Runtime, Endpoint.ContractType, GetServiceImplementationType(), Endpoint.ConfigurationName, Endpoint.Address);
+            return WcfServiceHostFactory.CreateHost(Runtime, Endpoint.ContractType, CreateServiceImplementationType(), Endpoint.ConfigurationName, Endpoint.Address);
         }
 
 </diff>
      <filename>IServiceOriented.ServiceBus/Listeners/WcfListener.cs</filename>
    </modified>
    <modified>
      <diff>@@ -232,15 +232,16 @@ namespace IServiceOriented.ServiceBus.Listeners
     /// &lt;/summary&gt;
     public class WcfListenerServiceHost : ServiceHost
     {
-        public WcfListenerServiceHost(object host, string contract, string configurationName, string address)
-            : base(host)
+        public WcfListenerServiceHost(object host, string contract, string configurationName, string address) : base(host)
         {
             ConfigurationName = configurationName;
+            ContractName = contract;
+            Address = address;
 
-            LoadConfigurationSection(GetConfiguration(configurationName, contract, address));
+            LoadConfigurationSection(GetConfiguration(ConfigurationName, ContractName, Address));
         }
 
-        protected ServiceElement FindServiceElementInConfig(string name)
+        protected static ServiceElement FindServiceElementInConfig(string name)
         {
             Configuration appConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
             ServiceModelSectionGroup serviceModel = ServiceModelSectionGroup.GetSectionGroup(appConfig);
@@ -248,7 +249,7 @@ namespace IServiceOriented.ServiceBus.Listeners
             ServiceElement serviceElement = null;
             foreach (ServiceElement e in serviceModel.Services.Services)
             {
-                if (e.Name == ConfigurationName)
+                if (e.Name == name)
                 {
                     serviceElement = e;
                     break;
@@ -257,7 +258,7 @@ namespace IServiceOriented.ServiceBus.Listeners
             return serviceElement;
         }
 
-        protected virtual ServiceElement GetConfiguration(string configurationName, string contract, string address)
+        protected static ServiceElement GetConfiguration(string configurationName, string contract, string address)
         {
             // Use standard WCF configuration elements as a template, find the &lt;service&gt; element with a matching name and replace the contract and address with actual values
 
@@ -282,9 +283,21 @@ namespace IServiceOriented.ServiceBus.Listeners
             private set;
         }
 
-        protected override void ApplyConfiguration()
+        public string ContractName
+        {
+            get;
+            private set;
+        }
+
+        public string Address
         {
+            get;
+            private set;
+        }
 
+        protected override void ApplyConfiguration()
+        {
+            
         }
     }    
 }</diff>
      <filename>IServiceOriented.ServiceBus/Listeners/WcfServiceHostFactory.cs</filename>
    </modified>
    <modified>
      <diff>@@ -24,25 +24,25 @@ namespace IServiceOriented.ServiceBus
     {
         public MessageDelivery(Guid subscriptionEndpointId, Type contractType, string action, object message, int maxRetries, MessageDeliveryContext context)
         {
-            _messageId = Guid.NewGuid().ToString();
-            _subscriptionEndpointId = subscriptionEndpointId;
-            _action = action;
-            _message = message;
-            _maxRetries = maxRetries;
-            _context = context;
+            MessageId = Guid.NewGuid().ToString();
+            SubscriptionEndpointId = subscriptionEndpointId;
+            Action = action;
+            Message = message;
+            MaxRetries = maxRetries;
+            Context = context;
             ContractType = contractType;
         }
 
         public MessageDelivery(string messageId, Guid subscriptionEndpointId, Type contractType, string action, object message, int maxRetries, int retryCount, DateTime? timeToProcess, MessageDeliveryContext context)
         {
-            _messageId = messageId;
-            _subscriptionEndpointId = subscriptionEndpointId;
-            _action = action;
-            _message = message;
-            _retryCount = retryCount;
-            _timeToProcess = timeToProcess;
-            _maxRetries = maxRetries;
-            _context = context;
+            MessageId = messageId;
+            SubscriptionEndpointId = subscriptionEndpointId;
+            Action = action;
+            Message = message;
+            RetryCount = retryCount;
+            TimeToProcess = timeToProcess;
+            MaxRetries = maxRetries;
+            Context = context;
             ContractType = contractType;
         }
 </diff>
      <filename>IServiceOriented.ServiceBus/MessageDelivery.cs</filename>
    </modified>
    <modified>
      <diff>@@ -8,8 +8,9 @@ using System.Runtime.Serialization;
 
 namespace IServiceOriented.ServiceBus
 {
-    [CollectionDataContract]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage(&quot;Microsoft.Naming&quot;, &quot;CA1710:IdentifiersShouldHaveCorrectSuffix&quot;), CollectionDataContract]
     [KnownType(&quot;GetKnownTypes&quot;)]
+    [Serializable]
     public class MessageDeliveryContext : IReadOnlyDictionary&lt;string,object&gt;
     {
         public MessageDeliveryContext()
@@ -32,7 +33,7 @@ namespace IServiceOriented.ServiceBus
             }
         }
 
-        public MessageDeliveryContext(IEnumerable&lt;KeyValuePair&lt;string, object&gt;&gt; pairs)            
+        public MessageDeliveryContext(KeyValuePair&lt;string, object&gt;[] pairs)            
         {
             foreach (KeyValuePair&lt;string, object&gt; pair in pairs)
             {</diff>
      <filename>IServiceOriented.ServiceBus/MessageDeliveryContext.cs</filename>
    </modified>
    <modified>
      <diff>@@ -361,20 +361,17 @@ namespace IServiceOriented.ServiceBus
             }            
         }
 
-        public void Publish(Type contractType, string action, object message)
+        public MessageDelivery[] Publish(Type contractType, string action, object message)
         {
-            MessageDelivery[] results;
-            Publish(new PublishRequest(contractType, action, message, new MessageDeliveryContext()), PublishWait.None, TimeSpan.MinValue, out results);
+            return Publish(new PublishRequest(contractType, action, message, new MessageDeliveryContext()), PublishWait.None, TimeSpan.MinValue);
         }
 
-        public void Publish(PublishRequest publishRequest)
+        public MessageDelivery[] Publish(PublishRequest publishRequest)
         {
-            MessageDelivery[] results;
-            Publish(publishRequest, PublishWait.None, TimeSpan.MinValue, out results);
+            return Publish(publishRequest, PublishWait.None, TimeSpan.MinValue);
         }
-
         
-		public void Publish(PublishRequest publishRequest, PublishWait wait, TimeSpan timeout, out MessageDelivery[] res)
+		public MessageDelivery[] Publish(PublishRequest publishRequest, PublishWait wait, TimeSpan timeout)
 		{
             DeliveryCore deliveryCore = ServiceLocator.GetInstance&lt;DeliveryCore&gt;();
 
@@ -386,12 +383,8 @@ namespace IServiceOriented.ServiceBus
 
             bool waitForReply = wait != PublishWait.None;
 
-            res = null;
-
             MessageDelivery[] results = null;
 
-            int subscriptionCount = subscriptions.Count();
-
             List&lt;MessageDelivery&gt; messageDeliveries = new List&lt;MessageDelivery&gt;();
             CorrelationMessageFilter filter;
             ActionDispatcher dispatcher;
@@ -466,7 +459,7 @@ namespace IServiceOriented.ServiceBus
 
                     foreach (MessageDelivery md in messageDeliveries)
                     {
-                        deliveryCore.Deliver(md);
+                        deliveryCore.Deliver(md);                        
                     }
 
                     ts.Complete();
@@ -489,8 +482,7 @@ namespace IServiceOriented.ServiceBus
                 }
             }
 
-
-            res = results;
+            return results;
 		}
 
         public Collection&lt;ListenerEndpoint&gt; ListListeners()
@@ -674,7 +666,7 @@ namespace IServiceOriented.ServiceBus
             }
 
             var failed = _messageDeliveryFailed;
-            if (failed != null) failed(this, new MessageDeliveryFailedEventArgs() { MessageDelivery = delivery, Permanent = false });
+            if (failed != null) failed(this, new MessageDeliveryFailedEventArgs() { MessageDelivery = delivery, Permanent = permanent });
         }
 
         object _eventLock = new Object();</diff>
      <filename>IServiceOriented.ServiceBus/ServiceBusRuntime.cs</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq;
 using System.Text;
+using System.Globalization;
 
 namespace IServiceOriented.ServiceBus
 {
@@ -26,7 +27,7 @@ namespace IServiceOriented.ServiceBus
                 }
                 if (item.Id == endpoint.Id)
                 {
-                    throw new DuplicateIdentifierException(String.Format(&quot;The id {0} is associated with another endpoint.&quot;, endpoint.Id));
+                    throw new DuplicateIdentifierException(String.Format(CultureInfo.InvariantCulture, &quot;The id {0} is associated with another endpoint.&quot;, endpoint.Id));
                 }
             }
         }
@@ -60,12 +61,11 @@ namespace IServiceOriented.ServiceBus
         /// Gets the subscription with the specified ID.
         /// &lt;/summary&gt;
         /// &lt;param name=&quot;value&quot;&gt;ID of the subscription to get&lt;/param&gt;        
-        public SubscriptionEndpoint this[Guid value]
+        public SubscriptionEndpoint Find(Guid value)
         {
-            get
-            {
-                return _fastLookup[value];
-            }
+            SubscriptionEndpoint endpoint = null;
+            _fastLookup.TryGetValue(value, out endpoint);
+            return endpoint;
         }
     }
 }</diff>
      <filename>IServiceOriented.ServiceBus/SubscriptionEndpointCollection.cs</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>335a74954f343ef684e470a4efbe16431174d757</id>
    </parent>
  </parents>
  <author>
    <name>jezell</name>
    <email>jezell@gmail.com</email>
  </author>
  <url>http://github.com/jezell/iserviceoriented/commit/d8830853c591c7d999ce035bf54826adefe4663e</url>
  <id>d8830853c591c7d999ce035bf54826adefe4663e</id>
  <committed-date>2008-10-11T16:35:10-07:00</committed-date>
  <authored-date>2008-10-11T16:35:10-07:00</authored-date>
  <message>FXCop cleanup, warning as errors enabled, code analysis enabled</message>
  <tree>f395c4ef4214d65ecf2db1b4d627f8a4d616d82f</tree>
  <committer>
    <name>jezell</name>
    <email>jezell@gmail.com</email>
  </committer>
</commit>
