diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js
index c28504f7e70433ffc6fb2d8d7b00f4b0ea1ce671..a56def99de751f555db7c6c4cde8c363ba3a9655 100644
--- a/frontend-js/src/main/js/map/CustomMap.js
+++ b/frontend-js/src/main/js/map/CustomMap.js
@@ -1236,9 +1236,10 @@ CustomMap.prototype.createMarkerForDbOverlay = function(element, dbOverlay) {
 
   var model = self.getSubmapById(element.getModelId());
   if (element.getType() === "ALIAS") {
-    return model.getModel().getAliasById(element.getId()).then(function(aliasData) {
-      return new AliasMarker(element.getId(), element.getIcon(), aliasData, model);
-    });
+    var marker = new AliasMarker(element, self); 
+    return marker.init().then(function(){
+      return marker;
+    })
   } else if (element.getType() === "REACTION") {
     return model.getModel().getReactionById(element.getId()).then(function(reactionData) {
       return new ReactionMarker(element.getId(), element.getIcon(), reactionData, model);
diff --git a/frontend-js/src/main/js/map/marker/AbstractMarker.js b/frontend-js/src/main/js/map/marker/AbstractMarker.js
index d7bb24a6667359958dc6490109da748740276b72..3305822e934a36c4ee57393b84698618c4e78b40 100644
--- a/frontend-js/src/main/js/map/marker/AbstractMarker.js
+++ b/frontend-js/src/main/js/map/marker/AbstractMarker.js
@@ -109,7 +109,7 @@ AbstractMarker.prototype.setMap = function(map) {
 /**
  * Initializes google.maps.Marker object connected to this object.
  */
-AbstractMarker.prototype.init = function() {
+AbstractMarker.prototype._init = function() {
   var self = this;
   var point = this.getCoordinates();
   var latLng = this.getCustomMap().fromPointToLatLng(point);
@@ -128,7 +128,7 @@ AbstractMarker.prototype.init = function() {
     };
   })();
   google.maps.event.addListener(this.getGoogleMarker(), 'click', onclick);
-
+  return Promise.resolve();
 };
 
 /**
diff --git a/frontend-js/src/main/js/map/marker/AliasMarker.js b/frontend-js/src/main/js/map/marker/AliasMarker.js
index 6ba49483a21b9f4bbab180942f35ee762ebbd154..b06f3ae9b3a28a74be8708b4af045ae96e26a319 100644
--- a/frontend-js/src/main/js/map/marker/AliasMarker.js
+++ b/frontend-js/src/main/js/map/marker/AliasMarker.js
@@ -1,24 +1,20 @@
 "use strict";
 
 var AbstractMarker = require('./AbstractMarker');
+var IdentifiedElement = require('../data/IdentifiedElement');
 
 /**
  * This class describes Google maps marker (connected to {@link Alias}) that is
  * visualized on the map.
  */
-function AliasMarker(id, icon, aliasData, map) {
-  AbstractMarker.call(this, icon, map);
-  // id of the alias to which marker is connected
-  this._id = id;
-  // data about the Alias connected to the marker
-  this._aliasData = aliasData;
-  // google.maps.Marker object
-  this._marker = null;
-  if (this._aliasData === null || this._aliasData === undefined) {
-    throw new Error("Alias for marker must be defined");
+function AliasMarker(element, map) {
+  if (!(element instanceof IdentifiedElement)) {
+    throw new Error("First argument must be of IdentifiedElement class");
   }
-  this.init();
-  this.show();
+  AbstractMarker.call(this, element.getIcon(), map);
+  // id of the alias to which marker is connected
+  this.setId(element.getId());
+  this.setIdentifiedElement(element);
 }
 AliasMarker.prototype = Object.create(AbstractMarker.prototype);
 AliasMarker.prototype.constructor = AliasMarker;
@@ -31,6 +27,9 @@ AliasMarker.prototype.constructor = AliasMarker;
 AliasMarker.prototype.getId = function() {
   return this._id;
 };
+AliasMarker.prototype.setId = function(id) {
+  this._id = id;
+};
 
 /**
  * Returns {@link Alias} data for this marker.
@@ -74,4 +73,23 @@ AliasMarker.prototype.getModelId = function() {
   return this.getAliasData().getModelId();
 };
 
+AliasMarker.prototype.init = function() {
+  var self = this;
+  var model = self.getCustomMap().getModel().getSubmodelById(self.getIdentifiedElement().getModelId());
+  return model.getByIdentifiedElement(self.getIdentifiedElement()).then(function(aliasData) {
+    self.setAliasData(aliasData);
+    return self._init();
+  }).then(function() {
+    self.show();
+  });
+};
+
+AliasMarker.prototype.getIdentifiedElement = function() {
+  return this._identifiedElement;
+};
+
+AliasMarker.prototype.setIdentifiedElement = function(identifiedElement) {
+  this._identifiedElement = identifiedElement;
+};
+
 module.exports = AliasMarker;
diff --git a/frontend-js/src/main/js/map/marker/PointMarker.js b/frontend-js/src/main/js/map/marker/PointMarker.js
index 7f24a727679100509040372cf1fcfc70c22e6e26..6c2afb331062bcf3226945bf5c20bd149f662311 100644
--- a/frontend-js/src/main/js/map/marker/PointMarker.js
+++ b/frontend-js/src/main/js/map/marker/PointMarker.js
@@ -16,7 +16,7 @@ function PointMarker(pointData, icon, map) {
   if (typeof map === "undefined") {
     throw new Error("Map must be passed");
   }
-  this.init();
+  this._init();
   this.show();
 }
 PointMarker.prototype = Object.create(AbstractMarker.prototype);
diff --git a/frontend-js/src/main/js/map/marker/ReactionMarker.js b/frontend-js/src/main/js/map/marker/ReactionMarker.js
index 6199fd525a011263ca0170b55b64a21cccb3b5bd..789aa8c04dea31609f9596fd2adf081b9719143f 100644
--- a/frontend-js/src/main/js/map/marker/ReactionMarker.js
+++ b/frontend-js/src/main/js/map/marker/ReactionMarker.js
@@ -15,7 +15,7 @@ function ReactionMarker(id, icon, reactionData, map) {
   // google.maps.Marker object
   this._marker = null;
   if (this._reactionData !== null && this._reactionData !== undefined) {
-    this.init();
+    this._init();
     this.show();
   }
 }
diff --git a/frontend-js/src/test/js/map/AbstractCustomMap-test.js b/frontend-js/src/test/js/map/AbstractCustomMap-test.js
index 82abf3c8f702d616437740b01f2a72fc9bf9c66a..2f54aa65b926fe769770555991eaff2f693d7fd5 100644
--- a/frontend-js/src/test/js/map/AbstractCustomMap-test.js
+++ b/frontend-js/src/test/js/map/AbstractCustomMap-test.js
@@ -8,6 +8,7 @@ var AliasMarker = require('../../../main/js/map/marker/AliasMarker');
 var AbstractCustomMap = require('../../../main/js/map/AbstractCustomMap');
 var PointData = require('../../../main/js/map/data/PointData');
 var PointMarker = require('../../../main/js/map/marker/PointMarker');
+var IdentifiedElement = require('../../../main/js/map/data/IdentifiedElement');
 
 var chai = require('chai');
 var assert = chai.assert;
@@ -288,15 +289,25 @@ describe('AbstractCustomMap', function() {
   });
 
   it("_openInfoWindowForMarker(AliasMarker)", function() {
-    var mockObject = helper.createCustomMap();
-
-    var data = helper.createAlias(mockObject);
-    data.setIsComplete(true);
-    var aliasMarker = new AliasMarker(data.getId(), "empty.png", data, mockObject);
-
-    assert.equal(null, mockObject.getAliasInfoWindowById(data.getId()));
-    return mockObject._openInfoWindowForMarker(aliasMarker).then(function(){
-      assert.ok(mockObject.getAliasInfoWindowById(data.getId()));
+    var map;
+    var alias, marker;
+    return ServerConnector.getProject().then(function(project) {
+      map = helper.createCustomMap(project);
+      return map.getModel().getAliasById(329171);
+    }).then(function(result) {
+      alias = result;
+
+      var identifiedElement = new IdentifiedElement(alias);
+      identifiedElement.setIcon("empty.png");
+
+      marker = new AliasMarker(identifiedElement, map);
+
+      return marker.init();
+    }).then(function(){
+      assert.equal(null, map.getAliasInfoWindowById(alias.getId()));
+      return map._openInfoWindowForMarker(marker).then(function() {
+        assert.ok(map.getAliasInfoWindowById(alias.getId()));
+      });
     });
 
   });
@@ -307,7 +318,7 @@ describe('AbstractCustomMap', function() {
     mockObject.getTopMap = function() {
       return mockObject;
     };
-    mockObject.getOverlayDataForPoint= function() {
+    mockObject.getOverlayDataForPoint = function() {
       return Promise.resolve([]);
     };
 
diff --git a/frontend-js/src/test/js/map/marker/AliasMarker-test.js b/frontend-js/src/test/js/map/marker/AliasMarker-test.js
index f2d1d916c44ee4c0f6dbea78a956a09d8bba68cf..5b1311374e8278124bc924807b65017e6220e6f5 100644
--- a/frontend-js/src/test/js/map/marker/AliasMarker-test.js
+++ b/frontend-js/src/test/js/map/marker/AliasMarker-test.js
@@ -3,6 +3,7 @@
 var Helper = require('../../Helper');
 
 var AliasMarker = require('../../../../main/js/map/marker/AliasMarker');
+var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
 var assert = require('assert');
 
 describe('AliasMarker', function() {
@@ -12,29 +13,43 @@ describe('AliasMarker', function() {
   });
 
   it("Constructor", function() {
-    var map = helper.createAbstractCustomMap();
-    var alias = helper.createAlias(map);
-
-    var aliasMarker = new AliasMarker(alias.getId(), "empty.png", alias, map);
-
-    assert.equal(alias.getId(), aliasMarker.getId());
-    assert.equal(map, aliasMarker.getCustomMap());
-    assert.equal("empty.png", aliasMarker.getIcon());
-    assert.equal(alias, aliasMarker.getAliasData());
-
-    assert.ok(aliasMarker._marker);
-    assert.ok(aliasMarker.getBounds());
+    var map;
+    var alias, marker;
+    return ServerConnector.getProject().then(function(project) {
+      map = helper.createCustomMap(project);
+      return map.getModel().getAliasById(329171);
+    }).then(function(result) {
+      alias = result;
+
+      var identifiedElement = new IdentifiedElement(alias);
+      identifiedElement.setIcon("empty.png");
+
+      marker = new AliasMarker(identifiedElement, map);
+
+      assert.equal(alias.getId(), marker.getId());
+      assert.equal(map, marker.getCustomMap());
+      assert.equal("empty.png", marker.getIcon());
+      return marker.init();
+    }).then(function() {
+      assert.equal(alias, marker.getAliasData());
+      assert.ok(marker._marker);
+      assert.ok(marker.getBounds());
+    });
   });
 
   it("click on marker", function() {
-    return ServerConnector.getProject().then(function(project){
-      var map = helper.createCustomMap(project);
-      var alias = helper.createAlias(map);
+    var map;
+    return ServerConnector.getProject().then(function(project) {
+      map = helper.createCustomMap(project);
+      return map.getModel().getAliasById(329171);
+    }).then(function(alias) {
+
+      var identifiedElement = new IdentifiedElement(alias);
+
+      var aliasMarker = new AliasMarker(identifiedElement, map);
 
-      var aliasMarker = new AliasMarker(alias.getId(), "empty.png", alias, map);
+      return google.maps.event.trigger(aliasMarker.getGoogleMarker(), "click").then(function() {
 
-      return google.maps.event.trigger(aliasMarker.getGoogleMarker(), "click").then(function(){
-        
       });
     });
   });