diff --git a/CHANGELOG b/CHANGELOG
index e15dfbfad5a9e038d944945e61901ba6899c775d..80dc264e4447f4e9fc4471032458452d04653dc6 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,14 @@ minerva (14.0.3) stable; urgency=medium
   * Bug fix: verificatin of version length added when uploading project 
     implemented (#978)
   * Bug fix: CLEAR button disappeard when plugin tab used to much space (#976)
+  * Bug fix: removing data overlay refreshes list of overlays in info window 
+    (#974)
+  * Bug fix: general overlays are always on top of data overlays in info window
+    (#975) 
+  * Bug fix: refresh button in overlay panel synchronise list of general and
+    user provided data overlays (#975)
+  * Bug fix: changing order of data overlays is reflected in info window
+
 
  -- Piotr Gawron <piotr.gawron@uni.lu>  Wed, 16 Oct 2019 9:00:00 +0200
 
diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
index 651c3cfa10ea436008b0dfb66c6582d2cd9f78d6..fa82f9ca39960817509bac38fc756dc92ac38771 100644
--- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
@@ -468,12 +468,9 @@ OverlayPanel.prototype.refresh = function (showDefault) {
       selectedOverlay[visibleDataOverlays[j].getId()] = true;
     }
 
-    return self.getServerConnector().getOverlays({
-      publicOverlay: false,
-      creator: user.getLogin()
-    });
-  }).then(function (customOverlays) {
-    self.getProject().addOrUpdateDataOverlays(customOverlays);
+    return self.getServerConnector().getOverlays();
+  }).then(function (overlaysFromServer) {
+    self.getProject().addOrUpdateDataOverlays(overlaysFromServer);
 
     if (!showDefault) {
       var id = self.getMap().getBackgroundDataOverlay().getId();
@@ -486,15 +483,22 @@ OverlayPanel.prototype.refresh = function (showDefault) {
     var overlay;
 
     var overlays = self.getProject().getDataOverlays();
+    var customOverlays = [];
+    var defaultOverlay = null;
     for (var i = 0; i < overlays.length; i++) {
       overlay = overlays[i];
       if (overlay.getCreator() === undefined || overlay.getCreator() === "") {
         generalOverlays.push(overlay);
         if (showDefault && overlay.isDefaultOverlay()) {
-          selectedOverlay[overlay.getId()] = true;
+          defaultOverlay = overlay;
         }
+      } else {
+        customOverlays.push(overlay);
       }
     }
+    if (defaultOverlay !== null) {
+      selectedOverlay[defaultOverlay.getId()] = true;
+    }
 
     var table = self.getControlElement(PanelControlElementType.OVERLAY_GENERAL_OVERLAY_TABLE);
     table.appendChild(self.createTableHeader());
@@ -578,6 +582,8 @@ OverlayPanel.prototype.refresh = function (showDefault) {
       }
     }
     return Promise.all(promises);
+  }).then(function () {
+    return self.getMap().redrawSelectedDataOverlays();
   });
 };
 
@@ -705,6 +711,7 @@ OverlayPanel.prototype.removeOverlay = function (overlay) {
   return self.getMap().hideDataOverlay(overlay.getId()).then(function () {
     return self.getServerConnector().removeOverlay({overlayId: overlay.getId()});
   }).then(function () {
+    self.getProject().removeDataOverlay(overlay);
     return self.refresh();
   })
 };
diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js
index 9aa0cbcae287e5bfd018dab9582b812b9ab684ae..2ccfb1bca4c5b09012265a3054145f6d8e4471f7 100644
--- a/frontend-js/src/main/js/map/CustomMap.js
+++ b/frontend-js/src/main/js/map/CustomMap.js
@@ -42,6 +42,7 @@ function CustomMap(options) {
   this.registerListenerType("onBioEntityClick");
   this.registerListenerType("onShowOverlay");
   this.registerListenerType("onHideOverlay");
+  this.registerListenerType("onRedrawSelectedOverlays");
   this.registerListenerType("onBackgroundOverlayChange");
   this.registerListenerType("onSubmapOpen");
   this.registerListenerType("onSubmapClose");
@@ -625,6 +626,8 @@ CustomMap.prototype.redrawSelectedDataOverlays = function () {
       }
     }
     return Promise.all(promises);
+  }).then(function () {
+    return self.callListeners("onRedrawSelectedOverlays");
   });
 };
 
diff --git a/frontend-js/src/main/js/map/data/DataOverlay.js b/frontend-js/src/main/js/map/data/DataOverlay.js
index 8e5a78f53b94ebf74836b88f7a77a635f1b7790a..5eab884b4a3b7d9d33bf66026b08b83fbc52b51a 100644
--- a/frontend-js/src/main/js/map/data/DataOverlay.js
+++ b/frontend-js/src/main/js/map/data/DataOverlay.js
@@ -414,6 +414,9 @@ DataOverlay.prototype.isGoogleLicenseConsent = function () {
  * @param {DataOverlay} overlay
  */
 DataOverlay.prototype.update = function (overlay) {
+  this.setPublicOverlay(overlay.getPublicOverlay());
+  this.setOrder(overlay.getOrder());
+  this.setCreator(overlay.getCreator());
   this.setName(overlay.getName());
   this.setDescription(overlay.getDescription());
 };
diff --git a/frontend-js/src/main/js/map/data/Project.js b/frontend-js/src/main/js/map/data/Project.js
index e01d1bffb3c1bbb63bab94e3ea3854cc0e9754f3..27dc8ce9bd85b9ecb1df250d87b2fbe54005563b 100644
--- a/frontend-js/src/main/js/map/data/Project.js
+++ b/frontend-js/src/main/js/map/data/Project.js
@@ -32,6 +32,10 @@ function Project(data) {
   ObjectWithListeners.call(this);
   this.registerListenerType("onreload");
 
+  /**
+   * @type {Array<DataOverlay>}
+   * @private
+   */
   this._dataOverlays = [];
   this._models = [];
   this._elementsPointingToSubmap = [];
@@ -452,6 +456,19 @@ Project.prototype.addDataOverlay = function (overlay, updateWhenExists) {
   }
 };
 
+/**
+ *
+ * @param {DataOverlay} overlay
+ */
+Project.prototype.removeDataOverlay = function (overlay) {
+  var object = this._dataOverlays[overlay.getId()];
+  if (object === undefined) {
+    throw new Error("Overlay " + overlay.getId() + " doesn't exist in a project " + this.getProjectId());
+  } else {
+    delete this._dataOverlays[overlay.getId()];
+  }
+};
+
 /**
  *
  * @param {DataOverlay} overlay
diff --git a/frontend-js/src/main/js/map/window/AliasInfoWindow.js b/frontend-js/src/main/js/map/window/AliasInfoWindow.js
index b4ba0dfea85f37974a277d442891615c933de1e7..6fc9c9aee12fc24d3644824a4af229a989e892fd 100644
--- a/frontend-js/src/main/js/map/window/AliasInfoWindow.js
+++ b/frontend-js/src/main/js/map/window/AliasInfoWindow.js
@@ -53,6 +53,7 @@ function AliasInfoWindow(params) {
 
   params.map.getTopMap().addListener("onShowOverlay", overlayListChanged);
   params.map.getTopMap().addListener("onHideOverlay", overlayListChanged);
+  params.map.getTopMap().addListener("onRedrawSelectedOverlays", overlayListChanged);
 
   var drugDbOverlay = params.map.getTopMap().getOverlayByName("drug");
   if (drugDbOverlay !== undefined) {
@@ -98,6 +99,23 @@ AliasInfoWindow.prototype.init = function () {
   });
 };
 
+/**
+ *
+ * @param {DataOverlay} overlay
+ * @return {string}
+ * @package
+ */
+AliasInfoWindow.prototype._getPrintableOverlayName = function (overlay) {
+  var name = overlay.getName();
+  if (name.length > 20) {
+    name = name.substr(0, 20) + "...";
+  }
+  if (!overlay.getPublicOverlay()) {
+    name = "[" + overlay.getOrder() + "] " + name;
+  }
+  return name;
+};
+
 /**
  * Creates and returns chart representing data related to alias on different
  * overlays.
@@ -114,6 +132,16 @@ AliasInfoWindow.prototype.createChartDiv = function (params) {
   var promises = [];
   var self = this;
 
+  overlays.sort(function (overlayA, overlayB) {
+    if (overlayA.getPublicOverlay() !== overlayB.getPublicOverlay()) {
+      if (overlayA.getPublicOverlay()) {
+        return -1;
+      }
+      return 1;
+    }
+    return overlayA.getOrder() - overlayB.getOrder();
+  });
+
   overlays.forEach(function (overlay, i) {
     promises.push(overlay.getFullAliasById(self.getAlias().getId()).then(function (data) {
       var rowDiv = document.createElement("div");
@@ -122,11 +150,7 @@ AliasInfoWindow.prototype.createChartDiv = function (params) {
       } else {
         rowDiv.className = "minerva-chart-row-odd";
       }
-      var name = overlays[i].getName();
-      if (name.length > 20) {
-        name = name.substr(0, 20) + "...";
-      }
-      name = "[" + overlays[i].getOrder() + "] " + name;
+      var name = self._getPrintableOverlayName(overlays[i]);
       var nameDiv = document.createElement("div");
       nameDiv.className = "minerva-chart-name";
       nameDiv.innerHTML = name + "&nbsp;";
diff --git a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js
index 690b906124bece411b8db6e68c6f9aeee2cc3d7c..08034713bc88ef6a1fe9944337adfedecd97645b 100644
--- a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js
+++ b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js
@@ -39,6 +39,7 @@ describe('OverlayPanel', function () {
   describe('refresh', function () {
     it('anonymous', function () {
       var map = helper.createCustomMap();
+      map.getProject().addDataOverlay(helper.createBackgroundOverlay());
 
       var panel = new OverlayPanel({
         element: testDiv,
@@ -55,6 +56,7 @@ describe('OverlayPanel', function () {
     it('admin', function () {
       helper.loginAsAdmin();
       var map = helper.createCustomMap();
+      map.getProject().addDataOverlay(helper.createBackgroundOverlay());
 
       var panel = new OverlayPanel({
         element: testDiv,
@@ -119,9 +121,7 @@ describe('OverlayPanel', function () {
   it('download', function () {
     var map = helper.createCustomMap();
 
-    var overlay = helper.createOverlay();
-    overlay.setInputDataAvailable(true);
-    map.getProject().addDataOverlay(overlay);
+    map.getProject().addDataOverlay(helper.createBackgroundOverlay());
 
     var panel = new OverlayPanel({
       element: testDiv,
diff --git a/frontend-js/src/test/js/helper.js b/frontend-js/src/test/js/helper.js
index fe698c7ae711d4f0638ac69997b22f819cf29588..2f850abaa0ef24bed2de3d72d82f329036e3908a 100644
--- a/frontend-js/src/test/js/helper.js
+++ b/frontend-js/src/test/js/helper.js
@@ -434,6 +434,19 @@ Helper.prototype.createOverlay = function (model) {
   });
 };
 
+/**
+ *
+ * @param {MapModel} [model]
+ * @returns {DataOverlay}
+ */
+Helper.prototype.createBackgroundOverlay = function (model) {
+  var result = this.createOverlay(model);
+  result.setInputDataAvailable(true);
+  result.setDefaultOverlay(true);
+  result.setName("empty");
+  return result;
+};
+
 /**
  *
  * @param {Project} [project]
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 34d5f2d2bd70736f6f6510f53e048a83d9602c24..854fb4258241c9ab5e938715373edb59813ad7d1 100644
--- a/frontend-js/src/test/js/map/window/AliasInfoWindow-test.js
+++ b/frontend-js/src/test/js/map/window/AliasInfoWindow-test.js
@@ -362,6 +362,23 @@ describe('AliasInfoWindow', function () {
     assert.ok(functions.isDomElement(aliasWindow.createWaitingContentDiv()));
   });
 
+  it("getPrintableOverlayName", function () {
+    var map = helper.createCustomMap();
+    var alias = helper.createAlias(map);
+    alias.setIsComplete(true);
+
+    var aliasWindow = new AliasInfoWindow({
+      alias: alias,
+      map: map,
+      marker: helper.createMarker({element: alias, map: map})
+    });
+
+    var overlay = helper.createOverlay();
+    overlay.setPublicOverlay(true);
+    overlay.setOrder(137778);
+    assert.equal(-1, aliasWindow._getPrintableOverlayName(overlay).indexOf(overlay.getOrder() + ""));
+  });
+
   describe("createChartDiv ", function () {
     it("on submap map", function () {
       helper.setUrl("http://test/?id=complex_model_with_submaps");
@@ -427,6 +444,37 @@ describe('AliasInfoWindow', function () {
         assert.ok(div);
       });
     });
+
+    it("overlay order", function () {
+      var map = helper.createCustomMap();
+      var alias = helper.createAlias(map);
+      var aliasWindow = new AliasInfoWindow({
+        alias: alias,
+        map: map,
+        marker: helper.createMarker({element: alias, map: map})
+      });
+      var overlay1 = helper.createOverlay();
+      overlay1.setOrder(2);
+      var overlay2 = helper.createOverlay();
+      overlay2.setPublicOverlay(true);
+      overlay2.setOrder(10);
+      var overlay3 = helper.createOverlay();
+      overlay3.setPublicOverlay(true);
+      overlay3.setOrder(9);
+      var overlay4 = helper.createOverlay();
+      overlay4.setOrder(1);
+      var overlays = [overlay1, overlay2, overlay3, overlay4];
+
+      return aliasWindow.createChartDiv({overlays: overlays}).then(function (htmlDiv) {
+        var overlay1Position = htmlDiv.innerHTML.indexOf(overlay1.getName());
+        var overlay2Position = htmlDiv.innerHTML.indexOf(overlay2.getName());
+        var overlay3Position = htmlDiv.innerHTML.indexOf(overlay3.getName());
+        var overlay4Position = htmlDiv.innerHTML.indexOf(overlay4.getName());
+        assert.ok(overlay3Position < overlay2Position);
+        assert.ok(overlay2Position < overlay4Position);
+        assert.ok(overlay4Position < overlay1Position);
+      });
+    });
   });
 
   it("createVcfString ", function () {
diff --git a/frontend-js/testFiles/apiCalls/projects/complex_model_with_images/overlays/token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/complex_model_with_images/overlays/token=MOCK_TOKEN_ID&
new file mode 100644
index 0000000000000000000000000000000000000000..b9254627b7ed1bdc5b5e83ae2da2e221f928c6ef
--- /dev/null
+++ b/frontend-js/testFiles/apiCalls/projects/complex_model_with_images/overlays/token=MOCK_TOKEN_ID&
@@ -0,0 +1 @@
+[{"defaultOverlay":false,"deprecatedColumns":[],"description":null,"googleLicenseConsent":false,"idObject":17987,"images":[{"modelId":19397,"path":"_nested0"},{"modelId":19399,"path":"_nested3"},{"modelId":19398,"path":"_nested1"},{"modelId":19400,"path":"_nested2"}],"inputDataAvailable":false,"name":"Pathways and compartments","order":1,"publicOverlay":true},{"defaultOverlay":false,"deprecatedColumns":[],"description":null,"googleLicenseConsent":false,"idObject":17988,"images":[{"modelId":19397,"path":"_normal0"},{"modelId":19399,"path":"_normal3"},{"modelId":19398,"path":"_normal1"},{"modelId":19400,"path":"_normal2"}],"inputDataAvailable":false,"name":"Network","order":1,"publicOverlay":true},{"defaultOverlay":false,"deprecatedColumns":[],"description":null,"googleLicenseConsent":false,"idObject":17989,"images":[{"modelId":19397,"path":"_empty0"},{"modelId":19399,"path":"_empty3"},{"modelId":19398,"path":"_empty1"},{"modelId":19400,"path":"_empty2"}],"inputDataAvailable":false,"name":"Empty","order":1,"publicOverlay":true}]
\ No newline at end of file