diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index 124f2761f7d3db93665360aad8a2b21ca62ba95c..14aaaacc0323f4fa8a3383ab7d23316034c48ad0 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -41,46 +41,8 @@ ServerConnector._overlayMethods = [];
  */
 ServerConnector.formIdentifier = "_gmapForm";
 
-/**
- * Variable describing when was last transmition of data (location of the map,
- * zoom level, etc.) to the server session.
- */
-ServerConnector.lastActualization = 0;
-
 ServerConnector._customMap = null;
 
-/**
- * Sets list of layouts visualized by javascript.
- */
-ServerConnector.setVisibleLayouts = function(value) {
-  document.getElementById(ServerConnector.formIdentifier + ':visibleLayouts').value = value;
-};
-
-/**
- * Sends data about coordinates/zoom level etc. to the server. Method checks if
- * the transmition is not done to often (at most once per second)
- */
-ServerConnector.actualizeSessionData = function() {
-  var timestamp = new Date().getTime();
-  // we send the data with at least 1 second time distance
-  if (timestamp > ServerConnector.lastActualization) {
-    ServerConnector.lastActualization = timestamp + 1000;
-    setTimeout(function() {
-      ServerConnector.actualizeParams();
-    }, 1000);
-  }
-};
-
-/**
- * Sends data about coordinates/zoom level etc. to the server. Sending is
- * performed immediatelly.
- * 
- * @see ServerConnector.actualizeSessionData
- */
-ServerConnector.actualizeParams = function() {
-  _actualizeParams();
-};
-
 /**
  * Sets search query that will be handled by server.
  */
diff --git a/frontend-js/src/main/js/SessionData.js b/frontend-js/src/main/js/SessionData.js
index 31f2038315a6679b18568fcaba18e308f50c6989..0e3e0a223896394cdf8797a6f9a28d7e1372b86d 100644
--- a/frontend-js/src/main/js/SessionData.js
+++ b/frontend-js/src/main/js/SessionData.js
@@ -39,7 +39,21 @@ SessionData.prototype.setSelectedBackgroundOverlay = function(value) {
   Cookies.set(key, value + "");
 };
 
+SessionData.prototype.getVisibleOverlays = function() {
+  var key = this.getKey(SessionObjectType.VISIBLE_OVERLAYS);
+  var value = Cookies.get(key);
+  if (value === undefined || value === "") {
+    value = [];
+  } else {
+    value = value.split(",");
+  }
+  return value;
+};
 
+SessionData.prototype.setVisibleOverlays = function(value) {
+  var key = this.getKey(SessionObjectType.VISIBLE_OVERLAYS);
+  Cookies.set(key, value + "");
+};
 
 SessionData.prototype.setZoomLevel = function(model, value) {
   var key = this.getKey(SessionObjectType.ZOOM_LEVEL, [ model.getId() ]);
diff --git a/frontend-js/src/main/js/SessionObjectType.js b/frontend-js/src/main/js/SessionObjectType.js
index a4aeba45dec0f7974a0e972df4f30f7db09b7197..8514f367942c6dc41b713266c26d33bdd34db1b5 100644
--- a/frontend-js/src/main/js/SessionObjectType.js
+++ b/frontend-js/src/main/js/SessionObjectType.js
@@ -3,6 +3,7 @@
 var SessionObjectType = {
   SHOW_COMMENT : "SHOW_COMMENT",
   SELECTED_BACKGROUND_OVERLAY : "SELECTED_BACKGROUND_OVERLAY",
+  VISIBLE_OVERLAYS : "VISIBLE_OVERLAYS",
 
   CENTER : "CENTER",
   ZOOM_LEVEL : "ZOOM_LEVEL",
diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js
index f11091caa10a1f28684af3ae884cd6c1c1e7f367..9e3d6a61b51b5e490b0b93a07d2eddd53ded512b 100644
--- a/frontend-js/src/main/js/map/CustomMap.js
+++ b/frontend-js/src/main/js/map/CustomMap.js
@@ -87,9 +87,6 @@ function CustomMap(options) {
   var commentDialog = new CommentDialog(document.getElementById("feedbackContent"), this); 
 
   this.setCommentDialog(commentDialog);
-  
-  
-  ServerConnector.actualizeSessionData();
 }
 
 CustomMap.prototype = Object.create(AbstractCustomMap.prototype);
@@ -1077,10 +1074,9 @@ CustomMap.prototype.addSelectedLayout = function(identifier) {
       resolve();
     } else {
       self.selectedLayouts[identifier] = true;
+      ServerConnector.getSessionData(self.getProject()).setVisibleOverlays(self.getSelectedLayouts());
       return self.getModel().initLayoutDataByLayoutId(identifier).then(function() {
         return self.refreshSelectedLayouts();
-      }).then(function() {
-        return ServerConnector.setVisibleLayouts(JSON.stringify(self.getSelectedLayouts()));
       }).then(function() {
         resolve();
       }).catch(function(exception){
@@ -1123,7 +1119,7 @@ CustomMap.prototype.removeSelectedLayout = function(identifier) {
   } else {
     this.selectedLayouts[identifier] = false;
     this.refreshSelectedLayouts();
-    ServerConnector.setVisibleLayouts(JSON.stringify(this.getSelectedLayouts()));
+    ServerConnector.getSessionData(this.getProject()).setVisibleOverlays(this.getSelectedLayouts());
   }
 };
 
diff --git a/frontend-js/src/test/js/ServerConnector-mock.js b/frontend-js/src/test/js/ServerConnector-mock.js
index 67cba6236bbe7296435e985d55c4599e67510804..0f84b28d5a8fdfcea239e85d9e7df600318201ee 100644
--- a/frontend-js/src/test/js/ServerConnector-mock.js
+++ b/frontend-js/src/test/js/ServerConnector-mock.js
@@ -100,22 +100,6 @@ ServerConnectorMock.getExportModelId = function() {
   return this.exportModelId;
 };
 
-ServerConnectorMock.actualizeSessionData = function() {
-  ServerConnectorMock.callListeners("onActualizeSessionData");
-};
-
-ServerConnectorMock.actualizeParams = function() {
-  ServerConnectorMock.callListeners("onActualizeParams");
-};
-
-ServerConnectorMock.setVisibleLayouts = function(value) {
-  this.visibleLayouts = value;
-};
-
-ServerConnectorMock.getVisibleLayouts = function() {
-  return this.visibleLayouts;
-};
-
 ServerConnectorMock.sendClearRequest = function(overlayName) {
   ServerConnectorMock.callListeners("onSendClearRequest", overlayName);
 };
diff --git a/frontend-js/src/test/js/SessionData-test.js b/frontend-js/src/test/js/SessionData-test.js
index 0f722e79c3e96946416bf0f8cf1818c3997790c1..d9745cfb9f354002d10eb83ac89ff69c70bd8503 100644
--- a/frontend-js/src/test/js/SessionData-test.js
+++ b/frontend-js/src/test/js/SessionData-test.js
@@ -26,4 +26,22 @@ describe('SessionData', function() {
     assert.notOk(session.getShowComments());
     assert.equal(logger.getWarnings().length, 0);
   });
+  
+  it('setVisibleOverlays', function() {
+    var project = helper.createProject();
+    var session = new SessionData(project);
+    
+    var overlays = session.getVisibleOverlays();
+    
+    assert.ok(overlays);
+    assert.equal(overlays.length, 0);
+    
+    session.setVisibleOverlays([1,3]);
+    overlays = session.getVisibleOverlays();
+    
+    assert.ok(overlays);
+    assert.equal(overlays.length, 2);
+    assert.equal(overlays[0],1);
+    assert.equal(overlays[1],3);
+  });
 });
diff --git a/frontend-js/src/test/js/map/CustomMap-test.js b/frontend-js/src/test/js/map/CustomMap-test.js
index dfffd450989d8e6865e14aae9273b2ca71699c43..c7d46c095a309485a0ac6f41dd74e0fb89d416b6 100644
--- a/frontend-js/src/test/js/map/CustomMap-test.js
+++ b/frontend-js/src/test/js/map/CustomMap-test.js
@@ -89,12 +89,25 @@ describe('CustomMap', function() {
     map.getModel().addLayout(layout);
 
     return map.addSelectedLayout(layout.getId()).then(function() {
-      var vLayouts = JSON.parse(ServerConnector.getVisibleLayouts());
+      var vLayouts = ServerConnector.getSessionData(map.getProject()).getVisibleOverlays();
       assert.equal(1, vLayouts.length);
       assert.equal(layout.getId(), vLayouts[0]);
     });
   });
 
+  it("removeSelectedLayout", function() {
+    var map = helper.createCustomMap();
+    var layout = helper.createLayout();
+    layout.setInitialized(true);
+    map.getModel().addLayout(layout);
+
+    return map.addSelectedLayout(layout.getId()).then(function() {
+      map.removeSelectedLayout(layout.getId());
+      var vLayouts = ServerConnector.getSessionData(map.getProject()).getVisibleOverlays();
+      assert.equal(0, vLayouts.length);
+    });
+  });
+
   it("addSelectedLayout with data download", function() {
     var map = helper.createCustomMap();
     var layout = helper.createLayout();
@@ -102,7 +115,7 @@ describe('CustomMap', function() {
     map.getModel().addLayout(layout);
 
     return map.addSelectedLayout(layout.getId()).then(function() {
-      var vLayouts = JSON.parse(ServerConnector.getVisibleLayouts());
+      var vLayouts = ServerConnector.getSessionData(map.getProject()).getVisibleOverlays();
       assert.equal(1, vLayouts.length);
       assert.equal(layout.getId(), vLayouts[0]);
 
diff --git a/web/src/main/webapp/WEB-INF/components/map/map.xhtml b/web/src/main/webapp/WEB-INF/components/map/map.xhtml
index ab6c1aae43295fd0f95d5d96e913d81a13eba8fe..5e386d8e3db0fb6432ab462fb28c38f15b1f131b 100644
--- a/web/src/main/webapp/WEB-INF/components/map/map.xhtml
+++ b/web/src/main/webapp/WEB-INF/components/map/map.xhtml
@@ -33,7 +33,6 @@
 			<p:contextMenu id="selectionContextMenu" model="#{exportMB.imageExportMenu}" for="gmapElement"/>	
 
 			<h:inputHidden id="selectedPolygon" value="#{exportMB.selectedPolygon}"/>
-			<h:inputHidden id="visibleLayouts" value="#{exportMB.visibleLayouts}"/>
 			<h:inputHidden id="exportModelId" value="#{exportMB.selectedModelId}"/>
 			<h:inputHidden id="selectedDrugPolygon" value="#{drugMB.polygon}"/>