diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index 160ab2668788977c2be6db15acf9ce96dad28879..709b0bc0940f9c3c933a9a7f33952a1c23cbe93e 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -75,7 +75,7 @@ ServerConnector.returnUserOrSystemColor = function(userColor, systemPromisedColo
     color = (color & 0xFFFFFF);
     return color;
   });
-}
+};
 
 ServerConnector.getSimpleOverlayColorInt = function() {
   var self = this;
@@ -103,9 +103,6 @@ ServerConnector.sendGetRequest = function(url, description) {
 
 ServerConnector.sendRequest = function(params) {
   var self = this;
-  if (arguments.length > 1) {
-    return Promise.reject(new Error("Only two arguments are supported"));
-  }
 
   if (self.getSessionData().getToken() === undefined) {
     self.getSessionData().setLogin(undefined);
@@ -140,9 +137,9 @@ ServerConnector._sendRequest = function(params) {
       if (error) {
         reject(error);
       } else if (response.statusCode !== 200) {
-        reject(new NetworkError(url + " rejected with status code: " + response.statusCode, {
+        reject(new NetworkError(params.url + " rejected with status code: " + response.statusCode, {
           content : body,
-          url : url,
+          url : params.url,
           statusCode : response.statusCode
         }));
       } else {
@@ -153,112 +150,41 @@ ServerConnector._sendRequest = function(params) {
 };
 
 ServerConnector.sendPostRequest = function(url, params) {
-  var self = this;
-  if (self.getSessionData().getToken() === undefined) {
-    self.getSessionData().setLogin(undefined);
-    window.location.reload(false);
-  }
-  return new Promise(function(resolve, reject) {
-    request({
-      method : "POST",
-      url : url,
-      form : params
-    }, function(error, response, body) {
-      if (error) {
-        reject(new NetworkError(error, {
-          content : body,
-          url : url
-        }));
-
-      } else if (response.statusCode !== 200) {
-        reject(new NetworkError(url + " rejected with status code: " + response.statusCode, {
-          content : body,
-          url : url,
-          statusCode : response.statusCode
-        }));
-      } else {
-        resolve(body);
-      }
-    });
+  return this.sendRequest({
+    method : "POST",
+    url : url,
+    form : params
   });
 };
 
 ServerConnector.sendPutRequest = function(url, params) {
-  var self = this;
-  if (self.getSessionData().getToken() === undefined) {
-    self.getSessionData().setLogin(undefined);
-    window.location.reload(false);
-  }
-  return new Promise(function(resolve, reject) {
-    request({
-      method : "POST",
-      url : url,
-      form : params
-    }, function(error, response, body) {
-      if (error) {
-        reject(error);
-      } else if (response.statusCode !== 200) {
-        reject(new Error(url + " rejected with status code: " + response.statusCode));
-      } else {
-        resolve(body);
-      }
-    });
+  return this.sendRequest({
+    method : "PUT",
+    url : url,
+    form : params
   });
 };
 
 ServerConnector.sendDeleteRequest = function(url, json) {
-  var self = this;
-  if (self.getSessionData().getToken() === undefined) {
-    self.getSessionData().setLogin(undefined);
-    window.location.reload(false);
-  }
-  return new Promise(function(resolve, reject) {
-    request({
-      method : "DELETE",
-      url : url,
-      json : json,
-    }, function(error, response, body) {
-      if (error) {
-        reject(error);
-      } else if (response.statusCode !== 200) {
-        reject(new Error(url + " rejected with status code: " + response.statusCode));
-      } else {
-        resolve(body);
-      }
-    });
+  return this.sendRequest({
+    method : "DELETE",
+    url : url,
+    json : json,
   });
 };
 
-ServerConnector.sendPatchRequest = function(url, params) {
-  var self = this;
-  if (self.getSessionData().getToken() === undefined) {
-    self.getSessionData().setLogin(undefined);
-    window.location.reload(false);
-  }
-  return new Promise(function(resolve, reject) {
-    request({
-      method : "PATCH",
-      url : url,
-      json : params,
-    }, function(error, response, body) {
-      if (error) {
-        reject(error);
-      } else if (response.statusCode !== 200) {
-        reject(new Error(url + " rejected with status code: " + response.statusCode));
-      } else {
-        resolve(body);
-      }
-    });
+ServerConnector.sendPatchRequest = function(url, json) {
+  return this.sendRequest({
+    method : "PATCH",
+    url : url,
+    json : json,
   });
 };
 
-ServerConnector.getToken = function(token) {
-  if (token !== undefined) {
-    return Promise.resolve(token);
-  }
-
+ServerConnector.getToken = function() {
   var self = this;
-  token = self.getSessionData(null).getToken();
+
+  var token = self.getSessionData(null).getToken();
   if (token === undefined) {
     return self.login();
   } else {
@@ -269,6 +195,8 @@ ServerConnector.getToken = function(token) {
         token : token
       }).then(function() {
         return token;
+        // if there was an error accessing configuration it means our token is
+        // invalid
       }, function() {
         return self.login();
       });
diff --git a/frontend-js/src/test/js/ServerConnector-mock.js b/frontend-js/src/test/js/ServerConnector-mock.js
index 9e227852697fc3c1ba2793728869b2434b2aa027..09002e5b10c4ff5584842bb6a735bce24586f14f 100644
--- a/frontend-js/src/test/js/ServerConnector-mock.js
+++ b/frontend-js/src/test/js/ServerConnector-mock.js
@@ -15,28 +15,47 @@ var request = require('request');
 var ServerConnectorMock = OriginalServerConnector;
 
 function replaceAsterisk(str) {
-  return str.replace(/\*/g,"all").replace(/\:/g,".");
+  return str.replace(/\*/g, "all").replace(/\:/g, ".");
 }
 function urlToFileName(url) {
   var result = url;
   var token = OriginalServerConnector.getSessionData().getToken();
-  if (token!==undefined && token!=="" && url.startsWith("./testFiles/apiCalls")) {
-    if (!result.endsWith("&") &&!result.endsWith("_") ) {
-      result +="/";
+  if (token !== undefined && token !== "" && url.startsWith("./testFiles/apiCalls")) {
+    if (!result.endsWith("&") && !result.endsWith("_")) {
+      result += "/";
     }
-    result+="token=" +token+"&";
+    result += "token=" + token + "&";
   }
-  		
+
   return replaceAsterisk(result);
 }
 
+function encodeParams(params) {
+  var result = {};
+  for ( var key in params) {
+    if (params.hasOwnProperty(key)) {
+      result[key] = encodeURIComponent(params[key]);
+    }
+  }
+  return result;
+}
+
+
 ServerConnectorMock._sendRequest = function(params) {
+  var self = this;
   var url = params.url;
   var prefix = params.method;
-  if (prefix==="GET") {
+  if (prefix === "GET") {
     prefix = "";
   } else {
-    prefix +="_";
+    prefix = "/" + prefix + "_";
+  }
+  var sufix = "";
+  if (params.form !== undefined) {
+    sufix += self.createGetParams(encodeParams(params.form));
+  }
+  if (params.json !== undefined) {
+    sufix += self.createGetParams(params.json);
   }
   return new Promise(function(resolve, reject) {
     if (url.indexOf("http") === 0) {
@@ -50,7 +69,7 @@ ServerConnectorMock._sendRequest = function(params) {
         }
       });
     } else {
-      var fileName = urlToFileName(url);
+      var fileName = urlToFileName(url + prefix + sufix);
       fs.readFile(fileName, 'utf8', function(err, content) {
         if (err) {
           reject(new NetworkError(err.message, {
@@ -66,136 +85,6 @@ ServerConnectorMock._sendRequest = function(params) {
   });
 };
 
-function encodeParams(params) {
-  var result = {};
-  for ( var key in params) {
-    if (params.hasOwnProperty(key)) {
-      result[key] = encodeURIComponent(params[key]);
-    }
-  }
-  return result;
-}
-
-ServerConnectorMock.sendPostRequest = function(url, params) {
-  var self = this;
-  return new Promise(function(resolve, reject) {
-    if (url.indexOf("http") === 0) {
-      request.post({
-        url : url,
-        form : params
-      }, function(error, response, body) {
-        if (error) {
-          reject(error);
-
-        } else if (response.statusCode !== 200) {
-          reject(response);
-        } else {
-          resolve(body);
-        }
-      });
-    } else {
-      var mockUrl = urlToFileName(url + "/POST_" + self.createGetParams(encodeParams(params)));
-      fs.readFile(mockUrl, 'utf8', function(err, content) {
-        if (err) {
-          reject(err);
-        } else {
-          resolve(content);
-        }
-      });
-    }
-  });
-};
-
-ServerConnectorMock.sendPutRequest = function(url, params) {
-  var self = this;
-  return new Promise(function(resolve, reject) {
-    if (url.indexOf("http") === 0) {
-      request.put({
-        url : url,
-        form : params
-      }, function(error, response, body) {
-        if (error) {
-          reject(error);
-
-        } else if (response.statusCode !== 200) {
-          reject(response);
-        } else {
-          resolve(body);
-        }
-      });
-    } else {
-      var mockUrl = urlToFileName(url + "/PUT_" + self.createGetParams(encodeParams(params)));
-      fs.readFile(mockUrl, 'utf8', function(err, content) {
-        if (err) {
-          reject(err);
-        } else {
-          resolve(content);
-        }
-      });
-    }
-  });
-};
-
-ServerConnectorMock.sendDeleteRequest = function(url, params) {
-  var self = this;
-  return new Promise(function(resolve, reject) {
-    if (url.indexOf("http") === 0) {
-      request.delete({
-        url : url,
-        form : params
-      }, function(error, response, body) {
-        if (error) {
-          reject(error);
-
-        } else if (response.statusCode !== 200) {
-          reject(response);
-        } else {
-          resolve(body);
-        }
-      });
-    } else {
-      var mockUrl = urlToFileName(url + "/DELETE_" + self.createGetParams(encodeParams(params)));
-      fs.readFile(mockUrl, 'utf8', function(err, content) {
-        if (err) {
-          reject(err);
-        } else {
-          resolve(JSON.parse(content));
-        }
-      });
-    }
-  });
-};
-
-ServerConnectorMock.sendPatchRequest = function(url, params) {
-  var self = this;
-  return new Promise(function(resolve, reject) {
-    if (url.indexOf("http") === 0) {
-      request.delete({
-        url : url,
-        form : params
-      }, function(error, response, body) {
-        if (error) {
-          reject(error);
-
-        } else if (response.statusCode !== 200) {
-          reject(response);
-        } else {
-          resolve(body);
-        }
-      });
-    } else {
-      var mockUrl = urlToFileName(url + "/PATCH_" + self.createGetParams(params));
-      fs.readFile(mockUrl, 'utf8', function(err, content) {
-        if (err) {
-          reject(err);
-        } else {
-          resolve(JSON.parse(content));
-        }
-      });
-    }
-  });
-};
-
 ServerConnectorMock.getApiBaseUrl = function() {
   return "./testFiles/apiCalls/";
 };
diff --git a/frontend-js/src/test/js/ServerConnector-test.js b/frontend-js/src/test/js/ServerConnector-test.js
index 4ac442e701a3b947299dbdd595b4a3ad3508aa1f..3bf7e2c47e3b1407a384d80d39a66a689d7f65b8 100644
--- a/frontend-js/src/test/js/ServerConnector-test.js
+++ b/frontend-js/src/test/js/ServerConnector-test.js
@@ -275,9 +275,9 @@ describe('ServerConnector', function() {
   describe('readFile', function() {
     it('check session expired', function() {
       ServerConnector.getSessionData().setToken(undefined);
-      assert.ok(ServerConnector.getSessionData().getLogin())
+      assert.ok(ServerConnector.getSessionData().getLogin());
       return ServerConnector.sendGetRequest("package.json", "Downloading projects").then(function() {
-        assert.notOk(ServerConnector.getSessionData().getLogin())
+        assert.notOk(ServerConnector.getSessionData().getLogin());
       });
     });
   });