diff --git a/PortCMIS/client/ClientIntf.cs b/PortCMIS/client/ClientIntf.cs
index 714c0b8..060a54f 100644
--- a/PortCMIS/client/ClientIntf.cs
+++ b/PortCMIS/client/ClientIntf.cs
@@ -765,15 +765,12 @@
     /// <summary>
     /// Query Statement.
     /// </summary>
-    /// <remarks>
-    /// Sample code:
-    /// 
-    /// <c>
+    /// <example>
     /// DateTime cal = ...
-    /// Folder folder = ...
+    /// IFolder folder = ...
     /// 
     /// IQueryStatement qs = 
-    ///   session.createQueryStatement("SELECT ?, ? FROM ? WHERE ? > TIMESTAMP ? AND IN_FOLDER(?) OR ? IN (?)");
+    ///   Session.CreateQueryStatement("SELECT ?, ? FROM ? WHERE ? > TIMESTAMP ? AND IN_FOLDER(?) OR ? IN (?)");
     /// 
     /// qs.SetProperty(1, "cmis:document", "cmis:name");
     /// qs.SetProperty(2, "cmis:document", "cmis:objectId");
@@ -788,8 +785,7 @@
     /// qs.SetString(8, "bob", "tom", "lisa"); 
     /// 
     /// string statement = qs.ToQueryString();
-    /// </c>
-    /// </remarks>
+    /// </example>
     public interface IQueryStatement
     {
         /// <summary>
@@ -811,6 +807,7 @@
         /// Sets the designated parameter to the query name of the given property.
         /// </summary>
         /// <param name='parameterIndex'>the parameter index (one-based)</param>
+        /// <param name='typeId'>the type ID</param>
         /// <param name='propertyId'>the property ID</param>
         void SetProperty(int parameterIndex, string typeId, string propertyId);
 
@@ -851,9 +848,8 @@
         void SetStringLike(int parameterIndex, string str);
 
         /// <summary>
-        /// Sets the designated parameter to the given string in a CMIS contains
-        /// statement.
-        /// </summary>S
+        /// Sets the designated parameter to the given string in a CMIS contains statement.
+        /// </summary>
         /// <remarks>
         /// Note that the CMIS specification requires two levels of escaping. The
         /// first level escapes ', ", \ characters to \', \" and \\. The characters
@@ -866,10 +862,60 @@
         /// On the second level grammar ", ', - and \ are escaped with a \. See the
         /// spec for further details.
         /// <p>
-        /// Summary (input --> first level escaping --> second level escaping and
-        /// output):/// -->/// -->/// ? --> ? --> ? - --> - --> - \ --> \\ --> \\\\ (for
-        /// any other character following other than/// ? -) \* --> \* --> \\* \? -->
-        /// \? --> \\? \- --> \- --> \\- ' --> \' --> \\\' " --> \" --> \\\"
+        /// Summary:
+        /// <table summary="Escaping Summary">
+        /// <tr>
+        /// <th>input</th>
+        /// <th>first level escaping</th>
+        /// <th>second level escaping</th>
+        /// </tr>
+        /// <tr>
+        /// <td>*</td>
+        /// <td>*</td>
+        /// <td>*</td>
+        /// </tr>
+        /// <tr>
+        /// <td>?</td>
+        /// <td>?</td>
+        /// <td>?</td>
+        /// </tr>
+        /// <tr>
+        /// <td>-</td>
+        /// <td>-</td>
+        /// <td>-</td>
+        /// </tr>
+        /// <tr>
+        /// <td>\</td>
+        /// <td>\\</td>
+        /// <td>\\\\<br>
+        /// <em>(for any other character following other than///?-)</em></td>
+        /// </tr>
+        /// <tr>
+        /// <td>\*</td>
+        /// <td>\*</td>
+        /// <td>\\*</td>
+        /// </tr>
+        /// <tr>
+        /// <td>\?</td>
+        /// <td>\?</td>
+        /// <td>\\?</td>
+        /// </tr>
+        /// <tr>
+        /// <td>\-</td>
+        /// <td>\-</td>
+        /// <td>\\-+</td>
+        /// </tr>
+        /// <tr>
+        /// <td>'</td>
+        /// <td>\'</td>
+        /// <td>\\\'</td>
+        /// </tr>
+        /// <tr>
+        /// <td>"</td>
+        /// <td>\"</td>
+        /// <td>\\\"</td>
+        /// </tr>
+        /// </table>
         /// </remarks>
         /// <param name='parameterIndex'>the parameter index (one-based)</param>
         /// <param name='str'>the CONTAINS string</param>
@@ -1113,7 +1159,7 @@
         IDocument GetRenditionDocument();
 
         /// <summary>
-        /// * Returns the rendition document using the provided operation context if the rendition is a stand-alone document.
+        /// Returns the rendition document using the provided operation context if the rendition is a stand-alone document.
         /// </summary>
         /// <param name="context">the operation context</param>
         /// <returns>the rendition document or <c>null</c> if there is no rendition document</returns>
diff --git a/PortCMIS/const/PermissionMappingKeys.cs b/PortCMIS/const/PermissionMappingKeys.cs
index b45f631..e0d45b4 100644
--- a/PortCMIS/const/PermissionMappingKeys.cs
+++ b/PortCMIS/const/PermissionMappingKeys.cs
@@ -24,39 +24,73 @@
     /// </summary>
     public static class PermissionMappingKeys
     {
+        /// <summary>Key <c>canGetDescendents.Folder</c></summary>
         public const string CanGetDescendentsFolder = "canGetDescendents.Folder";
+        /// <summary>Key <c>canGetChildren.Folder</c></summary>
         public const string CanGetChildrenFolder = "canGetChildren.Folder";
+        /// <summary>Key <c>canGetParents.Folder</c></summary>
         public const string CanGetParentsFolder = "canGetParents.Folder";
+        /// <summary>Key <c>canGetFolderParent.Object</c></summary>
         public const string CanGetFolderParentObject = "canGetFolderParent.Object";
+        /// <summary>Key <c>canCreateDocument.Folder</c></summary>
         public const string CanCreateDocumentFolder = "canCreateDocument.Folder";
+        /// <summary>Key <c>canCreateFolder.Folder</c></summary>
         public const string CanCreateFolderFolder = "canCreateFolder.Folder";
+        /// <summary>Key <c>canCreateRelationship.Source</c></summary>
         public const string CanCreateRelationshipSource = "canCreateRelationship.Source";
+        /// <summary>Key <c>canCreateRelationship.Target</c></summary>
         public const string CanCreateRelationshipTarget = "canCreateRelationship.Target";
+        /// <summary>Key <c>canGetProperties.Object</c></summary>
         public const string CanGetPropertiesObject = "canGetProperties.Object";
+        /// <summary>Key <c>canViewContent.Object</c></summary>
         public const string CanViewContentObject = "canViewContent.Object";
+        /// <summary>Key <c>canUpdateProperties.Object</c></summary>
         public const string CanUpdatePropertiesObject = "canUpdateProperties.Object";
+        /// <summary>Key <c>canMove.Object</c></summary>
         public const string CanMoveObject = "canMove.Object";
+        /// <summary>Key <c>canMove.Target</c></summary>
         public const string CanMoveTarget = "canMove.Target";
+        /// <summary>Key <c>canMove.Source</c></summary>
         public const string CanMoveSource = "canMove.Source";
+        /// <summary>Key <c>canDelete.Objectr</c></summary>
         public const string CanDeleteObject = "canDelete.Object";
+        /// <summary>Key <c>canDeleteTree.Folder</c></summary>
         public const string CanDeleteTreeFolder = "canDeleteTree.Folder";
+        /// <summary>Key <c>canSetContent.Document</c></summary>
         public const string CanSetContentDocument = "canSetContent.Document";
+        /// <summary>Key <c>canDeleteContent.Document</c></summary>
         public const string CanDeleteContentDocument = "canDeleteContent.Document";
+        /// <summary>Key <c>canAddToFolder.Object</c></summary>
         public const string CanAddToFolderObject = "canAddToFolder.Object";
+        /// <summary>Key <c>canAddToFolder.Folder</c></summary>
         public const string CanAddToFolderFolder = "canAddToFolder.Folder";
+        /// <summary>Key <c>canRemoveFromFolder.Object</c></summary>
         public const string CanRemoveFromFolderObject = "canRemoveFromFolder.Object";
+        /// <summary>Key <c>canRemoveFromFolder.Folder</c></summary>
         public const string CanRemoveFromFolderFolder = "canRemoveFromFolder.Folder";
+        /// <summary>Key <c>canCheckout.Document</c></summary>
         public const string CanCheckoutDocument = "canCheckout.Document";
+        /// <summary>Key <c>canCancelCheckout.Document</c></summary>
         public const string CanCancelCheckoutDocument = "canCancelCheckout.Document";
+        /// <summary>Key <c>canCheckin.Document</c></summary>
         public const string CanCheckinDocument = "canCheckin.Document";
+        /// <summary>Key <c>canGetAllVersions.VersionSeries</c></summary>
         public const string CanGetAllVersionsVersionSeries = "canGetAllVersions.VersionSeries";
+        /// <summary>Key <c>canGetObjectRelationships.Object</c></summary>
         public const string CanGetObjectRelationshipSObject = "canGetObjectRelationships.Object";
+        /// <summary>Key <c>canAddPolicy.Object</c></summary>
         public const string CanAddPolicyObject = "canAddPolicy.Object";
+        /// <summary>Key <c>canAddPolicy.Policy</c></summary>
         public const string CanAddPolicyPolicy = "canAddPolicy.Policy";
+        /// <summary>Key <c>canRemovePolicy.Object</c></summary>
         public const string CanRemovePolicyObject = "canRemovePolicy.Object";
+        /// <summary>Key <c>canRemovePolicy.Policy</c></summary>
         public const string CanRemovePolicyPolicy = "canRemovePolicy.Policy";
+        /// <summary>Key <c>canGetAppliedPolicies.Object</c></summary>
         public const string CanGetAppliesPoliciesObject = "canGetAppliedPolicies.Object";
+        /// <summary>Key <c>canGetAcl.Object</c></summary>
         public const string CanGetAclObject = "canGetAcl.Object";
+        /// <summary>Key <c>canApplyAcl.Object</c></summary>
         public const string CanApplyAclObject = "canApplyAcl.Object";
     }
 }
diff --git a/PortCMISWin/binding/WindowsHttp.cs b/PortCMISWin/binding/WindowsHttp.cs
index 6c6917b..3b89030 100644
--- a/PortCMISWin/binding/WindowsHttp.cs
+++ b/PortCMISWin/binding/WindowsHttp.cs
@@ -127,7 +127,7 @@
             {
                 foreach (KeyValuePair<string, string> header in headers)
                 {
-                    request.Headers.Add(header.Key, header.Value);
+                    request.Headers.TryAppendWithoutValidation(header.Key, header.Value);
                 }
             }
 
