Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSEndpointTester.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSEndpointTester.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSEndpointTester.java	(revision 7196)
@@ -43,4 +43,5 @@
 import org.apache.http.client.config.RequestConfig;
 import org.apache.http.client.methods.HttpHead;
+import org.apache.http.client.protocol.HttpClientContext;
 import org.apache.http.client.utils.HttpClientUtils;
 import org.apache.http.config.SocketConfig;
@@ -54,8 +55,8 @@
 
 import eu.clarin.sru.client.SRUClient;
+import eu.clarin.sru.client.SRUClientConfig;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUExplainRequest;
 import eu.clarin.sru.client.SRUExplainResponse;
-import eu.clarin.sru.client.SRUSimpleClient;
 import eu.clarin.sru.client.SRUVersion;
 import eu.clarin.sru.client.fcs.ClarinFCSClientBuilder;
@@ -313,6 +314,5 @@
         List<FCSTestResult> results = null;
 
-        final SRUSimpleClient client = context.getClient();
-        final FCSTestHandler handler = new FCSTestHandler();
+        final SRUClient client = context.getClient();
         final int totalCount = tests.size();
         int num = 1;
@@ -322,5 +322,4 @@
                 results = new LinkedList<FCSTestResult>();
             }
-
             logger.debug("running test {}:{}", num, test.getName());
             final String message = String.format(
@@ -333,8 +332,7 @@
             FCSTestResult result = null;
             try {
-                handler.reset();
                 logcapturehandler.publish(new LogRecord(Level.FINE,
                         "running test class " + test.getClass().getName()));
-                result = test.perform(context, client, handler);
+                result = test.perform(context, client);
                 result.setLogRecords(logcapturehandler.getLogRecords());
             } catch (SRUClientException e) {
@@ -351,7 +349,7 @@
                         logcapturehandler.getLogRecords());
             } catch (Throwable t) {
-                final LogRecord record =
-                        new LogRecord(Level.SEVERE, "Internal Error!");
-                record.setThrown(t);
+                final LogRecord record = new LogRecord(Level.SEVERE,
+                        "The endpoint tester as triggered an internal error! " +
+                        "Please report to developers.");
                 logcapturehandler.publish(record);
                 result = new FCSTestResult(test,
@@ -359,4 +357,5 @@
                         record.getMessage(),
                         logcapturehandler.getLogRecords());
+                logger.error("an internal error occured", t);
             }
             results.add(result);
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSTest.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSTest.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSTest.java	(revision 7196)
@@ -17,10 +17,15 @@
 package eu.clarin.fcs.tester;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.logging.LogRecord;
 
-
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUDiagnostic;
+import eu.clarin.sru.client.SRUExplainResponse;
+import eu.clarin.sru.client.SRUScanResponse;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
+import eu.clarin.sru.client.SRUTerm;
 
 
@@ -36,6 +41,5 @@
 
     public abstract FCSTestResult perform(FCSTestContext context,
-            SRUSimpleClient client, FCSTestHandler handler)
-            throws SRUClientException;
+            SRUClient client) throws SRUClientException;
 
 
@@ -70,7 +74,82 @@
 
 
+    protected boolean findDiagnostic(SRUExplainResponse res, String uri) {
+        return dofindDiagnostic(res.getDiagnostics(), uri);
+
+    }
+
+
+    protected boolean findDiagnostic(SRUScanResponse res, String uri) {
+        return dofindDiagnostic(res.getDiagnostics(), uri);
+
+    }
+
+
+    protected boolean findDiagnostic(SRUSearchRetrieveResponse res,
+            String uri) {
+        return dofindDiagnostic(res.getDiagnostics(), uri);
+
+    }
+
+
+    private boolean dofindDiagnostic(List<SRUDiagnostic> diagnostics,
+            String uri) {
+        if (diagnostics != null) {
+            for (SRUDiagnostic diagnostic : diagnostics) {
+                if (uri.equals(diagnostic.getURI())) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+
+//    protected int getDiagnosticCount(SRUExplainResponse res) {
+//        return doGetDiagnosticCount(res.getDiagnostics());
+//    }
+//
+//
+//    protected int getDiagnosticCount(SRUScanResponse res) {
+//        return doGetDiagnosticCount(res.getDiagnostics());
+//    }
+//
+//
+//    protected int getDiagnosticCount(SRUSearchRetrieveResponse res) {
+//        return doGetDiagnosticCount(res.getDiagnostics());
+//    }
+//
+//
+//    private int doGetDiagnosticCount(List<SRUDiagnostic> diagnostics) {
+//        return diagnostics != null ? diagnostics.size() : 0;
+//    }
+
+    protected int getTermsCount(SRUScanResponse res) {
+        return res.getTerms() != null ? res.getTerms().size() : 1;
+    }
+
+    protected List<SRUTerm> getTerms(SRUScanResponse res) {
+        if (res.getTerms() != null) {
+            return res.getTerms();
+        } else {
+           return Collections.emptyList(); 
+        }
+    }
+
+
+    protected boolean isDiagnostic(SRUDiagnostic d, String uri) {
+        return uri.equals(d.getURI());
+    }
+
+
     protected FCSTestResult makeSuccess() {
         return new FCSTestResult(this, FCSTestResult.Code.SUCCESS,
                 "The test case was processed successfully");
+    }
+
+
+    protected FCSTestResult makeSkipped() {
+        return new FCSTestResult(this, FCSTestResult.Code.SKIPPED,
+                "The test case was skipped because it was not applicable");
     }
 
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSTestContext.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSTestContext.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSTestContext.java	(revision 7196)
@@ -17,10 +17,13 @@
 package eu.clarin.fcs.tester;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.apache.commons.lang.RandomStringUtils;
 
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUExplainRequest;
 import eu.clarin.sru.client.SRUScanRequest;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
 import eu.clarin.sru.client.SRUVersion;
 import eu.clarin.sru.client.fcs.ClarinFCSClientBuilder;
@@ -29,4 +32,5 @@
 
 public class FCSTestContext {
+    public static final String PROP_SUPPORTS_ADV = "supports_adv_search";
     private final FCSTestProfile profile;
     private final String baseURI;
@@ -38,5 +42,6 @@
             RandomStringUtils.randomAlphanumeric(16);
     private final String unicodeSearchTerm = "Ã¶Ã€ÃŒÃÃÃÃâ¬";
-    private SRUSimpleClient client;
+    private SRUClient client;
+    private Map<String, Object> properies;
 
 
@@ -98,5 +103,5 @@
             break;
         }
-        client = builder.buildSimpleClient();
+        client = builder.buildClient();
     }
 
@@ -142,5 +147,5 @@
 
 
-    public SRUSimpleClient getClient() {
+    public SRUClient getClient() {
         return client;
     }
@@ -170,3 +175,26 @@
     }
 
+    public void setProperty(String key, Object value) {
+        if (properies == null) {
+            properies = new HashMap<String, Object>();
+        }
+        properies.put(key, value);
+    }
+    
+    public Object getProperty(String key) {
+        if (properies != null) {
+            return properies.get(key);
+        } else {
+            return null;
+        }
+    }
+    
+    public boolean hasProperty(String key) {
+        if (properies != null) {
+            return properies.containsKey(key);
+        } else {
+            return false;
+        }
+    }
+
 } // class FCSTestContext
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSTestHandler.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSTestHandler.java	(revision 7189)
+++ 	(revision )
@@ -1,172 +1,0 @@
-/**
- * This software is copyright (c) 2013 by
- *  - Institut fuer Deutsche Sprache (http://www.ids-mannheim.de)
- * This is free software. You can redistribute it
- * and/or modify it under the terms described in
- * the GNU General Public License v3 of which you
- * should have received a copy. Otherwise you can download
- * it from
- *
- *   http://www.gnu.org/licenses/gpl-3.0.txt
- *
- * @copyright Institut fuer Deutsche Sprache (http://www.ids-mannheim.de)
- *
- * @license http://www.gnu.org/licenses/gpl-3.0.txt
- *  GNU General Public License v3
- */
-package eu.clarin.fcs.tester;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import eu.clarin.sru.client.SRUClientException;
-import eu.clarin.sru.client.SRUDefaultHandlerAdapter;
-import eu.clarin.sru.client.SRUDiagnostic;
-import eu.clarin.sru.client.SRURecordData;
-import eu.clarin.sru.client.SRUSurrogateRecordData;
-import eu.clarin.sru.client.SRUWhereInList;
-
-
-public class FCSTestHandler extends SRUDefaultHandlerAdapter {
-    public static class Record {
-        private final String identifier;
-        private final int position;
-        private final SRURecordData data;
-
-
-        public Record(String identifier, int position, SRURecordData data) {
-            this.identifier = identifier;
-            this.position = position;
-            this.data = data;
-        }
-
-
-        public String getIdentifier() {
-            return identifier;
-        }
-
-
-        public int getPosition() {
-            return position;
-        }
-
-
-        public SRURecordData getData() {
-            return data;
-        }
-    }
-
-    public static class SurrogateDiagnostic implements SRURecordData {
-        private final SRUDiagnostic diagnostic;
-
-
-        public SurrogateDiagnostic(SRUDiagnostic diagnostic) {
-            this.diagnostic = diagnostic;
-        }
-
-
-        @Override
-        public boolean isTransient() {
-            return false;
-        }
-
-
-        @Override
-        public String getRecordSchema() {
-            return SRUSurrogateRecordData.RECORD_SCHEMA;
-        }
-
-
-        public SRUDiagnostic getDiagnostic() {
-            return diagnostic;
-        }
-
-
-        public boolean isDiagnostic(String uri) {
-            if (uri == null) {
-                throw new NullPointerException("uri == null");
-            }
-            return uri.equals(diagnostic.getURI());
-        }
-    }
-
-    private List<String> termList = new ArrayList<String>();
-    private List<Record> recordList = new ArrayList<Record>(512);
-    private List<SRUDiagnostic> diagnostics;
-
-
-    @Override
-    public void onDiagnostics(List<SRUDiagnostic> diagnostics)
-            throws SRUClientException {
-        if (this.diagnostics == null) {
-            this.diagnostics = diagnostics;
-        } else {
-            this.diagnostics.addAll(diagnostics);
-        }
-    }
-
-
-    @Override
-    public void onTerm(String value, int numberOfRecords, String displayTerm,
-            SRUWhereInList whereInList) throws SRUClientException {
-        termList.add(value);
-    }
-
-
-    @Override
-    public void onRecord(String identifier, int position, SRURecordData data)
-            throws SRUClientException {
-        recordList.add(new Record(identifier, position, data));
-    }
-
-
-    @Override
-    public void onSurrogateRecord(String identifier, int position,
-            SRUDiagnostic data) throws SRUClientException {
-        recordList.add(new Record(identifier, position,
-                new SurrogateDiagnostic(data)));
-    }
-
-
-    void reset() {
-        termList.clear();
-        recordList.clear();
-        this.diagnostics = null;
-    }
-
-
-    public boolean findDiagnostic(String uri) {
-        if (uri == null) {
-            throw new NullPointerException("uri == null");
-        }
-        if (diagnostics != null) {
-            for (SRUDiagnostic diagnostic : diagnostics) {
-                if (uri.equals(diagnostic.getURI())) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-
-    public int getDiagnosticCount() {
-        return diagnostics != null ? diagnostics.size() : 0;
-    }
-
-
-    public List<String> getTerms() {
-        return termList;
-    }
-
-
-    public int getRecordCount() {
-        return recordList.size();
-    }
-
-
-    public List<Record> getRecords() {
-        return recordList;
-    }
-
-} // class SRUTestHandler
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSTestResult.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSTestResult.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/FCSTestResult.java	(revision 7196)
@@ -23,5 +23,5 @@
 public class FCSTestResult {
     public static enum Code {
-        SUCCESS, WARNING, ERROR
+        SUCCESS, WARNING, ERROR, SKIPPED;
     }
 
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain1.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain1.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain1.java	(revision 7196)
@@ -21,9 +21,9 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUExplainRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUExplainResponse;
 
 
@@ -53,9 +53,10 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUExplainRequest req = context.createExplainRequest();
-        client.explain(req, handler);
-        return handler.getDiagnosticCount() == 0 ? makeSuccess()
+        SRUExplainResponse res = client.explain(req);
+        return res.getDiagnosticsCount() == 0
+                ? makeSuccess()
                 : makeWarningUnexpectedDiagnostics();
     }
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain2.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain2.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain2.java	(revision 7196)
@@ -21,9 +21,8 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUExplainRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
 
 
@@ -53,6 +52,5 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client) throws SRUClientException {
         SRUExplainRequest req = context.createExplainRequest();
         req.setExtraRequestData(SRUExplainRequest.X_MALFORMED_OPERATION,
@@ -60,5 +58,5 @@
         req.setExtraRequestData(SRUExplainRequest.X_MALFORMED_VERSION,
                 SRUExplainRequest.MALFORMED_OMIT);
-        client.explain(req, handler);
+        client.explain(req);
         return makeSuccess();
     }
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain3.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain3.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain3.java	(revision 7196)
@@ -21,9 +21,8 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUExplainRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
 
 @FCSTestCase(priority=1020, profiles = {
@@ -52,10 +51,10 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUExplainRequest req = context.createExplainRequest();
         req.setExtraRequestData(SRUExplainRequest.X_MALFORMED_VERSION,
                 SRUExplainRequest.MALFORMED_OMIT);
-        client.explain(req, handler);
+        client.explain(req);
         return makeSuccess();
     }
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain4.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain4.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain4.java	(revision 7196)
@@ -21,9 +21,8 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUExplainRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
 
 @FCSTestCase(priority=1040, profiles = {
@@ -52,10 +51,10 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUExplainRequest req = context.createExplainRequest();
         req.setExtraRequestData(SRUExplainRequest.X_MALFORMED_OPERATION,
                 SRUExplainRequest.MALFORMED_OMIT);
-        client.explain(req, handler);
+        client.explain(req);
         return makeSuccess();
     }
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain5.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain5.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain5.java	(revision 7196)
@@ -21,9 +21,9 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUExplainRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUExplainResponse;
 
 @FCSTestCase(priority=1050, profiles = {
@@ -52,11 +52,11 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUExplainRequest req = context.createExplainRequest();
         req.setExtraRequestData(SRUExplainRequest.X_MALFORMED_VERSION,
                 "9.9");
-        client.explain(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/5")
+        SRUExplainResponse res = client.explain(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/5")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/5");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain6.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain6.java	(revision 7196)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain6.java	(revision 7196)
@@ -0,0 +1,90 @@
+/**
+ * This software is copyright (c) 2013 by
+ *  - Institut fuer Deutsche Sprache (http://www.ids-mannheim.de)
+ * This is free software. You can redistribute it
+ * and/or modify it under the terms described in
+ * the GNU General Public License v3 of which you
+ * should have received a copy. Otherwise you can download
+ * it from
+ *
+ *   http://www.gnu.org/licenses/gpl-3.0.txt
+ *
+ * @copyright Institut fuer Deutsche Sprache (http://www.ids-mannheim.de)
+ *
+ * @license http://www.gnu.org/licenses/gpl-3.0.txt
+ *  GNU General Public License v3
+ */
+package eu.clarin.fcs.tester.tests;
+
+import java.util.List;
+
+import eu.clarin.fcs.tester.FCSTest;
+import eu.clarin.fcs.tester.FCSTestCase;
+import eu.clarin.fcs.tester.FCSTestContext;
+import eu.clarin.fcs.tester.FCSTestProfile;
+import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
+import eu.clarin.sru.client.SRUClientException;
+import eu.clarin.sru.client.SRUExplainRequest;
+import eu.clarin.sru.client.SRUExplainResponse;
+import eu.clarin.sru.client.fcs.ClarinFCSConstants;
+import eu.clarin.sru.client.fcs.ClarinFCSEndpointDescription;
+
+@FCSTestCase(priority=1100, profiles = {
+        FCSTestProfile.CLARIN_FCS_1_0,
+})
+public class TestExplain6 extends FCSTest {
+
+    @Override
+    public String getName() {
+        return "Explain";
+    }
+
+
+    @Override
+    public String getDescription() {
+        return "Check for a valid FCS endpoint description";
+    }
+
+
+    @Override
+    public String getExpected() {
+        return "Expecting exactly one valid FCS endpoint decription conforming to FCS 1.0 spec";
+    }
+
+
+    @Override
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
+        SRUExplainRequest req = context.createExplainRequest();
+        req.setExtraRequestData(
+                ClarinFCSConstants.X_FCS_ENDPOINT_DESCRIPTION,
+                "true");
+        SRUExplainResponse res = client.explain(req);
+        
+        List<ClarinFCSEndpointDescription> descs =
+                res.getExtraResponseData(ClarinFCSEndpointDescription.class);
+        if (descs != null) {
+            if (descs.size() == 1) {
+                return validate(context, descs.get(0));
+            } else {
+                return makeError("Endpoint must only return one instance of a CLARIN FCS endpoint description");
+            }
+        } else {
+            return makeError("Endpoint did not return a CLARIN FCS endpoint description");
+        }
+    }
+
+    private FCSTestResult validate(FCSTestContext context, ClarinFCSEndpointDescription desc) {
+        if (desc.getVersion() == 1) {
+            if (desc.getCapabilities()
+                    .contains(ClarinFCSConstants.CAPABILITY_ADVANCED_SEARCH)) {
+                return makeError("Capabilities indicate support for advanced search, but FCS 1.0 does not support advanced search");
+            }
+            return makeSuccess();
+        } else {
+            return makeError("FCS 1.0 endpoint must provide an endpoint description with version set to \"1\"");
+        }
+    }
+
+}
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain7.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain7.java	(revision 7196)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestExplain7.java	(revision 7196)
@@ -0,0 +1,91 @@
+/**
+ * This software is copyright (c) 2013 by
+ *  - Institut fuer Deutsche Sprache (http://www.ids-mannheim.de)
+ * This is free software. You can redistribute it
+ * and/or modify it under the terms described in
+ * the GNU General Public License v3 of which you
+ * should have received a copy. Otherwise you can download
+ * it from
+ *
+ *   http://www.gnu.org/licenses/gpl-3.0.txt
+ *
+ * @copyright Institut fuer Deutsche Sprache (http://www.ids-mannheim.de)
+ *
+ * @license http://www.gnu.org/licenses/gpl-3.0.txt
+ *  GNU General Public License v3
+ */
+package eu.clarin.fcs.tester.tests;
+
+import java.util.List;
+
+import eu.clarin.fcs.tester.FCSTest;
+import eu.clarin.fcs.tester.FCSTestCase;
+import eu.clarin.fcs.tester.FCSTestContext;
+import eu.clarin.fcs.tester.FCSTestProfile;
+import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
+import eu.clarin.sru.client.SRUClientException;
+import eu.clarin.sru.client.SRUExplainRequest;
+import eu.clarin.sru.client.SRUExplainResponse;
+import eu.clarin.sru.client.fcs.ClarinFCSConstants;
+import eu.clarin.sru.client.fcs.ClarinFCSEndpointDescription;
+
+@FCSTestCase(priority=1100, profiles = {
+        FCSTestProfile.CLARIN_FCS_2_0,
+})
+public class TestExplain7 extends FCSTest {
+
+    @Override
+    public String getName() {
+        return "Explain";
+    }
+
+
+    @Override
+    public String getDescription() {
+        return "Check for a valid FCS endpoint description";
+    }
+
+
+    @Override
+    public String getExpected() {
+        return "Expecting exactly one valid FCS endpoint decription conforming to FCS 2.0 spec";
+    }
+
+
+    @Override
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
+        SRUExplainRequest req = context.createExplainRequest();
+        req.setExtraRequestData(
+                ClarinFCSConstants.X_FCS_ENDPOINT_DESCRIPTION,
+                ClarinFCSConstants.TRUE);
+        SRUExplainResponse res = client.explain(req);
+        
+        List<ClarinFCSEndpointDescription> descs =
+                res.getExtraResponseData(ClarinFCSEndpointDescription.class);
+        if (descs != null) {
+            if (descs.size() == 1) {
+                return validate(context, descs.get(0));
+            } else {
+                return makeError("Endpoint must only return one instance of a CLARIN FCS endpoint description");
+            }
+        } else {
+            return makeError("Endpoint did not return a CLARIN FCS endpoint description");
+        }
+    }
+
+
+    private FCSTestResult validate(FCSTestContext context, ClarinFCSEndpointDescription desc) {
+        if (desc.getVersion() == 2) {
+            if (!desc.getCapabilities()
+                    .contains(ClarinFCSConstants.CAPABILITY_ADVANCED_SEARCH)) {
+                context.setProperty(FCSTestContext.PROP_SUPPORTS_ADV, Boolean.TRUE);
+            }
+            return makeSuccess();
+        } else {
+            return makeError("FCS 2.0 endpoint must provide an endpoint description with version set to \"2\"");
+        }
+    }
+
+}
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan1.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan1.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan1.java	(revision 7196)
@@ -21,9 +21,9 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUScanRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUScanResponse;
 
 @FCSTestCase(priority=2000, profiles = {
@@ -51,11 +51,11 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUScanRequest req = context.createScanRequest();
         req.setExtraRequestData(SRUScanRequest.X_MALFORMED_SCAN_CLAUSE,
                 SRUScanRequest.MALFORMED_OMIT);
-        client.scan(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/7")
+        SRUScanResponse res = client.scan(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/7")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/7");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan2.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan2.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan2.java	(revision 7196)
@@ -17,15 +17,13 @@
 package eu.clarin.fcs.tester.tests;
 
-import java.util.List;
-
 import eu.clarin.fcs.tester.FCSTest;
 import eu.clarin.fcs.tester.FCSTestCase;
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUScanRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUScanResponse;
 
 @FCSTestCase(priority=2010, profiles = {
@@ -53,16 +51,15 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUScanRequest req = context.createScanRequest();
         req.setScanClause("fcs.resource=root");
-        client.scan(req, handler);
+        SRUScanResponse res = client.scan(req);
 
-        if (handler.findDiagnostic("info:srw/diagnostic/1/4")) {
+        if (findDiagnostic(res, "info:srw/diagnostic/1/4")) {
             return makeWarning("Endpoint does not support 'scan' operation");
         } else {
-            if (handler.getDiagnosticCount() == 0) {
-                List<String> terms = handler.getTerms();
-                if (terms.size() >= 1) {
+            if (res.getDiagnosticsCount() == 0) {
+                if (getTermsCount(res) >= 1) {
                     return makeSuccess();
                 } else {
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan3.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan3.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan3.java	(revision 7196)
@@ -17,15 +17,13 @@
 package eu.clarin.fcs.tester.tests;
 
-import java.util.List;
-
 import eu.clarin.fcs.tester.FCSTest;
 import eu.clarin.fcs.tester.FCSTestCase;
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUScanRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUScanResponse;
 
 @FCSTestCase(priority=2030, profiles = {
@@ -53,13 +51,12 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client) throws SRUClientException {
         SRUScanRequest req = context.createScanRequest();
         req.setScanClause("fcs.resource=root");
         req.setMaximumTerms(1);
-        client.scan(req, handler);
+        SRUScanResponse res = client.scan(req);
 
-        if (handler.getDiagnosticCount() > 0) {
-            if (handler.findDiagnostic("info:srw/diagnostic/1/4")) {
+        if (res.getDiagnosticsCount() > 0) {
+            if (findDiagnostic(res, "info:srw/diagnostic/1/4")) {
                 return makeWarning("Endpoint does not support 'scan' operation");
             } else {
@@ -67,8 +64,8 @@
             }
         } else {
-            List<String> terms = handler.getTerms();
-            if (terms.size() == 1) {
+            int count = getTermsCount(res);
+            if (count == 1) {
                 return makeSuccess();
-            } else if (terms.size() > 1) {
+            } else if (count > 1) {
                 return makeWarning("Endpoint did not honor 'maximumTerms' argument");
             }
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan4.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan4.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan4.java	(revision 7196)
@@ -21,9 +21,9 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUScanRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUScanResponse;
 
 @FCSTestCase(priority=2040, profiles = {
@@ -53,12 +53,12 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUScanRequest req = context.createScanRequest();
         req.setScanClause("fcs.resource=root");
         req.setExtraRequestData(SRUScanRequest.X_MALFORMED_MAXIMUM_TERMS,
                 "invalid");
-        client.scan(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/6")
+        SRUScanResponse res = client.scan(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/6")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/6");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan5.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan5.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestScan5.java	(revision 7196)
@@ -21,9 +21,9 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUScanRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUScanResponse;
 
 @FCSTestCase(priority=2050, profiles = {
@@ -53,12 +53,12 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUScanRequest req = context.createScanRequest();
         req.setScanClause("fcs.resource=root");
         req.setExtraRequestData(SRUScanRequest.X_MALFORMED_RESPONSE_POSITION,
                 "invalid");
-        client.scan(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/6")
+        SRUScanResponse res = client.scan(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/6")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/6");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch1.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch1.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch1.java	(revision 7196)
@@ -21,10 +21,10 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientConstants;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 
 @FCSTestCase(priority=3000, profiles = {
@@ -54,11 +54,11 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(SRUClientConstants.QUERY_TYPE_CQL,
                 escapeCQL(context.getRandomSearchTerm()));
-        client.searchRetrieve(req, handler);
-        return handler.getDiagnosticCount() == 0
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        return res.getDiagnosticsCount() == 0
                 ? makeSuccess()
                 : makeWarningUnexpectedDiagnostics();
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch10.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch10.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch10.java	(revision 7196)
@@ -21,10 +21,10 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientConstants;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 
 @FCSTestCase(priority=3100, profiles = {
@@ -54,12 +54,12 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(SRUClientConstants.QUERY_TYPE_CQL,
                 escapeCQL(context.getRandomSearchTerm()));
         req.setStartRecord(Integer.MAX_VALUE);
-        client.searchRetrieve(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/61")
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/61")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/61");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch11.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch11.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch11.java	(revision 7196)
@@ -21,10 +21,10 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientConstants;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 
 @FCSTestCase(priority=3200, profiles = {
@@ -54,11 +54,11 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(SRUClientConstants.QUERY_TYPE_CQL,
                 escapeCQL(context.getUnicodeSearchTerm()));
-        client.searchRetrieve(req, handler);
-        return handler.getDiagnosticCount() == 0
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        return res.getDiagnosticsCount() == 0
                 ? makeSuccess()
                 : makeWarningUnexpectedDiagnostics();
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch12.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch12.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch12.java	(revision 7196)
@@ -21,12 +21,12 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
-import eu.clarin.fcs.tester.FCSTestHandler.SurrogateDiagnostic;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientConstants;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUDiagnostic;
+import eu.clarin.sru.client.SRURecord;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 import eu.clarin.sru.client.SRUSurrogateRecordData;
 import eu.clarin.sru.client.fcs.DataView;
@@ -67,6 +67,6 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(SRUClientConstants.QUERY_TYPE_CQL,
@@ -74,26 +74,25 @@
         req.setRecordSchema(FCS_RECORD_SCHEMA);
         req.setMaximumRecords(5);
-        client.searchRetrieve(req, handler);
-        if (handler.findDiagnostic("info:srw/diagnostic/1/66")) {
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        if (findDiagnostic(res, "info:srw/diagnostic/1/66")) {
             return makeError("Endpoint claims to not " +
                     "support FCS record schema (" + FCS_RECORD_SCHEMA + ")");
-        } else if (handler.getRecordCount() == 0) {
+        } else if (res.getRecordsCount() == 0) {
             return makeWarning("Endpoint has no results " +"" +
                     "for search term \"" + context.getUserSearchTerm() +
                     "\". Please supply a different search term.");
         } else {
-            for (FCSTestHandler.Record record : handler.getRecords()) {
-                String recordSchema = record.getData().getRecordSchema();
-                if (SRUSurrogateRecordData.RECORD_SCHEMA.equals(recordSchema)) {
-                    final SurrogateDiagnostic data =
-                            (SurrogateDiagnostic) record.getData();
+            for (SRURecord record : res.getRecords()) {
+                if (record.isRecordSchema(SRUSurrogateRecordData.RECORD_SCHEMA)) {
+                    final SRUSurrogateRecordData data =
+                            (SRUSurrogateRecordData) record.getRecordData();
                     final SRUDiagnostic d = data.getDiagnostic();
 
-                    if (data.isDiagnostic("info:srw/diagnostic/1/67")) {
+                    if (isDiagnostic(d, "info:srw/diagnostic/1/67")) {
                         return makeError("Endpoint cannot render record in " +
                                 "CLARIN-FCS record format and returned " +
                                 "surrogate diagnostic \"info:srw/diagnostic/1/67\" " +
                                 "instead.");
-                    } else if (data.isDiagnostic("info:clarin/sru/diagnostic/2")) {
+                    } else if (isDiagnostic(d, "info:clarin/sru/diagnostic/2")) {
                         return makeError("Endpoint sent one or more records with record " +
                                         "schema of '" + d.getDetails() +
@@ -115,7 +114,7 @@
                         return makeError(sb.toString());
                     }
-                } else if (FCS_RECORD_SCHEMA.equals(recordSchema)) {
+                } else if (record.isRecordSchema(FCS_RECORD_SCHEMA)) {
                     final LegacyClarinFCSRecordData data =
-                            (LegacyClarinFCSRecordData) record.getData();
+                            (LegacyClarinFCSRecordData) record.getRecordData();
                     final Resource resource = data.getResource();
                     boolean foundKwic = false;
@@ -145,10 +144,10 @@
                 }
             }
-            if (handler.getRecordCount() > req.getMaximumRecords()) {
+            if (res.getRecordsCount() > req.getMaximumRecords()) {
                 return makeError("Endpoint did not honor upper requested limit for " +
                                 "\"maximumRecords\" parameter (up to " +
                                 req.getMaximumRecords() +
                                 " records where requested and endpoint delivered " +
-                                handler.getRecordCount() + " results)");
+                                res.getRecordsCount() + " results)");
             }
             return makeSuccess();
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch13.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch13.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch13.java	(revision 7196)
@@ -21,11 +21,11 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
-import eu.clarin.fcs.tester.FCSTestHandler.SurrogateDiagnostic;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUDiagnostic;
+import eu.clarin.sru.client.SRURecord;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 import eu.clarin.sru.client.SRUSurrogateRecordData;
 import eu.clarin.sru.client.fcs.ClarinFCSConstants;
@@ -66,6 +66,6 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(ClarinFCSConstants.QUERY_TYPE_CQL,
@@ -73,26 +73,25 @@
         req.setRecordSchema(FCS_RECORD_SCHEMA);
         req.setMaximumRecords(5);
-        client.searchRetrieve(req, handler);
-        if (handler.findDiagnostic("info:srw/diagnostic/1/66")) {
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        if (findDiagnostic(res, "info:srw/diagnostic/1/66")) {
             return makeError("Endpoint claims to not " +
                     "support FCS record schema (" + FCS_RECORD_SCHEMA + ")");
-        } else if (handler.getRecordCount() == 0) {
+        } else if (res.getRecordsCount() == 0) {
             return makeWarning("Endpoint has no results " +"" +
                     "for search term \"" + context.getUserSearchTerm() +
                     "\". Please supply a different search term.");
         } else {
-            for (FCSTestHandler.Record record : handler.getRecords()) {
-                String recordSchema = record.getData().getRecordSchema();
-                if (SRUSurrogateRecordData.RECORD_SCHEMA.equals(recordSchema)) {
-                    final SurrogateDiagnostic data =
-                            (SurrogateDiagnostic) record.getData();
+            for (SRURecord record : res.getRecords()) {
+                if (record.isRecordSchema(SRUSurrogateRecordData.RECORD_SCHEMA)) {
+                    final SRUSurrogateRecordData data =
+                            (SRUSurrogateRecordData) record.getRecordData();
                     final SRUDiagnostic d = data.getDiagnostic();
 
-                    if (data.isDiagnostic("info:srw/diagnostic/1/67")) {
+                    if (isDiagnostic(d, "info:srw/diagnostic/1/67")) {
                         return makeError("Endpoint cannot render record in " +
                                 "CLARIN-FCS record format and returned " +
                                 "surrogate diagnostic \"info:srw/diagnostic/1/67\" " +
                                 "instead.");
-                    } else if (data.isDiagnostic("info:clarin/sru/diagnostic/2")) {
+                    } else if (isDiagnostic(d, "info:clarin/sru/diagnostic/2")) {
                         return makeError("Endpoint sent one or more records with record " +
                                         "schema of '" + d.getDetails() +
@@ -114,7 +113,7 @@
                         return makeError(sb.toString());
                     }
-                } else if (FCS_RECORD_SCHEMA.equals(recordSchema)) {
+                } else if (record.isRecordSchema(FCS_RECORD_SCHEMA)) {
                     final ClarinFCSRecordData data =
-                            (ClarinFCSRecordData) record.getData();
+                            (ClarinFCSRecordData) record.getRecordData();
                     final Resource resource = data.getResource();
                     boolean foundHits = false;
@@ -144,10 +143,10 @@
                 }
             }
-            if (handler.getRecordCount() > req.getMaximumRecords()) {
+            if (res.getRecordsCount() > req.getMaximumRecords()) {
                 return makeError("Endpoint did not honor upper requested limit for " +
                                 "\"maximumRecords\" parameter (up to " +
                                 req.getMaximumRecords() +
                                 " records where requested and endpoint delivered " +
-                                handler.getRecordCount() + " results)");
+                                res.getRecordsCount() + " results)");
             }
             return makeSuccess();
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch14.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch14.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch14.java	(revision 7196)
@@ -21,11 +21,11 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
-import eu.clarin.fcs.tester.FCSTestHandler.SurrogateDiagnostic;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUDiagnostic;
+import eu.clarin.sru.client.SRURecord;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 import eu.clarin.sru.client.SRUSurrogateRecordData;
 import eu.clarin.sru.client.fcs.ClarinFCSConstants;
@@ -66,6 +66,9 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
+        if (!context.hasProperty(FCSTestContext.PROP_SUPPORTS_ADV)) {
+            return makeSkipped();
+        }
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(ClarinFCSConstants.QUERY_TYPE_FCS,
@@ -73,26 +76,25 @@
         req.setRecordSchema(FCS_RECORD_SCHEMA);
         req.setMaximumRecords(5);
-        client.searchRetrieve(req, handler);
-        if (handler.findDiagnostic("info:srw/diagnostic/1/66")) {
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        if (findDiagnostic(res, "info:srw/diagnostic/1/66")) {
             return makeError("Endpoint claims to not " +
                     "support FCS record schema (" + FCS_RECORD_SCHEMA + ")");
-        } else if (handler.getRecordCount() == 0) {
+        } else if (res.getRecordsCount() == 0) {
             return makeWarning("Endpoint has no results " +"" +
                     "for search term \"" + context.getUserSearchTerm() +
                     "\". Please supply a different search term.");
         } else {
-            for (FCSTestHandler.Record record : handler.getRecords()) {
-                String recordSchema = record.getData().getRecordSchema();
-                if (SRUSurrogateRecordData.RECORD_SCHEMA.equals(recordSchema)) {
-                    final SurrogateDiagnostic data =
-                            (SurrogateDiagnostic) record.getData();
+            for (SRURecord record : res.getRecords()) {
+                if (record.isRecordSchema(SRUSurrogateRecordData.RECORD_SCHEMA)) {
+                    final SRUSurrogateRecordData data =
+                            (SRUSurrogateRecordData) record.getRecordData();
                     final SRUDiagnostic d = data.getDiagnostic();
 
-                    if (data.isDiagnostic("info:srw/diagnostic/1/67")) {
+                    if (isDiagnostic(d, "info:srw/diagnostic/1/67")) {
                         return makeError("Endpoint cannot render record in " +
                                 "CLARIN-FCS record format and returned " +
                                 "surrogate diagnostic \"info:srw/diagnostic/1/67\" " +
                                 "instead.");
-                    } else if (data.isDiagnostic("info:clarin/sru/diagnostic/2")) {
+                    } else if (isDiagnostic(d, "info:clarin/sru/diagnostic/2")) {
                         return makeError("Endpoint sent one or more records with record " +
                                         "schema of '" + d.getDetails() +
@@ -114,7 +116,7 @@
                         return makeError(sb.toString());
                     }
-                } else if (FCS_RECORD_SCHEMA.equals(recordSchema)) {
+                } else if (record.isRecordSchema(FCS_RECORD_SCHEMA)) {
                     final ClarinFCSRecordData data =
-                            (ClarinFCSRecordData) record.getData();
+                            (ClarinFCSRecordData) record.getRecordData();
                     final Resource resource = data.getResource();
                     boolean foundHits = false;
@@ -154,10 +156,10 @@
                 }
             }
-            if (handler.getRecordCount() > req.getMaximumRecords()) {
+            if (res.getRecordsCount() > req.getMaximumRecords()) {
                 return makeError("Endpoint did not honor upper requested limit for " +
                                 "\"maximumRecords\" parameter (up to " +
                                 req.getMaximumRecords() +
                                 " records where requested and endpoint delivered " +
-                                handler.getRecordCount() + " results)");
+                                res.getRecordsCount() + " results)");
             }
             return makeSuccess();
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch2.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch2.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch2.java	(revision 7196)
@@ -21,10 +21,10 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientConstants;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 import eu.clarin.sru.client.fcs.ClarinFCSRecordData;
 
@@ -56,12 +56,12 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(SRUClientConstants.QUERY_TYPE_CQL,
                 escapeCQL(context.getRandomSearchTerm()));
         req.setRecordSchema(ClarinFCSRecordData.RECORD_SCHEMA);
-        client.searchRetrieve(req, handler);
-        return handler.getDiagnosticCount() == 0
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        return res.getDiagnosticsCount() == 0
                 ? makeSuccess()
                 : makeWarningUnexpectedDiagnostics();
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch3.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch3.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch3.java	(revision 7196)
@@ -21,9 +21,9 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 
 
@@ -52,11 +52,11 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setExtraRequestData(SRUSearchRetrieveRequest.X_MALFORMED_QUERY,
                 SRUSearchRetrieveRequest.MALFORMED_OMIT);
-        client.searchRetrieve(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/7")
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/7")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/7");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch4.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch4.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch4.java	(revision 7196)
@@ -21,10 +21,10 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientConstants;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 
 
@@ -55,6 +55,6 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(SRUClientConstants.QUERY_TYPE_CQL,
@@ -62,6 +62,6 @@
         req.setExtraRequestData(
                 SRUSearchRetrieveRequest.X_MALFORMED_RECORD_XML_ESCAPING, "invalid");
-        client.searchRetrieve(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/71")
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/71")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/71");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch5.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch5.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch5.java	(revision 7196)
@@ -21,10 +21,10 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientConstants;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 
 
@@ -55,6 +55,6 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(SRUClientConstants.QUERY_TYPE_CQL,
@@ -62,6 +62,6 @@
         req.setExtraRequestData(
                 SRUSearchRetrieveRequest.X_MALFORMED_START_RECORD, "invalid");
-        client.searchRetrieve(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/6")
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/6")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/6");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch6.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch6.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch6.java	(revision 7196)
@@ -21,10 +21,10 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientConstants;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 
 
@@ -55,6 +55,6 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(SRUClientConstants.QUERY_TYPE_CQL,
@@ -62,6 +62,6 @@
         req.setExtraRequestData(
                 SRUSearchRetrieveRequest.X_MALFORMED_START_RECORD, "0");
-        client.searchRetrieve(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/6")
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/6")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/6");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch7.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch7.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch7.java	(revision 7196)
@@ -21,10 +21,10 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientConstants;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 
 
@@ -55,6 +55,6 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(SRUClientConstants.QUERY_TYPE_CQL,
@@ -62,6 +62,6 @@
         req.setExtraRequestData(
                 SRUSearchRetrieveRequest.X_MALFORMED_MAXIMUM_RECORDS, "invalid");
-        client.searchRetrieve(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/6")
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/6")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/6");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch8.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch8.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch8.java	(revision 7196)
@@ -21,10 +21,10 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientConstants;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 
 
@@ -55,6 +55,6 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(SRUClientConstants.QUERY_TYPE_CQL,
@@ -62,6 +62,6 @@
         req.setExtraRequestData(
                 SRUSearchRetrieveRequest.X_MALFORMED_MAXIMUM_RECORDS, "-1");
-        client.searchRetrieve(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/6")
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/6")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/6");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch9.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch9.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/tests/TestSearch9.java	(revision 7196)
@@ -21,10 +21,10 @@
 import eu.clarin.fcs.tester.FCSTestContext;
 import eu.clarin.fcs.tester.FCSTestProfile;
-import eu.clarin.fcs.tester.FCSTestHandler;
 import eu.clarin.fcs.tester.FCSTestResult;
+import eu.clarin.sru.client.SRUClient;
 import eu.clarin.sru.client.SRUClientConstants;
 import eu.clarin.sru.client.SRUClientException;
 import eu.clarin.sru.client.SRUSearchRetrieveRequest;
-import eu.clarin.sru.client.SRUSimpleClient;
+import eu.clarin.sru.client.SRUSearchRetrieveResponse;
 
 
@@ -55,11 +55,11 @@
 
     @Override
-    public FCSTestResult perform(FCSTestContext context, SRUSimpleClient client,
-            FCSTestHandler handler) throws SRUClientException {
+    public FCSTestResult perform(FCSTestContext context, SRUClient client)
+            throws SRUClientException {
         SRUSearchRetrieveRequest req = context.createSearchRetrieveRequest();
         req.setQuery(SRUClientConstants.QUERY_TYPE_CQL,
                 "\"" + context.getRandomSearchTerm() + "\" =");
-        client.searchRetrieve(req, handler);
-        return handler.findDiagnostic("info:srw/diagnostic/1/10")
+        SRUSearchRetrieveResponse res = client.searchRetrieve(req);
+        return findDiagnostic(res, "info:srw/diagnostic/1/10")
                 ? makeSuccess()
                 : makeErrorNoDiagnostic("info:srw/diagnostic/1/10");
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/ui/ResultsView.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/ui/ResultsView.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/ui/ResultsView.java	(revision 7196)
@@ -52,4 +52,6 @@
     private static final Resource ICON_ERROR   =
             new ThemeResource("icons/result_error.png");
+    private static final Resource ICON_SKIPPED =
+            new ThemeResource("icons/weather_clouds.png");
     private static final DateTimeFormatter dateFmt =
             DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
@@ -64,4 +66,5 @@
         int count_warning = 0;
         int count_error   = 0;
+        int count_skipped = 0;
         for (FCSTestResult result : results) {
             switch (result.getCode()) {
@@ -74,4 +77,7 @@
             case ERROR:
                 count_error++;
+                break;
+            case SKIPPED:
+                count_skipped++;
                 break;
             } // switch
@@ -115,6 +121,6 @@
 
         final Label resultsOverview = new Label(
-                String.format("Success: %d,  Warnings: %d, Errors: %d",
-                        count_success, count_warning, count_error));
+                String.format("Success: %d,  Warnings: %d, Errors: %d, Skipped: %d",
+                        count_success, count_warning, count_error, count_skipped));
         addComponent(resultsOverview);
 
@@ -221,4 +227,6 @@
             case ERROR:
                 return ICON_ERROR;
+            case SKIPPED:
+                return  ICON_SKIPPED;
             }
         }
Index: FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/ui/TesterUI.java
===================================================================
--- FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/ui/TesterUI.java	(revision 7189)
+++ FCSEndpointTester/trunk/src/main/java/eu/clarin/fcs/tester/ui/TesterUI.java	(revision 7196)
@@ -196,10 +196,10 @@
         profileCombo.addItem(PROFILE_AUTODETECT);
         profileCombo.setItemCaption(PROFILE_AUTODETECT, "Auto detect");
+        profileCombo.addItem(PROFILE_FCS_LEGACY);
+        profileCombo.setItemCaption(PROFILE_FCS_LEGACY, "Legacy FCS");
+        profileCombo.addItem(PROFILE_FCS_1_0);
+        profileCombo.setItemCaption(PROFILE_FCS_1_0, "CLARIN-FCS 1.0");
         profileCombo.addItem(PROFILE_FCS_2_0);
         profileCombo.setItemCaption(PROFILE_FCS_2_0, "CLARIN-FCS 2.0");
-        profileCombo.addItem(PROFILE_FCS_1_0);
-        profileCombo.setItemCaption(PROFILE_FCS_1_0, "CLARIN-FCS 1.0");
-        profileCombo.addItem(PROFILE_FCS_LEGACY);
-        profileCombo.setItemCaption(PROFILE_FCS_LEGACY, "Legacy FCS");
         profileCombo.select(PROFILE_AUTODETECT);
         profileCombo.setNullSelectionAllowed(false);
