diff --git a/frontend-js/src/main/js/gui/leftPanel/Footer.js b/frontend-js/src/main/js/gui/leftPanel/Footer.js
index a673ff93ad312c61b6be76d528c7e8cc7f9f5ea3..7b4c454803140f38699bafe81ecb9dc9a3e59368 100644
--- a/frontend-js/src/main/js/gui/leftPanel/Footer.js
+++ b/frontend-js/src/main/js/gui/leftPanel/Footer.js
@@ -87,7 +87,7 @@ Footer.prototype.removeLoadMessage = function(message) {
   if (index > -1) {
     self._loadMessages.splice(index, 1);
   } else {
-    logger.warn("Removing message that is not there: " + message);
+    logger.debug("Removing message that is not there: " + message);
   }
 };
 
diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js
index be0c59335fbf9e55a9035eafc80d9027fe4aeb7b..f4d354085a74fef80b2d835275f8e666fe5da162 100644
--- a/frontend-js/src/main/js/map/AbstractCustomMap.js
+++ b/frontend-js/src/main/js/map/AbstractCustomMap.js
@@ -604,7 +604,13 @@ AbstractCustomMap.prototype._showSelectedLayout = function(layoutId, index, leng
       return Promise.each(layoutReactions, function(layoutReaction) {
         if (layoutReaction.getModelId() === self.getId()) {
           return self.getModel().getReactionById(layoutReaction.getId()).then(function(reactionData) {
-            var reactionOverlay = new ReactionOverlay(layoutReaction, reactionData, self, length === 1);
+            var reactionOverlay = new ReactionOverlay({
+              layoutReaction : layoutReaction,
+              reaction : reactionData,
+              map : self,
+              customized : (length === 1)
+            });
+
             self.selectedLayoutOverlays[layoutId].push(reactionOverlay);
             reactionOverlay.show();
           });
diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js
index 366dc77be1d9d56af8886afb4754b4d2a3aa5900..32c404ef813e45233670fb63ef0aa6a28d88970f 100644
--- a/frontend-js/src/main/js/map/CustomMap.js
+++ b/frontend-js/src/main/js/map/CustomMap.js
@@ -1260,12 +1260,17 @@ CustomMap.prototype.createMapOverlayForDbOverlay = function(element, dbOverlay)
     return Promise.resolve(null);
   }
 
-  var model = self.getSubmapById(element.getModelId());
+  var map = self.getSubmapById(element.getModelId());
   if (element.getType() === "ALIAS") {
     return AliasOverlay.createFromIdentifiedElement(element, self);
   } else if (element.getType() === "REACTION") {
-    return model.getModel().getReactionById(element.getId()).then(function(reactionData) {
-      var reactionOverlay = new ReactionOverlay(null, reactionData, model, false, element.getId());
+    return map.getModel().getReactionById(element.getId()).then(function(reactionData) {
+      var reactionOverlay = new ReactionOverlay({
+        reaction : reactionData,
+        map : map,
+        customized : false,
+        color : element.getColor(),
+      });
       reactionOverlay.show();
       return reactionOverlay;
     });
diff --git a/frontend-js/src/main/js/map/overlay/ReactionOverlay.js b/frontend-js/src/main/js/map/overlay/ReactionOverlay.js
index 4993c514edcefe9cf55fac236303503a32026d91..b679c379dbca2377b7e052fc4580e546bc483d6d 100644
--- a/frontend-js/src/main/js/map/overlay/ReactionOverlay.js
+++ b/frontend-js/src/main/js/map/overlay/ReactionOverlay.js
@@ -21,33 +21,33 @@ var AbstractOverlayElement = require('./AbstractOverlayElement');
  *          visualized (there is no simple way to visualize few layouts at the
  *          same time)
  */
-function ReactionOverlay(layoutReaction, reactionData, map, customized) {
+function ReactionOverlay(params) {
   // call super constructor
   AbstractOverlayElement.call();
 
-  this.color = "#FF0000";
+  var overlayData = params.layoutReaction;
+  this.setReactionData(params.reaction);
+  this.setCustomMap(params.map);
+  this.setCustomized(params.customized);
+
+  var color = params.color;
   this.width = 5.0;
   // list of google map objects associated with the reaction (like lines)
   this.gmapObjects = [];
-  // AbstractCustomMap where the reaction is located
-  this.customMap = map;
-  // original data
-  this.reactionData = reactionData;
-
-  this.customized = customized;
 
-  if (reactionData === undefined || reactionData === null) {
-    throw new Error("Reaction must be defined");
-  }
-
-  if (layoutReaction !== undefined && layoutReaction !== null) {
-    if (layoutReaction.width) {
-      this.width = layoutReaction.width;
+  if (overlayData !== undefined && overlayData !== null) {
+    if (overlayData.width) {
+      this.width = overlayData.width;
     }
-    this.color = functions.overlayToColor(layoutReaction);
+    color = functions.overlayToColor(overlayData);
+  }
+  if (color === undefined) {
+    color = "#FF0000";
   }
+
+  this.setColor(color);
+
   this.init();
-  this._id = reactionData.getId();
 }
 
 ReactionOverlay.prototype = Object.create(AbstractOverlayElement.prototype);
@@ -84,6 +84,10 @@ ReactionOverlay.prototype.setMap = function(map) {
   }
 };
 
+ReactionOverlay.prototype.setCustomized = function(customized) {
+  this.customized = customized;
+};
+
 /**
  * Returns <code>true</code> if the object is visible on the map,
  * <code>false</code> otherwise.
@@ -269,12 +273,24 @@ ReactionOverlay.prototype.getCustomMap = function() {
   return this.customMap;
 };
 
+ReactionOverlay.prototype.setCustomMap = function(customMap) {
+  this.customMap = customMap;
+};
+
 ReactionOverlay.prototype.getId = function() {
   return this._id;
 };
 
+ReactionOverlay.prototype.setId = function(id) {
+  this._id = id;
+};
+
 ReactionOverlay.prototype.setReactionData = function(value) {
+  if (value === undefined || value === null) {
+    throw new Error("Reaction must be defined");
+  }
   this.reactionData = value;
+  this.setId(value.getId());
 };
 
 ReactionOverlay.prototype.isCustomized = function() {
diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js
index 5efacbec7526c7e265faca8645997860a2241d6d..78d17fc44152d1ef04825feebe187e3b343003d6 100644
--- a/frontend-js/src/main/js/minerva.js
+++ b/frontend-js/src/main/js/minerva.js
@@ -167,25 +167,28 @@ function getOverlayByName(customMap, dbOverlayName) {
   }
 }
 
-function createMarkerElements(params, type, isDefault) {
+function createMarkerElements(options) {
+  var params = options.params;
+  var filteredType = options.filteredType;
+  var isDefault = options.isDefault;
+
   var markerElements = [];
   if (params.length === undefined) {
     params = [ params ];
   }
   for (var i = 0; i < params.length; i++) {
     var elementParam = params[i];
-    if (elementParam.options === undefined && isDefault) {
+    if (elementParam.type === undefined && isDefault) {
       markerElements.push({
         element : elementParam.element,
       });
-    } else if (elementParam.options.type === type) {
+    } else if (elementParam.type === filteredType) {
       markerElements.push({
         element : elementParam.element,
-        icon : elementParam.options.icon,
-        color : elementParam.options.color,
+        options : elementParam.options,
       });
-    } else if (elementParam.options.type !== "ICON" && elementParam.options.type !== "SURFACE") {
-      throw new Error("Unknown type:" + elementParam.options.type);
+    } else if (elementParam.type !== "ICON" && elementParam.type !== "SURFACE") {
+      throw new Error("Unknown type:" + elementParam.type);
     }
   }
   return markerElements;
@@ -235,15 +238,31 @@ function createResult(customMap) {
       });
     },
     showBioEntity : function(params) {
-      var iconElements = createMarkerElements(params, "ICON", true);
-      var surfaceElements = createMarkerElements(params, "SURFACE", false);
+      var iconElements = createMarkerElements({
+        params : params,
+        filteredType : "ICON",
+        isDefault : true
+      });
+      var surfaceElements = createMarkerElements({
+        params : params,
+        filteredType : "SURFACE",
+        isDefault : false
+      });
       return customMap.getOverlayByName("user").addMarker(iconElements).then(function() {
         return customMap.getOverlayByName("user").addSurface(surfaceElements);
       });
     },
     hideBioEntity : function(params) {
-      var iconElements = createMarkerElements(params, "ICON", true);
-      var surfaceElements = createMarkerElements(params, "SURFACE", false);
+      var iconElements = createMarkerElements({
+        params : params,
+        filteredType : "ICON",
+        isDefault : true
+      });
+      var surfaceElements = createMarkerElements({
+        params : params,
+        filteredType : "SURFACE",
+        isDefault : false
+      });
       return customMap.getOverlayByName("user").removeMarker(iconElements).then(function() {
         return customMap.getOverlayByName("user").removeSurface(surfaceElements);
       });
@@ -330,8 +349,8 @@ function create(params) {
   params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>"
       + "<img src='resources/images/icons/ajax-loader.gif'/>" + "</div>";
 
-  //make sure that we are logged in
-  return ServerConnector.getToken().then(function(){
+  // make sure that we are logged in
+  return ServerConnector.getToken().then(function() {
     return getProject(params);
   }).then(function(project) {
     params.setProject(project);
diff --git a/frontend-js/src/test/js/map/overlay/ReactionOverlay-test.js b/frontend-js/src/test/js/map/overlay/ReactionOverlay-test.js
index 09e2e7664f4641a96710fc738b918712a6c85981..b653166955e8e165332451430a46da2d09cb2210 100644
--- a/frontend-js/src/test/js/map/overlay/ReactionOverlay-test.js
+++ b/frontend-js/src/test/js/map/overlay/ReactionOverlay-test.js
@@ -20,7 +20,12 @@ describe('ReactionOverlay', function() {
     var reaction = helper.createReaction(map);
     var layoutReaction = helper.createLayoutReaction(reaction);
 
-    var reactionOverlay = new ReactionOverlay(layoutReaction, reaction, map, false);
+    var reactionOverlay = new ReactionOverlay({
+      overlayData : layoutReaction,
+      reaction : reaction,
+      map : map,
+      customized : false
+    });
 
     assert.ok(reactionOverlay.gmapObjects);
     assert.ok(reactionOverlay.getColor());
@@ -37,7 +42,12 @@ describe('ReactionOverlay', function() {
     var reaction = helper.createReaction(map);
     var layoutReaction = helper.createLayoutReaction(reaction);
 
-    var reactionOverlay = new ReactionOverlay(layoutReaction, reaction, map, false);
+    var reactionOverlay = new ReactionOverlay({
+      overlayData : layoutReaction,
+      reaction : reaction,
+      map : map,
+      customized : false
+    });
 
     reactionOverlay.hide();
     assert.equal(reactionOverlay.isShown(), false);
diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js
index 989a7079ea881f764b0d9907b6d5581e0aa2623c..45cc2be4320167df928f201754910e613f4fcde3 100644
--- a/frontend-js/src/test/js/minerva-test.js
+++ b/frontend-js/src/test/js/minerva-test.js
@@ -281,9 +281,7 @@ describe('minerva global', function() {
         modelId : 15781,
         type : "ALIAS"
       },
-      options : {
-        type : "ICON"
-      }
+      type : "ICON",
     };
 
     var elementToShow2 = {
@@ -292,8 +290,9 @@ describe('minerva global', function() {
         modelId : 15781,
         type : "ALIAS"
       },
+      type : "SURFACE",
       options : {
-        type : "SURFACE"
+        color : "#FF0000",
       }
     };
     return minerva.create(options).then(function(result) {