diff --git a/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js b/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js
index 57da91aee6f24955c95bc6ff1bafaa9a017d52af..6aca213bd7a5f8010fcdcc9ba4d2a8213e018402 100644
--- a/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js
+++ b/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js
@@ -41,77 +41,84 @@ AbstractDbOverlay.prototype = Object.create(ObjectWithListeners.prototype);
 AbstractDbOverlay.prototype.constructor = AbstractDbOverlay;
 
 AbstractDbOverlay.QueryType = {
-  SEARCH_BY_COORDINATES : "SEARCH_BY_COORDINATES",
-  SEARCH_BY_TARGET : "SEARCH_BY_TARGET",
-  SEARCH_BY_QUERY : "SEARCH_BY_QUERY",
+  SEARCH_BY_COORDINATES: "SEARCH_BY_COORDINATES",
+  SEARCH_BY_TARGET: "SEARCH_BY_TARGET",
+  SEARCH_BY_QUERY: "SEARCH_BY_QUERY",
 };
 
-AbstractDbOverlay.prototype.encodeQuery = function(type, arg0, arg1, arg2) {
+AbstractDbOverlay.prototype.encodeQuery = function (type, arg0, arg1, arg2) {
   if (type === AbstractDbOverlay.QueryType.SEARCH_BY_COORDINATES) {
     var modelId = arg0;
     var coordinates = arg1;
     var zoom = arg2;
     return JSON.stringify({
-      type : type,
-      modelId : modelId,
-      coordinates : coordinates,
-      zoom : zoom,
+      type: type,
+      modelId: modelId,
+      coordinates: coordinates,
+      zoom: zoom,
     });
   } else if (type === AbstractDbOverlay.QueryType.SEARCH_BY_TARGET) {
     var target = arg0;
     return JSON.stringify({
-      type : type,
-      target : target,
+      type: type,
+      target: target,
     });
   } else if (type === AbstractDbOverlay.QueryType.SEARCH_BY_QUERY) {
     var query = arg0;
     var perfect = arg1;
     return JSON.stringify({
-      type : type,
-      query : query,
-      perfect : perfect,
+      type: type,
+      query: query,
+      perfect: perfect,
     });
   } else {
     throw new Error("Unknown query type: " + type);
   }
 };
 
-AbstractDbOverlay.prototype.decodeQuery = function(query) {
+AbstractDbOverlay.prototype.decodeQuery = function (query) {
   return JSON.parse(query);
 };
 
-AbstractDbOverlay.prototype.searchByQuery = function(originalQuery, perfect, fitBounds) {
+AbstractDbOverlay.prototype.searchByQuery = function (originalQuery, perfect, fitBounds) {
   var self = this;
   var query = self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, originalQuery, perfect);
   ServerConnector.getSessionData().setQuery({
-    type : self.getName(),
-    query : query
+    type: self.getName(),
+    query: query
   });
 
-  var queries = self.splitQuery(originalQuery);
-
+  var res;
   var encodedQueries = [];
-  var promises = [];
-  for (var i = 0; i < queries.length; i++) {
-    encodedQueries.push(self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, queries[i], perfect));
-    promises.push(self.searchBySingleQuery(queries[i], perfect));
-  }
+  return self.searchBySingleQuery(originalQuery, perfect).then(function (results) {
+    if (results.length > 0) {
+      encodedQueries.push(query);
+      return [results];
+    } else {
+      var queries = self.splitQuery(originalQuery);
+
+      var promises = [];
+      for (var i = 0; i < queries.length; i++) {
+        encodedQueries.push(self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, queries[i], perfect));
+        promises.push(self.searchBySingleQuery(queries[i], perfect));
+      }
 
-  var res;
-  return Promise.all(promises).then(function(results) {
+      return Promise.all(promises);
+    }
+  }).then(function (results) {
     self.setQueries(encodedQueries);
     res = results;
     return self.callListeners('onSearch', {
-      fitBounds : fitBounds,
-      identifiedElements : res,
-      type : AbstractDbOverlay.QueryType.SEARCH_BY_QUERY,
+      fitBounds: fitBounds,
+      identifiedElements: res,
+      type: AbstractDbOverlay.QueryType.SEARCH_BY_QUERY,
     });
-  }).then(function() {
+  }).then(function () {
     return res;
   });
 };
 
-AbstractDbOverlay.prototype.searchNamesByTarget = function(element) {
+AbstractDbOverlay.prototype.searchNamesByTarget = function (element) {
   var self = this;
   var query = self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_TARGET, element);
 
@@ -119,23 +126,23 @@ AbstractDbOverlay.prototype.searchNamesByTarget = function(element) {
     return Promise.resolve(self._elementsByQuery[query]);
   } else {
     return self.getNamesByTargetFromServer({
-      target : element
-    }).then(function(drugNames) {
+      target: element
+    }).then(function (drugNames) {
       self._elementsByQuery[query] = drugNames;
       return self._elementsByQuery[query];
     });
   }
 };
 
-AbstractDbOverlay.prototype.setQueries = function(queries) {
+AbstractDbOverlay.prototype.setQueries = function (queries) {
   this._queries = queries;
 };
 
-AbstractDbOverlay.prototype.getQueries = function() {
+AbstractDbOverlay.prototype.getQueries = function () {
   return this._queries;
 };
 
-AbstractDbOverlay.prototype.createIdentifiedElementsForTargetingClass = function(targetingElement, colourId) {
+AbstractDbOverlay.prototype.createIdentifiedElementsForTargetingClass = function (targetingElement, colourId) {
   var self = this;
   var result = [];
   var iconCounter = 1;
@@ -160,11 +167,11 @@ AbstractDbOverlay.prototype.createIdentifiedElementsForTargetingClass = function
   return result;
 };
 
-AbstractDbOverlay.prototype.refresh = function() {
+AbstractDbOverlay.prototype.refresh = function () {
   throw new Error("Refreshing shouldn't be called");
 };
 
-AbstractDbOverlay.prototype.searchByEncodedQuery = function(originalQuery, fitBounds) {
+AbstractDbOverlay.prototype.searchByEncodedQuery = function (originalQuery, fitBounds) {
   var query = this.decodeQuery(originalQuery);
   query.fitBounds = fitBounds;
   if (query.type === AbstractDbOverlay.QueryType.SEARCH_BY_QUERY) {
@@ -179,9 +186,9 @@ AbstractDbOverlay.prototype.searchByEncodedQuery = function(originalQuery, fitBo
   }
 };
 
-AbstractDbOverlay.prototype.clear = function() {
+AbstractDbOverlay.prototype.clear = function () {
   var self = this;
-  return self.searchByQuery("").then(function() {
+  return self.searchByQuery("").then(function () {
     return self.callListeners('onClear');
   });
 };
@@ -189,38 +196,38 @@ AbstractDbOverlay.prototype.clear = function() {
 /**
  * Returns true if overlay allows to get general data for element.
  */
-AbstractDbOverlay.prototype.allowGeneralSearch = function() {
+AbstractDbOverlay.prototype.allowGeneralSearch = function () {
   return this._allowGeneralSearch;
 };
 
-AbstractDbOverlay.prototype.getName = function() {
+AbstractDbOverlay.prototype.getName = function () {
   return this.name;
 };
 
 /**
  * Returns true if overlay allows to get data for element by search id.
  */
-AbstractDbOverlay.prototype.allowSearchById = function() {
+AbstractDbOverlay.prototype.allowSearchById = function () {
   return this._allowSearchById;
 };
 
-AbstractDbOverlay.prototype.setMap = function(map) {
+AbstractDbOverlay.prototype.setMap = function (map) {
   this._map = map;
 };
 
-AbstractDbOverlay.prototype.getMap = function() {
+AbstractDbOverlay.prototype.getMap = function () {
   return this._map;
 };
 
-AbstractDbOverlay.prototype.setName = function(name) {
+AbstractDbOverlay.prototype.setName = function (name) {
   this.name = name;
 };
 
-AbstractDbOverlay.prototype.getName = function() {
+AbstractDbOverlay.prototype.getName = function () {
   return this.name;
 };
 
-AbstractDbOverlay.prototype.setAllowSearchById = function(allowSearchById) {
+AbstractDbOverlay.prototype.setAllowSearchById = function (allowSearchById) {
   // configure if the overlay can contain detailed data about elements that
   // should be visualized in detailed mode of the Info Window
   if (typeof allowSearchById === "boolean") {
@@ -232,7 +239,7 @@ AbstractDbOverlay.prototype.setAllowSearchById = function(allowSearchById) {
   }
 };
 
-AbstractDbOverlay.prototype.setAllowGeneralSearch = function(allowGeneralSearch) {
+AbstractDbOverlay.prototype.setAllowGeneralSearch = function (allowGeneralSearch) {
   if (typeof allowGeneralSearch === "boolean") {
     this._allowGeneralSearch = allowGeneralSearch;
   } else if (allowGeneralSearch === undefined) {
@@ -242,22 +249,22 @@ AbstractDbOverlay.prototype.setAllowGeneralSearch = function(allowGeneralSearch)
   }
 };
 
-AbstractDbOverlay.prototype.setIconType = function(iconType) {
+AbstractDbOverlay.prototype.setIconType = function (iconType) {
   this._iconType = iconType;
 };
-AbstractDbOverlay.prototype.setIconStart = function(iconStart) {
+AbstractDbOverlay.prototype.setIconStart = function (iconStart) {
   this._iconStart = iconStart;
 };
 
-AbstractDbOverlay.IconColors = [ "red", "blue", "green", "purple", "yellow", "pink", "paleblue", "brown", "orange" ];
+AbstractDbOverlay.IconColors = ["red", "blue", "green", "purple", "yellow", "pink", "paleblue", "brown", "orange"];
 
-AbstractDbOverlay.prototype.getColor = function(colorId) {
+AbstractDbOverlay.prototype.getColor = function (colorId) {
   var id = colorId + this._iconStart;
   id %= AbstractDbOverlay.IconColors.length;
   return AbstractDbOverlay.IconColors[id];
 };
 
-AbstractDbOverlay.prototype.getIcon = function(colorId, id) {
+AbstractDbOverlay.prototype.getIcon = function (colorId, id) {
   if (id >= 100) {
     id = 1;
   }
@@ -265,7 +272,7 @@ AbstractDbOverlay.prototype.getIcon = function(colorId, id) {
   return "marker/" + this._iconType + "/" + this._iconType + "_" + color + "_" + id + ".png";
 };
 
-AbstractDbOverlay.prototype.splitQuery = function(query, useFullName) {
+AbstractDbOverlay.prototype.splitQuery = function (query, useFullName) {
   var result = [];
   if (query.indexOf(";") >= 0) {
     result = query.split(";");