--- a/src/net/timbusproject/dpes/alternative/ReasonerClient/SOAP/DependencyReasonerClient.java
+++ b/src/net/timbusproject/dpes/alternative/ReasonerClient/SOAP/DependencyReasonerClient.java
@@ -18,16 +18,20 @@
 
 package net.timbusproject.dpes.alternative.ReasonerClient.SOAP;
 
-import java.io.IOException;
-
+import ch.lambdaj.function.convert.Converter;
 import net.timbusproject.dpes.alternative.ReasonerClient.REST.RequestData;
 import net.timbusproject.dpes.alternative.ReasonerClient.common.ReasonerClientException;
 import net.timbusproject.dpes.alternative.ReasonerClient.common.ResponseData;
-import net.timbusproject.reasoner.Accept;
+import net.timbusproject.reasoner.Result;
 import net.timbusproject.reasoner.ServerService;
+import net.timbusproject.reasoner.VersionedPackage;
+import org.slf4j.LoggerFactory;
 
-import org.json.JSONObject;
-import org.slf4j.LoggerFactory;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import static ch.lambdaj.Lambda.convert;
 
 public class DependencyReasonerClient {
 
@@ -36,7 +40,7 @@
     public DependencyReasonerClient() {
     }
 
-    /***
+    /**
      * This might take some minutes because of the synchronous invocation of the reasoner.
      */
     public ResponseData request(RequestData requestData) throws IOException, ReasonerClientException {
@@ -44,31 +48,45 @@
         String uuid = initiateReasoning(requestData);
         LOG.info("Got UUID: " + uuid);
         LOG.info("Waiting for completion...");
-        JSONObject response = retrieveResult(uuid);
-        return new ResponseData(response);
+        return retrieveResult(uuid);
     }
 
-    private JSONObject retrieveResult(String uuid) throws IOException, ReasonerClientException {
+    private ResponseData retrieveResult(String uuid) throws IOException, ReasonerClientException {
         ServerService serverService = new ServerService();
-        JSONObject response = new JSONObject(serverService.getServerPort().requestStatus(uuid, Accept.JSON).getBody());
-        while (response.getString("status").equalsIgnoreCase("started")) {
+        Result response = serverService.getServerPort().get(uuid);
+        while (response == null) {
             try {
                 Thread.sleep(1 * 1000);
             } catch (InterruptedException e) {
                 throw new ReasonerClientException(e);
             }
-            response = new JSONObject(serverService.getServerPort().requestStatus(uuid, Accept.JSON).getBody());
+            response = serverService.getServerPort().get(uuid);
         }
-        return response;
+        if (response.getReason() != null && !response.getReason().isEmpty()) {
+            throw new ReasonerClientException(response.getReason());
+        }
+        return new ResponseData(response);
     }
 
     private String initiateReasoning(RequestData requestData) throws IOException, ReasonerClientException {
         ServerService serverService = new ServerService();
-        JSONObject response = new JSONObject(serverService.getServerPort().reason(requestData.toString(), Accept.JSON).getBody());
-        String status = response.getString("status");
-        if (!status.equalsIgnoreCase("started")) {
-            throw new ReasonerClientException("Request failed, returned status: " + status);
-        }
-        return response.getString("uuid");
+        return serverService.getServerPort().reason(
+                toPackages(requestData.getToInstall()),
+                toPackages(requestData.getToRemove()),
+                new ArrayList<VersionedPackage>(),
+                requestData.getTarget(),
+                requestData.getDataset()
+        );
+    }
+
+    private List<VersionedPackage> toPackages(List<String> packageList) {
+        return convert(packageList, new Converter<String, VersionedPackage>() {
+            @Override
+            public VersionedPackage convert(String s) {
+                VersionedPackage pkg = new VersionedPackage();
+                pkg.setName(s);
+                return pkg;
+            }
+        });
     }
 }