diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index 405775ce2da299b3b7be51e38ec9f6d0457edaf8..160ab2668788977c2be6db15acf9ce96dad28879 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -93,20 +93,34 @@ ServerConnector.getMaxOverlayColorInt = function() {
   });
 };
 
-ServerConnector.readFile = function(url, description) {
+ServerConnector.sendGetRequest = function(url, description) {
+  return this.sendRequest({
+    url : url,
+    description : description,
+    method : "GET"
+  });
+};
+
+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);
     window.location.reload(false);
   }
 
-  if (description === undefined) {
-    description = url;
+  var description = params.url;
+  if (params.description !== undefined) {
+    description = params.description;
+    params.description = undefined;
   }
+
   var content;
   return self.callListeners("onDataLoadStart", description).then(function() {
-    return self._readFile(url);
+    return self._sendRequest(params);
   }).then(function(result) {
     content = result;
     return self.callListeners("onDataLoadStop", description);
@@ -117,14 +131,12 @@ ServerConnector.readFile = function(url, description) {
   }).then(function() {
     return content;
   });
+
 };
 
-ServerConnector._readFile = function(url) {
+ServerConnector._sendRequest = function(params) {
   return new Promise(function(resolve, reject) {
-    request({
-      method : "GET",
-      url : url
-    }, function(error, response, body) {
+    request(params, function(error, response, body) {
       if (error) {
         reject(error);
       } else if (response.statusCode !== 200) {
@@ -194,7 +206,7 @@ ServerConnector.sendPutRequest = function(url, params) {
   });
 };
 
-ServerConnector.sendDeleteRequest = function(url, params) {
+ServerConnector.sendDeleteRequest = function(url, json) {
   var self = this;
   if (self.getSessionData().getToken() === undefined) {
     self.getSessionData().setLogin(undefined);
@@ -204,7 +216,7 @@ ServerConnector.sendDeleteRequest = function(url, params) {
     request({
       method : "DELETE",
       url : url,
-      json : params,
+      json : json,
     }, function(error, response, body) {
       if (error) {
         reject(error);
@@ -621,7 +633,7 @@ ServerConnector.getConfiguration = function(params) {
   }
   var self = this;
   if (this._configuration === undefined) {
-    return self.readFile(self.getConfigurationUrl()).then(function(content) {
+    return self.sendGetRequest(self.getConfigurationUrl()).then(function(content) {
       self._configuration = new Configuration(JSON.parse(content));
       return Promise.resolve(self._configuration);
     });
@@ -643,7 +655,7 @@ ServerConnector.getModels = function(projectId) {
   var self = this;
   return self.getProjectId(projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getModelsUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getModelsUrl(queryParams, filterParams));
   }).then(function(content) {
     var models = [];
     var parsedJson = JSON.parse(content);
@@ -661,7 +673,7 @@ ServerConnector.getProject = function(projectId) {
   var self = this;
   return self.getProjectId(projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getProjectUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getProjectUrl(queryParams, filterParams));
   }).then(function(content) {
     var downloadedProject = new Project(content);
     if (self._projectsById[projectId] !== undefined) {
@@ -698,7 +710,7 @@ ServerConnector.getProjects = function(reload) {
   if (self._projects.length > 0 && !reload) {
     return Promise.resolve(self._projects);
   } else {
-    return self.readFile(self.getProjectsUrl()).then(function(content) {
+    return self.sendGetRequest(self.getProjectsUrl()).then(function(content) {
       var parsedData = JSON.parse(content);
       self._projects.length = 0;
       for (var i = 0; i < parsedData.length; i++) {
@@ -722,7 +734,7 @@ ServerConnector.getProjectStatistics = function(projectId) {
   var content;
   return self.getProjectId(projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getProjectStatisticsUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getProjectStatisticsUrl(queryParams, filterParams));
   }).then(function(result) {
     content = JSON.parse(result);
     return self.getConfiguration();
@@ -750,7 +762,7 @@ ServerConnector.getUser = function(login) {
   };
   var filterParams = {};
 
-  return self.readFile(self.getUserUrl(queryParams, filterParams)).then(function(content) {
+  return self.sendGetRequest(self.getUserUrl(queryParams, filterParams)).then(function(content) {
     var obj = JSON.parse(content);
     return new User(obj);
   });
@@ -763,7 +775,7 @@ ServerConnector.getOverlays = function(projectId) {
   return new Promise(function(resolve, reject) {
     self.getProjectId(projectId).then(function(result) {
       queryParams.projectId = result;
-      return self.readFile(self.getOverlaysUrl(queryParams, filterParams));
+      return self.sendGetRequest(self.getOverlaysUrl(queryParams, filterParams));
     }).then(function(content) {
       var arr = JSON.parse(content);
       var result = [];
@@ -788,7 +800,7 @@ ServerConnector.getOverlayElements = function(overlayId, projectId) {
   var filterParams = {};
   return self.getProjectId(projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getOverlayElementsUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getOverlayElementsUrl(queryParams, filterParams));
   }).then(function(content) {
     var arr = JSON.parse(content);
     var result = [];
@@ -818,7 +830,7 @@ ServerConnector.getFullOverlayElement = function(params) {
 
   return self.getProjectId(params.projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getFullOverlayElementUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getFullOverlayElementUrl(queryParams, filterParams));
   }).then(function(content) {
     var element = JSON.parse(content);
     var result = null;
@@ -864,7 +876,7 @@ ServerConnector.getOverlayById = function(overlayId, projectId) {
   var filterParams = {};
   return self.getProjectId(projectId).then(function(data) {
     queryParams.projectId = data;
-    return self.readFile(self.getOverlayByIdUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getOverlayByIdUrl(queryParams, filterParams));
   }).then(function(content) {
     return new LayoutData(JSON.parse(content));
   });
@@ -889,7 +901,7 @@ ServerConnector.getReactions = function(params) {
     if (filterParams.id.length > 100 || filterParams.participantId.length > 100) {
       return self.sendPostRequest(self.getReactionsUrl(queryParams), filterParams);
     } else {
-      return self.readFile(self.getReactionsUrl(queryParams, filterParams));
+      return self.sendGetRequest(self.getReactionsUrl(queryParams, filterParams));
     }
 
   }).then(function(content) {
@@ -929,7 +941,7 @@ ServerConnector.getAliases = function(params) {
     if (filterParams.id.length > 100) {
       return self.sendPostRequest(self.getAliasesUrl(queryParams), filterParams);
     } else {
-      return self.readFile(self.getAliasesUrl(queryParams, filterParams));
+      return self.sendGetRequest(self.getAliasesUrl(queryParams, filterParams));
     }
   }).then(function(content) {
     var array = JSON.parse(content);
@@ -958,7 +970,7 @@ ServerConnector.getComments = function(params) {
   };
   return self.getProjectId(params.projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getCommentsUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getCommentsUrl(queryParams, filterParams));
   }).then(function(content) {
     var array = JSON.parse(content);
     var result = [];
@@ -990,7 +1002,7 @@ ServerConnector.getClosestElementsByCoordinates = function(params) {
   };
   return self.getProjectId(params.projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getSearchUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getSearchUrl(queryParams, filterParams));
   }).then(function(content) {
     var array = JSON.parse(content);
     var result = [];
@@ -1042,7 +1054,7 @@ ServerConnector.getElementsByQuery = function(params) {
 
   return self.getProjectId(params.projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getSearchUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getSearchUrl(queryParams, filterParams));
   }).then(function(content) {
     var array = JSON.parse(content);
     var result = [];
@@ -1061,7 +1073,7 @@ ServerConnector.getDrugsByQuery = function(params) {
   };
   return self.getProjectId(params.projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getSearchDrugsUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getSearchDrugsUrl(queryParams, filterParams));
   }).then(function(content) {
     var array = JSON.parse(content);
     var result = [];
@@ -1080,7 +1092,7 @@ ServerConnector.getMiRnasByQuery = function(params) {
   };
   return self.getProjectId(params.projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getSearchMiRnasUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getSearchMiRnasUrl(queryParams, filterParams));
   }).then(function(content) {
     var array = JSON.parse(content);
     var result = [];
@@ -1099,7 +1111,7 @@ ServerConnector.getChemicalsByQuery = function(params) {
   };
   return self.getProjectId(params.projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getSearchChemicalsUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getSearchChemicalsUrl(queryParams, filterParams));
   }).then(function(content) {
     var array = JSON.parse(content);
     var result = [];
@@ -1198,7 +1210,7 @@ ServerConnector.getDrugNamesByTarget = function(params) {
   };
   return self.getProjectId(params.projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getSearchDrugsUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getSearchDrugsUrl(queryParams, filterParams));
   }).then(function(content) {
     var result = [];
     var object = JSON.parse(content);
@@ -1218,7 +1230,7 @@ ServerConnector.getMiRnaNamesByTarget = function(params) {
   };
   return self.getProjectId(params.projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getSearchMiRnasUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getSearchMiRnasUrl(queryParams, filterParams));
   }).then(function(content) {
     var result = [];
     var object = JSON.parse(content);
@@ -1238,7 +1250,7 @@ ServerConnector.getChemicalNamesByTarget = function(params) {
   };
   return self.getProjectId(params.projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getSearchChemicalsUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getSearchChemicalsUrl(queryParams, filterParams));
   }).then(function(content) {
     var result = [];
     var object = JSON.parse(content);
@@ -1334,7 +1346,7 @@ ServerConnector.getSuggestedQueryList = function(projectId) {
   var self = this;
   return self.getProjectId(projectId).then(function(result) {
     projectId = result;
-    return self.readFile(self.getSuggestedQueryListUrl({
+    return self.sendGetRequest(self.getSuggestedQueryListUrl({
       projectId : projectId
     }));
   }).then(function(content) {
@@ -1365,7 +1377,7 @@ ServerConnector.getPublications = function(params) {
   };
   return self.getProjectId(params.projectId).then(function(result) {
     queryParams.projectId = result;
-    return self.readFile(self.getPublicationsUrl(queryParams, filterParams));
+    return self.sendGetRequest(self.getPublicationsUrl(queryParams, filterParams));
   }).then(function(content) {
     return JSON.parse(content);
   });
@@ -1374,7 +1386,7 @@ ServerConnector.getPublications = function(params) {
 ServerConnector.getReferenceGenome = function(params) {
   var self = this;
   var filterParams = {};
-  return self.readFile(self.getReferenceGenomeUrl(params, filterParams)).then(function(content) {
+  return self.sendGetRequest(self.getReferenceGenomeUrl(params, filterParams)).then(function(content) {
     return new ReferenceGenome(JSON.parse(content));
   });
 };
diff --git a/frontend-js/src/test/js/ServerConnector-mock.js b/frontend-js/src/test/js/ServerConnector-mock.js
index b77bd3b4d42cda4d9312e16230f6baf967a69340..9e227852697fc3c1ba2793728869b2434b2aa027 100644
--- a/frontend-js/src/test/js/ServerConnector-mock.js
+++ b/frontend-js/src/test/js/ServerConnector-mock.js
@@ -30,7 +30,14 @@ function urlToFileName(url) {
   return replaceAsterisk(result);
 }
 
-ServerConnectorMock._readFile = function(url) {
+ServerConnectorMock._sendRequest = function(params) {
+  var url = params.url;
+  var prefix = params.method;
+  if (prefix==="GET") {
+    prefix = "";
+  } else {
+    prefix +="_";
+  }
   return new Promise(function(resolve, reject) {
     if (url.indexOf("http") === 0) {
       request.get(url, function(error, response, body) {
diff --git a/frontend-js/src/test/js/ServerConnector-test.js b/frontend-js/src/test/js/ServerConnector-test.js
index 1518d2ead490d316d589fa552ee69c1f34d454e8..4ac442e701a3b947299dbdd595b4a3ad3508aa1f 100644
--- a/frontend-js/src/test/js/ServerConnector-test.js
+++ b/frontend-js/src/test/js/ServerConnector-test.js
@@ -118,7 +118,7 @@ describe('ServerConnector', function() {
     }).then(function(url) {
       assert.ok(url);
       assert.ok(url.indexOf(id) >= 0);
-      return ServerConnector.readFile(url);
+      return ServerConnector.sendGetRequest(url);
     });
   });
 
@@ -130,7 +130,7 @@ describe('ServerConnector', function() {
     }).then(function(url) {
       assert.ok(url);
       assert.ok(url.indexOf(modelId) >= 0);
-      return ServerConnector.readFile(url);
+      return ServerConnector.sendGetRequest(url);
     });
   });
 
@@ -142,14 +142,14 @@ describe('ServerConnector', function() {
     }).then(function(url) {
       assert.ok(url);
       assert.ok(url.indexOf(modelId) >= 0);
-      return ServerConnector.readFile(url);
+      return ServerConnector.sendGetRequest(url);
     });
   });
 
   it('getProjectSourceDownloadUrl', function() {
     return ServerConnector.getProjectSourceDownloadUrl().then(function(url) {
       assert.ok(url);
-      return ServerConnector.readFile(url);
+      return ServerConnector.sendGetRequest(url);
     });
   });
 
@@ -276,7 +276,7 @@ describe('ServerConnector', function() {
     it('check session expired', function() {
       ServerConnector.getSessionData().setToken(undefined);
       assert.ok(ServerConnector.getSessionData().getLogin())
-      return ServerConnector.readFile("package.json", "Downloading projects").then(function() {
+      return ServerConnector.sendGetRequest("package.json", "Downloading projects").then(function() {
         assert.notOk(ServerConnector.getSessionData().getLogin())
       });
     });
diff --git a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js
index bf7b6b407a8f8ca0a894dd8a9aae5a33f747fd19..388d4e32c238af5a7a21a374a8486959425b4bd9 100644
--- a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js
+++ b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js
@@ -109,7 +109,7 @@ describe('OverlayPanel', function() {
       customMap : map
     });
 
-    return ServerConnector.readFile("testFiles/overlay/good.txt").then(function(fileContent) {
+    return ServerConnector.sendGetRequest("testFiles/overlay/good.txt").then(function(fileContent) {
       var obj = panel.parseFile(fileContent);
       assert.equal(obj.name, "example name");
       assert.equal(obj.description, "layout description");
diff --git a/frontend-js/src/test/js/map/data/Project-test.js b/frontend-js/src/test/js/map/data/Project-test.js
index 7d9b9b0481c182787511d81530722aafdada6dd0..f498364fbe53ef7d500578d8297bae07561ef504 100644
--- a/frontend-js/src/test/js/map/data/Project-test.js
+++ b/frontend-js/src/test/js/map/data/Project-test.js
@@ -10,7 +10,7 @@ var assert = chai.assert;
 describe('Project', function() {
   describe("constructor", function() {
     it("default", function() {
-      return ServerConnector.readFile("testFiles/apiCalls/projects/sample/token=MOCK_TOKEN_ID&").then(function(res) {
+      return ServerConnector.sendGetRequest("testFiles/apiCalls/projects/sample/token=MOCK_TOKEN_ID&").then(function(res) {
         var project = new Project(res);
         assert.ok(project);
 
@@ -24,7 +24,7 @@ describe('Project', function() {
       });
     });
     it("from Project obj", function() {
-      return ServerConnector.readFile("testFiles/apiCalls/projects/sample/token=MOCK_TOKEN_ID&").then(function(res) {
+      return ServerConnector.sendGetRequest("testFiles/apiCalls/projects/sample/token=MOCK_TOKEN_ID&").then(function(res) {
         var tmpProject = new Project(res);
 
         var project = new Project(tmpProject);