diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/CachableInterface.java b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/CachableInterface.java
index f271d6c39a716f6bbbce53cbd7bd77af10fc50ff..f2401af95111187f5dd2b868db1468029141856b 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/CachableInterface.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/CachableInterface.java
@@ -161,9 +161,9 @@ public abstract class CachableInterface extends XmlParser {
 	public final void setCache(GeneralCacheInterface cache) {
 		this.cache = cache;
 	}
-
+	
 	/**
-	 * Returns a content of the webpage for a given url.
+	 * Returns a content of the webpage for a given url using GET request.
 	 * 
 	 * @param accessUrl
 	 *          webpage url address
@@ -172,13 +172,36 @@ public abstract class CachableInterface extends XmlParser {
 	 *           thrown when there are problems with connection to ChEMBL database
 	 */
 	protected final String getWebPageContent(String accessUrl) throws IOException {
+		return getWebPageContent(accessUrl, "GET", null);
+	}
+
+	/**
+	 * Returns a content of the webpage for a given url. If postData is not null, 
+	 * the page will be accessed using POST request. Otherwise GET will be used. 
+	 * 
+	 * @param accessUrl
+	 *          webpage url address
+	 * @param httpRequestMethod
+	 * 			type of HTTP request (GET, POST, PUT, PATCH, DELETE, ...)
+	 * @param postData
+	 * 			string to be sent in the body of the request
+	 * @return content of the webpage
+	 * @throws IOException
+	 *           thrown when there are problems with connection to ChEMBL database
+	 */
+	protected final String getWebPageContent(String accessUrl, String httpRequestMethod, String data) throws IOException {
 		// check if we have the page in our internal cache
+		
+		String cacheKey = accessUrl;
+		if (data != null) {
+			cacheKey += data;
+		}
 
-		String result = getCacheValue(accessUrl);
+		String result = getCacheValue(cacheKey);
 		if (result == null) {
-			result = webPageDownloader.getFromNetwork(accessUrl);
+			result = webPageDownloader.getFromNetwork(accessUrl, httpRequestMethod, data);
 			if (result != null) {
-				setCacheValue(accessUrl, result);
+				setCacheValue(cacheKey, result);
 			}
 		}
 		return result;
diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/WebPageDownloader.java b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/WebPageDownloader.java
index 80d2c2f7a7d76259ebfd9e032514fb1d70abf7be..c03944fd8fb1507836139a32d05ffcde9b3864d3 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/cache/WebPageDownloader.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/cache/WebPageDownloader.java
@@ -4,6 +4,7 @@ import java.io.BufferedReader;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.io.DataOutputStream;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -26,6 +27,10 @@ import lcsb.mapviewer.annotation.services.WrongResponseCodeIOException;
  * @author Piotr Gawron
  *
  */
+/**
+ * @author Piotr Gawron
+ *
+ */
 public class WebPageDownloader {
 
 	/**
@@ -50,17 +55,39 @@ public class WebPageDownloader {
 	 * receiving INTERNAL SERVER ERROR http response.
 	 */
 	private static final int HTTP_INTERNAL_ERROR_RECONNECT_TIMES			= 2;
-
+	
+	
+	
 	/**
-	 * Returns content of the webpage identified by url.
+	 * Returns content of the webpage identified by url using GET.
 	 * 
 	 * @param accessUrl
 	 *          url of a webpage
 	 * @return content of the webpage identified by url
 	 * @throws IOException
-	 *           thrown when there is any problem with accesing webpage
+	 *           thrown when there is any problem with accessing webpage
 	 */
 	public String getFromNetwork(String accessUrl) throws IOException {
+		return getFromNetwork(accessUrl, "GET", null);
+	}
+
+	
+	/**
+	 * Returns content of the webpage identified by url. The HTTP query is done 
+	 * using the provided POST if postData is not null.
+	 * 
+	 * 
+	 * @param accessUrl
+	 * 			url of a webpage
+	 * @param httpRequestMethod
+	 * 			type of HTTP request (GET, POST, PUT, PATCH, DELETE, ...)
+	 * @param data
+	 * 			string to be sent in the body of the 
+	 * @return content of the webpage identified by url
+	 * @throws IOException
+	 * 			thrown when there is any problem with accessing webpage
+	 */
+	public String getFromNetwork(String accessUrl, String httpRequestMethod, String data) throws IOException {
 
 		/**
 		 * Tasks that retrieves content from webpage
@@ -77,12 +104,20 @@ public class WebPageDownloader {
 				int code = HttpURLConnection.HTTP_INTERNAL_ERROR;
 				HttpURLConnection urlConn = null;
 
-				// connect to the server, if HTTP_INTERNAL_ERROR occurres then try to
+				// connect to the server, if HTTP_INTERNAL_ERROR occurred then try to
 				// reconnect HTTP_INTERNAL_ERROR_RECONNECT_TIMES times
 				while (code == HttpURLConnection.HTTP_INTERNAL_ERROR || code == HttpURLConnection.HTTP_NOT_FOUND) {
-					urlConn = openConnection(accessUrl);
-					urlConn.setRequestMethod("GET");
+					urlConn = openConnection(accessUrl);					
 					urlConn.addRequestProperty("User-Agent", "minerva-framework");
+					
+					urlConn.setRequestMethod(httpRequestMethod);
+					if (data != null) {						
+						urlConn.setDoOutput(true);						
+						DataOutputStream  wr = new DataOutputStream(urlConn.getOutputStream());
+				        wr.writeBytes(data);
+				        wr.close();						
+					}
+					
 					try {
 						urlConn.connect();
 						code = urlConn.getResponseCode();
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/cache/CachableInterfaceTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/cache/CachableInterfaceTest.java
index f8b08ad58c37f168150c19efb19203eae0e5f954..d7f21ed334e040a47f925c142d6161b0465a08ef 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/cache/CachableInterfaceTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/cache/CachableInterfaceTest.java
@@ -50,6 +50,27 @@ public class CachableInterfaceTest extends AnnotationTestFunctions {
 			throw e;
 		}
 	}
+	
+	@Test
+	public void testGetWebPageGetCache() throws Exception {
+		try {
+			CachableInterfaceMock ci = new CachableInterfaceMock(CachableInterface.class);
+			
+			CacheTypeDao mock = Mockito.mock(CacheTypeDao.class);
+			when(mock.getByClassName(anyString())).thenReturn(new CacheType());
+			ci.setCacheTypeDao(mock);
+			ci.setCache(new GeneralCache());			
+			
+			String cacheKey = "https://www.google.com/";
+			String result = ci.getWebPageContent(cacheKey);
+			assertNotNull(result);
+			String cacheValue = ci.getCacheValue(cacheKey); 
+			assertTrue(result.equals(cacheValue));
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
 
 	@Test
 	public void testSetNode() throws Exception {
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/cache/WebPageDownloaderTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/cache/WebPageDownloaderTest.java
index 8f58a75c427fea9dabc00e2b224d6452b310b9d3..d548f06e95733454bbf64761aa45f161f0d6c95d 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/cache/WebPageDownloaderTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/cache/WebPageDownloaderTest.java
@@ -1,6 +1,7 @@
 package lcsb.mapviewer.annotation.cache;
 
 import static org.junit.Assert.fail;
+import static org.junit.Assert.assertNotNull;
 
 import java.io.IOException;
 import java.net.HttpURLConnection;
@@ -61,5 +62,37 @@ public class WebPageDownloaderTest {
 		} catch (IOException e) {
 		}
 	}
+	
+	@Test
+	public void testSend1() {
+		WebPageDownloader downloader = new WebPageDownloader();
+		try {
+		String result = downloader.getFromNetwork("https://www.google.com/");
+		assertNotNull("GET request to Google should return non-null result", result);
+		} catch (IOException e) {
+		}
+	}
+	
+	@Test
+	public void testPost1() {
+		WebPageDownloader downloader = new WebPageDownloader();
+		try {
+		String result = downloader.getFromNetwork("https://www.ebi.ac.uk/pdbe/api/mappings/best_structures/", "POST", "P29373");
+		assertNotNull("POST request to Uniprot should return non-null result", result);
+		} catch (IOException e) {
+		}
+		
+	}
+	
+	@Test
+	public void testInvalidHttpRequestType() {
+		WebPageDownloader downloader = new WebPageDownloader();
+		try {
+		String result = downloader.getFromNetwork("https://www.ebi.ac.uk/pdbe/api/mappings/best_structures/", "XXX", "P29373");
+		fail("Invalid request exception expected");
+		} catch (IOException e) {
+		}
+		
+	}
 
 }
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChEMBLParserTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChEMBLParserTest.java
index 8a2ccae9ca521c17970dc194fe339b1ff1308628..90b26f72ff4c3f6524a35975e7ed10abda0e9bde 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChEMBLParserTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChEMBLParserTest.java
@@ -297,7 +297,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("invalid xml");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("invalid xml");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getTargetFromId(new MiriamData(MiriamType.CHEMBL_TARGET, "water"));
 			fail("Exception expected");
@@ -319,7 +319,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("invalid xml");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("invalid xml");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.findDrug("test");
 			fail("Exception expected");
@@ -341,7 +341,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getTargetFromId(new MiriamData(MiriamType.CHEMBL_TARGET, "water"));
 			fail("Exception expected");
@@ -403,7 +403,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("<target><unk/></target>");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("<target><unk/></target>");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getTargetFromId(new MiriamData(MiriamType.CHEMBL_TARGET, "water"));
 			assertEquals(1, getWarnings().size());
@@ -422,7 +422,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("<target><target_components><target_component/></target_components></target>");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("<target><target_components><target_component/></target_components></target>");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getTargetFromId(new MiriamData(MiriamType.CHEMBL_TARGET, "water"));
 			assertEquals(1, getWarnings().size());
@@ -441,7 +441,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("<target><target_chembl_id>inv id</target_chembl_id></target>");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("<target><target_chembl_id>inv id</target_chembl_id></target>");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getTargetFromId(new MiriamData(MiriamType.CHEMBL_TARGET, "water"));
 			assertEquals(1, getWarnings().size());
@@ -836,7 +836,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 
 			// simulate problem with downloading
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.refreshCacheQuery("http://google.pl/");
 			fail("Exception expected");
@@ -860,7 +860,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 
 			// simulate problem with downloading
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getDrugsByChemblTarget(new MiriamData());
 
@@ -886,7 +886,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 
 			// simulate problem with downloading
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getDrugsByChemblTarget(new MiriamData());
 
@@ -914,7 +914,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 
 			// simulate problem with downloading
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.refreshCacheQuery(query);
 			fail("Exception expected");
@@ -943,7 +943,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = chemblParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemblParser.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, chemblParser.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -959,7 +959,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = chemblParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("<response><molecules/></response>");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("<response><molecules/></response>");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, chemblParser.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -977,7 +977,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
 
 			// valid xml but with empty data
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn(
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn(
 					"<response><molecules>" + "<molecule><pref_name/><max_phase/><molecule_chembl_id/><molecule_synonyms/></molecule>"
 							+ "</molecules><mechanisms/><molecule_forms/></response>");
 			chemblParser.setWebPageDownloader(mockDownloader);
@@ -1016,7 +1016,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("invalid xml");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("invalid xml");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getTargetsByDrugId(new MiriamData(MiriamType.CHEMBL_COMPOUND, "123"));
 			fail("Exception expected");
@@ -1036,7 +1036,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getTargetsByDrugId(new MiriamData(MiriamType.CHEMBL_COMPOUND, "123"));
 			fail("Exception expected");
@@ -1056,7 +1056,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getDrugListByTarget(new MiriamData(MiriamType.UNIPROT, "O60391"));
 			fail("Exception expected");
@@ -1077,7 +1077,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("invalid xml");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("invalid xml");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getDrugListByTarget(new MiriamData(MiriamType.UNIPROT, "O60391"));
 			fail("Exception expected");
@@ -1140,7 +1140,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("invalid xml");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("invalid xml");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getDrugById(new MiriamData(MiriamType.CHEMBL_COMPOUND, ""));
 			fail("Exception expected");
@@ -1160,7 +1160,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getDrugById(new MiriamData(MiriamType.CHEMBL_COMPOUND, ""));
 			fail("Exception expected");
@@ -1193,7 +1193,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getTargetsForChildElements(new MiriamData());
 			fail("Exception expected");
@@ -1213,7 +1213,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("invalid xml");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("invalid xml");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getTargetsForChildElements(new MiriamData());
 			fail("Exception expected");
@@ -1233,7 +1233,7 @@ public class ChEMBLParserTest extends AnnotationTestFunctions {
 		try {
 			chemblParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("<response><molecule_forms><node/></molecule_forms></response>");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("<response><molecule_forms><node/></molecule_forms></response>");
 			chemblParser.setWebPageDownloader(mockDownloader);
 			chemblParser.getTargetsForChildElements(new MiriamData());
 			assertEquals(1, getWarnings().size());
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChemicalParserTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChemicalParserTest.java
index f03eb92e179fd32c00e3ac5686e069374d0d8a32..8fc7c418987177d2d153cd58ca73816a35ef8517 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChemicalParserTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChemicalParserTest.java
@@ -77,7 +77,7 @@ public class ChemicalParserTest extends AnnotationTestFunctions {
 			// skip first call to cache, so we will have to at least parse the data
 			chemicalParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemicalParser.setWebPageDownloader(mockDownloader);
 			// Parkinson disease
 			MiriamData diseaseID = new MiriamData(MiriamType.MESH_2012, "D010300");
@@ -431,7 +431,7 @@ public class ChemicalParserTest extends AnnotationTestFunctions {
 
 			// simulate problem with downloading
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("");
 			chemicalParser.setWebPageDownloader(mockDownloader);
 			chemicalParser.refreshCacheQuery(query);
 			fail("Exception expected");
@@ -460,7 +460,7 @@ public class ChemicalParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = chemicalParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemicalParser.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, chemicalParser.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -476,7 +476,7 @@ public class ChemicalParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = chemicalParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("");
 			chemicalParser.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, chemicalParser.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -559,7 +559,7 @@ public class ChemicalParserTest extends AnnotationTestFunctions {
 			chemicalParser.setCache(new GeneralCacheWithExclusion(chemicalParser.getCache(), 1));
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			chemicalParser.setWebPageDownloader(mockDownloader);
 			try {
 				chemicalParser.getChemicals(diseaseID, idsList);
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/DrugbankHTMLParserTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/DrugbankHTMLParserTest.java
index 98ad19ad4dc01856566b7fefaa0ad30befe659ba..92e47385e96e2b236654cd938046a279d230d407 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/DrugbankHTMLParserTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/DrugbankHTMLParserTest.java
@@ -597,7 +597,7 @@ public class DrugbankHTMLParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = drugBankHTMLParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			drugBankHTMLParser.setWebPageDownloader(mockDownloader);
 			drugBankHTMLParser.refreshCacheQuery("http://google.pl/");
 			fail("Exception expected");
@@ -616,7 +616,7 @@ public class DrugbankHTMLParserTest extends AnnotationTestFunctions {
 		GeneralCacheInterface cache = drugBankHTMLParser.getCache();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			drugBankHTMLParser.setWebPageDownloader(mockDownloader);
 			drugBankHTMLParser.setCache(null);
 
@@ -709,7 +709,7 @@ public class DrugbankHTMLParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = drugBankHTMLParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			drugBankHTMLParser.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, drugBankHTMLParser.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -725,7 +725,7 @@ public class DrugbankHTMLParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = drugBankHTMLParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("");
 			drugBankHTMLParser.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, drugBankHTMLParser.getServiceStatus().getStatus());
 		} catch (Exception e) {
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/MeSHParserTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/MeSHParserTest.java
index b0812d94b85ce8118767e20e84aa733981a39179..dad33fc058968a8dbf3b8cb930a39d050941904f 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/MeSHParserTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/MeSHParserTest.java
@@ -169,7 +169,7 @@ public class MeSHParserTest extends AnnotationTestFunctions {
 			MiriamData meshID = new MiriamData(MiriamType.MESH_2012, "D004298");
 			MeSHParser parserUnderTest = new MeSHParser();
 			WebPageDownloader webPageDownloader = Mockito.mock(WebPageDownloader.class);
-			when(webPageDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(webPageDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			parserUnderTest.setWebPageDownloader(webPageDownloader);
 
 			parserUnderTest.getMeSH(meshID);
@@ -276,7 +276,7 @@ public class MeSHParserTest extends AnnotationTestFunctions {
 		try {
 			meshParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			meshParser.setWebPageDownloader(mockDownloader);
 
 			MiriamData meshID = new MiriamData(MiriamType.MESH_2012, "D010300");
@@ -299,7 +299,7 @@ public class MeSHParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = meshParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			meshParser.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, meshParser.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -315,7 +315,7 @@ public class MeSHParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = meshParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new WrongResponseCodeIOException(null, HttpStatus.SC_NOT_FOUND));
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new WrongResponseCodeIOException(null, HttpStatus.SC_NOT_FOUND));
 			meshParser.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, meshParser.getServiceStatus().getStatus());
 		} catch (Exception e) {
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/MiriamConnectorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/MiriamConnectorTest.java
index 8814930e8ddd1ff50b723d84098f482f71d18d8c..86d950eeae2c6e0e99f4326ae8a688b830a49046 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/MiriamConnectorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/MiriamConnectorTest.java
@@ -227,7 +227,7 @@ public class MiriamConnectorTest extends AnnotationTestFunctions {
 			// exclude first cached value
 			miriamConnector.setCache(new GeneralCacheWithExclusion(cache, 1));
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			miriamConnector.setWebPageDownloader(mockDownloader);
 
 			miriamConnector.getUrlString2(TaxonomyBackend.HUMAN_TAXONOMY);
@@ -251,7 +251,7 @@ public class MiriamConnectorTest extends AnnotationTestFunctions {
 			// exclude first cached value
 			miriamConnector.setCache(new GeneralCacheWithExclusion(cache, 1));
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("");
 			miriamConnector.setWebPageDownloader(mockDownloader);
 
 			miriamConnector.getUrlString2(TaxonomyBackend.HUMAN_TAXONOMY);
@@ -273,7 +273,7 @@ public class MiriamConnectorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = miriamConnector.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			miriamConnector.setWebPageDownloader(mockDownloader);
 			miriamConnector.refreshCacheQuery("http://google.pl/");
 			fail("Exception expected");
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/PubmedParserTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/PubmedParserTest.java
index 06f813e37e4ee83f231db96b20f68b234ec2f513..bb4b0b68f3e02fc3f3aab621247718b1753bf037 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/PubmedParserTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/PubmedParserTest.java
@@ -232,7 +232,7 @@ public class PubmedParserTest extends AnnotationTestFunctions {
 		try {
 			pubmedParser.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			pubmedParser.setWebPageDownloader(mockDownloader);
 
 			String query = PubmedParser.PUBMED_PREFIX + PubmedParser.SERVICE_STATUS_PUBMED_ID;
@@ -289,7 +289,7 @@ public class PubmedParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = pubmedParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			pubmedParser.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, pubmedParser.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -305,7 +305,7 @@ public class PubmedParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = pubmedParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString()))
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString()))
 					.thenReturn("<responseWrapper><version>" + PubmedParser.SUPPORTED_VERSION + "</version></responseWrapper>");
 			pubmedParser.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, pubmedParser.getServiceStatus().getStatus());
@@ -322,7 +322,7 @@ public class PubmedParserTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = pubmedParser.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString()))
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString()))
 					.thenReturn("<responseWrapper><version>" + PubmedParser.SUPPORTED_VERSION + "blabla</version></responseWrapper>");
 			pubmedParser.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, pubmedParser.getServiceStatus().getStatus());
@@ -350,7 +350,7 @@ public class PubmedParserTest extends AnnotationTestFunctions {
 		pubmedParser.setCache(null);
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("unknown response");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("unknown response");
 			pubmedParser.setWebPageDownloader(mockDownloader);
 			pubmedParser.getApiVersion();
 			fail("Exception expected");
@@ -370,7 +370,7 @@ public class PubmedParserTest extends AnnotationTestFunctions {
 		pubmedParser.setCache(null);
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("<xml/>");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("<xml/>");
 			pubmedParser.setWebPageDownloader(mockDownloader);
 			assertNull(pubmedParser.getApiVersion());
 		} catch (Exception e) {
@@ -388,7 +388,7 @@ public class PubmedParserTest extends AnnotationTestFunctions {
 		pubmedParser.setCache(null);
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			pubmedParser.setWebPageDownloader(mockDownloader);
 			pubmedParser.getApiVersion();
 			fail("Exception expected");
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/TaxonomyBackendTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/TaxonomyBackendTest.java
index 611295b0f3c183697a2e537b1b67b8394ce04ddd..3c8b521e144a99725ba4a3d7910c72872828b5dc 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/TaxonomyBackendTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/TaxonomyBackendTest.java
@@ -123,7 +123,7 @@ public class TaxonomyBackendTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = taxonomyBackend.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			taxonomyBackend.setWebPageDownloader(mockDownloader);
 			taxonomyBackend.setCache(null);
 			taxonomyBackend.getNameForTaxonomy(new MiriamData(MiriamType.TAXONOMY, "9606"));
@@ -265,7 +265,7 @@ public class TaxonomyBackendTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = taxonomyBackend.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			taxonomyBackend.setWebPageDownloader(mockDownloader);
 			taxonomyBackend.refreshCacheQuery("http://google.pl/");
 			fail("Exception expected");
@@ -293,7 +293,7 @@ public class TaxonomyBackendTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = taxonomyBackend.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			taxonomyBackend.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, taxonomyBackend.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -309,7 +309,7 @@ public class TaxonomyBackendTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = taxonomyBackend.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("");
 			taxonomyBackend.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, taxonomyBackend.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -325,7 +325,7 @@ public class TaxonomyBackendTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = taxonomyBackend.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("<em>Taxonomy ID: </em>1234");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("<em>Taxonomy ID: </em>1234");
 			taxonomyBackend.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, taxonomyBackend.getServiceStatus().getStatus());
 		} catch (Exception e) {
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotatorTest.java
index ffcbd0d3d44f0042f0f4bac79ccfc14e74b6908f..8366b4f6c7766a789235186030f86aa89f126138 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotatorTest.java
@@ -177,7 +177,7 @@ public class EnsemblAnnotatorTest extends AnnotationTestFunctions {
 			ensemblAnnotator.setCache(null);
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			ensemblAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, ensemblAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -200,7 +200,7 @@ public class EnsemblAnnotatorTest extends AnnotationTestFunctions {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
 			String dataXml = "<opt></opt>";
 			String versionXml = "<opt><data release=\"" + EnsemblAnnotator.SUPPORTED_VERSION + "\"/></opt>";
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn(dataXml).thenReturn(versionXml);
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn(dataXml).thenReturn(versionXml);
 			ensemblAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, ensemblAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -223,7 +223,7 @@ public class EnsemblAnnotatorTest extends AnnotationTestFunctions {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
 			String dataXml = "<opt></opt>";
 			String versionXml = "<opt><data release=\"blablabla\"/></opt>";
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn(dataXml).thenReturn(versionXml);
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn(dataXml).thenReturn(versionXml);
 			ensemblAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, ensemblAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -279,7 +279,7 @@ public class EnsemblAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = ensemblAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new WrongResponseCodeIOException(null, 0));
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new WrongResponseCodeIOException(null, 0));
 			ensemblAnnotator.setWebPageDownloader(mockDownloader);
 			Species proteinAlias = new GenericProtein("id");
 			proteinAlias.addMiriamData(new MiriamData(MiriamType.ENSEMBL, "1234"));
@@ -302,7 +302,7 @@ public class EnsemblAnnotatorTest extends AnnotationTestFunctions {
 			ensemblAnnotator.setCache(null);
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			ensemblAnnotator.setWebPageDownloader(mockDownloader);
 			ensemblAnnotator.refreshCacheQuery("http://google.pl/");
 			fail("Exception expected");
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotatorTest.java
index 40b24bc0e229e5a026e377b048fb0cbd2b9c649a..be988ab5020c6a4ae950d3184a2d05e82f1693e6 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/EntrezAnnotatorTest.java
@@ -141,7 +141,7 @@ public class EntrezAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = entrezAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			entrezAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, entrezAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -270,7 +270,7 @@ public class EntrezAnnotatorTest extends AnnotationTestFunctions {
 			entrezAnnotator.setCache(null);
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			entrezAnnotator.setWebPageDownloader(mockDownloader);
 			entrezAnnotator.refreshCacheQuery("http://google.pl/");
 			fail("Exception expected");
@@ -293,7 +293,7 @@ public class EntrezAnnotatorTest extends AnnotationTestFunctions {
 			entrezAnnotator.setCache(null);
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			entrezAnnotator.setWebPageDownloader(mockDownloader);
 			entrezAnnotator.refreshCacheQuery(EntrezAnnotator.ENTREZ_DATA_PREFIX + "6647");
 			fail("Exception expected");
@@ -359,7 +359,7 @@ public class EntrezAnnotatorTest extends AnnotationTestFunctions {
 			entrezAnnotator.setCache(null);
 			String response = super.readFile("testFiles/annotation/entrezResponse.xml");
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn(response);
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn(response);
 			entrezAnnotator.setWebPageDownloader(mockDownloader);
 			EntrezData data = entrezAnnotator.getEntrezForMiriamData(new MiriamData(), "");
 			boolean ensembl = false;
@@ -394,7 +394,7 @@ public class EntrezAnnotatorTest extends AnnotationTestFunctions {
 			entrezAnnotator.setCache(null);
 			String response = "";
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn(response);
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn(response);
 			entrezAnnotator.setWebPageDownloader(mockDownloader);
 			entrezAnnotator.getEntrezForMiriamData(new MiriamData(), "");
 			fail("Exception expected");
@@ -416,7 +416,7 @@ public class EntrezAnnotatorTest extends AnnotationTestFunctions {
 		try {
 			entrezAnnotator.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new WrongResponseCodeIOException(null, 404));
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new WrongResponseCodeIOException(null, 404));
 			entrezAnnotator.setWebPageDownloader(mockDownloader);
 			entrezAnnotator.getEntrezForMiriamData(new MiriamData(), "");
 			fail("Exception expected");
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotatorTest.java
index ce4045811d0c0d2e4de8c34a71092946ed8d1e00..3f410c345bc04e18408c2bb29af39dab5dbc908f 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/GoAnnotatorTest.java
@@ -82,7 +82,7 @@ public class GoAnnotatorTest extends AnnotationTestFunctions {
 			GoAnnotator annotator = new GoAnnotator();
 			annotator.setMc(goAnnotator.getMc());
 			WebPageDownloader downloader = Mockito.mock(WebPageDownloader.class);
-			when(downloader.getFromNetwork(anyString())).thenReturn("");
+			when(downloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("");
 			annotator.setWebPageDownloader(downloader);
 			annotator.getGoElement(md);
 			fail("Exception expected");
@@ -126,7 +126,7 @@ public class GoAnnotatorTest extends AnnotationTestFunctions {
 			goAnnotator.setCache(null);
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			goAnnotator.setWebPageDownloader(mockDownloader);
 			goAnnotator.refreshCacheQuery("http://google.pl/");
 			fail("Exception expected");
@@ -192,7 +192,7 @@ public class GoAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = goAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			goAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, goAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -208,7 +208,7 @@ public class GoAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = goAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("<obo><term><name/><def><defstr/></def></term></obo>");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("<obo><term><name/><def><defstr/></def></term></obo>");
 			goAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, goAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -224,7 +224,7 @@ public class GoAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = goAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("<obo><term><name>some_name</name><def><defstr/></def></term></obo>");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("<obo><term><name>some_name</name><def><defstr/></def></term></obo>");
 			goAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, goAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotatorTest.java
index d9c60e80eadcfb8f3a1707c8b434bbbf7a13d6d9..2a286755299c830ffaa48e1c6a8ba7157c467f2c 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/HgncAnnotatorTest.java
@@ -496,7 +496,7 @@ public class HgncAnnotatorTest extends AnnotationTestFunctions {
 			hgncAnnotator.setCache(null);
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			hgncAnnotator.setWebPageDownloader(mockDownloader);
 			hgncAnnotator.refreshCacheQuery("http://google.pl/");
 			fail("Exception expected");
@@ -515,7 +515,7 @@ public class HgncAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = hgncAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			hgncAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, hgncAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -531,7 +531,7 @@ public class HgncAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = hgncAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("<response><result/></response>");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("<response><result/></response>");
 			hgncAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, hgncAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotatorTest.java
index 78fe4d4a99c7f8b02e0467cf0fdd345543fc140e..b70fe82bdfabbcbfa40783db536a92d0c659e17f 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/ReconAnnotatorTest.java
@@ -83,7 +83,7 @@ public class ReconAnnotatorTest extends AnnotationTestFunctions {
 			reconAnnotator.setCache(null);
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("");
 			reconAnnotator.setWebPageDownloader(mockDownloader);
 
 			reconAnnotator.annotateElement(ion);
@@ -112,7 +112,7 @@ public class ReconAnnotatorTest extends AnnotationTestFunctions {
 			String response = super.readFile("testFiles/annotation/recon_reaction_response.json");
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn(response);
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn(response);
 			reconAnnotator.setWebPageDownloader(mockDownloader);
 
 			reconAnnotator.annotateElement(ion);
@@ -142,7 +142,7 @@ public class ReconAnnotatorTest extends AnnotationTestFunctions {
 			String response = super.readFile("testFiles/annotation/recon_chemical_response.json");
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn(response);
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn(response);
 			reconAnnotator.setWebPageDownloader(mockDownloader);
 
 			reconAnnotator.annotateElement(reaction);
@@ -282,7 +282,7 @@ public class ReconAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = reconAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			reconAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, reconAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -298,7 +298,7 @@ public class ReconAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = reconAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("{\"results\":[{}]}");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("{\"results\":[{}]}");
 			reconAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, reconAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -314,7 +314,7 @@ public class ReconAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = reconAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("{\"results\":[{\"keggId\":\"C00001\",\"xxx\":\"yyy\"}]}");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("{\"results\":[{\"keggId\":\"C00001\",\"xxx\":\"yyy\"}]}");
 			reconAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, reconAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -334,7 +334,7 @@ public class ReconAnnotatorTest extends AnnotationTestFunctions {
 			reconAnnotator.setCache(null);
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			reconAnnotator.setWebPageDownloader(mockDownloader);
 			reconAnnotator.refreshCacheQuery("http://google.pl/");
 			fail("Exception expected");
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotatorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotatorTest.java
index 8f7b2edc3bde536c68846e5529e046a16038b830..c27be152ae03470035eab296978d066bcdcd7488 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotatorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/annotators/UniprotAnnotatorTest.java
@@ -240,7 +240,7 @@ public class UniprotAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = uniprotAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			uniprotAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, uniprotAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -258,7 +258,7 @@ public class UniprotAnnotatorTest extends AnnotationTestFunctions {
 		uniprotAnnotator.setCache(new GeneralCacheWithExclusion(cache, 1));
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			uniprotAnnotator.setWebPageDownloader(mockDownloader);
 			Species protein = new GenericProtein("id");
 			protein.addMiriamData(new MiriamData(MiriamType.UNIPROT, "P01308"));
@@ -279,7 +279,7 @@ public class UniprotAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = uniprotAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("");
 			uniprotAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.DOWN, uniprotAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
@@ -295,7 +295,7 @@ public class UniprotAnnotatorTest extends AnnotationTestFunctions {
 		WebPageDownloader downloader = uniprotAnnotator.getWebPageDownloader();
 		try {
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenReturn("GN   Name=ACSS2; Synonyms=ACAS2;");
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenReturn("GN   Name=ACSS2; Synonyms=ACAS2;");
 			uniprotAnnotator.setWebPageDownloader(mockDownloader);
 			assertEquals(ExternalServiceStatusType.CHANGED, uniprotAnnotator.getServiceStatus().getStatus());
 		} catch (Exception e) {
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/genome/UcscReferenceGenomeConnectorTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/genome/UcscReferenceGenomeConnectorTest.java
index c27bb7764c643c7b9290e1fabd8dc48fea5a387a..5ff31b7460e125167a6e4df0574204fe723c3de1 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/genome/UcscReferenceGenomeConnectorTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/genome/UcscReferenceGenomeConnectorTest.java
@@ -146,7 +146,7 @@ public class UcscReferenceGenomeConnectorTest extends AnnotationTestFunctions {
 			connector.setCache(null);
 
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			connector.setWebPageDownloader(mockDownloader);
 			connector.getAvailableOrganisms();
 			fail("Exception expected");
@@ -760,7 +760,7 @@ public class UcscReferenceGenomeConnectorTest extends AnnotationTestFunctions {
 			// exclude first cached value
 			connector.setCache(null);
 			WebPageDownloader mockDownloader = Mockito.mock(WebPageDownloader.class);
-			when(mockDownloader.getFromNetwork(anyString())).thenThrow(new IOException());
+			when(mockDownloader.getFromNetwork(anyString(), anyString(), anyString())).thenThrow(new IOException());
 			connector.setWebPageDownloader(mockDownloader);
 			connector.refreshCacheQuery("http://google.pl/");
 			fail("Exception expected");
diff --git a/frontend-js/.idea/frontend-js.iml b/frontend-js/.idea/frontend-js.iml
index fb987bb081cc244b1155f1a001ca98f1ff3c9bd8..4feb4987b6dd589318a78302c0367c39c36535a9 100644
--- a/frontend-js/.idea/frontend-js.iml
+++ b/frontend-js/.idea/frontend-js.iml
@@ -4,8 +4,8 @@
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/.tmp" />
-      <excludeFolder url="file://$MODULE_DIR$/dist" />
       <excludeFolder url="file://$MODULE_DIR$/temp" />
+      <excludeFolder url="file://$MODULE_DIR$/dist" />
       <excludeFolder url="file://$MODULE_DIR$/tmp" />
     </content>
     <orderEntry type="inheritedJdk" />