diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js
index 52ae75e9b35019149eb5028583f1a533edb50d3e..5b816e648d094861364af09e1ac7838ae1f59872 100644
--- a/frontend-js/src/main/js/map/CustomMap.js
+++ b/frontend-js/src/main/js/map/CustomMap.js
@@ -6,12 +6,12 @@ var logger = require('../logger');
 var functions = require('../Functions');
 
 var AbstractCustomMap = require('./AbstractCustomMap');
+var AbstractDbOverlay = require('./overlay/AbstractDbOverlay');
 var AliasMarker = require('./marker/AliasMarker');
 var CommentDialog = require('../gui/CommentDialog');
 var ControlType = require('./ControlType');
 var CustomMapOptions = require('./CustomMapOptions');
 var IdentifiedElement = require('./data/IdentifiedElement');
-var OverlayCollection = require('./overlay/OverlayCollection');
 var PointMarker = require('./marker/PointMarker');
 var ReactionMarker = require('./marker/ReactionMarker');
 var ReactionOverlay = require('./overlay/ReactionOverlay');
@@ -1268,7 +1268,7 @@ CustomMap.prototype.openInfoWindowForAlias = function(aliasId, modelId) {
  */
 CustomMap.prototype.renderOverlayCollection = function(overlayCollection, fitBounds) {
   var self = this;
-  if (overlayCollection instanceof OverlayCollection) {
+  if (overlayCollection instanceof AbstractDbOverlay) {
     logger.warn("Deprecated method use: renderOverlayCollection(overlayCollection)");
   } else {
     fitBounds = overlayCollection.fitBounds;
@@ -1421,16 +1421,7 @@ CustomMap.prototype.retrieveOverlayDetailDataForElement = function(element, gene
       }
       generalRequest = generalRequest || !overlay.allowSearchById();
 
-      if (overlay.constructor.name === "OverlayCollection") {
-        if (overlay.allowGeneralSearch() || overlay.allowSearchById()) {
-          if (overlay.isMissingDetailData(element, generalRequest)) {
-            logger.warn("Unsupported call for overlay collection: "+overlay.getName());
-//            ServerConnector.sendOverlayDetailDataRequest(overlayName, element, generalRequest);
-          }
-        }
-      } else {
-        promises.push(overlay.getDetailDataByIdentifiedElement(element, generalRequest));
-      }
+      promises.push(overlay.getDetailDataByIdentifiedElement(element, generalRequest));
     }
   }
   return Promise.all(promises);
diff --git a/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js b/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js
index 36eeafe648de9a77d8104026bffca9376ddf9e6d..3cba2f5f3f2faaf00c3a01b41c6fb3f534d0390a 100644
--- a/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js
+++ b/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js
@@ -7,14 +7,24 @@ var logger = require('../../logger');
 var Promise = require("bluebird");
 
 var IdentifiedElement = require('../data/IdentifiedElement');
-var OverlayCollection = require('./OverlayCollection');
+var ObjectWithListeners = require('../../ObjectWithListeners');
 
 var ServerConnector = require('../../ServerConnector');
 
 function AbstractDbOverlay(params) {
   // call super constructor
-  OverlayCollection.call(this, params);
-  
+  ObjectWithListeners.call(this);
+
+  if (params.map === undefined) {
+    throw new Error("map param must be defined");
+  }
+
+  this.setName(params.name);
+  this.setMap(params.map);
+
+  this.setAllowSearchById(params.allowSearchById);
+  this.setAllowGeneralSearch(params.allowGeneralSearch);
+
   this.setIconType(params.iconType);
   this.setIconStart(params.iconColorStart);
   
@@ -27,7 +37,7 @@ function AbstractDbOverlay(params) {
   this.setQueries([]);
 }
 
-AbstractDbOverlay.prototype = Object.create(OverlayCollection.prototype);
+AbstractDbOverlay.prototype = Object.create(ObjectWithListeners.prototype);
 AbstractDbOverlay.prototype.constructor = AbstractDbOverlay;
 
 AbstractDbOverlay.QueryType = {
@@ -168,4 +178,100 @@ AbstractDbOverlay.prototype.clear = function() {
   return this.searchByQuery("");
 };
 
+/**
+ * Returns true if overlay allows to get general data for element.
+ */
+AbstractDbOverlay.prototype.allowGeneralSearch = function() {
+  return this._allowGeneralSearch;
+};
+
+AbstractDbOverlay.prototype.getName = function() {
+  return this.name;
+};
+
+/**
+ * Returns true if overlay allows to get data for element by search id.
+ */
+AbstractDbOverlay.prototype.allowSearchById = function() {
+  return this._allowSearchById;
+};
+
+AbstractDbOverlay.prototype.setMap = function(map) {
+  this._map = map;
+};
+
+AbstractDbOverlay.prototype.getMap = function() {
+  return this._map;
+};
+
+AbstractDbOverlay.prototype.setName = function(name) {
+  this.name = name;
+};
+
+AbstractDbOverlay.prototype.getName = function() {
+  return this.name;
+};
+
+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") {
+    this._allowSearchById = allowSearchById;
+  } else if (allowSearchById === undefined) {
+    this._allowSearchById = false;
+  } else {
+    throw new Error("Unknown type of allowSearchById: ", allowSearchById);
+  }
+};
+
+AbstractDbOverlay.prototype.setAllowGeneralSearch = function(allowGeneralSearch) {
+  if (typeof allowGeneralSearch === "boolean") {
+    this._allowGeneralSearch = allowGeneralSearch;
+  } else if (allowGeneralSearch === undefined) {
+    this._allowGeneralSearch = false;
+  } else {
+    throw new Error("Unknown type of allowSearchById: ", allowGeneralSearch);
+  }
+};
+
+AbstractDbOverlay.prototype.setIconType = function(iconType) {
+  this._iconType = iconType;
+};
+AbstractDbOverlay.prototype.setIconStart = function(iconStart) {
+  this._iconStart = iconStart;
+};
+
+AbstractDbOverlay.IconColors = [ "red", "blue", "green", "purple", "yellow", "pink", "paleblue", "brown", "orange" ];
+
+AbstractDbOverlay.prototype.getColor = function(colorId) {
+  var id = colorId + this._iconStart;
+  id %= AbstractDbOverlay.IconColors.length;
+  return AbstractDbOverlay.IconColors[id];
+};
+
+AbstractDbOverlay.prototype.getIcon = function(colorId, id) {
+  if (id >= 100) {
+    id = 1;
+  }
+  var color = this.getColor(colorId);
+  return "marker/" + this._iconType + "/" + this._iconType + "_" + color + "_" + id + ".png";
+};
+
+AbstractDbOverlay.prototype.splitQuery = function(query, useFullName) {
+  var result = [];
+  if (query.indexOf(";") >= 0) {
+    result = query.split(";");
+  } else {
+    result = query.split(",");
+  }
+
+  for (var i = 0; i < result.length; i++) {
+    result[i] = result[i].trim();
+  }
+  if (result.length > 1 && useFullName) {
+    result.push(query);
+  }
+  return result;
+};
+
 module.exports = AbstractDbOverlay;
diff --git a/frontend-js/src/main/js/map/overlay/CommentDbOverlay.js b/frontend-js/src/main/js/map/overlay/CommentDbOverlay.js
index 103d82ddb57fff2e79b8ef122fdf276410e5a4a2..ff605dce4929fe38c38e47ab1cc0465aaf76d7be 100644
--- a/frontend-js/src/main/js/map/overlay/CommentDbOverlay.js
+++ b/frontend-js/src/main/js/map/overlay/CommentDbOverlay.js
@@ -2,33 +2,37 @@
 
 var Promise = require("bluebird");
 
-var OverlayCollection = require('./OverlayCollection');
+var AbstractDbOverlay = require('./AbstractDbOverlay');
 var ServerConnector = require('../../ServerConnector');
 
 function CommentDbOverlay(params) {
   // call super constructor
-  OverlayCollection.call(this, params);
+  AbstractDbOverlay.call(this, params);
+
+  this._elements = [];
+  this._detailDataByIdentifiedElement = [];
 }
 
-CommentDbOverlay.prototype = Object.create(OverlayCollection.prototype);
+CommentDbOverlay.prototype = Object.create(AbstractDbOverlay.prototype);
 CommentDbOverlay.prototype.constructor = CommentDbOverlay;
 
 CommentDbOverlay.prototype.refresh = function() {
   var self = this;
   return new Promise(function(resolve, reject) {
     return ServerConnector.getLightComments({}).then(function(comments) {
-      self.elements = comments;
-      resolve(self.elements);
+      self._elements = comments;
+      resolve(self._elements);
     }).catch(reject);
   });
 };
 
 CommentDbOverlay.prototype.clear = function() {
-  this.elements = [];
+  this._elements = [];
+  this._detailDataByIdentifiedElement = [];
   return new Promise.resolve();
 };
 
-CommentDbOverlay.prototype._getDetailArrayByIdentifiedElement = function(element) {
+CommentDbOverlay.prototype.getDetailDataByIdentifiedElement = function(element) {
   var self = this;
   var elementKey = element.getId() + "," + element.getType() + "," + element.getModelId();
   if (this._detailDataByIdentifiedElement[elementKey] !== undefined) {
@@ -46,10 +50,10 @@ CommentDbOverlay.prototype.getIdentifiedElements = function(){
   var self = this;
   return new Promise(function(resolve){
     var result = [];
-    for (var i=0;i<self.elements.length;i++) {
+    for (var i=0;i<self._elements.length;i++) {
       // we return only elements that are pinned to the map and weren't removed
-      if (!self.elements[i].isRemoved()) {
-        result.push(self.elements[i].getIdentifiedElement());
+      if (!self._elements[i].isRemoved()) {
+        result.push(self._elements[i].getIdentifiedElement());
       }
     }
     resolve(result);
diff --git a/frontend-js/src/main/js/map/overlay/OverlayCollection.js b/frontend-js/src/main/js/map/overlay/OverlayCollection.js
deleted file mode 100644
index 0f5f70539b2951dbcb0f94cea29dfbd4c61bd9b7..0000000000000000000000000000000000000000
--- a/frontend-js/src/main/js/map/overlay/OverlayCollection.js
+++ /dev/null
@@ -1,292 +0,0 @@
-"use strict";
-
-var logger = require('../../logger');
-
-var IdentifiedElement = require('../data/IdentifiedElement');
-var ObjectWithListeners = require('../../ObjectWithListeners');
-
-/**
- * This class is responsible for collecting and updating markers found by
- * different panels (ie. search, comments, drug, targets).
- * 
- * @param map
- *          element of type CustomMap that represents custom extension to google
- *          map
- * @param name
- *          name of the collection used to distinguish it from the other
- *          sources.
- */
-function OverlayCollection(params) {
-  // map, name, allowSearchById, allowGeneralSearch
-
-  ObjectWithListeners.call(this);
-
-  if (params.map === undefined) {
-    throw new Error("map param must be defined");
-  }
-
-  this.elements = [];
-  this.setName(params.name);
-  this.setMap(params.map);
-
-  this._ids = [];
-
-  this.setAllowSearchById(params.allowSearchById);
-  this.setAllowGeneralSearch(params.allowGeneralSearch);
-
-  this._detailDataByIdentifiedElement = [];
-
-  // register source in the map
-//  this.getMap().registerSource(self);
-}
-
-OverlayCollection.prototype = Object.create(ObjectWithListeners.prototype);
-OverlayCollection.prototype.constructor = OverlayCollection;
-
-/**
- * Returns true if overlay allows to get general data for element.
- */
-OverlayCollection.prototype.allowGeneralSearch = function() {
-  return this._allowGeneralSearch;
-};
-
-OverlayCollection.prototype.getName = function() {
-  return this.name;
-};
-
-/**
- * Returns true if overlay allows to get data for element by search id.
- */
-OverlayCollection.prototype.allowSearchById = function() {
-  return this._allowSearchById;
-};
-
-/**
- * Method that should be called when new data from server appears. It updates
- * markers associated with the object.
- * 
- * @param newElements
- *          new elements that should be associated with the overlay
- * @param fitBounds
- *          should the bound on the map be fit after creating markers on the map
- *          representing newElements
- */
-OverlayCollection.prototype.updateOverlays = function(newElements, fitBounds) {
-  var self = this;
-  this.elements = [];
-  for (var i = 0; i < newElements.length; i++) {
-    this.elements.push(new IdentifiedElement(newElements[i]));
-  }
-  this.fitBounds = fitBounds;
-  this.getMap().updateOverlayCollection(self, fitBounds);
-};
-
-/**
- * Clears all elements.
- */
-OverlayCollection.prototype.clear = function() {
-  var self = this;
-  this.elements = [];
-  this.getMap().updateOverlayCollection(self);
-};
-
-/**
- * Sends request to server to refresh data.
- */
-OverlayCollection.prototype.refresh = function() {
-  ServerConnector.sendRefreshRequest(this.name);
-};
-
-OverlayCollection.prototype.setResultsIds = function(ids) {
-  this._ids = ids;
-  this.getMap().refreshInfoWindows();
-};
-
-OverlayCollection.prototype.getResultsIds = function() {
-  return this._ids;
-};
-
-OverlayCollection.prototype.isMissingDetailData = function(element, general) {
-  var data = this._getDetailArrayByIdentifiedElement(element);
-  if (typeof general !== "boolean") {
-    logger.warn("general parameter is invalid, assuming 'false': ", general);
-  }
-  if (general === true) {
-    if (this.allowGeneralSearch()) {
-      return data['__FULL__'] === undefined;
-    } else {
-      throw new Error("Cannot execute general search for overlay: ", this.getName());
-    }
-  } else if (this.allowSearchById()) {
-    for (var i = 0; i < this._ids.length; i++) {
-      if (data[this._ids[i]] === undefined) {
-        return true;
-      }
-    }
-    return false;
-  } else {
-    logger.warn("No data is available for overlay: ", this.getName());
-    return false;
-  }
-};
-
-OverlayCollection.prototype.getMissingDetailDataIds = function(element, general) {
-  if (typeof general !== "boolean") {
-    logger.warn("general parameter is invalid, assuming 'false': ", general);
-  }
-  var data = this._getDetailArrayByIdentifiedElement(element);
-
-  var result = [];
-  if (general === true) {
-    if (this.allowGeneralSearch()) {
-      if (data['__FULL__'] === undefined) {
-        result.push(null);
-      }
-    } else {
-      throw new Error("Cannot execute general search for overlay: ", this.getName());
-    }
-  } else if (this.allowSearchById()) {
-    for (var i = 0; i < this._ids.length; i++) {
-      if (data[this._ids[i]] === undefined) {
-        result.push(this._ids[i]);
-      }
-    }
-  } else {
-    logger
-        .warn("Nothing is missing, because overlay doesn't allow this kind of search. Overlay name: ", this.getName());
-  }
-  return result;
-};
-
-OverlayCollection.prototype.updateOverviewElementDetailData = function(javaObject, searchResultIdentifier, newData) {
-  var element = new IdentifiedElement(javaObject);
-  var data = this._getDetailArrayByIdentifiedElement(element);
-
-  if (searchResultIdentifier === null || searchResultIdentifier === undefined || searchResultIdentifier === "") {
-    data.push(newData);
-  } else {
-    data[searchResultIdentifier] = newData;
-  }
-  this.getMap().updateInfoWindowForIdentifiedElement(element);
-};
-
-OverlayCollection.prototype.getDetailDataByIdentifiedElement = function(element, general) {
-  if (typeof general !== "boolean") {
-    logger.warn("general parameter is invalid, assuming 'false': ", general);
-  }
-  var data = this._getDetailArrayByIdentifiedElement(element);
-  if (general === true) {
-    if (this.allowGeneralSearch()) {
-      return data;
-    } else {
-      logger.warn("No general data type for overlay: " + this.getName());
-      return [];
-    }
-  } else {
-    var result = [];
-    for (var i = 0; i < this.getResultsIds().length; i++) {
-      var id = this.getResultsIds()[i];
-      var rowRes = data[id];
-      if (rowRes !== undefined) {
-        result[id] = rowRes;
-      }
-    }
-    return result;
-  }
-};
-
-OverlayCollection.prototype._getDetailArrayByIdentifiedElement = function(element) {
-  var elementKey = element.getId() + "," + element.getType() + "," + element.getModelId();
-  if (this._detailDataByIdentifiedElement[elementKey] === undefined) {
-    this._detailDataByIdentifiedElement[elementKey] = [];
-  }
-  return this._detailDataByIdentifiedElement[elementKey];
-};
-
-OverlayCollection.prototype.setMap = function(map) {
-  this._map = map;
-};
-
-OverlayCollection.prototype.getMap = function() {
-  return this._map;
-};
-
-OverlayCollection.prototype.setName = function(name) {
-  this.name = name;
-};
-
-OverlayCollection.prototype.getName = function() {
-  return this.name;
-};
-
-OverlayCollection.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") {
-    this._allowSearchById = allowSearchById;
-  } else if (allowSearchById === undefined) {
-    this._allowSearchById = false;
-  } else {
-    throw new Error("Unknown type of allowSearchById: ", allowSearchById);
-  }
-};
-
-OverlayCollection.prototype.setAllowGeneralSearch = function(allowGeneralSearch) {
-  if (typeof allowGeneralSearch === "boolean") {
-    this._allowGeneralSearch = allowGeneralSearch;
-  } else if (allowGeneralSearch === undefined) {
-    this._allowGeneralSearch = false;
-  } else {
-    throw new Error("Unknown type of allowSearchById: ", allowGeneralSearch);
-  }
-};
-
-OverlayCollection.prototype.getIdentifiedElements = function() {
-  var self = this;
-  return new Promise(function(resolve) {
-    resolve(self.elements);
-  });
-};
-
-OverlayCollection.prototype.setIconType = function(iconType) {
-  this._iconType = iconType;
-};
-OverlayCollection.prototype.setIconStart = function(iconStart) {
-  this._iconStart = iconStart;
-};
-
-OverlayCollection.IconColors = [ "red", "blue", "green", "purple", "yellow", "pink", "paleblue", "brown", "orange" ];
-
-OverlayCollection.prototype.getColor = function(colorId) {
-  var id = colorId + this._iconStart;
-  id %= OverlayCollection.IconColors.length;
-  return OverlayCollection.IconColors[id];
-};
-
-OverlayCollection.prototype.getIcon = function(colorId, id) {
-  if (id >= 100) {
-    id = 1;
-  }
-  var color = this.getColor(colorId);
-  return "marker/" + this._iconType + "/" + this._iconType + "_" + color + "_" + id + ".png";
-};
-
-OverlayCollection.prototype.splitQuery = function (query, useFullName) {
-  var result = [];
-  if (query.indexOf(";")>=0) {
-    result = query.split(";");
-  } else {
-    result = query.split(",");
-  }
-
-  for (var i=0;i<result.length;i++) {
-    result[i]=result[i].trim();
-  }
-  if (result.length>1 && useFullName) {
-    result.push(query);
-  }
-  return result;
-};
-
-
-module.exports = OverlayCollection;
diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js
index 0f0324a68d9be7345408fa2a7d351ffe7a5a4b37..08cc8fd33649d7a1353bad344df5f3058f02c58a 100644
--- a/frontend-js/src/main/js/minerva.js
+++ b/frontend-js/src/main/js/minerva.js
@@ -12,7 +12,6 @@ var DrugDbOverlay = require('./map/overlay/DrugDbOverlay');
 var DrugPanel = require('./gui/DrugPanel');
 var MiRnaDbOverlay = require('./map/overlay/MiRnaDbOverlay');
 var MiRnaPanel = require('./gui/MiRnaPanel');
-var OverlayCollection = require('./map/overlay/OverlayCollection');
 var SearchDbOverlay = require('./map/overlay/SearchDbOverlay');
 var SearchPanel = require('./gui/SearchPanel');
 
@@ -163,8 +162,7 @@ function create(params) {
           customMap : result
         });
       } else {
-        collection = new OverlayCollection(collectionParams);
-        result.registerSource(collection);
+        throw new Error("Unknown overlay db: "+collectionParams.name);
       }
     }
   } else {
diff --git a/frontend-js/src/test/js/helper.js b/frontend-js/src/test/js/helper.js
index 6ca84dd1e27a7ebb923ee49f9e54c9022233d4d4..d9d487f6580ed420fdeec18c7df0ad34e4472786 100644
--- a/frontend-js/src/test/js/helper.js
+++ b/frontend-js/src/test/js/helper.js
@@ -16,7 +16,7 @@ var LayoutData = require("../../main/js/map/data/LayoutData");
 var LayoutReaction = require("../../main/js/map/data/LayoutReaction");
 var MiRnaDbOverlay = require("../../main/js/map/overlay/MiRnaDbOverlay");
 var Model = require("../../main/js/map/data/MapModel");
-var OverlayCollection = require("../../main/js/map/overlay/OverlayCollection");
+var AbstractDbOverlay = require("../../main/js/map/overlay/AbstractDbOverlay");
 var Project = require("../../main/js/map/data/Project");
 var Reaction = require("../../main/js/map/data/Reaction");
 var SearchDbOverlay = require("../../main/js/map/overlay/SearchDbOverlay");
@@ -98,6 +98,15 @@ Helper.prototype.createSearchDbOverlay = function(map) {
   return result;
 };
 
+Helper.prototype.createDbOverlay = function(map) {
+  var result = new AbstractDbOverlay({
+    map : map,
+    name : "search",
+  });
+  map.registerSource(result);
+  return result;
+};
+
 Helper.prototype.createDrugDbOverlay = function(map) {
   var result = new DrugDbOverlay({
     map : map,
@@ -166,16 +175,6 @@ Helper.prototype.createComment = function(element) {
   return result;
 };
 
-Helper.prototype.createDbOverlay = function(map) {
-  var result = new OverlayCollection({
-    map : map,
-    name : "overlay name: " + (this.idCounter++),
-    allowGeneralSearch : true
-  });
-  map.registerSource(result);
-  return result;
-};
-
 Helper.prototype.createProject = function() {
   var result = new Project();
   result.setProjectId("testId");
@@ -302,7 +301,7 @@ Helper.prototype.createOptions = function(project) {
     mapDiv : testDiv,
     project : project,
     dataCollections : [ {
-      name : "testCollection" + this.idCounter++,
+      name : "search",
     } ],
   };
   return options;
diff --git a/frontend-js/src/test/js/map/CustomMap-test.js b/frontend-js/src/test/js/map/CustomMap-test.js
index 6eaa12b6f1d5627b994a3e6a3b988c228b5becfb..e32e03d57cb8310a9cf11922a309dd2149c8eb04 100644
--- a/frontend-js/src/test/js/map/CustomMap-test.js
+++ b/frontend-js/src/test/js/map/CustomMap-test.js
@@ -4,7 +4,6 @@ var Helper = require('../Helper');
 
 require("../mocha-config.js");
 
-var AliasMarker = require('../../../main/js/map/marker/AliasMarker');
 var AliasOverlay = require('../../../main/js/map/overlay/AliasOverlay');
 var Comment = require('../../../main/js/map/data/Comment');
 var ControlType = require('../../../main/js/map/ControlType');
@@ -217,38 +216,6 @@ describe('CustomMap', function() {
     });
   });
 
-  it("openInfoWindowForMarker", function() {
-    var alias = helper.createAlias();
-
-    var map = helper.createCustomMap();
-    alias.setModelId(map.getId());
-    map.getModel().addAlias(alias);
-
-    var oc = helper.createDbOverlay(map);
-    oc.setAllowSearchById(true);
-    oc.setAllowGeneralSearch(false);
-
-    var javaObj = {
-      objectId : "Point2D.Double[117.685546875, 204.6923828125001]",
-      modelId : map.getId(),
-      type : "POINT",
-      icon : "marker/empty.png"
-    };
-
-    oc.elements.push(new IdentifiedElement(javaObj));
-    oc.setResultsIds([ 'result_id' ]);
-    return map.renderOverlayCollection(oc).then(function() {
-
-      var aliasMarker = new AliasMarker(alias.getId(), "marker/empty.png", alias, map);
-
-      map.openInfoWindowForMarker(aliasMarker);
-
-      assert.ok(map.getAliasInfoWindowById(alias.getId()));
-      assert.ok(map.getAliasInfoWindowById(alias.getId()).isOpened());
-    });
-
-  });
-
   it("renderOverlayCollection for alias", function() {
     var map = helper.createCustomMap();
     var reaction = helper.createReaction();
@@ -258,12 +225,16 @@ describe('CustomMap', function() {
 
     var oc = helper.createDbOverlay(map);
 
-    oc.elements.push(new IdentifiedElement({
-      objectId : alias.getId(),
-      icon : "empty.png",
-      modelId : map.getId(),
-      type : "Alias"
-    }));
+    oc.getIdentifiedElements = function() {
+      return new Promise(function(resolve) {
+        resolve([ new IdentifiedElement({
+          objectId : alias.getId(),
+          icon : "empty.png",
+          modelId : map.getId(),
+          type : "Alias"
+        }) ]);
+      });
+    };
 
     return map.renderOverlayCollection({
       overlayCollection : oc
@@ -283,14 +254,19 @@ describe('CustomMap', function() {
 
     var oc = helper.createDbOverlay(map);
 
-    var aliases = [];
+    var identifiedElements = [];
     for (var i = 0; i < 3; i++) {
       var alias = helper.createAlias(map);
       map.getModel().addAlias(alias);
-      aliases.push(alias);
-      oc.elements.push(helper.createIdentifiedElement(alias));
+      identifiedElements.push(helper.createIdentifiedElement(alias));
     }
 
+    oc.getIdentifiedElements = function() {
+      return new Promise(function(resolve) {
+        resolve(identifiedElements);
+      });
+    };
+
     return map.renderOverlayCollection({
       overlayCollection : oc
     }).then(function() {
@@ -317,7 +293,11 @@ describe('CustomMap', function() {
       icon : "marker/empty.png"
     };
 
-    oc.elements.push(new IdentifiedElement(javaObj));
+    oc.getIdentifiedElements = function() {
+      return new Promise(function(resolve) {
+        resolve([ new IdentifiedElement(javaObj) ]);
+      });
+    };
 
     return map.renderOverlayCollection({
       overlayCollection : oc
@@ -345,7 +325,11 @@ describe('CustomMap', function() {
       type : "Reaction",
     };
 
-    oc.elements.push(new IdentifiedElement(javaObj));
+    oc.getIdentifiedElements = function() {
+      return new Promise(function(resolve) {
+        resolve([ new IdentifiedElement(javaObj) ]);
+      });
+    };
 
     return map.renderOverlayCollection({
       overlayCollection : oc
@@ -372,7 +356,11 @@ describe('CustomMap', function() {
       icon : "marker/empty.png"
     };
 
-    oc.elements.push(new IdentifiedElement(javaObj));
+    oc.getIdentifiedElements = function() {
+      return new Promise(function(resolve) {
+        resolve([ new IdentifiedElement(javaObj) ]);
+      });
+    };
 
     map.renderOverlayCollection({
       overlayCollection : oc
diff --git a/frontend-js/src/test/js/map/overlay/OverlayCollection-test.js b/frontend-js/src/test/js/map/overlay/AbstractDbOverlay-test.js
similarity index 61%
rename from frontend-js/src/test/js/map/overlay/OverlayCollection-test.js
rename to frontend-js/src/test/js/map/overlay/AbstractDbOverlay-test.js
index 2410525c245aadac6dc9072f4af015c9b2d0291f..7729b5b41f49aa02b8c23e8761442df5ebe84a11 100644
--- a/frontend-js/src/test/js/map/overlay/OverlayCollection-test.js
+++ b/frontend-js/src/test/js/map/overlay/AbstractDbOverlay-test.js
@@ -2,13 +2,12 @@
 
 var Helper = require('../../Helper');
 
-var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
-var OverlayCollection = require('../../../../main/js/map/overlay/OverlayCollection');
+var AbstractDbOverlay = require('../../../../main/js/map/overlay/AbstractDbOverlay');
 
 var assert = require('assert');
 var logger = require('../../logger');
 
-describe('OverlayCollection', function() {
+describe('AbstractDbOverlay', function() {
   var helper;
   before(function() {
     helper = new Helper();
@@ -24,7 +23,7 @@ describe('OverlayCollection', function() {
   };
 
   it("constructor 1", function() {
-    var oc = new OverlayCollection({
+    var oc = new AbstractDbOverlay({
       map : mapMock,
       name : 'test name'
     });
@@ -34,7 +33,7 @@ describe('OverlayCollection', function() {
   });
 
   it("constructor 2", function() {
-    var oc = new OverlayCollection({
+    var oc = new AbstractDbOverlay({
       map : mapMock,
       name : 'test name',
       allowSearchById : true
@@ -44,7 +43,7 @@ describe('OverlayCollection', function() {
   });
 
   it("constructor 3", function() {
-    var oc = new OverlayCollection({
+    var oc = new AbstractDbOverlay({
       map : mapMock,
       name : 'test name',
       allowSearchById : false,
@@ -54,37 +53,10 @@ describe('OverlayCollection', function() {
     assert.ok(oc.allowGeneralSearch());
   });
 
-  it("getMissingDetailDataIds", function() {
-    var oc = helper.createDbOverlay(mapMock);
-    assert.ok(oc);
-
-    var javaObj = {
-      objectId : "31165",
-      modelId : 269,
-      type : "alias",
-      icon : "marker/marker/marker_red_1.png"
-    };
-    var ie = new IdentifiedElement(javaObj);
-
-    var data = oc.getMissingDetailDataIds(ie, true);
-
-    assert.deepEqual([ null ], data);
-
-    var result = {
-      field : 'val'
-    };
-
-    oc.updateOverviewElementDetailData(javaObj, '__FULL__', result);
-
-    data = oc.getMissingDetailDataIds(ie, true);
-
-    assert.deepEqual([], data);
-  });
-
   it("splitQuery", function() {
     var map = helper.createCustomMap();
 
-    var oc = helper.createDbOverlay(map);
+    var oc = helper.createSearchDbOverlay(map);
 
     var result = oc.splitQuery("test q");
     assert.equal(result[0], "test q");
@@ -93,7 +65,7 @@ describe('OverlayCollection', function() {
   it("splitQuery 2", function() {
     var map = helper.createCustomMap();
 
-    var oc = helper.createDbOverlay(map);
+    var oc = helper.createSearchDbOverlay(map);
 
     var result = oc.splitQuery("test,q");
     assert.equal(result[0], "test");
@@ -103,7 +75,7 @@ describe('OverlayCollection', function() {
   it("splitQuery 3", function() {
     var map = helper.createCustomMap();
 
-    var oc = helper.createDbOverlay(map);
+    var oc = helper.createSearchDbOverlay(map);
 
     var result = oc.splitQuery("test;q");
     assert.equal(result[0], "test");
@@ -113,7 +85,7 @@ describe('OverlayCollection', function() {
   it("splitQuery 4", function() {
     var map = helper.createCustomMap();
 
-    var oc = helper.createDbOverlay(map);
+    var oc = helper.createSearchDbOverlay(map);
 
     var result = oc.splitQuery("test;q,bla");
     assert.equal(result[0], "test");
@@ -124,7 +96,7 @@ describe('OverlayCollection', function() {
   it("splitQuery 5", function() {
     var map = helper.createCustomMap();
 
-    var oc = helper.createDbOverlay(map);
+    var oc = helper.createSearchDbOverlay(map);
 
     var result = oc.splitQuery("test;q,bla", true);
     assert.equal(result[0], "test");
diff --git a/frontend-js/src/test/js/map/window/AliasInfoWindow-test.js b/frontend-js/src/test/js/map/window/AliasInfoWindow-test.js
index 7e387fef0366ef1105febdce070d82a67493760a..dbc74c3eaf2eb76ba8b7fa603511fd96de0f5ece 100644
--- a/frontend-js/src/test/js/map/window/AliasInfoWindow-test.js
+++ b/frontend-js/src/test/js/map/window/AliasInfoWindow-test.js
@@ -8,7 +8,6 @@ var Alias = require('../../../../main/js/map/data/Alias');
 var AliasInfoWindow = require('../../../../main/js/map/window/AliasInfoWindow');
 var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
 var LayoutAlias = require('../../../../main/js/map/data/LayoutAlias');
-var OverlayCollection = require('../../../../main/js/map/overlay/OverlayCollection');
 
 var assert = require('assert');
 
@@ -182,25 +181,22 @@ describe('AliasInfoWindow', function() {
   it("AliasInfoWindow createOverlayInfoDiv", function() {
     var map = helper.createCustomMap();
 
-    var oc = new OverlayCollection({
-      map : map,
-      name : 'test name',
-      allowSearchById : false,
-      allowGeneralSearch : true
-    });
+    var oc = helper.createDrugDbOverlay(map);
 
     var alias = helper.createAlias(map);
     var aliasWindow = new AliasInfoWindow(alias, map);
 
-    var data = oc.getDetailDataByIdentifiedElement(new IdentifiedElement(alias), true);
-    data['test'] = {
-      xField : 'y_param'
+    oc.searchNamesByTarget = function() {
+      return new Promise(function(resolve) {
+        resolve(["xField"]);
+      });
     };
 
-    var overlayDiv = aliasWindow.createOverlayInfoDiv(oc, data);
-
-    assert.ok(functions.isDomElement(overlayDiv));
-    assert.ok(overlayDiv.innerHTML.indexOf('xField') >= 0);
+    return oc.getDetailDataByIdentifiedElement(new IdentifiedElement(alias), true).then(function(data) {
+      var overlayDiv = aliasWindow.createOverlayInfoDiv(oc, data);
+      assert.ok(functions.isDomElement(overlayDiv));
+      assert.ok(overlayDiv.innerHTML.indexOf('xField') >= 0);
+    });
 
   });
 
@@ -213,7 +209,7 @@ describe('AliasInfoWindow', function() {
     alias.setId(329170);
     alias.setModelId(map.getId());
     map.getModel().addAlias(alias);
-    
+
     var aliasWindow = new AliasInfoWindow(alias, map);
 
     return oc.getDetailDataByIdentifiedElement(new IdentifiedElement(alias), true).then(function(data) {
@@ -225,7 +221,7 @@ describe('AliasInfoWindow', function() {
     });
   });
 
-  it("AliasInfoWindow createCommentOverlayInfoDiv", function() {
+  it("createCommentOverlayInfoDiv", function() {
     var map = helper.createCustomMap();
 
     var oc = helper.createCommentDbOverlay(map);
diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js
index da531e75afc12ac3cd758078c77f079aefb5a9a7..cafc1f16ffe73876133cdff806e030bb7caa765b 100644
--- a/frontend-js/src/test/js/minerva-test.js
+++ b/frontend-js/src/test/js/minerva-test.js
@@ -20,10 +20,10 @@ describe('minerva global', function() {
   beforeEach(function() {
     global.searchTab = helper.createSearchTab();
     document.body.appendChild(global.searchTab);
-    
+
     global.drugTab = helper.createDrugTab();
     document.body.appendChild(global.drugTab);
-    
+
     global.chemicalTab = helper.createChemicalTab();
     document.body.appendChild(global.chemicalTab);