Index: SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUAbstractRequest.java
===================================================================
--- SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUAbstractRequest.java	(revision 5799)
+++ SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUAbstractRequest.java	(revision 5804)
@@ -392,5 +392,5 @@
     /**
      * <em>Note: this method is not a part of public API.</em>
-     * @return a constant for this
+     * @return a operation constant for this request
      */
     abstract SRUOperation getOperation();
@@ -400,3 +400,3 @@
             throws SRUClientException;
 
-} // class AbstractSRURequest
+} // class SRUAbstractRequest
Index: SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUClient.java
===================================================================
--- SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUClient.java	(revision 5799)
+++ SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUClient.java	(revision 5804)
@@ -434,5 +434,5 @@
                  */
                 throw new SRUClientException(
-                        "internal error; 'records' are null or empty");
+                        "internal error; 'records' is null or empty");
             }
         }
@@ -451,5 +451,4 @@
             SRUClient.this.timeParsing = millisProcessing;
         }
-
     } // inner class Handler
 
Index: SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUGenericExtraResponseData.java
===================================================================
--- SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUGenericExtraResponseData.java	(revision 5799)
+++ SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUGenericExtraResponseData.java	(revision 5804)
@@ -32,4 +32,12 @@
 
 
+    /**
+     * Constructor.
+     * 
+     * @param name
+     *            the root element of this extra response data fragment
+     * @param fragment
+     *            the extra response data fragment as {@link DocumentFragment}
+     */
     SRUGenericExtraResponseData(QName name, DocumentFragment fragment) {
         if (name == null) {
Index: SRUClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSClientBuilder.java
===================================================================
--- SRUClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSClientBuilder.java	(revision 5799)
+++ SRUClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSClientBuilder.java	(revision 5804)
@@ -235,5 +235,5 @@
 
     /**
-     * Register a Data View parser.
+     * Register an extra response data parser.
      *
      * @param parser
@@ -241,8 +241,10 @@
      * @return this {@link ClarinFCSClientBuilder} instance
      * @throws IllegalArgumentException
-     *             if an error occurred while registering the data view parser
+     *             if an error occurred while registering the extra response
+     *             data parser
      * @see SRUExtraResponseDataParser
      */
-    public ClarinFCSClientBuilder registerExtraResponseDatar(SRUExtraResponseDataParser parser) {
+    public ClarinFCSClientBuilder registerExtraResponseDataParser(
+            SRUExtraResponseDataParser parser) {
         if (parser == null) {
             throw new NullPointerException("parser == null");
Index: SRUClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSEndpointDescription.java
===================================================================
--- SRUClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSEndpointDescription.java	(revision 5799)
+++ SRUClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSEndpointDescription.java	(revision 5804)
@@ -52,4 +52,9 @@
 
 
+    /**
+     * Get the version of this endpoint description.
+     *
+     * @return the version of the endpoint description
+     */
     public int getVersion() {
         return version;
@@ -57,4 +62,11 @@
 
 
+    /**
+     * Get the list of capabilities supported by this endpoint. The list
+     * contains the appropriate URIs defined by the CLARIN-FCS specification to
+     * indicate support for certain capabilities.
+     *
+     * @return the list of capabilities supported by this endpoint
+     */
     public List<URI> getCapabilities() {
         return capabilites;
@@ -62,4 +74,9 @@
 
 
+    /**
+     * Get the list of data views supported by this endpoint.
+     *
+     * @return the list of data views supported by this endpoint
+     */
     public List<DataView> getSupportedDataViews() {
         return supportedDataViews;
@@ -67,4 +84,9 @@
 
 
+    /**
+     * Get the list of top-level resources of this endpoint.
+     *
+     * @return the list of top-level resources of this endpoint
+     */
     public List<ResourceInfo> getResources() {
         return resources;
@@ -72,5 +94,8 @@
 
 
-    public static class DataView implements Serializable {
+    /**
+     * This class implements a description of a data view supported by the endpoint.
+     */
+    public static final class DataView implements Serializable {
         private static final long serialVersionUID = -5628565233032672627L;
 
@@ -94,4 +119,7 @@
 
 
+        /**
+         * Constructor. <em>Internal use only!</em>
+         */
         DataView(String identifier, String mimeType,
                 DeliveryPolicy deliveryPolicy) {
@@ -164,5 +192,9 @@
 
 
-    public static class ResourceInfo implements Serializable {
+    /**
+     * This class implements a description of a resource available at an
+     * endpoint.
+     */
+    public static final class ResourceInfo implements Serializable {
         private static final long serialVersionUID = 1046130188435071544L;
         private final String pid;
@@ -175,4 +207,7 @@
 
 
+        /**
+         * Constructor. <em>Internal use only!</em>
+         */
         ResourceInfo(String pid, Map<String, String> title,
                 Map<String, String> description, String landingPageURI,
@@ -311,8 +346,30 @@
 
         /**
+         * Check, if this resource supports a certain language.
+         *
+         * @param language
+         *            a language encoded as a ISO-632-3 three letter language
+         *            code
+         * @return <code>true</code> if the language is supported by this
+         *         resource, <code>false</code> otherwise
+         */
+        public boolean supportsLanguage(String language) {
+            if (language == null) {
+                throw new NullPointerException("language == null");
+            }
+            for (String l : languages) {
+                if (language.equals(l)) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+
+        /**
          * Get the direct sub-ordinate resources of this resource.
          *
-         * @return a list of resources or <code>null</code> if this resource has no
-         *         sub-ordinate resources
+         * @return a list of resources or <code>null</code> if this resource has
+         *         no sub-ordinate resources
          */
         public List<ResourceInfo> getSubResources() {
Index: SRUClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSEndpointDescriptionParser.java
===================================================================
--- SRUClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSEndpointDescriptionParser.java	(revision 5799)
+++ SRUClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSEndpointDescriptionParser.java	(revision 5804)
@@ -46,5 +46,11 @@
 public class ClarinFCSEndpointDescriptionParser implements
         SRUExtraResponseDataParser {
+    /**
+     * constant for infinite resource enumeration parsing depth
+     */
     public static final int INFINITE_MAX_DEPTH = -1;
+    /**
+     * constant for default parsing resource enumeration parsing depth
+     */
     public static final int DEFAULT_MAX_DEPTH  = INFINITE_MAX_DEPTH;
     private static final Logger logger =
@@ -64,4 +70,8 @@
 
 
+    /**
+     * Constructor. By default, the parser will parse the endpoint resource
+     * enumeration to an infinite depth.
+     */
     public ClarinFCSEndpointDescriptionParser() {
         this(DEFAULT_MAX_DEPTH);
@@ -69,4 +79,12 @@
 
 
+    /**
+     * Constructor.
+     *
+     * @param maxDepth
+     *            maximum depth for parsing the endpoint resource enumeration.
+     * @throws IllegalArgumentException
+     *             if an argument is illegal
+     */
     public ClarinFCSEndpointDescriptionParser(int maxDepth) {
         if (maxDepth < -1) {
@@ -187,5 +205,5 @@
         // Resources
         final List<ResourceInfo> resources =
-                parseResources(reader, 0, supportedDataViews);
+                parseResources(reader, 0, maxDepth, supportedDataViews);
 
         // skip over extensions
@@ -208,6 +226,19 @@
 
 
-    private List<ResourceInfo> parseResources(XMLStreamReader reader, int depth,
-            List<DataView> supportedDataviews) throws XMLStreamException {
+    /**
+     * Get the maximum resource enumeration parsing depth. The first level is
+     * indicate by the value <code>0</code>.
+     *
+     * @return the default resource parsing depth or <code>-1</code> for
+     *         infinite.
+     */
+    public int getMaximumResourcePArsingDepth() {
+        return maxDepth;
+    }
+
+
+    private static List<ResourceInfo> parseResources(XMLStreamReader reader,
+            int depth, int maxDepth, List<DataView> supportedDataviews)
+            throws XMLStreamException {
         List<ResourceInfo> resources = null;
 
@@ -285,9 +316,11 @@
 
             List<ResourceInfo> subResources = null;
-            if (XmlStreamReaderUtils.peekStart(reader, ED_NS_URI, "Resources")) {
+            if (XmlStreamReaderUtils.peekStart(reader,
+                    ED_NS_URI, "Resources")) {
                 final int nextDepth = depth + 1;
-                if ((maxDepth == INFINITE_MAX_DEPTH) || (nextDepth < maxDepth)) {
+                if ((maxDepth == INFINITE_MAX_DEPTH) ||
+                        (nextDepth < maxDepth)) {
                     subResources = parseResources(reader, nextDepth,
-                            supportedDataviews);
+                            maxDepth, supportedDataviews);
                 } else {
                     XmlStreamReaderUtils.skipTag(reader, ED_NS_URI,
Index: SRUClient/trunk/src/test/java/eu/clarin/sru/client/TestClient.java
===================================================================
--- SRUClient/trunk/src/test/java/eu/clarin/sru/client/TestClient.java	(revision 5799)
+++ SRUClient/trunk/src/test/java/eu/clarin/sru/client/TestClient.java	(revision 5804)
@@ -37,5 +37,5 @@
                     .unknownDataViewAsString()
                     .enableLegacySupport()
-                    .registerExtraResponseDatar(
+                    .registerExtraResponseDataParser(
                             new ClarinFCSEndpointDescriptionParser())
                     .buildClient();
Index: SRUClient/trunk/src/test/java/eu/clarin/sru/client/TestThreadedClient.java
===================================================================
--- SRUClient/trunk/src/test/java/eu/clarin/sru/client/TestThreadedClient.java	(revision 5799)
+++ SRUClient/trunk/src/test/java/eu/clarin/sru/client/TestThreadedClient.java	(revision 5804)
@@ -24,4 +24,5 @@
 
 import eu.clarin.sru.client.fcs.ClarinFCSClientBuilder;
+import eu.clarin.sru.client.fcs.ClarinFCSEndpointDescriptionParser;
 
 @Deprecated
@@ -36,4 +37,8 @@
             SRUThreadedClient client = new ClarinFCSClientBuilder()
                     .addDefaultDataViewParsers()
+                    .unknownDataViewAsString()
+                    .enableLegacySupport()
+                    .registerExtraResponseDataParser(
+                            new ClarinFCSEndpointDescriptionParser())
                     .buildThreadedClient();
 
Index: SRUClient/trunk/src/test/java/eu/clarin/sru/client/TestThreadedClientCallback.java
===================================================================
--- SRUClient/trunk/src/test/java/eu/clarin/sru/client/TestThreadedClientCallback.java	(revision 5799)
+++ SRUClient/trunk/src/test/java/eu/clarin/sru/client/TestThreadedClientCallback.java	(revision 5804)
@@ -23,4 +23,5 @@
 
 import eu.clarin.sru.client.fcs.ClarinFCSClientBuilder;
+import eu.clarin.sru.client.fcs.ClarinFCSEndpointDescriptionParser;
 
 
@@ -35,4 +36,8 @@
             SRUThreadedClient client = new ClarinFCSClientBuilder()
                     .addDefaultDataViewParsers()
+                    .unknownDataViewAsString()
+                    .enableLegacySupport()
+                    .registerExtraResponseDataParser(
+                            new ClarinFCSEndpointDescriptionParser())
                     .buildThreadedClient();
 
