diff --git a/VectoCommon/VectoHashing/IVectoHash.cs b/VectoCommon/VectoHashing/IVectoHash.cs
index dbff49bfe07a8d6e7c0aa503515df074aaaba285..29bc90029b62a99143d66989af31f72fcc5668fe 100644
--- a/VectoCommon/VectoHashing/IVectoHash.cs
+++ b/VectoCommon/VectoHashing/IVectoHash.cs
@@ -34,106 +34,133 @@ using System.Xml.Linq;
 
 namespace TUGraz.VectoHashing
 {
+	/// <summary>
+	/// Interface definition for hashing and verifying VECTO XML files
+	/// </summary>
 	public interface IVectoHash
 	{
-		/**
-		 * Get a list of all vecto components contained in the XML file. If a certain
-		 * component appears multiple times (e.g. tires) it is provided multiple times 
-		 * in the returned list.
-		 * to get a list with unique entries (and the number of occurences) use e.g.
-		 * GetContainigComponents().GroupBy(s => s).Select(g => new { Entry = g.Key, Count = g.Count() })
-		 */
+		/// <summary>
+		/// Get a list of all vecto components contained in the XML file. If a certain
+		/// component appears multiple times (e.g. tires) it is provided multiple times 
+		/// in the returned list.
+		/// to get a list with unique entries (and the number of occurences) use e.g.
+		/// GetContainigComponents().GroupBy(s => s).Select(g => new { Entry = g.Key, Count = g.Count() })
+		/// </summary>
+		/// <returns>List of components contained in the current XML document</returns>
 		IList<VectoComponents> GetContainigComponents();
 
-		/**
-		 * Get the digest method used to compute the digest value of the top-level Signature element
-		 * if there is no top-level Signature element, the default digest method is returned (see XMLHashProvider.DefaultDigestMethod)
-		 * @return identifier (urn) of the digest method
-		 */
+
+		/// <summary>
+		/// Get the digest method used to compute the digest value of the top-level Signature element
+		/// if there is no top-level Signature element, the default digest method is returned (see XMLHashProvider.DefaultDigestMethod)
+		/// </summary>
+		/// <returns>identifier (urn) of the digest method</returns>
 		string GetDigestMethod();
 
-		/**
-		 * Get the digest method of the Signature element for the given component. If a component exists 
-		 * multiple times (e.g., tires), the index specifies for which component the digest method is returned
-		 * @param component 
-		 * @param index
-		 * @return identifier (urn) of the digest method
-		 */
+
+		/// <summary>
+		/// Get the digest method of the Signature element for the given component. If a component exists 
+		/// multiple times (e.g., tires), the index specifies for which component the digest method is returned
+		/// </summary>
+		/// <param name="component">VectoComponent to get the digest method for</param>
+		/// <param name="index">index of the component to use if a component may exist multiple times. Default: 0</param>
+		/// <returns>identifier (urn) of the digest method</returns>
 		string GetDigestMethod(VectoComponents component, int index = 0);
 
-		/**
-		 * Get the list of canonicalization methods used to compute the digest value of the top-level Signature element
-		 * If there is no top-level Signature element, the default digest method is returned (see XMLHashProvider.DefaulCanonicalizationMethod)
-		 * @return returns a list of identifiers (urns) of the canonicalization methods
-		 */
+
+		/// <summary>
+		/// Get the list of canonicalization methods used to compute the digest value of the top-level Signature element
+		/// If there is no top-level Signature element, the default digest method is returned (see XMLHashProvider.DefaulCanonicalizationMethod)
+		/// </summary>
+		/// <returns>returns a list of identifiers (urns) of the canonicalization methods</returns>
 		IEnumerable<string> GetCanonicalizationMethods();
 
-		/**
-		 * Get the list of canonicalization methods used to compute the digest value of the Signature element 
-		 * for the given component. If a component exists multiple times (e.g., tires) the indes specifies for which
-		 * component the canonicalization method is returned
-		 * If there is no top-level Signature element, the default digest method is returned (see XMLHashProvider.DefaulCanonicalizationMethod)
-		 * @return returns a list of identifiers (urns) of the canonicalization methods
-		 */
+
+		/// <summary>
+		/// Get the list of canonicalization methods used to compute the digest value of the Signature element 
+		/// for the given component. If a component exists multiple times (e.g., tires) the indes specifies for which
+		/// component the canonicalization method is returned
+		/// If there is no top-level Signature element, the default digest method is returned (see XMLHashProvider.DefaulCanonicalizationMethod)
+		/// </summary>
+		/// <param name="component">VectoComponent to get the canonicalization methods for</param>
+		/// <param name="index">index of the component to use if a component may exist multiple times. Default: 0</param>
+		/// <returns>returns a list of identifiers (urns) of the canonicalization methods</returns>
 		IEnumerable<string> GetCanonicalizationMethods(VectoComponents component, int index = 0);
 
-		/**
-		 * Reads the hash-value of the top-level Signature element
-		 * @return base64 encoded hash value
-		 */
+
+		/// <summary>
+		/// Reads the hash-value of the top-level Signature element
+		/// </summary>
+		/// <returns>base64 encoded hash value</returns>
 		string ReadHash();
 
-		/**
-		 * Reads the hash-value of the Signature element for the given component. If a component can exist 
-		 * multiple times (i.e., tires), the index specifies for which component the hash is computed
-		 * @return base64 encoded hash value
-		 */
+
+		/// <summary>
+		/// Reads the hash-value of the Signature element for the given component. If a component can exist 
+		/// multiple times (i.e., tires), the index specifies for which component the hash is computed
+		/// </summary>
+		/// <param name="component">VectoComponent to get the canonicalization methods for</param>
+		/// <param name="index">index of the component to use if a component may exist multiple times. Default: 0</param>
+		/// <returns>base64 encoded hash value</returns>
 		string ReadHash(VectoComponents component, int index = 0);
 
 
-		/**
-		 * Computes the hash-value of the top-level Data element (or vehicle)
-		 * If the canoonicalizationMethods is null the canonicalizationMethods from 
-		 * the signature element are read if available or the default canonicalization is applied
-		 * If the digestMethod is null the digestMethod from the signature element is read if 
-		 * available or the default digestMethod is used
-		 * Note: the top-level Data element is required to have an id attribute!
-		 * @return base64 encoded hash value
-		 */
+		/// <summary>
+		// Computes the hash-value of the top-level Data element (or vehicle)
+		/// If the canoonicalizationMethods is null the canonicalizationMethods from 
+		/// the signature element are read if available or the default canonicalization is applied
+		/// If the digestMethod is null the digestMethod from the signature element is read if 
+		/// available or the default digestMethod is used
+		/// Note: the top-level Data element is required to have an id attribute!
+		/// </summary>
+		/// <param name="canonicalizationMethods">Canonicalization methods to use. If null the default methods are applied</param>
+		/// <param name="digestMethod">Digest method to use. If null, the default digest method is used.</param>
+		/// <returns>base64 encoded hash value</returns>
 		string ComputeHash(IEnumerable<string> canonicalizationMethods = null, string digestMethod = null);
 
-		/**
-		 * Computes the hash-value for the given component. If a component can exist multiple times
-		 * (i.e., Tyres) the index specifies for which component the hash is computed
-		 * If the canoonicalizationMethods is null the canonicalizationMethods from 
-		 * the signature element are read if available or the default canonicalization is applied
-		 * If the digestMethod is null the digestMethod from the signature element is read if 
-		 * available or the default digestMethod is used
-		 * Note: the Data element is required to have an id attribute!
-		 * @return base64 encoded hash value
-		 */
 
+		/// <summary>
+		/// Computes the hash-value for the given component. If a component can exist multiple times
+		/// (i.e., Tyres) the index specifies for which component the hash is computed
+		/// If the canoonicalizationMethods is null the canonicalizationMethods from 
+		/// the signature element are read if available or the default canonicalization is applied
+		/// If the digestMethod is null the digestMethod from the signature element is read if 
+		/// available or the default digestMethod is used
+		/// Note: the Data element is required to have an id attribute!
+		/// </summary>
+		/// <param name="component">VectoComponent to get the canonicalization methods for</param>
+		/// <param name="index">index of the component to use if a component may exist multiple times. Default: 0</param>
+		/// <param name="canonicalizationMethods">list of identifiers (urn) of the canonicalization methods to apply. If null, the default canonicalization methods are used</param>
+		/// <param name="digestMethod">identifier (urn) of the digest method to use. If null, the default digest method is used</param>
+		/// <returns></returns>
 		string ComputeHash(VectoComponents component, int index = 0, IEnumerable<string> canonicalizationMethods = null,
 			string digestMethod = null);
 
-		/**
-		 * Validates the hash of the top-level component (or vehicle)
-		 */
+
+		/// <summary>
+		/// Validates the hash of the top-level component (or vehicle)
+		/// </summary>
+		/// <returns>true, if the re-computed digest value matches the document's digest value, false otherwise</returns>
 		bool ValidateHash();
 
-		/**
-		 * Validates the hash for the given component.
-		 */
+
+		/// <summary>
+		/// Validates the hash for the given component.
+		/// </summary>
+		/// <param name="component">VectoComponent to get the canonicalization methods for</param>
+		/// <param name="index">index of the component to use if a component may exist multiple times. Default: 0</param>
+		/// <returns>true, if the re-computed digest value matches the document's digest value, false otherwise</returns>
 		bool ValidateHash(VectoComponents component, int index = 0);
 
-		/**
-		 * Computes the hash-value of the outer Data element and adds the according Signature element 
-		 * after the Data element.
-		 * The default CaonocalizationMethods and DigestMethod are used.
-		 * Note: the id attribute is added to the Data element automatically. if an id attribute is already
-		 * present its value is overwritten.
-		 * @return returns the document including the Signature element with the hash of the Data block
-		 */
+
+		/// <summary>
+		/// Computes the hash-value of the outer Data element and adds the according Signature element 
+		/// after the Data element.
+		/// The default CaonocalizationMethods and DigestMethod are used.
+		/// Note: the id attribute is added to the Data element automatically. if an id attribute is already
+		/// present its value is overwritten unless its lenth is more than 5 characters.
+		/// </summary>
+		/// <returns>returns the given document including the Signature element with the hash of the Data block</returns>
 		XDocument AddHash();
 	}
 }
diff --git a/VectoCommon/VectoHashing/VectoHash.cs b/VectoCommon/VectoHashing/VectoHash.cs
index c61e373f5d88fc7bec9eb19534f97b1d0cfc64ae..8b42dd4bd2dc4eee1b29e69c108681f2eba70a0b 100644
--- a/VectoCommon/VectoHashing/VectoHash.cs
+++ b/VectoCommon/VectoHashing/VectoHash.cs
@@ -86,12 +86,45 @@ namespace TUGraz.VectoHashing
 			Document = doc;
 		}
 
+
+		/// <summary>
+		/// Get a list of all supported digest methods
+		/// </summary>
+		public static ICollection<string> SupportedDigestMehods
+		{
+			get { return XMLHashProvider.SupportedDigestMethods; }
+		}
+
+		/// <summary>
+		/// get the identifier of the default digest method
+		/// </summary>
+		public static string DefaultDigestMethod
+		{
+			get { return XMLHashProvider.DefaultDigestMethod; }
+		}
+
+		/// <summary>
+		/// get a list of all supported canonicalization methods
+		/// </summary>
+		public static ICollection<string> SupportedCanonicalizationMethods
+		{
+			get { return XMLHashProvider.SupportedCanonicalizationMethods; }
+		}
+
+		/// <summary>
+		/// get the sequence of the default canonicalization methods
+		/// </summary>
+		public static IEnumerable<string> DefaultCanonicalizationMethod
+		{
+			get { return XMLHashProvider.DefaultCanonicalizationMethod; }
+		}
+
 		public IList<VectoComponents> GetContainigComponents()
 		{
 			var retVal = new List<VectoComponents>();
 			foreach (var component in EnumHelper.GetValues<VectoComponents>()) {
 				var nodes = Document.SelectNodes(string.Format("//*[local-name()='{0}']//*[local-name()='{1}']",
-						XMLNames.VectoInputDeclaration, component.XMLElementName()));
+					XMLNames.VectoInputDeclaration, component.XMLElementName()));
 				var count = nodes == null ? 0 : nodes.Count;
 				for (var i = 0; i < count; i++) {
 					retVal.Add(component);
@@ -328,7 +361,8 @@ namespace TUGraz.VectoHashing
 		public DateTime GetCertificationDate(VectoComponents component, int idx)
 		{
 			var nodes = GetNodes(component, idx);
-			return XmlConvert.ToDateTime(ReadElementValue(nodes[idx], XMLNames.Component_Date), XmlDateTimeSerializationMode.Local);
+			return XmlConvert.ToDateTime(ReadElementValue(nodes[idx], XMLNames.Component_Date),
+				XmlDateTimeSerializationMode.Local);
 		}
 
 		private string ReadElementValue(XmlNode xmlNode, string elementName)
@@ -412,7 +446,5 @@ namespace TUGraz.VectoHashing
 			}
 			return nodes[0].InnerText;
 		}
-
-		
 	}
 }
diff --git a/VectoCommon/VectoHashing/VectoHashing.csproj b/VectoCommon/VectoHashing/VectoHashing.csproj
index 8ac7aaffade25abb8d29d40af973f28ce5ff43a1..77f3fe7f938698e68451b52229dba6eb027e8dac 100644
--- a/VectoCommon/VectoHashing/VectoHashing.csproj
+++ b/VectoCommon/VectoHashing/VectoHashing.csproj
@@ -20,6 +20,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Debug\VectoHashing.XML</DocumentationFile>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>