diff --git a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
index b65416fb578e58cbfab95d71fddf6b7e1182eb8d..43c80637808636a700db3cfc5fc107a374dd34ec 100644
--- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
@@ -293,6 +293,7 @@ public class ExperimentApi extends WokenClientController {
         new Thread(() -> {
             String query = experiment.computeExaremeQuery(params);
             String url = miningExaremeQueryUrl + "/" + algoCode;
+
             // Results are stored in the experiment object
             try {
                 StringBuilder results = new StringBuilder();
diff --git a/src/main/java/eu/hbp/mip/model/Experiment.java b/src/main/java/eu/hbp/mip/model/Experiment.java
index 377e1f00b95e341ec970e58b20c1b584403e5c3b..c42fb6eb88381396d1e640a872e757d3048010d8 100644
--- a/src/main/java/eu/hbp/mip/model/Experiment.java
+++ b/src/main/java/eu/hbp/mip/model/Experiment.java
@@ -138,13 +138,39 @@ public class Experiment {
     public String computeExaremeQuery(List<AlgorithmParam> params) {
         List<ExaremeQueryElement> queryElements = new LinkedList<>();
 
+        // parameters
+        String design = "";
+        if (params != null) {
+            for (AlgorithmParam p : params)
+            {
+                ExaremeQueryElement paramEl = new ExaremeQueryElement();
+                paramEl.setName(p.getCode());
+                paramEl.setDesc("");
+                paramEl.setValue(p.getValue());
+                queryElements.add(paramEl);
+
+                if (p.getCode().equals("design")) {
+                    design = p.getValue();
+                }
+            }
+        }
+
+        List<String> variables = new ArrayList<>();
+        List<String> covariables = new ArrayList<>();
+        List<String> groupings = new ArrayList<>();
+
+        for (Variable var : model.getQuery().getVariables()) { variables.add(var.getCode()); }
+        for (Variable var : model.getQuery().getCovariables()) { covariables.add(var.getCode()); }
+        for (Variable var : model.getQuery().getGrouping()) { groupings.add(var.getCode()); }
+
         // Set algorithm specific queries
-        if (this.isExaremeAlgorithm()._2.equals(WP_K_MEANS)) {
+        String algoName = this.isExaremeAlgorithm()._2;
+        if (algoName.equals(WP_K_MEANS)) {
             // columns
             List<String> columns = new ArrayList<>();
-            for (Variable var : model.getQuery().getVariables()) { columns.add(var.getCode()); }
-            for (Variable var : model.getQuery().getCovariables()) { columns.add(var.getCode()); }
-            for (Variable var : model.getQuery().getGrouping()) { columns.add(var.getCode()); }
+            columns.addAll(variables);
+            columns.addAll(covariables);
+            columns.addAll(groupings);
             StringBuilder sb = new StringBuilder();
             int i = 0;
             for (String s : columns)
@@ -160,18 +186,38 @@ public class Experiment {
             columnsEl.setDesc("");
             columnsEl.setValue(sb.toString());
             queryElements.add(columnsEl);
-        }
+        } else if (algoName.equals(WP_LINEAR_REGRESSION)) {
+            List<String> vars = new ArrayList<>();
+            vars.addAll(variables);
+            vars.addAll(covariables);
 
-        // parameters
-        if (params != null) {
-            for (AlgorithmParam p : params)
+            String operator = design.equals("factorial") ? "*" : "+";
+            StringBuilder sb = new StringBuilder();
+            int i = 0;
+            for (String s : vars)
             {
-                ExaremeQueryElement paramEl = new ExaremeQueryElement();
-                paramEl.setName(p.getCode());
-                paramEl.setDesc("");
-                paramEl.setValue(p.getValue());
-                queryElements.add(paramEl);
+                i++;
+                sb.append(s);
+                if (i < vars.size()) {
+                    sb.append(operator);
+                }
+            }
+            ExaremeQueryElement xEl = new ExaremeQueryElement();
+            xEl.setName("x");
+            xEl.setDesc("");
+            xEl.setValue(sb.toString());
+            queryElements.add(xEl);
+
+            StringBuilder sby = new StringBuilder();
+            for (String s : variables)
+            {
+                sby.append(s);
             }
+            ExaremeQueryElement yEl = new ExaremeQueryElement();
+            yEl.setName("y");
+            yEl.setDesc("");
+            yEl.setValue(sby.toString());
+            queryElements.add(yEl);
         }
 
         // datasets
@@ -190,8 +236,7 @@ public class Experiment {
         ExaremeQueryElement datasetsEl = new ExaremeQueryElement();
         datasetsEl.setName("dataset");
         datasetsEl.setDesc("");
-        datasetsEl.setValue("adni,ppmi,edsd");
-//        datasetsEl.setValue(datasets.toString());
+        datasetsEl.setValue(datasets.toString());
         queryElements.add(datasetsEl);
 
         return gson.toJson(queryElements);
diff --git a/src/main/resources/data/exareme_algorithms.json b/src/main/resources/data/exareme_algorithms.json
index 1e4ade443bcd959365991bb7abf4975bd038976a..4f05bb102fe2c5305ddd820f0cf9a10e4b3ef20d 100644
--- a/src/main/resources/data/exareme_algorithms.json
+++ b/src/main/resources/data/exareme_algorithms.json
@@ -7,23 +7,23 @@
     "description": "Linear Regression using Exareme services",
     "parameters": [
       {
-        "code": "x",
-        "label": "x",
-        "type": "string",
-        "description": "The expression for x-axis"
-      },
-      {
-        "code": "y",
-        "label": "y",
-        "type": "string",
-        "description": "The expression for y-axis"
+        "code": "design",
+        "default_value": "factorial",
+        "description": "The type of multi-factors design. Choose 'factorial' to enable interactions analysis or 'additive' for a model without no interaction at all.",
+        "label": "design",
+        "type": "enumeration",
+        "values": [
+          "factorial",
+          "additive"
+        ]
       }
     ],
     "constraints": {
       "variable": {
-        "real": true,
-        "binominal": true,
-        "polynominal": true
+        "binominal": false,
+        "integer": true,
+        "polynominal": false,
+        "real": true
       }
     }
   },