diff --git a/deploy/package-lock.json b/deploy/package-lock.json
index 5d707a769ac807f9c1473f3940fe0464dba4657b..99b93fe79026380a2f1ca7f051b65e97774a31f5 100644
--- a/deploy/package-lock.json
+++ b/deploy/package-lock.json
@@ -257,9 +257,9 @@
       },
       "dependencies": {
         "lodash": {
-          "version": "4.17.21",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-          "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+          "version": "4.17.20",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+          "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
         }
       }
     },
@@ -735,9 +735,9 @@
       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
     },
     "denque": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
-      "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw=="
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
+      "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ=="
     },
     "depd": {
       "version": "1.1.2",
@@ -1352,9 +1352,9 @@
       "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
     },
     "jose": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/jose/-/jose-2.0.5.tgz",
-      "integrity": "sha512-BAiDNeDKTMgk4tvD0BbxJ8xHEHBZgpeRZ1zGPPsitSyMgjoMWiLGYAE7H7NpP5h0lPppQajQs871E8NHUrzVPA==",
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/jose/-/jose-2.0.4.tgz",
+      "integrity": "sha512-EArN9f6aq1LT/fIGGsfghOnNXn4noD+3dG5lL/ljY3LcRjw1u9w+4ahu/4ahsN6N0kRLyyW6zqdoYk7LNx3+YQ==",
       "requires": {
         "@panva/asn1.js": "^1.0.0"
       }
@@ -1446,9 +1446,9 @@
       }
     },
     "lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+      "version": "4.17.20",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
       "dev": true
     },
     "lodash.defaults": {
@@ -1801,9 +1801,9 @@
       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
     },
     "normalize-url": {
-      "version": "4.5.1",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
-      "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA=="
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
+      "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ=="
     },
     "npm-run-path": {
       "version": "2.0.2",
@@ -2194,20 +2194,20 @@
       }
     },
     "redis": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
-      "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/redis/-/redis-3.0.2.tgz",
+      "integrity": "sha512-PNhLCrjU6vKVuMOyFu7oSP296mwBkcE6lrAjruBYG5LgdSqtRBoVQIylrMyVZD/lkF24RSNNatzvYag6HRBHjQ==",
       "requires": {
-        "denque": "^1.5.0",
-        "redis-commands": "^1.7.0",
+        "denque": "^1.4.1",
+        "redis-commands": "^1.5.0",
         "redis-errors": "^1.2.0",
         "redis-parser": "^3.0.0"
       }
     },
     "redis-commands": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
-      "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.6.0.tgz",
+      "integrity": "sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ=="
     },
     "redis-errors": {
       "version": "1.2.0",
@@ -2819,9 +2819,9 @@
       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
     },
     "y18n": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
-      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
     },
     "yallist": {
       "version": "3.1.1",
diff --git a/deploy/package.json b/deploy/package.json
index 8a165a87192525bf0b6bcd9ba86df86fe5ddb30c..95da8df0bd39afe6c3076fe360260e3b4f81995b 100644
--- a/deploy/package.json
+++ b/deploy/package.json
@@ -26,7 +26,7 @@
     "nomiseco": "0.0.2",
     "openid-client": "^4.4.0",
     "passport": "^0.4.0",
-    "redis": "^3.1.2",
+    "redis": "^3.0.2",
     "request": "^2.88.0",
     "showdown": "^1.9.1",
     "soswrap": "^0.0.2",
diff --git a/docs/releases/v2.5.3.md b/docs/releases/v2.5.3.md
new file mode 100644
index 0000000000000000000000000000000000000000..ed2430edd04bb40e8661f254d9692a5f30100c74
--- /dev/null
+++ b/docs/releases/v2.5.3.md
@@ -0,0 +1,5 @@
+# v2.5.3
+
+## Bugfixes
+
+- revert v2.5.2
diff --git a/mkdocs.yml b/mkdocs.yml
index b7e247316f838021293df1ef5f887cc486abef56..655bd195147c7e54c88e2e789c0ddfcfbcae5140 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -40,6 +40,7 @@ pages:
     - Fetching datasets: 'advanced/datasets.md'
     - Display non-atlas volumes: 'advanced/otherVolumes.md'
   - Release notes:
+    - v2.5.3: 'releases/v2.5.3.md'
     - v2.5.2: 'releases/v2.5.2.md'
     - v2.5.1: 'releases/v2.5.1.md'
     - v2.5.0: 'releases/v2.5.0.md'
diff --git a/package.json b/package.json
index d74087fd8ff6104452c3a3185e269101a7eb5cde..7c17750e3d35f0a83a6aeda4b66bb0edc9421f99 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "interactive-viewer",
-  "version": "2.5.2",
+  "version": "2.5.1",
   "description": "HBP interactive atlas viewer. Integrating KG query, dataset previews & more. Based on humanbrainproject/nehuba & google/neuroglancer. Built with angular",
   "scripts": {
     "build-aot": "VERSION=`node -e 'console.log(require(\"./package.json\").version)'` ng build && node ./third_party/matomo/processMatomo.js",
diff --git a/src/routerModule/util.spec.ts b/src/routerModule/util.spec.ts
index b2ed55ea82db7f09f581114c2157a40ad2731bb6..ac15ff5981b022ed662be9c7796e07fff9e941a0 100644
--- a/src/routerModule/util.spec.ts
+++ b/src/routerModule/util.spec.ts
@@ -6,8 +6,6 @@ import { cvtFullRouteToState, cvtStateToHashedRoutes, DummyCmp, routes } from '.
 import { encodeNumber } from './cipher'
 import { Router } from '@angular/router'
 import { RouterTestingModule } from '@angular/router/testing'
-import * as parsedRoute from './parseRouteToTmplParcReg'
-import { spaceMiscInfoMap } from 'src/util/pureConstant.service'
 
 describe('> util.ts', () => {
   describe('> cvtFullRouteToState', () => {
@@ -63,53 +61,6 @@ describe('> util.ts', () => {
       })
     })
 
-    describe('> navigation', () => {
-      let parseSpy: jasmine.Spy
-      let mapGetSpy: jasmine.Spy
-      beforeEach(() => {
-        parseSpy = spyOnProperty(parsedRoute, 'parseSearchParamForTemplateParcellationRegion')
-        mapGetSpy = spyOn(spaceMiscInfoMap, 'get')
-      })
-      it('> if not present, should show something palatable', () => {
-        parseSpy.and.returnValue(() => ({
-          parcellationSelected: {
-            id: 'dummpy-id-parc'
-          },
-          regionsSelected: [],
-          templateSelected: {
-            id: 'dummpy-id-tmpl-sel'
-          },
-        }))
-
-        const scale = 0.25
-
-        mapGetSpy.and.returnValue({ scale })
-
-        const router = TestBed.inject(Router)
-        const route = `/a:juelich:iav:atlas:v1.0.0:1/t:minds:core:referencespace:v1.0.0:dafcffc5-4826-4bf1-8ff6-46b8a31ff8e2/p:minds:core:parcellationatlas:v1.0.0:94c1125b-b87e-45e4-901c-00daee7f2579-290`
-        const parsedUrl = router.parseUrl(route)
-        const { viewerState = {} } = cvtFullRouteToState(parsedUrl, {}) || {}
-        const { navigation } = viewerState
-        const {
-          orientation,
-          perspectiveOrientation,
-          position,
-          zoom,
-          perspectiveZoom,
-        } = navigation
-
-        expect(orientation).toEqual([0,0,0,1])
-        expect(perspectiveOrientation).toEqual([
-          0.3140767216682434,
-          -0.7418519854545593,
-          0.4988985061645508,
-          -0.3195493221282959
-        ])
-        expect(position).toEqual([0,0,0])
-        expect(zoom).toEqual(350000 * scale)
-        expect(perspectiveZoom).toEqual(1922235.5293810747 * scale)
-      })
-    })
   })
 
   describe('> cvtStateToHashedRoutes', () => {
diff --git a/src/routerModule/util.ts b/src/routerModule/util.ts
index e0115ee6268f033cf55a17e1ddac3c39e1b8839f..21ccdc6e7bbbb9bab69a399a96ac388d5fbc7439 100644
--- a/src/routerModule/util.ts
+++ b/src/routerModule/util.ts
@@ -18,7 +18,6 @@ import {
   parseSearchParamForTemplateParcellationRegion,
   encodeId,
 } from './parseRouteToTmplParcReg'
-import { spaceMiscInfoMap } from "src/util/pureConstant.service"
 
 const endcodePath = (key: string, val: string|string[]) =>
   key[0] === '?'
@@ -35,17 +34,6 @@ const decodePath = (path: string) => {
   }
 }
 
-export const DEFAULT_NAV = {
-  orientation: [0, 0, 0, 1],
-  perspectiveOrientation: [
-    0.3140767216682434,
-    -0.7418519854545593,
-    0.4988985061645508,
-    -0.3195493221282959
-  ],
-  position: [0, 0, 0],
-}
-
 export const cvtFullRouteToState = (fullPath: UrlTree, state: any, _warnCb?: (arg: string) => void) => {
 
   const warnCb = _warnCb || ((...e: any[]) => console.warn(...e))
@@ -90,7 +78,7 @@ export const cvtFullRouteToState = (fullPath: UrlTree, state: any, _warnCb?: (ar
 
   // nav obj is almost always defined, regardless if standaloneVolume or not
   const cViewerState = returnObj['@'] && returnObj['@'][0]
-  let parsedNavObj: any
+  let parsedNavObj = {}
   if (cViewerState) {
     try {
       const [ cO, cPO, cPZ, cP, cZ ] = cViewerState.split(`${separator}${separator}`)
@@ -183,12 +171,7 @@ export const cvtFullRouteToState = (fullPath: UrlTree, state: any, _warnCb?: (ar
     returnState['viewerState']['regionsSelected'] = regionsSelected
     returnState['viewerState']['templateSelected'] = templateSelected
 
-    const { scale } = spaceMiscInfoMap.get(templateSelected.id) || { scale: 1 }
-    returnState['viewerState']['navigation'] = parsedNavObj || ({
-      ...DEFAULT_NAV,
-      zoom: 350000 * scale,
-      perspectiveZoom: 1922235.5293810747 * scale
-    })
+    returnState['viewerState']['navigation'] = parsedNavObj
   } catch (e) {
     // if error, show error on UI?
     warnCb(`parse template, parc, region error`, e)
diff --git a/src/util/patchPureConstants.ts b/src/util/patchPureConstants.ts
index 681860add48b6393c202f3377f7afc217acd1682..55ff455615c145c59ac2906fba55625fabdf6d1a 100644
--- a/src/util/patchPureConstants.ts
+++ b/src/util/patchPureConstants.ts
@@ -46,21 +46,25 @@ async function getInterpolatedPatchObj(targetName: string, labelIndex: number){
       '@id': 'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588'
     }],
     "payload": {
-      _dataset_specs: [{
-        "@type": "fzj/tmp/volume_type/v0.0.1" as const,
-        "@id": "fzj/tmp/volume_type/v0.0.1/interpolated",
-        "name": "Julich Brain v2.5 interpolated map",
-        "volume_type": "neuroglancer/precomputed" as const,
-        "url": "https://neuroglancer.humanbrainproject.org/precomputed/BigBrainRelease.2015/2019_05_22_interpolated_areas",
-        "detail": {
-          "neuroglancer/precomputed": {
-            "labelIndex": labelIndex,
-            "transform": [[1,0,0,-70677184],[0,1,0,-51990000],[0,0,1,-58788284],[0,0,0,1]]
-          }
-        },
-        "space_id": "minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588",
-        map_type: 'labelled'
-      }],
+      "volumeSrc": {
+        'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588': {
+          "collect": [{
+            "@type": "fzj/tmp/volume_type/v0.0.1" as const,
+            "@id": "fzj/tmp/volume_type/v0.0.1/interpolated",
+            "name": "Julich Brain v2.5 interpolated map",
+            "volume_type": "neuroglancer/precomputed" as const,
+            "url": "https://neuroglancer.humanbrainproject.org/precomputed/BigBrainRelease.2015/2019_05_22_interpolated_areas",
+            "detail": {
+              "neuroglancer/precomputed": {
+                "labelIndex": labelIndex,
+                "transform": [[1,0,0,-70677184],[0,1,0,-51990000],[0,0,1,-58788284],[0,0,0,1]]
+              }
+            },
+            "space_id": "minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588",
+            map_type: 'labelled'
+          }]
+        }
+      }
     }
   }
   const hex = await getShaDigest(JSON.stringify(returnObj))
@@ -74,9 +78,9 @@ async function getIndividualMap(parentName: string, regionName: string, url: str
   const volumeId = await getShaDigest(url)
   const returnObj: TPatchRegion = {
     '@id': '',
-    "@type": 'julich/siibra/patch-region/v0.0.1',
-    "target": {
-      "name": regionName
+    "@type": 'julich/siibra/append-region/v0.0.1',
+    "parent": {
+      "name": parentName
     },
     "targetParcellation": [{
       "@id": 'minds/core/parcellationatlas/v1.0.0/94c1125b-b87e-45e4-901c-00daee7f2579-290'
@@ -85,21 +89,26 @@ async function getIndividualMap(parentName: string, regionName: string, url: str
       '@id': 'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588'
     }],
     "payload": {
-      '_dataset_specs': [{
-        "@type": "fzj/tmp/volume_type/v0.0.1" as const,
-        "@id": `fzj/tmp/volume_type/v0.0.1/${volumeId}`,
-        "name": "Julich Brain v2.5 detailed map",
-        "volume_type": "neuroglancer/precomputed" as const,
-        "url": url,
-        "detail": {
-          "neuroglancer/precomputed": {
-            "labelIndex": labelIndex,
-            "transform": transform
-          }
-        },
-        space_id: 'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588',
-        map_type: 'labelled'
-      }],
+      "name": regionName,
+      "volumeSrc": {
+        'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588': {
+          "collect": [{
+            "@type": "fzj/tmp/volume_type/v0.0.1" as const,
+            "@id": `fzj/tmp/volume_type/v0.0.1/${volumeId}`,
+            "name": "Julich Brain v2.5 detailed map",
+            "volume_type": "neuroglancer/precomputed" as const,
+            "url": url,
+            "detail": {
+              "neuroglancer/precomputed": {
+                "labelIndex": labelIndex,
+                "transform": transform
+              }
+            },
+            space_id: 'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588',
+            map_type: 'labelled'
+          }]
+        }
+      }
     }
   }
   const hex = await getShaDigest(JSON.stringify(returnObj))
diff --git a/src/util/pureConstant.service.ts b/src/util/pureConstant.service.ts
index c6145b3d2a7617850815eb6bf9212c81481b5efd..09b2e1898137bcedd28fd9a0f3181d17b6d32778 100644
--- a/src/util/pureConstant.service.ts
+++ b/src/util/pureConstant.service.ts
@@ -52,7 +52,7 @@ type TIAVAtlas = {
   } & THasId)[]
 } & THasId
 
-export const spaceMiscInfoMap = new Map([
+const spaceMiscInfoMap = new Map([
   ['minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588', {
     name: 'bigbrain',
     scale: 1,
@@ -532,16 +532,20 @@ Raise/track issues at github repo: <a target = "_blank" href = "${this.repoUrl}"
                              * this should work for both fully mapped and interpolated
                              * in the case of interpolated, it sucks that the ngLayerObj will be set multiple times
                              */
-
-                            const dedicatedMap = region._dataset_specs.filter(spec => spec.space_id === tmpl.id && spec['volume_type'] === 'neuroglancer/precomputed')
-                            if (dedicatedMap.length === 1) {
-                              const ngId = getNgId(atlas['@id'], tmpl.id, parc.id, dedicatedMap[0]['@id'])
-                              region['ngId'] = ngId
-                              region['labelIndex'] = dedicatedMap[0].detail['neuroglancer/precomputed'].labelIndex
-                              ngLayerObj[tmpl.id][ngId] = {
-                                source: `precomputed://${dedicatedMap[0].url}`,
-                                type: "segmentation",
-                                transform: dedicatedMap[0].detail['neuroglancer/precomputed'].transform
+                            if (
+                              tmpl.id in (region.volumeSrc || {})
+                              && 'collect' in region.volumeSrc[tmpl.id]
+                            ) {
+                              const dedicatedMap = region.volumeSrc[tmpl.id]['collect'].filter(v => v.volume_type === 'neuroglancer/precomputed')
+                              if (dedicatedMap.length === 1) {
+                                const ngId = getNgId(atlas['@id'], tmpl.id, parc.id, dedicatedMap[0]['@id'])
+                                region['ngId'] = ngId
+                                region['labelIndex'] = dedicatedMap[0].detail['neuroglancer/precomputed'].labelIndex
+                                ngLayerObj[tmpl.id][ngId] = {
+                                  source: `precomputed://${dedicatedMap[0].url}`,
+                                  type: "segmentation",
+                                  transform: dedicatedMap[0].detail['neuroglancer/precomputed'].transform
+                                }
                               }
                             }
   
@@ -575,11 +579,10 @@ Raise/track issues at github repo: <a target = "_blank" href = "${this.repoUrl}"
                                 && hemisphereKey === 'whole brain'
                               ) {
                                 region.children = []
+                                return
                               }
-                              if (!region['ngId']) {
-                                const hemispheredNgId = getNgId(atlas['@id'], tmpl.id, parc.id, hemisphereKey)
-                                region['ngId'] = hemispheredNgId
-                              }
+                              const hemispheredNgId = getNgId(atlas['@id'], tmpl.id, parc.id, hemisphereKey)
+                              region['ngId'] = hemispheredNgId
                             }
                           }  
                         )
diff --git a/src/util/siibraApiConstants/types.ts b/src/util/siibraApiConstants/types.ts
index 7f3170ad6f7f665ba13202a833b7342f86d36037..62fc6057d749a4123da76bcce3bf2d6b2fd738be 100644
--- a/src/util/siibraApiConstants/types.ts
+++ b/src/util/siibraApiConstants/types.ts
@@ -180,6 +180,11 @@ export type TRegionDetail = {
 export type TRegion = {
   name: string
   children: TRegion[]
+  volumeSrc: {
+    [key: string]: {
+      [key: string]: TVolumeSrc<keyof IVolumeTypeDetail>[]
+    }
+  }
 
   labelIndex?: number
   rgb?: number[]
@@ -187,8 +192,6 @@ export type TRegion = {
     kg: TKgIdentifier
   }
 
-  _dataset_specs: TVolumeSrc<keyof IVolumeTypeDetail>[]
-
   /**
    * missing 
    */