diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index edf7f67043894e82c60b7651e67e01508ef21235..c90be97065f8d85a83c0b35b7eb711948c2faa76 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -49,36 +49,6 @@ ServerConnector.lastActualization = 0;
 
 ServerConnector._customMap = null;
 
-/**
- * Set x coordinate for {@link CustomMap} on the server side.
- */
-ServerConnector.setCenterCoordinateX = function(value) {
-  document.getElementById(ServerConnector.formIdentifier + ':centerCoordinateX').value = "" + value;
-};
-
-/**
- * Get x coordinate of the {@link CustomMap} at which it was last browsed.
- */
-ServerConnector.getCenterCoordinateX = function() {
-  var result = parseFloat(document.getElementById(ServerConnector.formIdentifier + ':centerCoordinateX').value);
-  return result;
-};
-
-/**
- * Set y coordinate for {@link CustomMap} on the server side.
- */
-ServerConnector.setCenterCoordinateY = function(value) {
-  document.getElementById(ServerConnector.formIdentifier + ':centerCoordinateY').value = "" + value;
-};
-
-/**
- * Get y coordinate of the {@link CustomMap} at which it was last browsed.
- */
-ServerConnector.getCenterCoordinateY = function() {
-  var result = parseFloat(document.getElementById(ServerConnector.formIdentifier + ':centerCoordinateY').value);
-  return result;
-};
-
 /**
  * Set layout that is currently browsed for {@link CustomMap} on the server
  * side.
diff --git a/frontend-js/src/main/js/SessionData.js b/frontend-js/src/main/js/SessionData.js
index fcf6eb61b140789107e39635c928209557a50fb0..9ae6c5e160f6d38508c9abb7d546c54feba657fc 100644
--- a/frontend-js/src/main/js/SessionData.js
+++ b/frontend-js/src/main/js/SessionData.js
@@ -21,14 +21,11 @@ SessionData.prototype.getProjectId = function(project) {
 
 SessionData.prototype.getShowComments = function() {
   var key = this.getKey(SessionObjectType.SHOW_COMMENT);
-  
-  console.log("GET:",key,Cookies.get(key));
   return Cookies.get(key) === "true";
 };
 
 SessionData.prototype.setShowComments = function(value) {
   var key = this.getKey(SessionObjectType.SHOW_COMMENT);
-  console.log(key,value);
   Cookies.set(key, value + "");
 };
 
@@ -46,6 +43,21 @@ SessionData.prototype.getZoomLevel = function(model) {
   return value;
 };
 
+SessionData.prototype.setCenter = function(model, value) {
+  var key = this.getKey(SessionObjectType.CENTER, [ model.getId() ]);
+  Cookies.set(key, value.x + "," + value.y);
+};
+
+SessionData.prototype.getCenter = function(model) {
+  var key = this.getKey(SessionObjectType.CENTER, [ model.getId() ]);
+  var value = Cookies.get(key);
+  if (value !== undefined) {
+    var tmp = value.split(",");
+    value = new google.maps.Point(tmp[0], tmp[1]);
+  }
+  return value;
+};
+
 SessionData.prototype.getKey = function(type, args) {
   if (type === undefined) {
     throw new Error("Undefined type");
diff --git a/frontend-js/src/main/js/SessionObjectType.js b/frontend-js/src/main/js/SessionObjectType.js
index f861e193744e7fa8f5c6da3bace17c7fd895bc77..0dd6d984a363ff0faf97b52b91baebf73d6c9c10 100644
--- a/frontend-js/src/main/js/SessionObjectType.js
+++ b/frontend-js/src/main/js/SessionObjectType.js
@@ -1,6 +1,7 @@
 "use strict";
 
 var SessionObjectType = {
+  CENTER : "CENTER",
   SHOW_COMMENT : "SHOW_COMMENT",
   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 1f6a13be86eca5658c24d22fc75e5a97d6c81dc9..4a32d180ad4ba4bf5f086c8ef13ac73d9449ea95 100644
--- a/frontend-js/src/main/js/map/CustomMap.js
+++ b/frontend-js/src/main/js/map/CustomMap.js
@@ -692,10 +692,10 @@ CustomMap.prototype.setZoom = function(mapIdentifier, zoom) {
  */
 CustomMap.prototype.createMapChangedCallbacks = function() {
   var customMapSelf = this;
+  var sessionData = ServerConnector.getSessionData(customMapSelf.getProject()); 
   // listener for changing zoom level
   google.maps.event.addListener(this.getGoogleMap(), 'zoom_changed', function() {
-    ServerConnector.getSessionData(customMapSelf.getProject()).setZoomLevel(customMapSelf.getModel(),customMapSelf.getGoogleMap().getZoom());
-    ServerConnector.actualizeSessionData();
+    sessionData.setZoomLevel(customMapSelf.getModel(),customMapSelf.getGoogleMap().getZoom());
   });
 
   // if we have zoom level data stored in session then restore it
@@ -704,23 +704,19 @@ CustomMap.prototype.createMapChangedCallbacks = function() {
     level = parseInt(level);
     this.getGoogleMap().setZoom(level);
   } else {
-    ServerConnector.getSessionData(customMapSelf.getProject()).setZoomLevel(customMapSelf.getModel(),customMapSelf.getGoogleMap().getZoom());
+    sessionData.setZoomLevel(customMapSelf.getModel(),customMapSelf.getGoogleMap().getZoom());
   }
 
   // listener for changing location of the map (moving left/reght/top/bottom
   google.maps.event.addListener(this.getGoogleMap(), 'center_changed', function() {
     var coord = customMapSelf.getGoogleMap().getCenter();
     var point = customMapSelf.fromLatLngToPoint(coord);
-    ServerConnector.setCenterCoordinateX(point.x);
-    ServerConnector.setCenterCoordinateY(point.y);
-    ServerConnector.actualizeSessionData();
+    sessionData.setCenter(customMapSelf.getModel(),point);
   });
 
   // if we have coordinate data stored in session then restore it
-  var x = ServerConnector.getCenterCoordinateX();
-  var y = ServerConnector.getCenterCoordinateY();
-  if (!isNaN(x) && !isNaN(y)) {
-    var point = new google.maps.Point(x, y);
+  var point = sessionData.getCenter(customMapSelf.getModel());
+  if (point!== undefined) {
     var coord = customMapSelf.fromPointToLatLng(point);
     customMapSelf.getGoogleMap().setCenter(coord);
   }
diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js
index 82a44660460a918f6c901c3ccb879ae789ddbb79..3aab0b86efffbae518862b00c3312a280527d198 100644
--- a/frontend-js/src/main/js/minerva.js
+++ b/frontend-js/src/main/js/minerva.js
@@ -12,19 +12,20 @@ var OriginalServerConnector = require('./ServerConnector');
 var logger = require('./logger');
 
 function processUrlGetParams(params) {
-  
   var project = params.project;
   if (project===undefined) {
     project = params.getProject();
   }
+  var sessionData = ServerConnector.getSessionData(project);
+  
   if (GuiConnector.getParams["submap"] === undefined
       || project.getModel().getId() === parseInt(GuiConnector.getParams["submap"])) {
     if (GuiConnector.getParams["x"] !== undefined && GuiConnector.getParams["y"] !== undefined) {
-      ServerConnector.setCenterCoordinateX(GuiConnector.getParams["x"]);
-      ServerConnector.setCenterCoordinateY(GuiConnector.getParams["y"]);
+      var point = new google.maps.Point(GuiConnector.getParams["x"],GuiConnector.getParams["y"]);
+      sessionData.setCenter(project.getModel(), point);
     }
     if (GuiConnector.getParams["zoom"] !== undefined) {
-        ServerConnector.getSessionData(project).setZoomLevel(project.getModel(),GuiConnector.getParams["zoom"]);
+        sessionData.setZoomLevel(project.getModel(),GuiConnector.getParams["zoom"]);
     }
   }
 }
diff --git a/frontend-js/src/test/js/ServerConnector-mock.js b/frontend-js/src/test/js/ServerConnector-mock.js
index de017405417bc0e4e3de922ed9dc32aabdcfc6fb..0452aac3f25485659a14658337ba3cc44b00a688 100644
--- a/frontend-js/src/test/js/ServerConnector-mock.js
+++ b/frontend-js/src/test/js/ServerConnector-mock.js
@@ -83,22 +83,6 @@ ServerConnectorMock.callListeners = function(type, param) {
   }
 };
 
-ServerConnectorMock.setCenterCoordinateX = function(value) {
-  this.centerCoordinateX = value;
-};
-
-ServerConnectorMock.getCenterCoordinateX = function() {
-  return this.centerCoordinateX;
-};
-
-ServerConnectorMock.setCenterCoordinateY = function(value) {
-  this.centerCoordinateY = value;
-};
-
-ServerConnectorMock.getCenterCoordinateY = function() {
-  return this.centerCoordinateY;
-};
-
 ServerConnectorMock.setSelectedLayout = function(value) {
   this.selectedLayout = value;
 };
diff --git a/frontend-js/src/test/js/helper.js b/frontend-js/src/test/js/helper.js
index bb4df82b77427b84094cd46ab8db2f2f2e091856..7a61d23de1d314fa68a6bdaf05938297d63c9dfb 100644
--- a/frontend-js/src/test/js/helper.js
+++ b/frontend-js/src/test/js/helper.js
@@ -84,6 +84,7 @@ Helper.prototype.createDbOverlay = function(map) {
 
 Helper.prototype.createProject = function() {
   var result = new Project();
+  result.setProjectId("testId");
   result.setId(this.idCounter++);
   result.setModel(this.createModel());
   return result;
diff --git a/frontend-js/src/test/js/map/CustomMap-test.js b/frontend-js/src/test/js/map/CustomMap-test.js
index b175a023396331ff904f367f8d0e066ee63dee26..dfffd450989d8e6865e14aae9273b2ca71699c43 100644
--- a/frontend-js/src/test/js/map/CustomMap-test.js
+++ b/frontend-js/src/test/js/map/CustomMap-test.js
@@ -542,6 +542,18 @@ describe('CustomMap', function() {
     assert.ok(ServerConnector.getSessionData(map.getProject()).getShowComments());
   });
 
+  it("changed coords in map", function() {
+    var map = helper.createCustomMap();
+    var oldCenter = map.getGoogleMap().getCenter();
+    var newCenter = new google.maps.LatLng(3, 87);
+    map.getGoogleMap().setCenter(newCenter);
+    google.maps.event.trigger(map.getGoogleMap(), "center_changed");
+
+    var center = ServerConnector.getSessionData(map.getProject()).getCenter(map.getModel());
+    assert.ok(center !== oldCenter);
+    assert.ok(center instanceof google.maps.Point);
+  });
+
   it("refreshComments", function() {
     var map = helper.createCustomMap();
     map.getModel().setId(15781);
diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js
index 049dcbe46bbaea2a13427225d8cd7b146e9720fd..b362a76450b8d24a8c066f4e68828ac9f620ee47 100644
--- a/frontend-js/src/test/js/minerva-test.js
+++ b/frontend-js/src/test/js/minerva-test.js
@@ -34,6 +34,18 @@ describe('minerva global', function() {
     });
   });
 
+  it("contructor with GET coord param", function() {
+    var options = helper.createCustomMapOptions();
+    GuiConnector.getParams["x"] = "5";
+    GuiConnector.getParams["y"] = "6";
+    return minerva.create(options).then(function(result) {
+      var center = ServerConnector.getSessionData(options.getProject()).getCenter(options.getProject().getModel());
+      assert.ok(center instanceof google.maps.Point);
+      assert.equal(center.x, 5);
+      assert.equal(center.y, 6);
+    });
+  });
+
 
   it('create with layout', function() {
 
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 1d3cf8354148d2a880beb87c69a731f69e65672e..4efd454de1969814386f782bcda2df67f8f29343 100644
--- a/web/src/main/webapp/WEB-INF/components/map/map.xhtml
+++ b/web/src/main/webapp/WEB-INF/components/map/map.xhtml
@@ -38,9 +38,6 @@
 			<h:inputHidden id="selectedDrugPolygon" value="#{drugMB.polygon}"/>
 
 			<p:remoteCommand name="_actualizeParams" actionListener="#{mapMB.actualizeParams}"/>
-			<h:inputHidden id="centerCoordinateX" value="#{mapMB.topModelMapData.centerCoordinateX}"/>
-			<h:inputHidden id="centerCoordinateY" value="#{mapMB.topModelMapData.centerCoordinateY}"/>
-			<h:inputHidden id="zoomLevel" value="#{mapMB.topModelMapData.zoomLevel}"/>
 			<h:inputHidden id="selectedLayout" value="#{mapMB.topModelMapData.selectedLayout}"/>
 
 			<h:panelGroup layout="block" id="submodelDialogGroup">