diff --git a/.github/workflows/docker_img.yml b/.github/workflows/docker_img.yml
index 057a93d7864f37820b14b5cf8f6ce141a6a08f85..a96daf10c1e328de2c8b7f2655d4ae0769eaa113 100644
--- a/.github/workflows/docker_img.yml
+++ b/.github/workflows/docker_img.yml
@@ -18,9 +18,9 @@ jobs:
       PRODUCTION: 'true'
       DOCKER_REGISTRY: 'docker-registry.ebrains.eu/siibra/'
 
-      SIIBRA_API_STABLE: 'https://siibra-api-stable.apps.hbp.eu/v2_0,https://siibra-api-stable-ns.apps.hbp.eu/v2_0,https://siibra-api-stable.apps.jsc.hbp.eu/v2_0'
-      SIIBRA_API_RC: 'https://siibra-api-rc.apps.hbp.eu/v2_0'
-      SIIBRA_API_LATEST: 'https://siibra-api-latest.apps-dev.hbp.eu/v2_0'
+      SIIBRA_API_STABLE: 'https://siibra-api-stable.apps.hbp.eu/v3_0,https://siibra-api-stable-ns.apps.hbp.eu/v3_0,https://siibra-api-stable.apps.jsc.hbp.eu/v3_0'
+      SIIBRA_API_RC: 'https://siibra-api-rc.apps.hbp.eu/v3_0'
+      SIIBRA_API_LATEST: 'https://siibra-api-latest.apps-dev.hbp.eu/v3_0'
 
 
     steps:
diff --git a/Dockerfile b/Dockerfile
index 40c8e43dd853ff857bf016d3baba490804b4fcbb..afce1bc8fe14e3a8643c6ef4ef5e9e9adb293c93 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -40,7 +40,7 @@ RUN node ./src/environments/parseEnv.js
 
 RUN npm run build
 RUN node third_party/matomo/processMatomo.js
-RUN npm run build-storybook
+# RUN npm run build-storybook
 
 # gzipping container
 FROM ubuntu:22.04 as compressor
@@ -48,10 +48,10 @@ RUN apt upgrade -y && apt update && apt install brotli
 
 RUN mkdir /iv
 COPY --from=builder /iv/dist/aot /iv
-COPY --from=builder /iv/storybook-static /iv/storybook-static
+# COPY --from=builder /iv/storybook-static /iv/storybook-static
 
 # Remove duplicated assets. Use symlink instead.
-WORKDIR /iv/storybook-static
+# WORKDIR /iv/storybook-static
 RUN rm -rf ./assets
 RUN ln -s ../assets ./assets
 
diff --git a/angular.json b/angular.json
index 3964720d4694e01f3a452109d5e6e53d2445a850..af94adeb567bf3ab3406beeba94e8191e7e97c11 100644
--- a/angular.json
+++ b/angular.json
@@ -10,7 +10,7 @@
       "projectType": "application",
       "schematics": {
         "@schematics/angular:component": {
-          "style": "sass"
+          "style": "scss"
         },
         "@schematics/angular:application": {
           "strict": true
@@ -18,7 +18,7 @@
       },
       "root": "",
       "sourceRoot": "src",
-      "prefix": "app",
+      "prefix": "sxplr",
       "architect": {
         "build": {
           "builder": "@angular-devkit/build-angular:browser",
diff --git a/common/constants.js b/common/constants.js
index ce25c3a98844ed6fd872ad6be2a86f08d4bc8e4f..be7e879b735c2d8b7719401e6679f5a748816264 100644
--- a/common/constants.js
+++ b/common/constants.js
@@ -146,6 +146,8 @@ If you do not accept the Terms & Conditions you are not permitted to access or u
     CONFIGURE_LAYER: 'Configure layer',
 
     REMOVE_FRONTAL_OCTANT_HELPER_TEXT: `Hide the octant facing the user, and overlaying the slice views.`,
+
+    AUXMESH_DESC: `Some templates contain auxiliary meshes, which compliment the appearance of the template in the perspective view.`,
   }
 
   exports.QUICKTOUR_DESC ={
diff --git a/deploy/csp/index.js b/deploy/csp/index.js
index 55dca95d8c66fc1ab3ae9fbb3a48f0c3b0457e29..4905289c335c2a0af1495eed901cc9f66c1aba93 100644
--- a/deploy/csp/index.js
+++ b/deploy/csp/index.js
@@ -53,6 +53,7 @@ const connectSrc = [
   // chunk servers
   'neuroglancer.humanbrainproject.org',
   'neuroglancer.humanbrainproject.eu',
+  '1um.brainatlas.eu',
   'object.cscs.ch',
 
   // required for dataset previews
@@ -113,7 +114,7 @@ module.exports = {
           'unpkg.com/kg-dataset-previewer@1.2.0/', // preview component
           'https://unpkg.com/d3@6.2.0/', // required for preview component
           'https://unpkg.com/mathjax@3.1.2/', // math jax
-          'https://unpkg.com/three-surfer@0.0.11/dist/bundle.js', // for threeSurfer (freesurfer support in browser)
+          'https://unpkg.com/three-surfer@0.0.13/dist/bundle.js', // for threeSurfer (freesurfer support in browser)
           'https://unpkg.com/ng-layer-tune@0.0.6/dist/ng-layer-tune/', // needed for ng layer control
           'https://unpkg.com/hbp-connectivity-component@0.6.5/', // needed for connectivity component
           (req, res) => res.locals.nonce ? `'nonce-${res.locals.nonce}'` : null,
diff --git a/docs/releases/v2.10.0.md b/docs/releases/v2.10.0.md
new file mode 100644
index 0000000000000000000000000000000000000000..9d69dcf86442c16b65d10a017e255dcb5452d617
--- /dev/null
+++ b/docs/releases/v2.10.0.md
@@ -0,0 +1,14 @@
+# v2.10.0
+
+## Feature
+
+- classifies features more intuitively
+- spatial feature now leverages siibra-python
+
+## Bugfix
+
+- panel maximisation, change atlas/template results in incorrect panel order
+
+## Behind the scenes
+
+- Updates to siibra-api v3/siibra-python v0.4 
\ No newline at end of file
diff --git a/mkdocs.yml b/mkdocs.yml
index b27cc48558a5aec7f6185df600adb5513aeea760..930e1107660415acb1e6e21ed42719ef4a11dd28 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -33,6 +33,7 @@ nav:
     - Fetching datasets: 'advanced/datasets.md'
     - Display non-atlas volumes: 'advanced/otherVolumes.md'
   - Release notes:
+    - v2.10.0: 'releases/v2.10.0.md'
     - v2.9.1: 'releases/v2.9.1.md'
     - v2.9.0: 'releases/v2.9.0.md'
     - v2.8.0: 'releases/v2.8.0.md'
diff --git a/package-lock.json b/package-lock.json
index 8d90b7153768e04767c5418e61de040e0edccd20..eaa6b864e66c3e6d3556f6482a0816e0eb9e5d0c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
-  "name": "interactive-viewer",
-  "version": "2.8.1",
+  "name": "siibra-explorer",
+  "version": "2.10.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
-      "name": "interactive-viewer",
-      "version": "2.8.1",
+      "name": "siibra-explorer",
+      "version": "2.10.0",
       "license": "apache-2.0",
       "dependencies": {
         "@angular/animations": "^14.2.12",
@@ -19,6 +19,7 @@
         "@angular/platform-browser": "^14.2.12",
         "@angular/platform-browser-dynamic": "^14.2.12",
         "@angular/router": "^14.2.12",
+        "@ngrx/component-store": "^14.3.3",
         "@ngrx/effects": "^14.3.2",
         "@ngrx/store": "^14.3.2",
         "acorn": "^8.4.1",
@@ -4134,6 +4135,18 @@
       "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==",
       "dev": true
     },
+    "node_modules/@ngrx/component-store": {
+      "version": "14.3.3",
+      "resolved": "https://registry.npmjs.org/@ngrx/component-store/-/component-store-14.3.3.tgz",
+      "integrity": "sha512-q0cY3LIM7eKctzT22udCejO/z5Jp6shEID8aP3NtIg9sYcSiFMK9enTEQkYZ615W3x804s9ARX3liFu98OwoUA==",
+      "dependencies": {
+        "tslib": "^2.0.0"
+      },
+      "peerDependencies": {
+        "@angular/core": "^14.0.0",
+        "rxjs": "^6.5.3 || ^7.5.0"
+      }
+    },
     "node_modules/@ngrx/effects": {
       "version": "14.3.2",
       "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-14.3.2.tgz",
@@ -5834,8 +5847,15 @@
       }
     },
     "node_modules/@storybook/addon-controls/node_modules/watchpack/chokidar2": {
+      "version": "2.0.0",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      },
+      "engines": {
+        "node": "<8.10.0"
+      }
     },
     "node_modules/@storybook/addon-controls/node_modules/webpack": {
       "version": "4.43.0",
@@ -7077,8 +7097,15 @@
       }
     },
     "node_modules/@storybook/addon-docs/node_modules/watchpack/chokidar2": {
+      "version": "2.0.0",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      },
+      "engines": {
+        "node": "<8.10.0"
+      }
     },
     "node_modules/@storybook/addon-docs/node_modules/webpack": {
       "version": "4.43.0",
@@ -8241,8 +8268,15 @@
       }
     },
     "node_modules/@storybook/addon-essentials/node_modules/watchpack/chokidar2": {
+      "version": "2.0.0",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      },
+      "engines": {
+        "node": "<8.10.0"
+      }
     },
     "node_modules/@storybook/addon-essentials/node_modules/webpack": {
       "version": "4.43.0",
@@ -10462,8 +10496,15 @@
       }
     },
     "node_modules/@storybook/angular/node_modules/watchpack/chokidar2": {
+      "version": "2.0.0",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      },
+      "engines": {
+        "node": "<8.10.0"
+      }
     },
     "node_modules/@storybook/angular/node_modules/webpack": {
       "version": "4.43.0",
@@ -12363,8 +12404,15 @@
       }
     },
     "node_modules/@storybook/builder-webpack4/node_modules/watchpack/chokidar2": {
+      "version": "2.0.0",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      },
+      "engines": {
+        "node": "<8.10.0"
+      }
     },
     "node_modules/@storybook/builder-webpack4/node_modules/webpack": {
       "version": "4.43.0",
@@ -15603,8 +15651,15 @@
       }
     },
     "node_modules/@storybook/core-server/node_modules/webpack/node_modules/watchpack/chokidar2": {
+      "version": "2.0.0",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      },
+      "engines": {
+        "node": "<8.10.0"
+      }
     },
     "node_modules/@storybook/core-server/node_modules/y18n": {
       "version": "4.0.3",
@@ -18013,8 +18068,15 @@
       }
     },
     "node_modules/@storybook/manager-webpack4/node_modules/watchpack/chokidar2": {
+      "version": "2.0.0",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      },
+      "engines": {
+        "node": "<8.10.0"
+      }
     },
     "node_modules/@storybook/manager-webpack4/node_modules/webpack": {
       "version": "4.43.0",
@@ -19975,8 +20037,15 @@
       }
     },
     "node_modules/@storybook/telemetry/node_modules/watchpack/chokidar2": {
+      "version": "2.0.0",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      },
+      "engines": {
+        "node": "<8.10.0"
+      }
     },
     "node_modules/@storybook/telemetry/node_modules/webpack": {
       "version": "4.43.0",
diff --git a/package.json b/package.json
index 016c39bf05e651c4234db7fbbbce9f296aa31b95..816cf85477e6fec9ec48d807c098cd7559b25529 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
-  "name": "interactive-viewer",
-  "version": "2.9.1",
+  "name": "siibra-explorer",
+  "version": "2.10.0",
   "description": "siibra-explorer - explore brain atlases. Based on humanbrainproject/nehuba & google/neuroglancer. Built with angular",
   "scripts": {
     "lint": "eslint src --ext .ts",
@@ -11,7 +11,7 @@
     "watch": "ng build --watch --configuration development",
     "test": "ng test",
     "test-ci": "ng test --progress false --watch false --browsers=ChromeHeadless",
-    "sapi-schema": "npx openapi-typescript@5.1.1 https://siibra-api-stable.apps.hbp.eu/v2_0/openapi.json --output ./src/atlasComponents/sapi/schema.ts && eslint ./src/atlasComponents/sapi/schema.ts --no-ignore --fix",
+    "sapi-schema": "npx openapi-typescript@6.1.0 https://siibra-api-latest.apps-dev.hbp.eu/v3_0/openapi.json --output ./src/atlasComponents/sapi/schemaV3.ts && eslint ./src/atlasComponents/sapi/schemaV3.ts --no-ignore --fix",
     "api-schema": "node src/plugin/generateTypes.js",
     "docs:json": "compodoc -p ./tsconfig.json -e json -d .",
     "storybook": "npm run docs:json && start-storybook -p 6006",
@@ -62,6 +62,7 @@
     "@angular/platform-browser": "^14.2.12",
     "@angular/platform-browser-dynamic": "^14.2.12",
     "@angular/router": "^14.2.12",
+    "@ngrx/component-store": "^14.3.3",
     "@ngrx/effects": "^14.3.2",
     "@ngrx/store": "^14.3.2",
     "acorn": "^8.4.1",
diff --git a/spec/util.ts b/spec/util.ts
index 9925589fefa2a49339b67a696b69eae2ef8476f8..4b7affa862bd32d295e40c0518482e16f0ddf20b 100644
--- a/spec/util.ts
+++ b/spec/util.ts
@@ -57,14028 +57,3 @@ export const JUBRAIN_COLIN_CH123_RIGHT = {
     -8347692
   ]
 }
-
-export const COLIN = {
-  "name": "MNI Colin 27",
-  "fullId": "minds/core/referencespace/v1.0.0/7f39f7be-445b-47c0-9791-e971c0b6d992",
-  "type": "template",
-  "species": "Human",
-  "useTheme": "dark",
-  "ngId": "colin",
-  "nehubaConfigURL": "nehubaConfig/colinNehubaConfig",
-  "parcellations": [
-    {
-      "name": "JuBrain Cytoarchitectonic Atlas",
-      "ngId": "jubrain colin v18 left",
-      "auxillaryMeshIndices": [
-        65535
-      ],
-      "hasAdditionalViewMode": [
-        "connectivity"
-      ],
-      "originDatasets": [
-        {
-          "kgSchema": "minds/core/dataset/v1.0.0",
-          "kgId": "4ac9f0bc-560d-47e0-8916-7b24da9bb0ce"
-        }
-      ],
-      "properties": {
-        "version": "1.0",
-        "description": "This dataset contains the whole-brain parcellation of the JuBrain Cytoarchitectonic Atlas (Amunts and Zilles, 2015) in the MNI Colin 27 as well as the MNI ICBM 152 2009c nonlinear asymmetric reference space. The parcellation is derived from the individual probability maps (PMs) of the cytoarchitectonic regions released in the JuBrain Atlas, that are further combined into a Maximum Probability Map (MPM). The MPM is calculated by considering for each voxel the probability of all cytoarchitectonic areas released in the atlas, and determining the most probable assignment (Eickhoff 2005). Note that methodological improvements and integration of new brain structures may lead to small deviations in earlier released datasets.",
-        "publications": [
-          {
-            "doi": "https://doi.org/10.1038/nrn2776",
-            "citation": "Zilles K, Amunts K (2010) Centenary of Brodmann’s map – conception and fate. Nature Reviews Neuroscience 11(2): 139-145 "
-          },
-          {
-            "doi": "https://doi.org/10.1016/j.neuroimage.2007.02.037",
-            "citation": "Amunts K, Schleicher A, Zilles K (2007) Cytoarchitecture of the cerebral cortex – more than localization. Neuroimage 37: 1061-1065"
-          },
-          {
-            "doi": "http://dx.doi.org/10.1016/B978-012693019-1/50023-X",
-            "citation": "Zilles K, Schleicher A, Palomero-Gallagher N, Amunts K (2002) Quantitative analysis of cyto- and receptor architecture of the human brain. In: /Brain Mapping: The Methods/, J. C. Mazziotta and A. Toga (eds.), USA: Elsevier, 2002, p. 573-602."
-          }
-        ]
-      },
-      "regions": [
-        {
-          "name": "telencephalon",
-          "status": null,
-          "labelIndex": null,
-          "synonyms": [],
-          "rgb": null,
-          "children": [
-            {
-              "name": "cerebral nuclei",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "basal forebrain",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "magnocellular group within septum",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Ch 123 (Basal Forebrain)",
-                          "arealabel": "Ch-123",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/7SEP-P2V",
-                          "synonyms": [],
-                          "rgb": [
-                            124,
-                            233,
-                            167
-                          ],
-                          "children": [
-                            {
-                              "name": "Ch 123 (Basal Forebrain) - left hemisphere",
-                              "rgb": [
-                                124,
-                                233,
-                                167
-                              ],
-                              "labelIndex": 286,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -2339339,
-                                4405405,
-                                -8804805
-                              ]
-                            },
-                            {
-                              "name": "Ch 123 (Basal Forebrain) - right hemisphere",
-                              "rgb": [
-                                124,
-                                233,
-                                167
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 286,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                3240000,
-                                5153846,
-                                -8347692
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "bb111a95-e04c-4987-8254-4af4ed8b0022"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "sublenticular part of basal forebrain",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Ch 4 (Basal Forebrain)",
-                          "arealabel": "Ch-4",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/VZJ5-8WJ",
-                          "synonyms": [],
-                          "rgb": [
-                            116,
-                            243,
-                            12
-                          ],
-                          "children": [
-                            {
-                              "name": "Ch 4 (Basal Forebrain) - left hemisphere",
-                              "rgb": [
-                                116,
-                                243,
-                                12
-                              ],
-                              "labelIndex": 264,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -16053628,
-                                -454259,
-                                -12470032
-                              ]
-                            },
-                            {
-                              "name": "Ch 4 (Basal Forebrain) - right hemisphere",
-                              "rgb": [
-                                116,
-                                243,
-                                12
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 264,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                17655072,
-                                263768,
-                                -11539130
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "a5c9d95f-8e7c-4454-91b6-a790387370fc"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "magnocellular group within horizontal limb of diagnoal band",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Ch 123 (Basal Forebrain)",
-                          "arealabel": "Ch-123",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/7SEP-P2V",
-                          "synonyms": [],
-                          "rgb": [
-                            124,
-                            233,
-                            167
-                          ],
-                          "children": [
-                            {
-                              "name": "Ch 123 (Basal Forebrain) - left hemisphere",
-                              "rgb": [
-                                124,
-                                233,
-                                167
-                              ],
-                              "labelIndex": 286,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -2339339,
-                                4405405,
-                                -8804805
-                              ]
-                            },
-                            {
-                              "name": "Ch 123 (Basal Forebrain) - right hemisphere",
-                              "rgb": [
-                                124,
-                                233,
-                                167
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 286,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                3240000,
-                                5153846,
-                                -8347692
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "bb111a95-e04c-4987-8254-4af4ed8b0022"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    }
-                  ]
-                },
-                {
-                  "name": "amygdala",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "laterobasal group",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "LB (Amygdala)",
-                          "arealabel": "LB",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/C3X0-NV3",
-                          "synonyms": [],
-                          "rgb": null,
-                          "children": [
-                            {
-                              "name": "LB (Amygdala) - left hemisphere",
-                              "rgb": null,
-                              "labelIndex": 15,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP"
-                            },
-                            {
-                              "name": "LB (Amygdala) - right hemisphere",
-                              "rgb": null,
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 15,
-                              "children": [],
-                              "status": "publicP"
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "LB (Amygdala)",
-                          "arealabel": "LB",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/C3X0-NV3",
-                          "synonyms": [],
-                          "rgb": null,
-                          "children": [
-                            {
-                              "name": "LB (Amygdala) - left hemisphere",
-                              "rgb": null,
-                              "labelIndex": 11,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP"
-                            },
-                            {
-                              "name": "LB (Amygdala) - right hemisphere",
-                              "rgb": null,
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 11,
-                              "children": [],
-                              "status": "publicP"
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "LB (Amygdala)",
-                          "arealabel": "LB",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/C3X0-NV3",
-                          "synonyms": [],
-                          "rgb": null,
-                          "children": [
-                            {
-                              "name": "LB (Amygdala) - left hemisphere",
-                              "rgb": null,
-                              "labelIndex": 19,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP"
-                            },
-                            {
-                              "name": "LB (Amygdala) - right hemisphere",
-                              "rgb": null,
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 19,
-                              "children": [],
-                              "status": "publicP"
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "LB (Amygdala)",
-                          "arealabel": "LB",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/C3X0-NV3",
-                          "synonyms": [],
-                          "rgb": null,
-                          "children": [
-                            {
-                              "name": "LB (Amygdala) - left hemisphere",
-                              "rgb": null,
-                              "labelIndex": 13,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -25304803,
-                                -1696429,
-                                -23766626
-                              ]
-                            },
-                            {
-                              "name": "LB (Amygdala) - right hemisphere",
-                              "rgb": null,
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 13,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                28015494,
-                                -81343,
-                                -24045836
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "superficial group",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "SF (Amygdala)",
-                          "arealabel": "SF",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/WD31-SEA",
-                          "synonyms": [],
-                          "rgb": null,
-                          "children": [
-                            {
-                              "name": "SF (Amygdala) - left hemisphere",
-                              "rgb": null,
-                              "labelIndex": 236,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -16044471,
-                                530048,
-                                -20831731
-                              ]
-                            },
-                            {
-                              "name": "SF (Amygdala) - right hemisphere",
-                              "rgb": null,
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 236,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                19382770,
-                                1539804,
-                                -19413304
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "48929163-bf7b-4471-9f14-991c5225eced"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "SF (Amygdala)",
-                          "arealabel": "SF",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/WD31-SEA",
-                          "synonyms": [],
-                          "rgb": null,
-                          "children": [
-                            {
-                              "name": "SF (Amygdala) - left hemisphere",
-                              "rgb": null,
-                              "labelIndex": 17,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP"
-                            },
-                            {
-                              "name": "SF (Amygdala) - right hemisphere",
-                              "rgb": null,
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 17,
-                              "children": [],
-                              "status": "publicP"
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "48929163-bf7b-4471-9f14-991c5225eced"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "SF (Amygdala)",
-                          "arealabel": "SF",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/WD31-SEA",
-                          "synonyms": [],
-                          "rgb": [
-                            18,
-                            168,
-                            22
-                          ],
-                          "children": [
-                            {
-                              "name": "SF (Amygdala) - left hemisphere",
-                              "rgb": [
-                                18,
-                                168,
-                                22
-                              ],
-                              "labelIndex": 186,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP"
-                            },
-                            {
-                              "name": "SF (Amygdala) - right hemisphere",
-                              "rgb": [
-                                18,
-                                168,
-                                22
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 186,
-                              "children": [],
-                              "status": "publicP"
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "48929163-bf7b-4471-9f14-991c5225eced"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "CM (Amygdala)",
-                          "arealabel": "CM",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/36FR-C95",
-                          "synonyms": [],
-                          "rgb": [
-                            102,
-                            180,
-                            202
-                          ],
-                          "children": [
-                            {
-                              "name": "CM (Amygdala) - left hemisphere",
-                              "rgb": [
-                                102,
-                                180,
-                                202
-                              ],
-                              "labelIndex": 22,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP"
-                            },
-                            {
-                              "name": "CM (Amygdala) - right hemisphere",
-                              "rgb": [
-                                102,
-                                180,
-                                202
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 22,
-                              "children": [],
-                              "status": "publicP"
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "fiber masses",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "VTM (Amygdala)",
-                          "arealabel": "VTM",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/99HN-XRE",
-                          "synonyms": [],
-                          "rgb": [
-                            89,
-                            178,
-                            185
-                          ],
-                          "children": [
-                            {
-                              "name": "VTM (Amygdala) - left hemisphere",
-                              "rgb": [
-                                89,
-                                178,
-                                185
-                              ],
-                              "labelIndex": 228,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -23377907,
-                                -9837209,
-                                -14848837
-                              ]
-                            },
-                            {
-                              "name": "VTM (Amygdala) - right hemisphere",
-                              "rgb": [
-                                89,
-                                178,
-                                185
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 228,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                25513514,
-                                -8881081,
-                                -15551351
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "a964e6e6-8014-41a2-b975-754d75cbb6f2"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "IF (Amygdala)",
-                          "arealabel": "IF",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/GWPR-G6K",
-                          "synonyms": [],
-                          "rgb": [
-                            120,
-                            190,
-                            129
-                          ],
-                          "children": [
-                            {
-                              "name": "IF (Amygdala) - left hemisphere",
-                              "rgb": [
-                                120,
-                                190,
-                                129
-                              ],
-                              "labelIndex": 237,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -27588235,
-                                -1431373,
-                                -17460784
-                              ]
-                            },
-                            {
-                              "name": "IF (Amygdala) - right hemisphere",
-                              "rgb": [
-                                120,
-                                190,
-                                129
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 237,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                29372549,
-                                -813725,
-                                -16578431
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "5a1391c8-6056-40e4-a19b-3774df42bd07"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "MF (Amygdala)",
-                          "arealabel": "MF",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/9375-55V",
-                          "synonyms": [],
-                          "rgb": [
-                            190,
-                            200,
-                            9
-                          ],
-                          "children": [
-                            {
-                              "name": "MF (Amygdala) - left hemisphere",
-                              "rgb": [
-                                190,
-                                200,
-                                9
-                              ],
-                              "labelIndex": 235,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -18714286,
-                                -6523810,
-                                -15428571
-                              ]
-                            },
-                            {
-                              "name": "MF (Amygdala) - right hemisphere",
-                              "rgb": [
-                                190,
-                                200,
-                                9
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 235,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                20976744,
-                                -4930233,
-                                -14441860
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "3741c788-9412-4b8e-9ab4-9ca2d3a715ca"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "centromedial group",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "CM (Amygdala)",
-                          "arealabel": "CM",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/36FR-C95",
-                          "synonyms": [],
-                          "rgb": [
-                            89,
-                            4,
-                            190
-                          ],
-                          "children": [
-                            {
-                              "name": "CM (Amygdala) - left hemisphere",
-                              "rgb": [
-                                89,
-                                4,
-                                190
-                              ],
-                              "labelIndex": 16,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP"
-                            },
-                            {
-                              "name": "CM (Amygdala) - right hemisphere",
-                              "rgb": [
-                                89,
-                                4,
-                                190
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 16,
-                              "children": [],
-                              "status": "publicP"
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "CM (Amygdala)",
-                          "arealabel": "CM",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/36FR-C95",
-                          "synonyms": [],
-                          "rgb": [
-                            9,
-                            120,
-                            220
-                          ],
-                          "children": [
-                            {
-                              "name": "CM (Amygdala) - left hemisphere",
-                              "rgb": [
-                                9,
-                                120,
-                                220
-                              ],
-                              "labelIndex": 21,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -21108108,
-                                -3376448,
-                                -13214286
-                              ]
-                            },
-                            {
-                              "name": "CM (Amygdala) - right hemisphere",
-                              "rgb": [
-                                9,
-                                120,
-                                220
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 21,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                23157767,
-                                -2679612,
-                                -12555825
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    }
-                  ]
-                }
-              ]
-            },
-            {
-              "name": "cerebral cortex",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "parietal lobe",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "superior parietal lobule",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area 5L (SPL)",
-                          "arealabel": "Area-5L",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/C1FQ-2F",
-                          "synonyms": [],
-                          "rgb": [
-                            184,
-                            185,
-                            58
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 5L (SPL) - left hemisphere",
-                              "rgb": [
-                                184,
-                                185,
-                                58
-                              ],
-                              "labelIndex": 130,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -18807832,
-                                -47524930,
-                                66950353
-                              ]
-                            },
-                            {
-                              "name": "Area 5L (SPL) - right hemisphere",
-                              "rgb": [
-                                184,
-                                185,
-                                58
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 130,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                12970516,
-                                -51174624,
-                                70371695
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "64555f7f-1b33-4ffe-9853-be41e7a21096"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area 7M (SPL)",
-                          "arealabel": "Area-7M",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/F25F-EKW",
-                          "synonyms": [],
-                          "rgb": [
-                            205,
-                            61,
-                            236
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 7M (SPL) - left hemisphere",
-                              "rgb": [
-                                205,
-                                61,
-                                236
-                              ],
-                              "labelIndex": 135,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -777896,
-                                -78103082,
-                                35256111
-                              ]
-                            },
-                            {
-                              "name": "Area 7M (SPL) - right hemisphere",
-                              "rgb": [
-                                205,
-                                61,
-                                236
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 135,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                4281250,
-                                -75882812,
-                                38312500
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "0aacea5c-bc9e-483f-8376-25f176ada158"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area 7PC (SPL)",
-                          "arealabel": "Area-7PC",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/Z45N-1T",
-                          "synonyms": [],
-                          "rgb": [
-                            252,
-                            89,
-                            28
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 7PC (SPL) - left hemisphere",
-                              "rgb": [
-                                252,
-                                89,
-                                28
-                              ],
-                              "labelIndex": 132,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -32056266,
-                                -48916454,
-                                60868713
-                              ]
-                            },
-                            {
-                              "name": "Area 7PC (SPL) - right hemisphere",
-                              "rgb": [
-                                252,
-                                89,
-                                28
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 132,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                30055171,
-                                -49079568,
-                                61493485
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "763140d3-7ba0-4f28-b0ac-c6cbda2d14e1"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area 5M (SPL)",
-                          "arealabel": "Area-5M",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/Y12F-YMU",
-                          "synonyms": [],
-                          "rgb": [
-                            225,
-                            245,
-                            76
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 5M (SPL) - left hemisphere",
-                              "rgb": [
-                                225,
-                                245,
-                                76
-                              ],
-                              "labelIndex": 131,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -7527881,
-                                -41962560,
-                                59221721
-                              ]
-                            },
-                            {
-                              "name": "Area 5M (SPL) - right hemisphere",
-                              "rgb": [
-                                225,
-                                245,
-                                76
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 131,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                4642562,
-                                -44304959,
-                                60273140
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "abe105cf-2c29-46af-af75-6b46fdb75137"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area 7P (SPL)",
-                          "arealabel": "Area-7P",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/C3HS-8R7",
-                          "synonyms": [],
-                          "rgb": [
-                            52,
-                            20,
-                            106
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 7P (SPL) - left hemisphere",
-                              "rgb": [
-                                52,
-                                20,
-                                106
-                              ],
-                              "labelIndex": 208,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -7679310,
-                                -76043295,
-                                52631801
-                              ]
-                            },
-                            {
-                              "name": "Area 7P (SPL) - right hemisphere",
-                              "rgb": [
-                                52,
-                                20,
-                                106
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 208,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                14232037,
-                                -74892094,
-                                56304919
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "af9c4f39-63a4-409f-b306-e5965d639f37"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area 5Ci (SPL)",
-                          "arealabel": "Area-5Ci",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/SQVP-GK1",
-                          "synonyms": [],
-                          "rgb": [
-                            79,
-                            242,
-                            146
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 5Ci (SPL) - left hemisphere",
-                              "rgb": [
-                                79,
-                                242,
-                                146
-                              ],
-                              "labelIndex": 136,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -14033790,
-                                -35828311,
-                                43857534
-                              ]
-                            },
-                            {
-                              "name": "Area 5Ci (SPL) - right hemisphere",
-                              "rgb": [
-                                79,
-                                242,
-                                146
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 136,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                10563961,
-                                -36194957,
-                                46892989
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "07d08f74-af3d-4cbe-bc3c-f32b7f5c989f"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area 7A (SPL)",
-                          "arealabel": "Area-7A",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/7HX2-AJH",
-                          "synonyms": [],
-                          "rgb": [
-                            38,
-                            204,
-                            19
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 7A (SPL) - left hemisphere",
-                              "rgb": [
-                                38,
-                                204,
-                                19
-                              ],
-                              "labelIndex": 134,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -20856230,
-                                -62269710,
-                                61643512
-                              ]
-                            },
-                            {
-                              "name": "Area 7A (SPL) - right hemisphere",
-                              "rgb": [
-                                38,
-                                204,
-                                19
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 134,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                20910951,
-                                -62880523,
-                                62944473
-                              ]
-                            }
-                          ],
-                          "relatedAreas": [
-                            {
-                              "name": "Area 7A",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "811f4adb-4a7c-45c1-8034-4afa9edf586a"
-                                }
-                              }
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "e26e999f-77ad-4934-9569-8290ed05ebda"
-                            }
-                          }
-                        }
-                      ]
-                    },
-                    {
-                      "name": "parietal operculum",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area OP3 (POperc)",
-                          "arealabel": "Area-OP3",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/1Z8F-PX4",
-                          "synonyms": [],
-                          "rgb": [
-                            58,
-                            122,
-                            80
-                          ],
-                          "children": [
-                            {
-                              "name": "Area OP3 (POperc) - left hemisphere",
-                              "rgb": [
-                                58,
-                                122,
-                                80
-                              ],
-                              "labelIndex": 75,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -40814044,
-                                -13737321,
-                                17669701
-                              ]
-                            },
-                            {
-                              "name": "Area OP3 (POperc) - right hemisphere",
-                              "rgb": [
-                                58,
-                                122,
-                                80
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 75,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                41195980,
-                                -11633166,
-                                18002513
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "f6f10b01-6c10-42cf-8129-f5aaf307a36b"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area OP4 (POperc)",
-                          "arealabel": "Area-OP4",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/BVT0-H3U",
-                          "synonyms": [],
-                          "rgb": [
-                            89,
-                            80,
-                            132
-                          ],
-                          "children": [
-                            {
-                              "name": "Area OP4 (POperc) - left hemisphere",
-                              "rgb": [
-                                89,
-                                80,
-                                132
-                              ],
-                              "labelIndex": 72,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -60514139,
-                                -10849614,
-                                15368038
-                              ]
-                            },
-                            {
-                              "name": "Area OP4 (POperc) - right hemisphere",
-                              "rgb": [
-                                89,
-                                80,
-                                132
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 72,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                63398148,
-                                -9211111,
-                                12780864
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "b1e7f0d2-6d37-4047-9c2e-a08c3f1e2a16"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area OP2 (POperc)",
-                          "arealabel": "Area-OP2",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/5KBV-36J",
-                          "synonyms": [],
-                          "rgb": [
-                            36,
-                            47,
-                            221
-                          ],
-                          "children": [
-                            {
-                              "name": "Area OP2 (POperc) - left hemisphere",
-                              "rgb": [
-                                36,
-                                47,
-                                221
-                              ],
-                              "labelIndex": 74,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -36355372,
-                                -23452479,
-                                18938017
-                              ]
-                            },
-                            {
-                              "name": "Area OP2 (POperc) - right hemisphere",
-                              "rgb": [
-                                36,
-                                47,
-                                221
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 74,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                35629457,
-                                -21159690,
-                                18021705
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "ab26cefd-f7d6-4442-8020-a6e418e673ff"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area OP1 (POperc)",
-                          "arealabel": "Area-OP1",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/SH37-979",
-                          "synonyms": [],
-                          "rgb": [
-                            250,
-                            182,
-                            34
-                          ],
-                          "children": [
-                            {
-                              "name": "Area OP1 (POperc) - left hemisphere",
-                              "rgb": [
-                                250,
-                                182,
-                                34
-                              ],
-                              "labelIndex": 73,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -51566527,
-                                -22523828,
-                                17190240
-                              ]
-                            },
-                            {
-                              "name": "Area OP1 (POperc) - right hemisphere",
-                              "rgb": [
-                                250,
-                                182,
-                                34
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 73,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                52888430,
-                                -20697107,
-                                17000826
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "402ec28d-0809-4226-91a4-900d9303291b"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "postcentral gyrus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area 3b (PostCG)",
-                          "arealabel": "Area-3b",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/2JK3-QXR",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area 3b",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "74304fe9-452e-4ca3-97a3-8cf3459bb1a0"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            239,
-                            246,
-                            155
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 3b (PostCG) - left hemisphere",
-                              "rgb": [
-                                239,
-                                246,
-                                155
-                              ],
-                              "labelIndex": 127,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -44439219,
-                                -21735041,
-                                46012387
-                              ]
-                            },
-                            {
-                              "name": "Area 3b (PostCG) - right hemisphere",
-                              "rgb": [
-                                239,
-                                246,
-                                155
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 127,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                38765839,
-                                -25096118,
-                                48227174
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "b84f67bb-5d9f-4daf-a8d6-15f63f901bd4"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area 1 (PostCG)",
-                          "arealabel": "Area-1",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/THB5-B64",
-                          "synonyms": [],
-                          "rgb": [
-                            232,
-                            185,
-                            250
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 1 (PostCG) - left hemisphere",
-                              "rgb": [
-                                232,
-                                185,
-                                250
-                              ],
-                              "labelIndex": 125,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -47104485,
-                                -28297920,
-                                57798046
-                              ]
-                            },
-                            {
-                              "name": "Area 1 (PostCG) - right hemisphere",
-                              "rgb": [
-                                232,
-                                185,
-                                250
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 125,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                48452543,
-                                -27132790,
-                                56150187
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "c9753e82-80ca-4074-a704-9dd2c4c0d58b"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area 2 (PostCS)",
-                          "arealabel": "Area-2",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/QA8F-DD2",
-                          "synonyms": [],
-                          "rgb": [
-                            23,
-                            13,
-                            35
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 2 (PostCS) - left hemisphere",
-                              "rgb": [
-                                23,
-                                13,
-                                35
-                              ],
-                              "labelIndex": 252,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -42268059,
-                                -32424512,
-                                51210202
-                              ]
-                            },
-                            {
-                              "name": "Area 2 (PostCS) - right hemisphere",
-                              "rgb": [
-                                23,
-                                13,
-                                35
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 252,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                38223619,
-                                -34651627,
-                                52535010
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "f9147ae9-5cf0-41b2-89a3-e6e6df07bef1"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area 3a (PostCG)",
-                          "arealabel": "Area-3a",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/C5QQ-EFB",
-                          "synonyms": [],
-                          "rgb": [
-                            187,
-                            133,
-                            50
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 3a (PostCG) - left hemisphere",
-                              "rgb": [
-                                187,
-                                133,
-                                50
-                              ],
-                              "labelIndex": 126,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -31927553,
-                                -25650901,
-                                44513889
-                              ]
-                            },
-                            {
-                              "name": "Area 3a (PostCG) - right hemisphere",
-                              "rgb": [
-                                187,
-                                133,
-                                50
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 126,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                38813714,
-                                -19184000,
-                                36284571
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "2657ecc1-da69-4a37-9b37-66ae95f9623c"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "inferior parietal lobule",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area PF (IPL)",
-                          "arealabel": "Area-PF",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/F1TJ-54W",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area PF",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "f4e177a6-1b2c-48d5-a62c-91949ba636e4"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            226,
-                            211,
-                            61
-                          ],
-                          "children": [
-                            {
-                              "name": "Area PF (IPL) - left hemisphere",
-                              "rgb": [
-                                226,
-                                211,
-                                61
-                              ],
-                              "labelIndex": 206,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -59814938,
-                                -37432365,
-                                36569295
-                              ]
-                            },
-                            {
-                              "name": "Area PF (IPL) - right hemisphere",
-                              "rgb": [
-                                226,
-                                211,
-                                61
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 206,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                64016699,
-                                -33052700,
-                                30153112
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "18e5e1b0-6c25-4f55-a967-0834d2bd3ee4"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area PFcm (IPL)",
-                          "arealabel": "Area-PFcm",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/8DP8-8HE",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area PFcm",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "f07d441f-452f-471b-ac7c-0d3c2ae16fb2"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            98,
-                            128,
-                            120
-                          ],
-                          "children": [
-                            {
-                              "name": "Area PFcm (IPL) - left hemisphere",
-                              "rgb": [
-                                98,
-                                128,
-                                120
-                              ],
-                              "labelIndex": 113,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -51751410,
-                                -36954069,
-                                22546334
-                              ]
-                            },
-                            {
-                              "name": "Area PFcm (IPL) - right hemisphere",
-                              "rgb": [
-                                98,
-                                128,
-                                120
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 113,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                53524370,
-                                -31637287,
-                                23177904
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "10502c3a-f20e-44fa-b985-786d6888d4bb"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area PGa (IPL)",
-                          "arealabel": "Area-PGa",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/V5HY-XTS",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area PGa",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "d5b168a3-a92e-4ab3-8b4d-61e58e5b7a1c"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            42,
-                            236,
-                            131
-                          ],
-                          "children": [
-                            {
-                              "name": "Area PGa (IPL) - left hemisphere",
-                              "rgb": [
-                                42,
-                                236,
-                                131
-                              ],
-                              "labelIndex": 110,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -48873487,
-                                -60780569,
-                                37191889
-                              ]
-                            },
-                            {
-                              "name": "Area PGa (IPL) - right hemisphere",
-                              "rgb": [
-                                42,
-                                236,
-                                131
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 110,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                55283797,
-                                -55333653,
-                                30316395
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "d7f6c5be-93c6-4a16-8939-4420329d4147"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area PFt (IPL)",
-                          "arealabel": "Area-PFt",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/JGM9-ZET",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area PFt",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "9ff7fcc4-a88b-4bf8-be07-1386a3760a96"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            120,
-                            135,
-                            232
-                          ],
-                          "children": [
-                            {
-                              "name": "Area PFt (IPL) - left hemisphere",
-                              "rgb": [
-                                120,
-                                135,
-                                232
-                              ],
-                              "labelIndex": 109,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -55015237,
-                                -27583919,
-                                38095874
-                              ]
-                            },
-                            {
-                              "name": "Area PFt (IPL) - right hemisphere",
-                              "rgb": [
-                                120,
-                                135,
-                                232
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 109,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                54808632,
-                                -24626296,
-                                37973570
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "847cef50-7340-470d-8580-327b4ce9db19"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area PFm (IPL)",
-                          "arealabel": "Area-PFm",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/TB94-HRK",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area PFm",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "3455ada4-48c3-4748-ae38-2fe3f376f0fc"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            53,
-                            76,
-                            145
-                          ],
-                          "children": [
-                            {
-                              "name": "Area PFm (IPL) - left hemisphere",
-                              "rgb": [
-                                53,
-                                76,
-                                145
-                              ],
-                              "labelIndex": 112,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -54527689,
-                                -52389045,
-                                38877207
-                              ]
-                            },
-                            {
-                              "name": "Area PFm (IPL) - right hemisphere",
-                              "rgb": [
-                                53,
-                                76,
-                                145
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 112,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                56990022,
-                                -45541717,
-                                38606571
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "411edde9-685f-464b-970c-a929f9a4067c"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area PGp (IPL)",
-                          "arealabel": "Area-PGp",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/FPFJ-ZCD",
-                          "synonyms": [],
-                          "rgb": [
-                            92,
-                            116,
-                            83
-                          ],
-                          "children": [
-                            {
-                              "name": "Area PGp (IPL) - left hemisphere",
-                              "rgb": [
-                                92,
-                                116,
-                                83
-                              ],
-                              "labelIndex": 108,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -44673441,
-                                -73269937,
-                                29840224
-                              ]
-                            },
-                            {
-                              "name": "Area PGp (IPL) - right hemisphere",
-                              "rgb": [
-                                92,
-                                116,
-                                83
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 108,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                47749459,
-                                -70528695,
-                                30721440
-                              ]
-                            }
-                          ],
-                          "relatedAreas": [
-                            {
-                              "name": "Area PGp",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "1b00a0e4-9493-43ff-bfbd-b02119064813"
-                                }
-                              }
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "b3ef6947-76c9-4935-bbc6-8b2329c0967b"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area PFop (IPL)",
-                          "arealabel": "Area-PFop",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/M2PM-92Q",
-                          "synonyms": [],
-                          "rgb": [
-                            146,
-                            153,
-                            177
-                          ],
-                          "children": [
-                            {
-                              "name": "Area PFop (IPL) - left hemisphere",
-                              "rgb": [
-                                146,
-                                153,
-                                177
-                              ],
-                              "labelIndex": 111,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -60026462,
-                                -24694986,
-                                24259053
-                              ]
-                            },
-                            {
-                              "name": "Area PFop (IPL) - right hemisphere",
-                              "rgb": [
-                                146,
-                                153,
-                                177
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 111,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                58286575,
-                                -20617534,
-                                24917260
-                              ]
-                            }
-                          ],
-                          "relatedAreas": [
-                            {
-                              "name": "Area PFop",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "b4397c40-82e1-4d62-b97a-44e8d04b428b"
-                                }
-                              }
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "e8262e56-88fe-4006-b078-def4d78416b8"
-                            }
-                          }
-                        }
-                      ]
-                    },
-                    {
-                      "name": "parieto-occipital sulcus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area hPO1 (POS)",
-                          "arealabel": "Area-hPO1",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/W50A-FAP",
-                          "synonyms": [],
-                          "rgb": [
-                            153,
-                            232,
-                            235
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hPO1 (POS) - left hemisphere",
-                              "rgb": [
-                                153,
-                                232,
-                                235
-                              ],
-                              "labelIndex": 297,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -15069260,
-                                -80661951,
-                                37074565
-                              ]
-                            },
-                            {
-                              "name": "Area hPO1 (POS) - right hemisphere",
-                              "rgb": [
-                                153,
-                                232,
-                                235
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 297,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                21853147,
-                                -80927739,
-                                37048660
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "a78998c2-99d4-4738-bbda-82a317f713f1"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "intraparietal sulcus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area hIP1 (IPS)",
-                          "arealabel": "Area-hIP1",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/92FE-7S6",
-                          "synonyms": [],
-                          "rgb": [
-                            66,
-                            149,
-                            82
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hIP1 (IPS) - left hemisphere",
-                              "rgb": [
-                                66,
-                                149,
-                                82
-                              ],
-                              "labelIndex": 128,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -36841999,
-                                -49449871,
-                                40584028
-                              ]
-                            },
-                            {
-                              "name": "Area hIP1 (IPS) - right hemisphere",
-                              "rgb": [
-                                66,
-                                149,
-                                82
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 128,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                40629988,
-                                -48019372,
-                                39158853
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "7722c71f-fe84-4deb-8f6b-98e2aecf2e31"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hIP7 (IPS)",
-                          "arealabel": "Area-hIP7",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/WRCY-8Z1",
-                          "synonyms": [],
-                          "rgb": [
-                            71,
-                            196,
-                            218
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hIP7 (IPS) - left hemisphere",
-                              "rgb": [
-                                71,
-                                196,
-                                218
-                              ],
-                              "labelIndex": 296,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -22044741,
-                                -79989011,
-                                29353218
-                              ]
-                            },
-                            {
-                              "name": "Area hIP7 (IPS) - right hemisphere",
-                              "rgb": [
-                                71,
-                                196,
-                                218
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 296,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                29041586,
-                                -79117828,
-                                27046207
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "9c6c3c96-8129-4e0e-aa22-a0fb435aab45"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hIP3 (IPS)",
-                          "arealabel": "Area-hIP3",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/P8X0-V1G",
-                          "synonyms": [],
-                          "rgb": [
-                            113,
-                            172,
-                            229
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hIP3 (IPS) - left hemisphere",
-                              "rgb": [
-                                113,
-                                172,
-                                229
-                              ],
-                              "labelIndex": 133,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -30430769,
-                                -55031164,
-                                46842209
-                              ]
-                            },
-                            {
-                              "name": "Area hIP3 (IPS) - right hemisphere",
-                              "rgb": [
-                                113,
-                                172,
-                                229
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 133,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                33538679,
-                                -49884591,
-                                50461950
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "700ac6db-870d-44f1-8786-0c01207f992b"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hIP2 (IPS)",
-                          "arealabel": "Area-hIP2",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/EJTM-NDY",
-                          "synonyms": [],
-                          "rgb": [
-                            127,
-                            245,
-                            203
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hIP2 (IPS) - left hemisphere",
-                              "rgb": [
-                                127,
-                                245,
-                                203
-                              ],
-                              "labelIndex": 129,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -46531100,
-                                -41482722,
-                                43278044
-                              ]
-                            },
-                            {
-                              "name": "Area hIP2 (IPS) - right hemisphere",
-                              "rgb": [
-                                127,
-                                245,
-                                203
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 129,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                44605145,
-                                -39958613,
-                                45130872
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "4490ef3e-ce60-4453-9e9f-85388d0603cb"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hIP4 (IPS)",
-                          "arealabel": "Area-hIP4",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/TSEN-QSY",
-                          "synonyms": [],
-                          "rgb": [
-                            254,
-                            52,
-                            184
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hIP4 (IPS) - left hemisphere",
-                              "rgb": [
-                                254,
-                                52,
-                                184
-                              ],
-                              "labelIndex": 294,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -29349066,
-                                -79948651,
-                                25849585
-                              ]
-                            },
-                            {
-                              "name": "Area hIP4 (IPS) - right hemisphere",
-                              "rgb": [
-                                254,
-                                52,
-                                184
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 294,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                37324927,
-                                -76495150,
-                                22338021
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "5875bfe2-99ca-4e50-bce2-61c201c3dd54"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hIP5 (IPS)",
-                          "arealabel": "Area-hIP5",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/RNSM-Y4Y",
-                          "synonyms": [],
-                          "rgb": [
-                            217,
-                            87,
-                            210
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hIP5 (IPS) - left hemisphere",
-                              "rgb": [
-                                217,
-                                87,
-                                210
-                              ],
-                              "labelIndex": 295,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -28321120,
-                                -73162807,
-                                36664362
-                              ]
-                            },
-                            {
-                              "name": "Area hIP5 (IPS) - right hemisphere",
-                              "rgb": [
-                                217,
-                                87,
-                                210
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 295,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                34614713,
-                                -68930590,
-                                33299252
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "f9717dec-0310-4078-a4ae-294170b4fb37"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hIP6 (IPS)",
-                          "arealabel": "Area-hIP6",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/AFQR-50Q",
-                          "synonyms": [],
-                          "rgb": [
-                            237,
-                            233,
-                            37
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hIP6 (IPS) - left hemisphere",
-                              "rgb": [
-                                237,
-                                233,
-                                37
-                              ],
-                              "labelIndex": 292,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -31988131,
-                                -66522626,
-                                46155045
-                              ]
-                            },
-                            {
-                              "name": "Area hIP6 (IPS) - right hemisphere",
-                              "rgb": [
-                                237,
-                                233,
-                                37
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 292,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                37069307,
-                                -63723479,
-                                45628006
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "b9975f8e-f484-4e82-883a-5fd765855ae0"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hIP8 (IPS)",
-                          "arealabel": "Area-hIP8",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/YYT8-FT8",
-                          "synonyms": [],
-                          "rgb": [
-                            223,
-                            109,
-                            3
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hIP8 (IPS) - left hemisphere",
-                              "rgb": [
-                                223,
-                                109,
-                                3
-                              ],
-                              "labelIndex": 293,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -18133307,
-                                -72231198,
-                                43245125
-                              ]
-                            },
-                            {
-                              "name": "Area hIP8 (IPS) - right hemisphere",
-                              "rgb": [
-                                223,
-                                109,
-                                3
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 293,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                26220986,
-                                -71480127,
-                                41680048
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "a2c1acc7-7fdc-4fbd-90ee-729eda7fdff3"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    }
-                  ]
-                },
-                {
-                  "name": "occiptal lobe",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "dorsal occipital cortex",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area hOc6 (POS)",
-                          "arealabel": "Area-hOc6",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/4101-1ZG",
-                          "synonyms": [],
-                          "rgb": [
-                            239,
-                            66,
-                            26
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hOc6 (POS) - left hemisphere",
-                              "rgb": [
-                                239,
-                                66,
-                                26
-                              ],
-                              "labelIndex": 291,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -15925775,
-                                -70685971,
-                                16518760
-                              ]
-                            },
-                            {
-                              "name": "Area hOc6 (POS) - right hemisphere",
-                              "rgb": [
-                                239,
-                                66,
-                                26
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 291,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                17750454,
-                                -67625227,
-                                17755898
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "d72e0210-a910-4b15-bcaf-80c3433cd3e0"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hOc4d (Cuneus)",
-                          "arealabel": "Area-hOc4d",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/VSK5-DET",
-                          "synonyms": [],
-                          "rgb": [
-                            109,
-                            218,
-                            10
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hOc4d (Cuneus) - left hemisphere",
-                              "rgb": [
-                                109,
-                                218,
-                                10
-                              ],
-                              "labelIndex": 119,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -17209585,
-                                -87846006,
-                                25522684
-                              ]
-                            },
-                            {
-                              "name": "Area hOc4d (Cuneus) - right hemisphere",
-                              "rgb": [
-                                109,
-                                218,
-                                10
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 119,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                20232373,
-                                -87193644,
-                                27253227
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "8120426c-f65b-4426-8a58-3060e2334921"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hOc3d (Cuneus)",
-                          "arealabel": "Area-hOc3d",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/F9X3-JVJ",
-                          "synonyms": [],
-                          "rgb": [
-                            105,
-                            191,
-                            48
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hOc3d (Cuneus) - left hemisphere",
-                              "rgb": [
-                                105,
-                                191,
-                                48
-                              ],
-                              "labelIndex": 120,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -12816505,
-                                -91289984,
-                                21840872
-                              ]
-                            },
-                            {
-                              "name": "Area hOc3d (Cuneus) - right hemisphere",
-                              "rgb": [
-                                105,
-                                191,
-                                48
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 120,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                16129503,
-                                -88897084,
-                                23080617
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "d7ec4342-ae58-41e3-a68c-28e90a719d41"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "ventral occipital cortex",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area hOc3v (LingG)",
-                          "arealabel": "Area-hOc3v",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/E5E8-1VV",
-                          "synonyms": [],
-                          "rgb": [
-                            83,
-                            179,
-                            155
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hOc3v (LingG) - left hemisphere",
-                              "rgb": [
-                                83,
-                                179,
-                                155
-                              ],
-                              "labelIndex": 10,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -18685863,
-                                -85629087,
-                                -10106719
-                              ]
-                            },
-                            {
-                              "name": "Area hOc3v (LingG) - right hemisphere",
-                              "rgb": [
-                                83,
-                                179,
-                                155
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 10,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                24296060,
-                                -81686611,
-                                -10031193
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "0d6392fd-b905-4bc3-bac9-fc44d8990a30"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hOc4v (LingG)",
-                          "arealabel": "Area-hOc4v",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/AASR-M8P",
-                          "synonyms": [],
-                          "rgb": [
-                            222,
-                            77,
-                            155
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hOc4v (LingG) - left hemisphere",
-                              "rgb": [
-                                222,
-                                77,
-                                155
-                              ],
-                              "labelIndex": 9,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -26315808,
-                                -78419533,
-                                -12497238
-                              ]
-                            },
-                            {
-                              "name": "Area hOc4v (LingG) - right hemisphere",
-                              "rgb": [
-                                222,
-                                77,
-                                155
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 9,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                32665897,
-                                -76519832,
-                                -12453305
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "27d91cbb-5611-4d38-bd17-c0f1ac22b4cc"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "occipital cortex",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area hOc2 (V2, 18)",
-                          "arealabel": "Area-hOc2",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/QG9C-THD",
-                          "synonyms": [],
-                          "rgb": [
-                            84,
-                            110,
-                            22
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hOc2 (V2, 18) - left hemisphere",
-                              "rgb": [
-                                84,
-                                110,
-                                22
-                              ],
-                              "labelIndex": 7,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -10521334,
-                                -88185706,
-                                4055081
-                              ]
-                            },
-                            {
-                              "name": "Area hOc2 (V2, 18) - right hemisphere",
-                              "rgb": [
-                                84,
-                                110,
-                                22
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 7,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                15409559,
-                                -86163484,
-                                2905309
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "04674a3c-bb3a-495e-a466-206355e630bd"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hOc1 (V1, 17, CalcS)",
-                          "arealabel": "Area-hOc1",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/MXJ6-6DH",
-                          "synonyms": [],
-                          "rgb": [
-                            190,
-                            132,
-                            147
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hOc1 (V1, 17, CalcS) - left hemisphere",
-                              "rgb": [
-                                190,
-                                132,
-                                147
-                              ],
-                              "labelIndex": 8,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -8533787,
-                                -84646549,
-                                1855106
-                              ]
-                            },
-                            {
-                              "name": "Area hOc1 (V1, 17, CalcS) - right hemisphere",
-                              "rgb": [
-                                190,
-                                132,
-                                147
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 8,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                14654595,
-                                -81416396,
-                                1637838
-                              ]
-                            }
-                          ],
-                          "relatedAreas": [
-                            {
-                              "name": "Area hOc1",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "b851eb9d-9502-45e9-8dd8-2861f0e6da3f"
-                                }
-                              }
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "5151ab8f-d8cb-4e67-a449-afe2a41fb007"
-                            }
-                          }
-                        }
-                      ]
-                    },
-                    {
-                      "name": "lateral occipital cortex",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area hOc4lp (LOC)",
-                          "arealabel": "Area-hOc4lp",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/4B87-Q8X",
-                          "synonyms": [],
-                          "rgb": [
-                            96,
-                            113,
-                            253
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hOc4lp (LOC) - left hemisphere",
-                              "rgb": [
-                                96,
-                                113,
-                                253
-                              ],
-                              "labelIndex": 117,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -34066943,
-                                -88725728,
-                                6360721
-                              ]
-                            },
-                            {
-                              "name": "Area hOc4lp (LOC) - right hemisphere",
-                              "rgb": [
-                                96,
-                                113,
-                                253
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 117,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                38538256,
-                                -86375516,
-                                4086228
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "9006ee6a-6dc1-4604-9f20-7e08b42d574d"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hOc5 (LOC)",
-                          "arealabel": "Area-hOc5",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/2WSH-MCT",
-                          "synonyms": [],
-                          "rgb": [
-                            255,
-                            0,
-                            0
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hOc5 (LOC) - left hemisphere",
-                              "rgb": [
-                                255,
-                                0,
-                                0
-                              ],
-                              "labelIndex": 6,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -42484324,
-                                -71486486,
-                                1795676
-                              ]
-                            },
-                            {
-                              "name": "Area hOc5 (LOC) - right hemisphere",
-                              "rgb": [
-                                255,
-                                0,
-                                0
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 6,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                48090700,
-                                -66172216,
-                                3121699
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "b40afb5a-e6a1-47b6-8a3e-1f8a20fbf99a"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area hOc4la (LOC)",
-                          "arealabel": "Area-hOc4la",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/Z9JX-WKB",
-                          "synonyms": [],
-                          "rgb": [
-                            233,
-                            168,
-                            189
-                          ],
-                          "children": [
-                            {
-                              "name": "Area hOc4la (LOC) - left hemisphere",
-                              "rgb": [
-                                233,
-                                168,
-                                189
-                              ],
-                              "labelIndex": 118,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -46291484,
-                                -76947955,
-                                -372761
-                              ]
-                            },
-                            {
-                              "name": "Area hOc4la (LOC) - right hemisphere",
-                              "rgb": [
-                                233,
-                                168,
-                                189
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 118,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                48566255,
-                                -73862041,
-                                -779202
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "94365b82-6204-4937-8b86-fe0433287938"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    }
-                  ]
-                },
-                {
-                  "name": "frontal lobe",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "inferior frontal gyrus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area 44 (IFG)",
-                          "arealabel": "Area-44",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/F9P8-ZVW",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area 44v",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "7e5e7aa8-28b8-445b-8980-2a6f3fa645b3"
-                                }
-                              }
-                            },
-                            {
-                              "name": "Area 44d",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "8aeae833-81c8-4e27-a8d6-deee339d6052"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            54,
-                            74,
-                            75
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 44 (IFG) - left hemisphere",
-                              "rgb": [
-                                54,
-                                74,
-                                75
-                              ],
-                              "labelIndex": 2,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -54242820,
-                                11425127,
-                                18292735
-                              ]
-                            },
-                            {
-                              "name": "Area 44 (IFG) - right hemisphere",
-                              "rgb": [
-                                54,
-                                74,
-                                75
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 2,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                56359074,
-                                11741030,
-                                13444358
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "8a6be82c-5947-4fff-8348-cf9bf73e4f40"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area 45 (IFG)",
-                          "arealabel": "Area-45",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/MR1V-BJ3",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area 45",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "131e6de8-b073-4f01-8f60-1bdb5a6c9a9a"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            167,
-                            103,
-                            146
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 45 (IFG) - left hemisphere",
-                              "rgb": [
-                                167,
-                                103,
-                                146
-                              ],
-                              "labelIndex": 1,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -54903012,
-                                26558233,
-                                15528514
-                              ]
-                            },
-                            {
-                              "name": "Area 45 (IFG) - right hemisphere",
-                              "rgb": [
-                                167,
-                                103,
-                                146
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 1,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                55787613,
-                                26216770,
-                                12102941
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "cb32e688-43f0-4ae3-9554-085973137663"
-                            }
-                          }
-                        }
-                      ]
-                    },
-                    {
-                      "name": "dorsal precentral gyrus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area 6d2 (PreCG)",
-                          "arealabel": "Area-6d2",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/KXHS-N90",
-                          "synonyms": [],
-                          "rgb": [
-                            170,
-                            151,
-                            180
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 6d2 (PreCG) - left hemisphere",
-                              "rgb": [
-                                170,
-                                151,
-                                180
-                              ],
-                              "labelIndex": 288,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -15757793,
-                                2030353,
-                                68024610
-                              ]
-                            },
-                            {
-                              "name": "Area 6d2 (PreCG) - right hemisphere",
-                              "rgb": [
-                                170,
-                                151,
-                                180
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 288,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                14562976,
-                                2312675,
-                                68442439
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "963c5281-67df-4d41-9b91-60b31cf150c0"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area 6d1 (PreCG)",
-                          "arealabel": "Area-6d1",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/4WSQ-8FM",
-                          "synonyms": [],
-                          "rgb": [
-                            45,
-                            33,
-                            27
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 6d1 (PreCG) - left hemisphere",
-                              "rgb": [
-                                45,
-                                33,
-                                27
-                              ],
-                              "labelIndex": 287,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -20332759,
-                                -14746524,
-                                68590141
-                              ]
-                            },
-                            {
-                              "name": "Area 6d1 (PreCG) - right hemisphere",
-                              "rgb": [
-                                45,
-                                33,
-                                27
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 287,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                20258981,
-                                -16559656,
-                                68870890
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "a802f3dc-b7e5-48b7-9845-832a6e6f9b1c"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "posterior medial superior frontal gyrus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area 6ma (preSMA, mesial SFG)",
-                          "arealabel": "Area-6ma",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/WVNR-SPT",
-                          "synonyms": [],
-                          "rgb": [
-                            204,
-                            108,
-                            222
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 6ma (preSMA, mesial SFG) - left hemisphere",
-                              "rgb": [
-                                204,
-                                108,
-                                222
-                              ],
-                              "labelIndex": 299,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -4083913,
-                                4296092,
-                                58555023
-                              ]
-                            },
-                            {
-                              "name": "Area 6ma (preSMA, mesial SFG) - right hemisphere",
-                              "rgb": [
-                                204,
-                                108,
-                                222
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 299,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                5230140,
-                                4042128,
-                                58355079
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "07b4c6a1-8a24-4f88-8f73-b2ea06e1c2f3"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "superior frontal sulcus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area 6d3 (SFS)",
-                          "arealabel": "Area-6d3",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/NVJ5-JJ",
-                          "synonyms": [],
-                          "rgb": [
-                            55,
-                            239,
-                            21
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 6d3 (SFS) - left hemisphere",
-                              "rgb": [
-                                55,
-                                239,
-                                21
-                              ],
-                              "labelIndex": 289,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -23315931,
-                                4317151,
-                                51434008
-                              ]
-                            },
-                            {
-                              "name": "Area 6d3 (SFS) - right hemisphere",
-                              "rgb": [
-                                55,
-                                239,
-                                21
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 289,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                25173639,
-                                1578188,
-                                53334281
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "266c1ada-1840-462f-8223-7ff2df457552"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "frontal pole",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area Fp1 (FPole)",
-                          "arealabel": "Area-Fp1",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/PTKW-R7W",
-                          "synonyms": [],
-                          "rgb": [
-                            226,
-                            14,
-                            200
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Fp1 (FPole) - left hemisphere",
-                              "rgb": [
-                                226,
-                                14,
-                                200
-                              ],
-                              "labelIndex": 212,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -16331031,
-                                64168302,
-                                549101
-                              ]
-                            },
-                            {
-                              "name": "Area Fp1 (FPole) - right hemisphere",
-                              "rgb": [
-                                226,
-                                14,
-                                200
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 212,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                18482225,
-                                63988011,
-                                -317043
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "10dc5343-941b-4e3e-80ed-df031c33bbc6"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Fp2 (FPole)",
-                          "arealabel": "Area-Fp2",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/GZW1-7R3",
-                          "synonyms": [],
-                          "rgb": [
-                            239,
-                            137,
-                            211
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Fp2 (FPole) - left hemisphere",
-                              "rgb": [
-                                239,
-                                137,
-                                211
-                              ],
-                              "labelIndex": 211,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -3739067,
-                                59074587,
-                                -1181973
-                              ]
-                            },
-                            {
-                              "name": "Area Fp2 (FPole) - right hemisphere",
-                              "rgb": [
-                                239,
-                                137,
-                                211
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 211,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                6093420,
-                                59611191,
-                                -509606
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "3bf7bde1-cc06-4657-b296-380275f9d4b8"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "precentral gyrus ",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area 4p (PreCG)",
-                          "arealabel": "Area-4p",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/5HSF-81J",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area 4p",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "861ab96a-c4b5-4ba6-bd40-1e80d4680f89"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            116,
-                            92,
-                            124
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 4p (PreCG) - left hemisphere",
-                              "rgb": [
-                                116,
-                                92,
-                                124
-                              ],
-                              "labelIndex": 123,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -36140917,
-                                -22750424,
-                                49282965
-                              ]
-                            },
-                            {
-                              "name": "Area 4p (PreCG) - right hemisphere",
-                              "rgb": [
-                                116,
-                                92,
-                                124
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 123,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                37510795,
-                                -21359659,
-                                46456250
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "82e6e826-a439-41db-84ff-4674ca3d643a"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area 4a (PreCG)",
-                          "arealabel": "Area-4a",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/PVPP-P3Q",
-                          "synonyms": [],
-                          "rgb": [
-                            118,
-                            239,
-                            183
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 4a (PreCG) - left hemisphere",
-                              "rgb": [
-                                118,
-                                239,
-                                183
-                              ],
-                              "labelIndex": 124,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -17367391,
-                                -28669064,
-                                67404682
-                              ]
-                            },
-                            {
-                              "name": "Area 4a (PreCG) - right hemisphere",
-                              "rgb": [
-                                118,
-                                239,
-                                183
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 124,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                9609157,
-                                -31334779,
-                                68068112
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "175848ff-4c55-47e3-a0ae-f905a14e03cd"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "mesial precentral gyrus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area 6mp (SMA, mesial SFG)",
-                          "arealabel": "Area-6mp",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/2E1T-47F",
-                          "synonyms": [],
-                          "rgb": [
-                            75,
-                            95,
-                            87
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 6mp (SMA, mesial SFG) - left hemisphere",
-                              "rgb": [
-                                75,
-                                95,
-                                87
-                              ],
-                              "labelIndex": 298,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -4094374,
-                                -14286751,
-                                59329220
-                              ]
-                            },
-                            {
-                              "name": "Area 6mp (SMA, mesial SFG) - right hemisphere",
-                              "rgb": [
-                                75,
-                                95,
-                                87
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 298,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                4949202,
-                                -13788668,
-                                57534028
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "def99e8e-ce8f-4a62-bd5d-739948c4b010"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "medial orbitofrontal cortex",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area Fo1 (OFC)",
-                          "arealabel": "Area-Fo1",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/H2N2-6J2",
-                          "synonyms": [],
-                          "rgb": [
-                            7,
-                            255,
-                            179
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Fo1 (OFC) - left hemisphere",
-                              "rgb": [
-                                7,
-                                255,
-                                179
-                              ],
-                              "labelIndex": 3,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -7962771,
-                                41364968,
-                                -22537687
-                              ]
-                            },
-                            {
-                              "name": "Area Fo1 (OFC) - right hemisphere",
-                              "rgb": [
-                                7,
-                                255,
-                                179
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 3,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                9705948,
-                                40760961,
-                                -22481988
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "3864cb8c-f277-4de6-9f8d-c76d71d7e9a9"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Fo3 (OFC)",
-                          "arealabel": "Area-Fo3",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/E1YQ-65U",
-                          "synonyms": [],
-                          "rgb": [
-                            182,
-                            189,
-                            250
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Fo3 (OFC) - left hemisphere",
-                              "rgb": [
-                                182,
-                                189,
-                                250
-                              ],
-                              "labelIndex": 5,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -21866985,
-                                33732378,
-                                -19882472
-                              ]
-                            },
-                            {
-                              "name": "Area Fo3 (OFC) - right hemisphere",
-                              "rgb": [
-                                182,
-                                189,
-                                250
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 5,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                22929678,
-                                33527877,
-                                -20231493
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "741f6a9e-cfd7-4173-ac7d-ee616c29555e"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Fo2 (OFC)",
-                          "arealabel": "Area-Fo2",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/3JB9-2V2",
-                          "synonyms": [],
-                          "rgb": [
-                            0,
-                            255,
-                            0
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Fo2 (OFC) - left hemisphere",
-                              "rgb": [
-                                0,
-                                255,
-                                0
-                              ],
-                              "labelIndex": 4,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -8588272,
-                                22532156,
-                                -20474464
-                              ]
-                            },
-                            {
-                              "name": "Area Fo2 (OFC) - right hemisphere",
-                              "rgb": [
-                                0,
-                                255,
-                                0
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 4,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                9164379,
-                                21928964,
-                                -20593342
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "30a04d2b-58e1-43d7-8b8f-1f0b598382d0"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "frontal operculum ",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area OP8 (Frontal Operculum)",
-                          "arealabel": "Area-OP8",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/NGF8-TA4",
-                          "synonyms": [],
-                          "rgb": [
-                            29,
-                            76,
-                            168
-                          ],
-                          "children": [
-                            {
-                              "name": "Area OP8 (Frontal Operculum) - left hemisphere",
-                              "rgb": [
-                                29,
-                                76,
-                                168
-                              ],
-                              "labelIndex": 273,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -41777921,
-                                17183344,
-                                7912847
-                              ]
-                            },
-                            {
-                              "name": "Area OP8 (Frontal Operculum) - right hemisphere",
-                              "rgb": [
-                                29,
-                                76,
-                                168
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 273,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                42725111,
-                                16774146,
-                                7832095
-                              ]
-                            }
-                          ]
-                        },
-                        {
-                          "name": "Area OP9 (Frontal Operculum)",
-                          "arealabel": "Area-OP9",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/3A30-5E4",
-                          "synonyms": [],
-                          "rgb": [
-                            175,
-                            123,
-                            34
-                          ],
-                          "children": [
-                            {
-                              "name": "Area OP9 (Frontal Operculum) - left hemisphere",
-                              "rgb": [
-                                175,
-                                123,
-                                34
-                              ],
-                              "labelIndex": 274,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -45090542,
-                                25998787,
-                                5597413
-                              ]
-                            },
-                            {
-                              "name": "Area OP9 (Frontal Operculum) - right hemisphere",
-                              "rgb": [
-                                175,
-                                123,
-                                34
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 274,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                44374928,
-                                26272467,
-                                2966228
-                              ]
-                            }
-                          ]
-                        }
-                      ]
-                    },
-                    {
-                      "name": "lateral orbitofrontal cortex",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area Fo5 (OFC)",
-                          "arealabel": "Area-Fo5",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/HJMY-ZZP",
-                          "synonyms": [],
-                          "rgb": [
-                            219,
-                            11,
-                            91
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Fo5 (OFC) - left hemisphere",
-                              "rgb": [
-                                219,
-                                11,
-                                91
-                              ],
-                              "labelIndex": 325,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -38055351,
-                                56315867,
-                                -8720295
-                              ]
-                            },
-                            {
-                              "name": "Area Fo5 (OFC) - right hemisphere",
-                              "rgb": [
-                                219,
-                                11,
-                                91
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 325,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                40545983,
-                                54504228,
-                                -4983615
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "3fd2e113-ec08-407b-bc88-172c9285694a"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Fo4 (OFC)",
-                          "arealabel": "Area-Fo4",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/29G0-66F",
-                          "synonyms": [],
-                          "rgb": [
-                            163,
-                            204,
-                            53
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Fo4 (OFC) - left hemisphere",
-                              "rgb": [
-                                163,
-                                204,
-                                53
-                              ],
-                              "labelIndex": 324,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -27573653,
-                                52998204,
-                                -14510778
-                              ]
-                            },
-                            {
-                              "name": "Area Fo4 (OFC) - right hemisphere",
-                              "rgb": [
-                                163,
-                                204,
-                                53
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 324,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                33636124,
-                                52034755,
-                                -15509742
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "2cdee956-207a-4d4d-b051-bef80045210b"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Fo6 (OFC)",
-                          "arealabel": "Area-Fo6",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/34Q4-H62",
-                          "synonyms": [],
-                          "rgb": [
-                            199,
-                            156,
-                            187
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Fo6 (OFC) - left hemisphere",
-                              "rgb": [
-                                199,
-                                156,
-                                187
-                              ],
-                              "labelIndex": 326,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -44272971,
-                                42876258,
-                                -12938967
-                              ]
-                            },
-                            {
-                              "name": "Area Fo6 (OFC) - right hemisphere",
-                              "rgb": [
-                                199,
-                                156,
-                                187
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 326,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                48891176,
-                                40513824,
-                                -12457353
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "330ae178-557c-4bd0-a932-f138c0a05345"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Fo7 (OFC)",
-                          "arealabel": "Area-Fo7",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/3WEV-561",
-                          "synonyms": [],
-                          "rgb": [
-                            64,
-                            211,
-                            186
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Fo7 (OFC) - left hemisphere",
-                              "rgb": [
-                                64,
-                                211,
-                                186
-                              ],
-                              "labelIndex": 327,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -36046240,
-                                37308943,
-                                -11666667
-                              ]
-                            },
-                            {
-                              "name": "Area Fo7 (OFC) - right hemisphere",
-                              "rgb": [
-                                64,
-                                211,
-                                186
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 327,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                37850755,
-                                37700302,
-                                -13777644
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "1b882148-fcdd-4dbe-b33d-659957840e9e"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    }
-                  ]
-                },
-                {
-                  "name": "insula",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "granular insula",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area Ig1 (Insula)",
-                          "arealabel": "Area-Ig1",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/EKV9-29D",
-                          "synonyms": [],
-                          "rgb": [
-                            18,
-                            111,
-                            40
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Ig1 (Insula) - left hemisphere",
-                              "rgb": [
-                                18,
-                                111,
-                                40
-                              ],
-                              "labelIndex": 115,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -33211215,
-                                -24171963,
-                                9923364
-                              ]
-                            },
-                            {
-                              "name": "Area Ig1 (Insula) - right hemisphere",
-                              "rgb": [
-                                18,
-                                111,
-                                40
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 115,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                33707983,
-                                -23338235,
-                                9071429
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "46cf08af-8086-4e8a-9e9f-182ca583bdf0"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Ig3 (Insula)",
-                          "arealabel": "Area-Ig3",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "",
-                          "synonyms": [],
-                          "rgb": [
-                            105,
-                            253,
-                            197
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Ig3 (Insula) - left hemisphere",
-                              "rgb": [
-                                105,
-                                253,
-                                197
-                              ],
-                              "labelIndex": 336,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -37956284,
-                                -14423497,
-                                13513661
-                              ]
-                            },
-                            {
-                              "name": "Area Ig3 (Insula) - right hemisphere",
-                              "rgb": [
-                                105,
-                                253,
-                                197
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 336,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                38219144,
-                                -13750630,
-                                13916877
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "10dba769-4f6c-40f9-8ffd-e0cce71c5adb"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Ig2 (Insula)",
-                          "arealabel": "Area-Ig2",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/662G-E0W",
-                          "synonyms": [],
-                          "rgb": [
-                            105,
-                            61,
-                            82
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Ig2 (Insula) - left hemisphere",
-                              "rgb": [
-                                105,
-                                61,
-                                82
-                              ],
-                              "labelIndex": 114,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -37117338,
-                                -17859895,
-                                5094571
-                              ]
-                            },
-                            {
-                              "name": "Area Ig2 (Insula) - right hemisphere",
-                              "rgb": [
-                                105,
-                                61,
-                                82
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 114,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                37843632,
-                                -16445145,
-                                5703657
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "49092952-1eef-4b89-b8bf-1bf1f25f149a"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "agranular insula",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area Ia (Insula)",
-                          "arealabel": "Area-Ia",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/WW8G-T2G",
-                          "synonyms": [],
-                          "rgb": [
-                            71,
-                            217,
-                            62
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Ia (Insula) - left hemisphere",
-                              "rgb": [
-                                71,
-                                217,
-                                62
-                              ],
-                              "labelIndex": 339,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -41612827,
-                                -1876485,
-                                -7019002
-                              ]
-                            },
-                            {
-                              "name": "Area Ia (Insula) - right hemisphere",
-                              "rgb": [
-                                71,
-                                217,
-                                62
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 339,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                43525000,
-                                36538,
-                                -7609615
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "110d0d7b-cb88-48ea-9caf-863f548dbe38"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "dys-/agranular insula",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area Id7 (Insula)",
-                          "arealabel": "Area-Id7",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/88QG-JMS",
-                          "synonyms": [],
-                          "rgb": [
-                            101,
-                            202,
-                            38
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Id7 (Insula) - left hemisphere",
-                              "rgb": [
-                                101,
-                                202,
-                                38
-                              ],
-                              "labelIndex": 159,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -30926962,
-                                23741297,
-                                4787031
-                              ]
-                            },
-                            {
-                              "name": "Area Id7 (Insula) - right hemisphere",
-                              "rgb": [
-                                101,
-                                202,
-                                38
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 159,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                35034429,
-                                24873239,
-                                2446009
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "3d5729f5-55c6-412a-8fc1-41a95c71b13a"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "dysgranular insula",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area Id2 (Insula)",
-                          "arealabel": "Area-Id2",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "",
-                          "synonyms": [],
-                          "rgb": [
-                            225,
-                            126,
-                            73
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Id2 (Insula) - left hemisphere",
-                              "rgb": [
-                                225,
-                                126,
-                                73
-                              ],
-                              "labelIndex": 56,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -41933981,
-                                -11436893,
-                                4091262
-                              ]
-                            },
-                            {
-                              "name": "Area Id2 (Insula) - right hemisphere",
-                              "rgb": [
-                                225,
-                                126,
-                                73
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 56,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                44043478,
-                                -10289855,
-                                3759834
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "cf9dea67-649d-4034-ae57-ec389f339277"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Id1 (Insula)",
-                          "arealabel": "Area-Id1",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/F37H-8WB",
-                          "synonyms": [],
-                          "rgb": [
-                            141,
-                            112,
-                            216
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Id1 (Insula) - left hemisphere",
-                              "rgb": [
-                                141,
-                                112,
-                                216
-                              ],
-                              "labelIndex": 116,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -40090747,
-                                -18279359,
-                                -4567616
-                              ]
-                            },
-                            {
-                              "name": "Area Id1 (Insula) - right hemisphere",
-                              "rgb": [
-                                141,
-                                112,
-                                216
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 116,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                40527825,
-                                -17443508,
-                                -4688027
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "c22055c1-514f-4096-906b-abf57286053b"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Id3 (Insula)",
-                          "arealabel": "Area-Id3",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "",
-                          "synonyms": [],
-                          "rgb": [
-                            32,
-                            32,
-                            58
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Id3 (Insula) - left hemisphere",
-                              "rgb": [
-                                32,
-                                32,
-                                58
-                              ],
-                              "labelIndex": 57,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -40414195,
-                                -7819915,
-                                -8263771
-                              ]
-                            },
-                            {
-                              "name": "Area Id3 (Insula) - right hemisphere",
-                              "rgb": [
-                                32,
-                                32,
-                                58
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 57,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                41459316,
-                                -6224335,
-                                -9042586
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "3dcfcfc2-035c-4785-a820-a671f2104ac3"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Id5 (Insula)",
-                          "arealabel": "Area-Id5",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/5CK1-B1G",
-                          "synonyms": [],
-                          "rgb": [
-                            112,
-                            6,
-                            50
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Id5 (Insula) - left hemisphere",
-                              "rgb": [
-                                112,
-                                6,
-                                50
-                              ],
-                              "labelIndex": 338,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -40174302,
-                                -3354190,
-                                741899
-                              ]
-                            },
-                            {
-                              "name": "Area Id5 (Insula) - right hemisphere",
-                              "rgb": [
-                                112,
-                                6,
-                                50
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 338,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                41094953,
-                                -2659538,
-                                607357
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "e03cd3c6-d0be-481c-b906-9b39c1d0b641"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Id6 (Insula)",
-                          "arealabel": "Area-Id6",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/54HZ-KFQ",
-                          "synonyms": [],
-                          "rgb": [
-                            138,
-                            127,
-                            119
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Id6 (Insula) - left hemisphere",
-                              "rgb": [
-                                138,
-                                127,
-                                119
-                              ],
-                              "labelIndex": 340,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -36392282,
-                                9843698,
-                                3385341
-                              ]
-                            },
-                            {
-                              "name": "Area Id6 (Insula) - right hemisphere",
-                              "rgb": [
-                                138,
-                                127,
-                                119
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 340,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                37750946,
-                                10762642,
-                                3041624
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "31bbe92d-e5e8-4cf4-be5d-e6b12c71a107"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area Id4 (Insula)",
-                          "arealabel": "Area-Id4",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/K63G-89H",
-                          "synonyms": [],
-                          "rgb": [
-                            38,
-                            174,
-                            113
-                          ],
-                          "children": [
-                            {
-                              "name": "Area Id4 (Insula) - left hemisphere",
-                              "rgb": [
-                                38,
-                                174,
-                                113
-                              ],
-                              "labelIndex": 337,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -37055965,
-                                -3505155,
-                                11422680
-                              ]
-                            },
-                            {
-                              "name": "Area Id4 (Insula) - right hemisphere",
-                              "rgb": [
-                                38,
-                                174,
-                                113
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 337,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                37461444,
-                                -3746634,
-                                10858017
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "f480ed72-5ca5-4d1f-8905-cbe9bedcfaee"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    }
-                  ]
-                },
-                {
-                  "name": "temporal lobe",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "superior temporal sulcus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area STS2 (STS)",
-                          "arealabel": "Area-STS2",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/KHY9-J3Y",
-                          "synonyms": [],
-                          "rgb": [
-                            62,
-                            117,
-                            123
-                          ],
-                          "children": [
-                            {
-                              "name": "Area STS2 (STS) - left hemisphere",
-                              "rgb": [
-                                62,
-                                117,
-                                123
-                              ],
-                              "labelIndex": 272,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -56352486,
-                                -8557380,
-                                -14844672
-                              ]
-                            },
-                            {
-                              "name": "Area STS2 (STS) - right hemisphere",
-                              "rgb": [
-                                62,
-                                117,
-                                123
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 272,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                56942990,
-                                -8020716,
-                                -16067930
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "278fc30f-2e24-4046-856b-95dfaf561635"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area STS1 (STS)",
-                          "arealabel": "Area-STS1",
-                          "status": "publicDOI",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/F6DF-H8P",
-                          "synonyms": [],
-                          "rgb": [
-                            205,
-                            228,
-                            4
-                          ],
-                          "children": [
-                            {
-                              "name": "Area STS1 (STS) - left hemisphere",
-                              "rgb": [
-                                205,
-                                228,
-                                4
-                              ],
-                              "labelIndex": 271,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                -54514755,
-                                -16753913,
-                                -5260713
-                              ]
-                            },
-                            {
-                              "name": "Area STS1 (STS) - right hemisphere",
-                              "rgb": [
-                                205,
-                                228,
-                                4
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 271,
-                              "children": [],
-                              "status": "publicDOI",
-                              "position": [
-                                54536567,
-                                -17992636,
-                                -5712544
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "68784b66-ff15-4b09-b28a-a2146c0f8907"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "superior temporal gyrus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area TE 3 (STG)",
-                          "arealabel": "Area-TE-3",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/BN5J-JT8",
-                          "synonyms": [],
-                          "rgb": [
-                            159,
-                            104,
-                            108
-                          ],
-                          "children": [
-                            {
-                              "name": "Area TE 3 (STG) - left hemisphere",
-                              "rgb": [
-                                159,
-                                104,
-                                108
-                              ],
-                              "labelIndex": 31,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -64398501,
-                                -12497885,
-                                1316801
-                              ]
-                            },
-                            {
-                              "name": "Area TE 3 (STG) - right hemisphere",
-                              "rgb": [
-                                159,
-                                104,
-                                108
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 31,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                65811519,
-                                -9018989,
-                                -1027621
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "7e1a3291-efdc-4ca6-a3d0-6c496c34639f"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "Heschl's gyrus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area TE 1.2 (HESCHL)",
-                          "arealabel": "Area-TE-1.2",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/R382-617",
-                          "synonyms": [],
-                          "rgb": [
-                            202,
-                            251,
-                            192
-                          ],
-                          "children": [
-                            {
-                              "name": "Area TE 1.2 (HESCHL) - left hemisphere",
-                              "rgb": [
-                                202,
-                                251,
-                                192
-                              ],
-                              "labelIndex": 30,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -50810427,
-                                -6551343,
-                                1635071
-                              ]
-                            },
-                            {
-                              "name": "Area TE 1.2 (HESCHL) - right hemisphere",
-                              "rgb": [
-                                202,
-                                251,
-                                192
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 30,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                55870330,
-                                -2672527,
-                                52747
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "677cd48c-70fa-4bbd-9f0a-ffdc7744bc0f"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area TE 1.1 (HESCHL)",
-                          "arealabel": "Area-TE-1.1",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/4HA3-BBE",
-                          "synonyms": [],
-                          "rgb": [
-                            8,
-                            113,
-                            68
-                          ],
-                          "children": [
-                            {
-                              "name": "Area TE 1.1 (HESCHL) - left hemisphere",
-                              "rgb": [
-                                8,
-                                113,
-                                68
-                              ],
-                              "labelIndex": 33,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -38219760,
-                                -27125577,
-                                10774700
-                              ]
-                            },
-                            {
-                              "name": "Area TE 1.1 (HESCHL) - right hemisphere",
-                              "rgb": [
-                                8,
-                                113,
-                                68
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 33,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                40719340,
-                                -24106132,
-                                10308962
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "e2969911-77eb-4b21-af70-216cab5285b1"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area TE 1.0 (HESCHL)",
-                          "arealabel": "Area-TE-1.0",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/MV3G-RET",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area Te1",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "f424643e-9baf-4c50-9417-db1ac33dcd3e"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            252,
-                            84,
-                            222
-                          ],
-                          "children": [
-                            {
-                              "name": "Area TE 1.0 (HESCHL) - left hemisphere",
-                              "rgb": [
-                                252,
-                                84,
-                                222
-                              ],
-                              "labelIndex": 27,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -46560150,
-                                -17508772,
-                                7622807
-                              ]
-                            },
-                            {
-                              "name": "Area TE 1.0 (HESCHL) - right hemisphere",
-                              "rgb": [
-                                252,
-                                84,
-                                222
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 27,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                50392116,
-                                -12932573,
-                                5942946
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "13e21153-2ba8-4212-b172-8894f1012225"
-                            }
-                          }
-                        }
-                      ]
-                    },
-                    {
-                      "name": "fusiform gyrus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area FG2 (FusG)",
-                          "arealabel": "Area-FG2",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/F2JH-KVV",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area FG2",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "8f436328-4251-4706-ae38-767e1ab21c6f"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            67,
-                            94,
-                            149
-                          ],
-                          "children": [
-                            {
-                              "name": "Area FG2 (FusG) - left hemisphere",
-                              "rgb": [
-                                67,
-                                94,
-                                149
-                              ],
-                              "labelIndex": 106,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -43549584,
-                                -65531770,
-                                -16708135
-                              ]
-                            },
-                            {
-                              "name": "Area FG2 (FusG) - right hemisphere",
-                              "rgb": [
-                                67,
-                                94,
-                                149
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 106,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                44839825,
-                                -63606518,
-                                -17316773
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "6e7a0441-4baa-4355-921b-50d23d07d50f"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area FG3 (FusG)",
-                          "arealabel": "Area-FG3",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/Z0F6-0SY",
-                          "synonyms": [],
-                          "rgb": [
-                            120,
-                            147,
-                            37
-                          ],
-                          "children": [
-                            {
-                              "name": "Area FG3 (FusG) - left hemisphere",
-                              "rgb": [
-                                120,
-                                147,
-                                37
-                              ],
-                              "labelIndex": 239,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -29844935,
-                                -45368421,
-                                -14184493
-                              ]
-                            },
-                            {
-                              "name": "Area FG3 (FusG) - right hemisphere",
-                              "rgb": [
-                                120,
-                                147,
-                                37
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 239,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                31148061,
-                                -44485336,
-                                -15533822
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "023f8ef7-c266-4c45-8bf2-4a17dc52985b"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area FG1 (FusG)",
-                          "arealabel": "Area-FG1",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/5ZVQ-R8R",
-                          "synonyms": [],
-                          "rgb": [
-                            131,
-                            183,
-                            58
-                          ],
-                          "children": [
-                            {
-                              "name": "Area FG1 (FusG) - left hemisphere",
-                              "rgb": [
-                                131,
-                                183,
-                                58
-                              ],
-                              "labelIndex": 107,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -29006116,
-                                -66264526,
-                                -12290010
-                              ]
-                            },
-                            {
-                              "name": "Area FG1 (FusG) - right hemisphere",
-                              "rgb": [
-                                131,
-                                183,
-                                58
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 107,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                32840456,
-                                -64340456,
-                                -12612536
-                              ]
-                            }
-                          ],
-                          "relatedAreas": [
-                            {
-                              "name": "Area FG1",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "6318e160-4ad2-4eec-8a2e-2df6fe07d8f4"
-                                }
-                              }
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "39fb34a8-fd6d-4fba-898c-2f6167e40459"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area FG4 (FusG)",
-                          "arealabel": "Area-FG4",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/13RG-FYV",
-                          "synonyms": [],
-                          "relatedAreas": [
-                            {
-                              "name": "Area FG2",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "8f436328-4251-4706-ae38-767e1ab21c6f"
-                                }
-                              }
-                            }
-                          ],
-                          "rgb": [
-                            170,
-                            220,
-                            175
-                          ],
-                          "children": [
-                            {
-                              "name": "Area FG4 (FusG) - left hemisphere",
-                              "rgb": [
-                                170,
-                                220,
-                                175
-                              ],
-                              "labelIndex": 238,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -43204016,
-                                -44325167,
-                                -20016734
-                              ]
-                            },
-                            {
-                              "name": "Area FG4 (FusG) - right hemisphere",
-                              "rgb": [
-                                170,
-                                220,
-                                175
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 238,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                43609694,
-                                -43478025,
-                                -22392295
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "fa602743-5f6e-49d1-9734-29dffaa95ff5"
-                            }
-                          }
-                        }
-                      ]
-                    }
-                  ]
-                },
-                {
-                  "name": "limbic lobe",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "cingulate gyrus, frontal part",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Area p24c (pACC)",
-                          "arealabel": "Area-p24c",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/QA7B-JM9",
-                          "synonyms": [],
-                          "rgb": [
-                            241,
-                            164,
-                            195
-                          ],
-                          "children": [
-                            {
-                              "name": "Area p24c (pACC) - left hemisphere",
-                              "rgb": [
-                                241,
-                                164,
-                                195
-                              ],
-                              "labelIndex": 232,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -8144989,
-                                41168443,
-                                14314854
-                              ]
-                            },
-                            {
-                              "name": "Area p24c (pACC) - right hemisphere",
-                              "rgb": [
-                                241,
-                                164,
-                                195
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 232,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                9856593,
-                                40780558,
-                                12002406
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "e6507a3d-f2f8-4c17-84ff-0e7297e836a0"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area 25 (sACC)",
-                          "arealabel": "Area-25",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/51AM-WN4",
-                          "synonyms": [],
-                          "rgb": [
-                            170,
-                            68,
-                            220
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 25 (sACC) - left hemisphere",
-                              "rgb": [
-                                170,
-                                68,
-                                220
-                              ],
-                              "labelIndex": 184,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -3522692,
-                                13560250,
-                                -11860720
-                              ]
-                            },
-                            {
-                              "name": "Area 25 (sACC) - right hemisphere",
-                              "rgb": [
-                                170,
-                                68,
-                                220
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 184,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                4564663,
-                                12954463,
-                                -12174863
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "9010ef76-accd-4308-9951-f37b6a10f42b"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area p24ab (pACC)",
-                          "arealabel": "Area-p24ab",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/DHXC-2KN",
-                          "synonyms": [],
-                          "rgb": [
-                            153,
-                            195,
-                            229
-                          ],
-                          "children": [
-                            {
-                              "name": "Area p24ab (pACC) - left hemisphere",
-                              "rgb": [
-                                153,
-                                195,
-                                229
-                              ],
-                              "labelIndex": 231,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -2244059,
-                                38783168,
-                                6389109
-                              ]
-                            },
-                            {
-                              "name": "Area p24ab (pACC) - right hemisphere",
-                              "rgb": [
-                                153,
-                                195,
-                                229
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 231,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                3429274,
-                                38385609,
-                                7809963
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "5dbb1035-487c-4f43-b551-ccadcf058340"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area s32 (sACC)",
-                          "arealabel": "Area-s32",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/XTRR-172",
-                          "synonyms": [],
-                          "rgb": [
-                            193,
-                            94,
-                            250
-                          ],
-                          "children": [
-                            {
-                              "name": "Area s32 (sACC) - left hemisphere",
-                              "rgb": [
-                                193,
-                                94,
-                                250
-                              ],
-                              "labelIndex": 46,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -6738110,
-                                35256183,
-                                -11765377
-                              ]
-                            },
-                            {
-                              "name": "Area s32 (sACC) - right hemisphere",
-                              "rgb": [
-                                193,
-                                94,
-                                250
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 46,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                4307795,
-                                34460360,
-                                -12141905
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "61b44255-ae3a-4a23-b1bc-7d303a48dbd3"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area 33 (ACC)",
-                          "arealabel": "Area-33",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/X9QP-C6F",
-                          "synonyms": [],
-                          "rgb": [
-                            51,
-                            57,
-                            245
-                          ],
-                          "children": [
-                            {
-                              "name": "Area 33 (ACC) - left hemisphere",
-                              "rgb": [
-                                51,
-                                57,
-                                245
-                              ],
-                              "labelIndex": 39,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -4861218,
-                                14163048,
-                                15911877
-                              ]
-                            },
-                            {
-                              "name": "Area 33 (ACC) - right hemisphere",
-                              "rgb": [
-                                51,
-                                57,
-                                245
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 39,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                5087045,
-                                15562321,
-                                16125051
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "b83a3330-b80e-42a0-b8d2-82f38784aa1d"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area p32 (pACC)",
-                          "arealabel": "Area-p32",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/3JX0-7E5",
-                          "synonyms": [],
-                          "rgb": [
-                            87,
-                            135,
-                            14
-                          ],
-                          "children": [
-                            {
-                              "name": "Area p32 (pACC) - left hemisphere",
-                              "rgb": [
-                                87,
-                                135,
-                                14
-                              ],
-                              "labelIndex": 47,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -6122937,
-                                49256108,
-                                11929896
-                              ]
-                            },
-                            {
-                              "name": "Area p32 (pACC) - right hemisphere",
-                              "rgb": [
-                                87,
-                                135,
-                                14
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 47,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                7759613,
-                                48520792,
-                                12436058
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "b09aaa77-f41b-4008-b8b9-f984b0417cf3"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Area s24 (sACC)",
-                          "arealabel": "Area-s24",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/HXWM-NRX",
-                          "synonyms": [],
-                          "rgb": [
-                            133,
-                            34,
-                            201
-                          ],
-                          "children": [
-                            {
-                              "name": "Area s24 (sACC) - left hemisphere",
-                              "rgb": [
-                                133,
-                                34,
-                                201
-                              ],
-                              "labelIndex": 183,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -3247887,
-                                24596479,
-                                -9615493
-                              ]
-                            },
-                            {
-                              "name": "Area s24 (sACC) - right hemisphere",
-                              "rgb": [
-                                133,
-                                34,
-                                201
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 183,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                3259899,
-                                23813535,
-                                -9257019
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "d4ea6cc5-1e1d-4212-966f-81fed01eb648"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "hippocampal formation",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "HATA (Hippocampus)",
-                          "arealabel": "HATA",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/M1XP-VSQ",
-                          "synonyms": [],
-                          "rgb": [
-                            137,
-                            12,
-                            73
-                          ],
-                          "children": [
-                            {
-                              "name": "HATA (Hippocampus) - left hemisphere",
-                              "rgb": [
-                                137,
-                                12,
-                                73
-                              ],
-                              "labelIndex": 68,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -13947917,
-                                -9576389,
-                                -18975694
-                              ]
-                            },
-                            {
-                              "name": "HATA (Hippocampus) - right hemisphere",
-                              "rgb": [
-                                137,
-                                12,
-                                73
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 68,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                15080586,
-                                -8358974,
-                                -17871795
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "9ec4a423-70fa-43cd-90b3-fbc26a3cbc6c"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Entorhinal Cortex",
-                          "arealabel": "Entorhinal-Cortex",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/KNXY-B1Z",
-                          "synonyms": [],
-                          "rgb": [
-                            35,
-                            159,
-                            214
-                          ],
-                          "children": [
-                            {
-                              "name": "Entorhinal Cortex - left hemisphere",
-                              "rgb": [
-                                35,
-                                159,
-                                214
-                              ],
-                              "labelIndex": 60,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -20926052,
-                                -6082765,
-                                -33357509
-                              ]
-                            },
-                            {
-                              "name": "Entorhinal Cortex - right hemisphere",
-                              "rgb": [
-                                35,
-                                159,
-                                214
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 60,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                22877203,
-                                -3501469,
-                                -32577556
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "030827d4-e0d1-4406-b71f-3f58dc2f9cca"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "CA (Hippocampus)",
-                          "arealabel": "CA",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "relatedAreas": [
-                            {
-                              "name": "CA1 (Hippocampus)",
-                              "fullId": {
-                                "kg": {
-                                  "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                                  "kgId": "bfc0beb7-310c-4c57-b810-2adc464bd02c"
-                                }
-                              }
-                            }
-                          ],
-                          "doi": "https://doi.org/10.25493/B85T-D88",
-                          "synonyms": [],
-                          "rgb": [
-                            250,
-                            191,
-                            217
-                          ],
-                          "children": [
-                            {
-                              "name": "CA (Hippocampus) - left hemisphere",
-                              "rgb": [
-                                250,
-                                191,
-                                217
-                              ],
-                              "labelIndex": 191,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -27476326,
-                                -26068931,
-                                -11082817
-                              ]
-                            },
-                            {
-                              "name": "CA (Hippocampus) - right hemisphere",
-                              "rgb": [
-                                250,
-                                191,
-                                217
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 191,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                29426785,
-                                -24801145,
-                                -11142814
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "a0d14d3e-bc30-41cf-8b28-540067897f80"
-                            }
-                          }
-                        },
-                        {
-                          "name": "DG (Hippocampus)",
-                          "arealabel": "DG",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/M8JP-XQT",
-                          "synonyms": [],
-                          "rgb": [
-                            149,
-                            55,
-                            120
-                          ],
-                          "children": [
-                            {
-                              "name": "DG (Hippocampus) - left hemisphere",
-                              "rgb": [
-                                149,
-                                55,
-                                120
-                              ],
-                              "labelIndex": 61,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -26946498,
-                                -26708171,
-                                -9589494
-                              ]
-                            },
-                            {
-                              "name": "DG (Hippocampus) - right hemisphere",
-                              "rgb": [
-                                149,
-                                55,
-                                120
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 61,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                28316456,
-                                -24674684,
-                                -10596203
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "0bea7e03-bfb2-4907-9d45-db9071ce627d"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Subiculum (Hippocampus)",
-                          "arealabel": "Subiculum",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/QKJH-F45",
-                          "synonyms": [],
-                          "rgb": [
-                            111,
-                            125,
-                            219
-                          ],
-                          "children": [
-                            {
-                              "name": "Subiculum (Hippocampus) - left hemisphere",
-                              "rgb": [
-                                111,
-                                125,
-                                219
-                              ],
-                              "labelIndex": 192,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -20352171,
-                                -24057796,
-                                -16326997
-                              ]
-                            },
-                            {
-                              "name": "Subiculum (Hippocampus) - right hemisphere",
-                              "rgb": [
-                                111,
-                                125,
-                                219
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 192,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                22543982,
-                                -23195614,
-                                -15923499
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "7e2dab4c-a140-440d-a322-c1679adef2d4"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    }
-                  ]
-                }
-              ]
-            }
-          ]
-        },
-        {
-          "name": "metencephalon",
-          "status": null,
-          "labelIndex": null,
-          "synonyms": [],
-          "rgb": null,
-          "children": [
-            {
-              "name": "cerebellum",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "cerebellar nuclei",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "globose nucleus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Interposed Nucleus (Cerebellum)",
-                          "arealabel": "Interposed-Nucleus",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/8PTB-JDH",
-                          "synonyms": [],
-                          "rgb": [
-                            170,
-                            29,
-                            10
-                          ],
-                          "children": [
-                            {
-                              "name": "Interposed Nucleus (Cerebellum) - left hemisphere",
-                              "rgb": [
-                                170,
-                                29,
-                                10
-                              ],
-                              "labelIndex": 251,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -8457921,
-                                -55262376,
-                                -30235149
-                              ]
-                            },
-                            {
-                              "name": "Interposed Nucleus (Cerebellum) - right hemisphere",
-                              "rgb": [
-                                170,
-                                29,
-                                10
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 251,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                7917989,
-                                -54201058,
-                                -31489418
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "85e7bb13-4b73-4f6f-8222-3adb7b800788"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "dentate nucleus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Dorsal Dentate Nucleus (Cerebellum)",
-                          "arealabel": "Dorsal-Dentate-Nucleus",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/M5QG-SHH",
-                          "synonyms": [],
-                          "rgb": [
-                            89,
-                            201,
-                            99
-                          ],
-                          "children": [
-                            {
-                              "name": "Dorsal Dentate Nucleus (Cerebellum) - left hemisphere",
-                              "rgb": [
-                                89,
-                                201,
-                                99
-                              ],
-                              "labelIndex": 240,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -16612782,
-                                -56036341,
-                                -36064536
-                              ]
-                            },
-                            {
-                              "name": "Dorsal Dentate Nucleus (Cerebellum) - right hemisphere",
-                              "rgb": [
-                                89,
-                                201,
-                                99
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 240,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                15388967,
-                                -58303395,
-                                -36586280
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "58095aef-da69-43d4-887c-009c095cecce"
-                            }
-                          },
-                          "relatedAreas": []
-                        },
-                        {
-                          "name": "Ventral Dentate Nucleus (Cerebellum)",
-                          "arealabel": "Ventral-Dentate-Nucleus",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/FQE5-5QR",
-                          "synonyms": [],
-                          "rgb": [
-                            39,
-                            129,
-                            9
-                          ],
-                          "children": [
-                            {
-                              "name": "Ventral Dentate Nucleus (Cerebellum) - left hemisphere",
-                              "rgb": [
-                                39,
-                                129,
-                                9
-                              ],
-                              "labelIndex": 241,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -13112867,
-                                -56176072,
-                                -29957111
-                              ]
-                            },
-                            {
-                              "name": "Ventral Dentate Nucleus (Cerebellum) - right hemisphere",
-                              "rgb": [
-                                39,
-                                129,
-                                9
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 241,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                12107011,
-                                -55974170,
-                                -31385609
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "57282342-5a75-4e07-bcdc-2d368c517b71"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "fastigial nucleus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Fastigial Nucleus (Cerebellum)",
-                          "arealabel": "Fastigial-Nucleus",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/3YJ9-S6G",
-                          "synonyms": [],
-                          "rgb": [
-                            200,
-                            100,
-                            10
-                          ],
-                          "children": [
-                            {
-                              "name": "Fastigial Nucleus (Cerebellum) - left hemisphere",
-                              "rgb": [
-                                200,
-                                100,
-                                10
-                              ],
-                              "labelIndex": 219,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -3828877,
-                                -53149733,
-                                -29013369
-                              ]
-                            },
-                            {
-                              "name": "Fastigial Nucleus (Cerebellum) - right hemisphere",
-                              "rgb": [
-                                200,
-                                100,
-                                10
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 219,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                3011287,
-                                -53069977,
-                                -29040632
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "e8abfe3d-8b64-45c2-8853-314d82873273"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    },
-                    {
-                      "name": "emboliform nucleus",
-                      "status": null,
-                      "labelIndex": null,
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "Interposed Nucleus (Cerebellum)",
-                          "arealabel": "Interposed-Nucleus",
-                          "status": "publicP",
-                          "labelIndex": null,
-                          "doi": "https://doi.org/10.25493/8PTB-JDH",
-                          "synonyms": [],
-                          "rgb": [
-                            170,
-                            29,
-                            10
-                          ],
-                          "children": [
-                            {
-                              "name": "Interposed Nucleus (Cerebellum) - left hemisphere",
-                              "rgb": [
-                                170,
-                                29,
-                                10
-                              ],
-                              "labelIndex": 251,
-                              "ngId": "jubrain colin v18 left",
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                -8457921,
-                                -55262376,
-                                -30235149
-                              ]
-                            },
-                            {
-                              "name": "Interposed Nucleus (Cerebellum) - right hemisphere",
-                              "rgb": [
-                                170,
-                                29,
-                                10
-                              ],
-                              "ngId": "jubrain colin v18 right",
-                              "labelIndex": 251,
-                              "children": [],
-                              "status": "publicP",
-                              "position": [
-                                7917989,
-                                -54201058,
-                                -31489418
-                              ]
-                            }
-                          ],
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "85e7bb13-4b73-4f6f-8222-3adb7b800788"
-                            }
-                          },
-                          "relatedAreas": []
-                        }
-                      ]
-                    }
-                  ]
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    }
-  ],
-  "properties": {
-    "name": "MNI Colin 27",
-    "description": "A stereotaxic average of 27 T1-weighted MRI scans of the same individual. (Holmes et al., 1998), mapped to fit the MNI305 space.  Although not capturing brain variability, it is well established in neuroscience due to its high definition. HBP provides the JuBrain probabilistic cytoarchitectonic atlas (Amunts et al.) in this space."
-  }
-}
-
-export const JUBRAIN_COLIN = {
-  "name": "JuBrain Cytoarchitectonic Atlas",
-  "ngId": "jubrain colin v18 left",
-  "auxillaryMeshIndices": [
-    65535
-  ],
-  "hasAdditionalViewMode": [
-    "connectivity"
-  ],
-  "originDatasets": [
-    {
-      "kgSchema": "minds/core/dataset/v1.0.0",
-      "kgId": "4ac9f0bc-560d-47e0-8916-7b24da9bb0ce"
-    }
-  ],
-  "properties": {
-    "version": "1.0",
-    "description": "This dataset contains the whole-brain parcellation of the JuBrain Cytoarchitectonic Atlas (Amunts and Zilles, 2015) in the MNI Colin 27 as well as the MNI ICBM 152 2009c nonlinear asymmetric reference space. The parcellation is derived from the individual probability maps (PMs) of the cytoarchitectonic regions released in the JuBrain Atlas, that are further combined into a Maximum Probability Map (MPM). The MPM is calculated by considering for each voxel the probability of all cytoarchitectonic areas released in the atlas, and determining the most probable assignment (Eickhoff 2005). Note that methodological improvements and integration of new brain structures may lead to small deviations in earlier released datasets.",
-    "publications": [
-      {
-        "doi": "https://doi.org/10.1038/nrn2776",
-        "citation": "Zilles K, Amunts K (2010) Centenary of Brodmann’s map – conception and fate. Nature Reviews Neuroscience 11(2): 139-145 "
-      },
-      {
-        "doi": "https://doi.org/10.1016/j.neuroimage.2007.02.037",
-        "citation": "Amunts K, Schleicher A, Zilles K (2007) Cytoarchitecture of the cerebral cortex – more than localization. Neuroimage 37: 1061-1065"
-      },
-      {
-        "doi": "http://dx.doi.org/10.1016/B978-012693019-1/50023-X",
-        "citation": "Zilles K, Schleicher A, Palomero-Gallagher N, Amunts K (2002) Quantitative analysis of cyto- and receptor architecture of the human brain. In: /Brain Mapping: The Methods/, J. C. Mazziotta and A. Toga (eds.), USA: Elsevier, 2002, p. 573-602."
-      }
-    ]
-  },
-  "regions": [
-    {
-      "name": "telencephalon",
-      "status": null,
-      "labelIndex": null,
-      "synonyms": [],
-      "rgb": null,
-      "children": [
-        {
-          "name": "cerebral nuclei",
-          "status": null,
-          "labelIndex": null,
-          "synonyms": [],
-          "rgb": null,
-          "children": [
-            {
-              "name": "basal forebrain",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "magnocellular group within septum",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Ch 123 (Basal Forebrain)",
-                      "arealabel": "Ch-123",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/7SEP-P2V",
-                      "synonyms": [],
-                      "rgb": [
-                        124,
-                        233,
-                        167
-                      ],
-                      "children": [
-                        {
-                          "name": "Ch 123 (Basal Forebrain) - left hemisphere",
-                          "rgb": [
-                            124,
-                            233,
-                            167
-                          ],
-                          "labelIndex": 286,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -2339339,
-                            4405405,
-                            -8804805
-                          ]
-                        },
-                        {
-                          "name": "Ch 123 (Basal Forebrain) - right hemisphere",
-                          "rgb": [
-                            124,
-                            233,
-                            167
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 286,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            3240000,
-                            5153846,
-                            -8347692
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "bb111a95-e04c-4987-8254-4af4ed8b0022"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "sublenticular part of basal forebrain",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Ch 4 (Basal Forebrain)",
-                      "arealabel": "Ch-4",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/VZJ5-8WJ",
-                      "synonyms": [],
-                      "rgb": [
-                        116,
-                        243,
-                        12
-                      ],
-                      "children": [
-                        {
-                          "name": "Ch 4 (Basal Forebrain) - left hemisphere",
-                          "rgb": [
-                            116,
-                            243,
-                            12
-                          ],
-                          "labelIndex": 264,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -16053628,
-                            -454259,
-                            -12470032
-                          ]
-                        },
-                        {
-                          "name": "Ch 4 (Basal Forebrain) - right hemisphere",
-                          "rgb": [
-                            116,
-                            243,
-                            12
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 264,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            17655072,
-                            263768,
-                            -11539130
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "a5c9d95f-8e7c-4454-91b6-a790387370fc"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "magnocellular group within horizontal limb of diagnoal band",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Ch 123 (Basal Forebrain)",
-                      "arealabel": "Ch-123",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/7SEP-P2V",
-                      "synonyms": [],
-                      "rgb": [
-                        124,
-                        233,
-                        167
-                      ],
-                      "children": [
-                        {
-                          "name": "Ch 123 (Basal Forebrain) - left hemisphere",
-                          "rgb": [
-                            124,
-                            233,
-                            167
-                          ],
-                          "labelIndex": 286,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -2339339,
-                            4405405,
-                            -8804805
-                          ]
-                        },
-                        {
-                          "name": "Ch 123 (Basal Forebrain) - right hemisphere",
-                          "rgb": [
-                            124,
-                            233,
-                            167
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 286,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            3240000,
-                            5153846,
-                            -8347692
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "bb111a95-e04c-4987-8254-4af4ed8b0022"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                }
-              ]
-            },
-            {
-              "name": "amygdala",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "laterobasal group",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "LB (Amygdala)",
-                      "arealabel": "LB",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/C3X0-NV3",
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "LB (Amygdala) - left hemisphere",
-                          "rgb": null,
-                          "labelIndex": 15,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP"
-                        },
-                        {
-                          "name": "LB (Amygdala) - right hemisphere",
-                          "rgb": null,
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 15,
-                          "children": [],
-                          "status": "publicP"
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "LB (Amygdala)",
-                      "arealabel": "LB",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/C3X0-NV3",
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "LB (Amygdala) - left hemisphere",
-                          "rgb": null,
-                          "labelIndex": 11,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP"
-                        },
-                        {
-                          "name": "LB (Amygdala) - right hemisphere",
-                          "rgb": null,
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 11,
-                          "children": [],
-                          "status": "publicP"
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "LB (Amygdala)",
-                      "arealabel": "LB",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/C3X0-NV3",
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "LB (Amygdala) - left hemisphere",
-                          "rgb": null,
-                          "labelIndex": 19,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP"
-                        },
-                        {
-                          "name": "LB (Amygdala) - right hemisphere",
-                          "rgb": null,
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 19,
-                          "children": [],
-                          "status": "publicP"
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "LB (Amygdala)",
-                      "arealabel": "LB",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/C3X0-NV3",
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "LB (Amygdala) - left hemisphere",
-                          "rgb": null,
-                          "labelIndex": 13,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -25304803,
-                            -1696429,
-                            -23766626
-                          ]
-                        },
-                        {
-                          "name": "LB (Amygdala) - right hemisphere",
-                          "rgb": null,
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 13,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            28015494,
-                            -81343,
-                            -24045836
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "superficial group",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "SF (Amygdala)",
-                      "arealabel": "SF",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/WD31-SEA",
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "SF (Amygdala) - left hemisphere",
-                          "rgb": null,
-                          "labelIndex": 236,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -16044471,
-                            530048,
-                            -20831731
-                          ]
-                        },
-                        {
-                          "name": "SF (Amygdala) - right hemisphere",
-                          "rgb": null,
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 236,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            19382770,
-                            1539804,
-                            -19413304
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "48929163-bf7b-4471-9f14-991c5225eced"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "SF (Amygdala)",
-                      "arealabel": "SF",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/WD31-SEA",
-                      "synonyms": [],
-                      "rgb": null,
-                      "children": [
-                        {
-                          "name": "SF (Amygdala) - left hemisphere",
-                          "rgb": null,
-                          "labelIndex": 17,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP"
-                        },
-                        {
-                          "name": "SF (Amygdala) - right hemisphere",
-                          "rgb": null,
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 17,
-                          "children": [],
-                          "status": "publicP"
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "48929163-bf7b-4471-9f14-991c5225eced"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "SF (Amygdala)",
-                      "arealabel": "SF",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/WD31-SEA",
-                      "synonyms": [],
-                      "rgb": [
-                        18,
-                        168,
-                        22
-                      ],
-                      "children": [
-                        {
-                          "name": "SF (Amygdala) - left hemisphere",
-                          "rgb": [
-                            18,
-                            168,
-                            22
-                          ],
-                          "labelIndex": 186,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP"
-                        },
-                        {
-                          "name": "SF (Amygdala) - right hemisphere",
-                          "rgb": [
-                            18,
-                            168,
-                            22
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 186,
-                          "children": [],
-                          "status": "publicP"
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "48929163-bf7b-4471-9f14-991c5225eced"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "CM (Amygdala)",
-                      "arealabel": "CM",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/36FR-C95",
-                      "synonyms": [],
-                      "rgb": [
-                        102,
-                        180,
-                        202
-                      ],
-                      "children": [
-                        {
-                          "name": "CM (Amygdala) - left hemisphere",
-                          "rgb": [
-                            102,
-                            180,
-                            202
-                          ],
-                          "labelIndex": 22,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP"
-                        },
-                        {
-                          "name": "CM (Amygdala) - right hemisphere",
-                          "rgb": [
-                            102,
-                            180,
-                            202
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 22,
-                          "children": [],
-                          "status": "publicP"
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "fiber masses",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "VTM (Amygdala)",
-                      "arealabel": "VTM",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/99HN-XRE",
-                      "synonyms": [],
-                      "rgb": [
-                        89,
-                        178,
-                        185
-                      ],
-                      "children": [
-                        {
-                          "name": "VTM (Amygdala) - left hemisphere",
-                          "rgb": [
-                            89,
-                            178,
-                            185
-                          ],
-                          "labelIndex": 228,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -23377907,
-                            -9837209,
-                            -14848837
-                          ]
-                        },
-                        {
-                          "name": "VTM (Amygdala) - right hemisphere",
-                          "rgb": [
-                            89,
-                            178,
-                            185
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 228,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            25513514,
-                            -8881081,
-                            -15551351
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "a964e6e6-8014-41a2-b975-754d75cbb6f2"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "IF (Amygdala)",
-                      "arealabel": "IF",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/GWPR-G6K",
-                      "synonyms": [],
-                      "rgb": [
-                        120,
-                        190,
-                        129
-                      ],
-                      "children": [
-                        {
-                          "name": "IF (Amygdala) - left hemisphere",
-                          "rgb": [
-                            120,
-                            190,
-                            129
-                          ],
-                          "labelIndex": 237,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -27588235,
-                            -1431373,
-                            -17460784
-                          ]
-                        },
-                        {
-                          "name": "IF (Amygdala) - right hemisphere",
-                          "rgb": [
-                            120,
-                            190,
-                            129
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 237,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            29372549,
-                            -813725,
-                            -16578431
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "5a1391c8-6056-40e4-a19b-3774df42bd07"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "MF (Amygdala)",
-                      "arealabel": "MF",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/9375-55V",
-                      "synonyms": [],
-                      "rgb": [
-                        190,
-                        200,
-                        9
-                      ],
-                      "children": [
-                        {
-                          "name": "MF (Amygdala) - left hemisphere",
-                          "rgb": [
-                            190,
-                            200,
-                            9
-                          ],
-                          "labelIndex": 235,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -18714286,
-                            -6523810,
-                            -15428571
-                          ]
-                        },
-                        {
-                          "name": "MF (Amygdala) - right hemisphere",
-                          "rgb": [
-                            190,
-                            200,
-                            9
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 235,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            20976744,
-                            -4930233,
-                            -14441860
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "3741c788-9412-4b8e-9ab4-9ca2d3a715ca"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "centromedial group",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "CM (Amygdala)",
-                      "arealabel": "CM",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/36FR-C95",
-                      "synonyms": [],
-                      "rgb": [
-                        89,
-                        4,
-                        190
-                      ],
-                      "children": [
-                        {
-                          "name": "CM (Amygdala) - left hemisphere",
-                          "rgb": [
-                            89,
-                            4,
-                            190
-                          ],
-                          "labelIndex": 16,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP"
-                        },
-                        {
-                          "name": "CM (Amygdala) - right hemisphere",
-                          "rgb": [
-                            89,
-                            4,
-                            190
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 16,
-                          "children": [],
-                          "status": "publicP"
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "CM (Amygdala)",
-                      "arealabel": "CM",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/36FR-C95",
-                      "synonyms": [],
-                      "rgb": [
-                        9,
-                        120,
-                        220
-                      ],
-                      "children": [
-                        {
-                          "name": "CM (Amygdala) - left hemisphere",
-                          "rgb": [
-                            9,
-                            120,
-                            220
-                          ],
-                          "labelIndex": 21,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -21108108,
-                            -3376448,
-                            -13214286
-                          ]
-                        },
-                        {
-                          "name": "CM (Amygdala) - right hemisphere",
-                          "rgb": [
-                            9,
-                            120,
-                            220
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 21,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            23157767,
-                            -2679612,
-                            -12555825
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                }
-              ]
-            }
-          ]
-        },
-        {
-          "name": "cerebral cortex",
-          "status": null,
-          "labelIndex": null,
-          "synonyms": [],
-          "rgb": null,
-          "children": [
-            {
-              "name": "parietal lobe",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "superior parietal lobule",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area 5L (SPL)",
-                      "arealabel": "Area-5L",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/C1FQ-2F",
-                      "synonyms": [],
-                      "rgb": [
-                        184,
-                        185,
-                        58
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 5L (SPL) - left hemisphere",
-                          "rgb": [
-                            184,
-                            185,
-                            58
-                          ],
-                          "labelIndex": 130,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -18807832,
-                            -47524930,
-                            66950353
-                          ]
-                        },
-                        {
-                          "name": "Area 5L (SPL) - right hemisphere",
-                          "rgb": [
-                            184,
-                            185,
-                            58
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 130,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            12970516,
-                            -51174624,
-                            70371695
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "64555f7f-1b33-4ffe-9853-be41e7a21096"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area 7M (SPL)",
-                      "arealabel": "Area-7M",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/F25F-EKW",
-                      "synonyms": [],
-                      "rgb": [
-                        205,
-                        61,
-                        236
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 7M (SPL) - left hemisphere",
-                          "rgb": [
-                            205,
-                            61,
-                            236
-                          ],
-                          "labelIndex": 135,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -777896,
-                            -78103082,
-                            35256111
-                          ]
-                        },
-                        {
-                          "name": "Area 7M (SPL) - right hemisphere",
-                          "rgb": [
-                            205,
-                            61,
-                            236
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 135,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            4281250,
-                            -75882812,
-                            38312500
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "0aacea5c-bc9e-483f-8376-25f176ada158"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area 7PC (SPL)",
-                      "arealabel": "Area-7PC",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/Z45N-1T",
-                      "synonyms": [],
-                      "rgb": [
-                        252,
-                        89,
-                        28
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 7PC (SPL) - left hemisphere",
-                          "rgb": [
-                            252,
-                            89,
-                            28
-                          ],
-                          "labelIndex": 132,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -32056266,
-                            -48916454,
-                            60868713
-                          ]
-                        },
-                        {
-                          "name": "Area 7PC (SPL) - right hemisphere",
-                          "rgb": [
-                            252,
-                            89,
-                            28
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 132,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            30055171,
-                            -49079568,
-                            61493485
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "763140d3-7ba0-4f28-b0ac-c6cbda2d14e1"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area 5M (SPL)",
-                      "arealabel": "Area-5M",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/Y12F-YMU",
-                      "synonyms": [],
-                      "rgb": [
-                        225,
-                        245,
-                        76
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 5M (SPL) - left hemisphere",
-                          "rgb": [
-                            225,
-                            245,
-                            76
-                          ],
-                          "labelIndex": 131,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -7527881,
-                            -41962560,
-                            59221721
-                          ]
-                        },
-                        {
-                          "name": "Area 5M (SPL) - right hemisphere",
-                          "rgb": [
-                            225,
-                            245,
-                            76
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 131,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            4642562,
-                            -44304959,
-                            60273140
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "abe105cf-2c29-46af-af75-6b46fdb75137"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area 7P (SPL)",
-                      "arealabel": "Area-7P",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/C3HS-8R7",
-                      "synonyms": [],
-                      "rgb": [
-                        52,
-                        20,
-                        106
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 7P (SPL) - left hemisphere",
-                          "rgb": [
-                            52,
-                            20,
-                            106
-                          ],
-                          "labelIndex": 208,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -7679310,
-                            -76043295,
-                            52631801
-                          ]
-                        },
-                        {
-                          "name": "Area 7P (SPL) - right hemisphere",
-                          "rgb": [
-                            52,
-                            20,
-                            106
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 208,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            14232037,
-                            -74892094,
-                            56304919
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "af9c4f39-63a4-409f-b306-e5965d639f37"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area 5Ci (SPL)",
-                      "arealabel": "Area-5Ci",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/SQVP-GK1",
-                      "synonyms": [],
-                      "rgb": [
-                        79,
-                        242,
-                        146
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 5Ci (SPL) - left hemisphere",
-                          "rgb": [
-                            79,
-                            242,
-                            146
-                          ],
-                          "labelIndex": 136,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -14033790,
-                            -35828311,
-                            43857534
-                          ]
-                        },
-                        {
-                          "name": "Area 5Ci (SPL) - right hemisphere",
-                          "rgb": [
-                            79,
-                            242,
-                            146
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 136,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            10563961,
-                            -36194957,
-                            46892989
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "07d08f74-af3d-4cbe-bc3c-f32b7f5c989f"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area 7A (SPL)",
-                      "arealabel": "Area-7A",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/7HX2-AJH",
-                      "synonyms": [],
-                      "rgb": [
-                        38,
-                        204,
-                        19
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 7A (SPL) - left hemisphere",
-                          "rgb": [
-                            38,
-                            204,
-                            19
-                          ],
-                          "labelIndex": 134,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -20856230,
-                            -62269710,
-                            61643512
-                          ]
-                        },
-                        {
-                          "name": "Area 7A (SPL) - right hemisphere",
-                          "rgb": [
-                            38,
-                            204,
-                            19
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 134,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            20910951,
-                            -62880523,
-                            62944473
-                          ]
-                        }
-                      ],
-                      "relatedAreas": [
-                        {
-                          "name": "Area 7A",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "811f4adb-4a7c-45c1-8034-4afa9edf586a"
-                            }
-                          }
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "e26e999f-77ad-4934-9569-8290ed05ebda"
-                        }
-                      }
-                    }
-                  ]
-                },
-                {
-                  "name": "parietal operculum",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area OP3 (POperc)",
-                      "arealabel": "Area-OP3",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/1Z8F-PX4",
-                      "synonyms": [],
-                      "rgb": [
-                        58,
-                        122,
-                        80
-                      ],
-                      "children": [
-                        {
-                          "name": "Area OP3 (POperc) - left hemisphere",
-                          "rgb": [
-                            58,
-                            122,
-                            80
-                          ],
-                          "labelIndex": 75,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -40814044,
-                            -13737321,
-                            17669701
-                          ]
-                        },
-                        {
-                          "name": "Area OP3 (POperc) - right hemisphere",
-                          "rgb": [
-                            58,
-                            122,
-                            80
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 75,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            41195980,
-                            -11633166,
-                            18002513
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "f6f10b01-6c10-42cf-8129-f5aaf307a36b"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area OP4 (POperc)",
-                      "arealabel": "Area-OP4",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/BVT0-H3U",
-                      "synonyms": [],
-                      "rgb": [
-                        89,
-                        80,
-                        132
-                      ],
-                      "children": [
-                        {
-                          "name": "Area OP4 (POperc) - left hemisphere",
-                          "rgb": [
-                            89,
-                            80,
-                            132
-                          ],
-                          "labelIndex": 72,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -60514139,
-                            -10849614,
-                            15368038
-                          ]
-                        },
-                        {
-                          "name": "Area OP4 (POperc) - right hemisphere",
-                          "rgb": [
-                            89,
-                            80,
-                            132
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 72,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            63398148,
-                            -9211111,
-                            12780864
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "b1e7f0d2-6d37-4047-9c2e-a08c3f1e2a16"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area OP2 (POperc)",
-                      "arealabel": "Area-OP2",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/5KBV-36J",
-                      "synonyms": [],
-                      "rgb": [
-                        36,
-                        47,
-                        221
-                      ],
-                      "children": [
-                        {
-                          "name": "Area OP2 (POperc) - left hemisphere",
-                          "rgb": [
-                            36,
-                            47,
-                            221
-                          ],
-                          "labelIndex": 74,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -36355372,
-                            -23452479,
-                            18938017
-                          ]
-                        },
-                        {
-                          "name": "Area OP2 (POperc) - right hemisphere",
-                          "rgb": [
-                            36,
-                            47,
-                            221
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 74,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            35629457,
-                            -21159690,
-                            18021705
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "ab26cefd-f7d6-4442-8020-a6e418e673ff"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area OP1 (POperc)",
-                      "arealabel": "Area-OP1",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/SH37-979",
-                      "synonyms": [],
-                      "rgb": [
-                        250,
-                        182,
-                        34
-                      ],
-                      "children": [
-                        {
-                          "name": "Area OP1 (POperc) - left hemisphere",
-                          "rgb": [
-                            250,
-                            182,
-                            34
-                          ],
-                          "labelIndex": 73,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -51566527,
-                            -22523828,
-                            17190240
-                          ]
-                        },
-                        {
-                          "name": "Area OP1 (POperc) - right hemisphere",
-                          "rgb": [
-                            250,
-                            182,
-                            34
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 73,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            52888430,
-                            -20697107,
-                            17000826
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "402ec28d-0809-4226-91a4-900d9303291b"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "postcentral gyrus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area 3b (PostCG)",
-                      "arealabel": "Area-3b",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/2JK3-QXR",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area 3b",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "74304fe9-452e-4ca3-97a3-8cf3459bb1a0"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        239,
-                        246,
-                        155
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 3b (PostCG) - left hemisphere",
-                          "rgb": [
-                            239,
-                            246,
-                            155
-                          ],
-                          "labelIndex": 127,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -44439219,
-                            -21735041,
-                            46012387
-                          ]
-                        },
-                        {
-                          "name": "Area 3b (PostCG) - right hemisphere",
-                          "rgb": [
-                            239,
-                            246,
-                            155
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 127,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            38765839,
-                            -25096118,
-                            48227174
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "b84f67bb-5d9f-4daf-a8d6-15f63f901bd4"
-                        }
-                      }
-                    },
-                    {
-                      "name": "Area 1 (PostCG)",
-                      "arealabel": "Area-1",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/THB5-B64",
-                      "synonyms": [],
-                      "rgb": [
-                        232,
-                        185,
-                        250
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 1 (PostCG) - left hemisphere",
-                          "rgb": [
-                            232,
-                            185,
-                            250
-                          ],
-                          "labelIndex": 125,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -47104485,
-                            -28297920,
-                            57798046
-                          ]
-                        },
-                        {
-                          "name": "Area 1 (PostCG) - right hemisphere",
-                          "rgb": [
-                            232,
-                            185,
-                            250
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 125,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            48452543,
-                            -27132790,
-                            56150187
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "c9753e82-80ca-4074-a704-9dd2c4c0d58b"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area 2 (PostCS)",
-                      "arealabel": "Area-2",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/QA8F-DD2",
-                      "synonyms": [],
-                      "rgb": [
-                        23,
-                        13,
-                        35
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 2 (PostCS) - left hemisphere",
-                          "rgb": [
-                            23,
-                            13,
-                            35
-                          ],
-                          "labelIndex": 252,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -42268059,
-                            -32424512,
-                            51210202
-                          ]
-                        },
-                        {
-                          "name": "Area 2 (PostCS) - right hemisphere",
-                          "rgb": [
-                            23,
-                            13,
-                            35
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 252,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            38223619,
-                            -34651627,
-                            52535010
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "f9147ae9-5cf0-41b2-89a3-e6e6df07bef1"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area 3a (PostCG)",
-                      "arealabel": "Area-3a",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/C5QQ-EFB",
-                      "synonyms": [],
-                      "rgb": [
-                        187,
-                        133,
-                        50
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 3a (PostCG) - left hemisphere",
-                          "rgb": [
-                            187,
-                            133,
-                            50
-                          ],
-                          "labelIndex": 126,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -31927553,
-                            -25650901,
-                            44513889
-                          ]
-                        },
-                        {
-                          "name": "Area 3a (PostCG) - right hemisphere",
-                          "rgb": [
-                            187,
-                            133,
-                            50
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 126,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            38813714,
-                            -19184000,
-                            36284571
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "2657ecc1-da69-4a37-9b37-66ae95f9623c"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "inferior parietal lobule",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area PF (IPL)",
-                      "arealabel": "Area-PF",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/F1TJ-54W",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area PF",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "f4e177a6-1b2c-48d5-a62c-91949ba636e4"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        226,
-                        211,
-                        61
-                      ],
-                      "children": [
-                        {
-                          "name": "Area PF (IPL) - left hemisphere",
-                          "rgb": [
-                            226,
-                            211,
-                            61
-                          ],
-                          "labelIndex": 206,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -59814938,
-                            -37432365,
-                            36569295
-                          ]
-                        },
-                        {
-                          "name": "Area PF (IPL) - right hemisphere",
-                          "rgb": [
-                            226,
-                            211,
-                            61
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 206,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            64016699,
-                            -33052700,
-                            30153112
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "18e5e1b0-6c25-4f55-a967-0834d2bd3ee4"
-                        }
-                      }
-                    },
-                    {
-                      "name": "Area PFcm (IPL)",
-                      "arealabel": "Area-PFcm",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/8DP8-8HE",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area PFcm",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "f07d441f-452f-471b-ac7c-0d3c2ae16fb2"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        98,
-                        128,
-                        120
-                      ],
-                      "children": [
-                        {
-                          "name": "Area PFcm (IPL) - left hemisphere",
-                          "rgb": [
-                            98,
-                            128,
-                            120
-                          ],
-                          "labelIndex": 113,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -51751410,
-                            -36954069,
-                            22546334
-                          ]
-                        },
-                        {
-                          "name": "Area PFcm (IPL) - right hemisphere",
-                          "rgb": [
-                            98,
-                            128,
-                            120
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 113,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            53524370,
-                            -31637287,
-                            23177904
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "10502c3a-f20e-44fa-b985-786d6888d4bb"
-                        }
-                      }
-                    },
-                    {
-                      "name": "Area PGa (IPL)",
-                      "arealabel": "Area-PGa",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/V5HY-XTS",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area PGa",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "d5b168a3-a92e-4ab3-8b4d-61e58e5b7a1c"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        42,
-                        236,
-                        131
-                      ],
-                      "children": [
-                        {
-                          "name": "Area PGa (IPL) - left hemisphere",
-                          "rgb": [
-                            42,
-                            236,
-                            131
-                          ],
-                          "labelIndex": 110,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -48873487,
-                            -60780569,
-                            37191889
-                          ]
-                        },
-                        {
-                          "name": "Area PGa (IPL) - right hemisphere",
-                          "rgb": [
-                            42,
-                            236,
-                            131
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 110,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            55283797,
-                            -55333653,
-                            30316395
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "d7f6c5be-93c6-4a16-8939-4420329d4147"
-                        }
-                      }
-                    },
-                    {
-                      "name": "Area PFt (IPL)",
-                      "arealabel": "Area-PFt",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/JGM9-ZET",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area PFt",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "9ff7fcc4-a88b-4bf8-be07-1386a3760a96"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        120,
-                        135,
-                        232
-                      ],
-                      "children": [
-                        {
-                          "name": "Area PFt (IPL) - left hemisphere",
-                          "rgb": [
-                            120,
-                            135,
-                            232
-                          ],
-                          "labelIndex": 109,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -55015237,
-                            -27583919,
-                            38095874
-                          ]
-                        },
-                        {
-                          "name": "Area PFt (IPL) - right hemisphere",
-                          "rgb": [
-                            120,
-                            135,
-                            232
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 109,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            54808632,
-                            -24626296,
-                            37973570
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "847cef50-7340-470d-8580-327b4ce9db19"
-                        }
-                      }
-                    },
-                    {
-                      "name": "Area PFm (IPL)",
-                      "arealabel": "Area-PFm",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/TB94-HRK",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area PFm",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "3455ada4-48c3-4748-ae38-2fe3f376f0fc"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        53,
-                        76,
-                        145
-                      ],
-                      "children": [
-                        {
-                          "name": "Area PFm (IPL) - left hemisphere",
-                          "rgb": [
-                            53,
-                            76,
-                            145
-                          ],
-                          "labelIndex": 112,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -54527689,
-                            -52389045,
-                            38877207
-                          ]
-                        },
-                        {
-                          "name": "Area PFm (IPL) - right hemisphere",
-                          "rgb": [
-                            53,
-                            76,
-                            145
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 112,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            56990022,
-                            -45541717,
-                            38606571
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "411edde9-685f-464b-970c-a929f9a4067c"
-                        }
-                      }
-                    },
-                    {
-                      "name": "Area PGp (IPL)",
-                      "arealabel": "Area-PGp",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/FPFJ-ZCD",
-                      "synonyms": [],
-                      "rgb": [
-                        92,
-                        116,
-                        83
-                      ],
-                      "children": [
-                        {
-                          "name": "Area PGp (IPL) - left hemisphere",
-                          "rgb": [
-                            92,
-                            116,
-                            83
-                          ],
-                          "labelIndex": 108,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -44673441,
-                            -73269937,
-                            29840224
-                          ]
-                        },
-                        {
-                          "name": "Area PGp (IPL) - right hemisphere",
-                          "rgb": [
-                            92,
-                            116,
-                            83
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 108,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            47749459,
-                            -70528695,
-                            30721440
-                          ]
-                        }
-                      ],
-                      "relatedAreas": [
-                        {
-                          "name": "Area PGp",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "1b00a0e4-9493-43ff-bfbd-b02119064813"
-                            }
-                          }
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "b3ef6947-76c9-4935-bbc6-8b2329c0967b"
-                        }
-                      }
-                    },
-                    {
-                      "name": "Area PFop (IPL)",
-                      "arealabel": "Area-PFop",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/M2PM-92Q",
-                      "synonyms": [],
-                      "rgb": [
-                        146,
-                        153,
-                        177
-                      ],
-                      "children": [
-                        {
-                          "name": "Area PFop (IPL) - left hemisphere",
-                          "rgb": [
-                            146,
-                            153,
-                            177
-                          ],
-                          "labelIndex": 111,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -60026462,
-                            -24694986,
-                            24259053
-                          ]
-                        },
-                        {
-                          "name": "Area PFop (IPL) - right hemisphere",
-                          "rgb": [
-                            146,
-                            153,
-                            177
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 111,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            58286575,
-                            -20617534,
-                            24917260
-                          ]
-                        }
-                      ],
-                      "relatedAreas": [
-                        {
-                          "name": "Area PFop",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "b4397c40-82e1-4d62-b97a-44e8d04b428b"
-                            }
-                          }
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "e8262e56-88fe-4006-b078-def4d78416b8"
-                        }
-                      }
-                    }
-                  ]
-                },
-                {
-                  "name": "parieto-occipital sulcus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area hPO1 (POS)",
-                      "arealabel": "Area-hPO1",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/W50A-FAP",
-                      "synonyms": [],
-                      "rgb": [
-                        153,
-                        232,
-                        235
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hPO1 (POS) - left hemisphere",
-                          "rgb": [
-                            153,
-                            232,
-                            235
-                          ],
-                          "labelIndex": 297,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -15069260,
-                            -80661951,
-                            37074565
-                          ]
-                        },
-                        {
-                          "name": "Area hPO1 (POS) - right hemisphere",
-                          "rgb": [
-                            153,
-                            232,
-                            235
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 297,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            21853147,
-                            -80927739,
-                            37048660
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "a78998c2-99d4-4738-bbda-82a317f713f1"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "intraparietal sulcus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area hIP1 (IPS)",
-                      "arealabel": "Area-hIP1",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/92FE-7S6",
-                      "synonyms": [],
-                      "rgb": [
-                        66,
-                        149,
-                        82
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hIP1 (IPS) - left hemisphere",
-                          "rgb": [
-                            66,
-                            149,
-                            82
-                          ],
-                          "labelIndex": 128,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -36841999,
-                            -49449871,
-                            40584028
-                          ]
-                        },
-                        {
-                          "name": "Area hIP1 (IPS) - right hemisphere",
-                          "rgb": [
-                            66,
-                            149,
-                            82
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 128,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            40629988,
-                            -48019372,
-                            39158853
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "7722c71f-fe84-4deb-8f6b-98e2aecf2e31"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hIP7 (IPS)",
-                      "arealabel": "Area-hIP7",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/WRCY-8Z1",
-                      "synonyms": [],
-                      "rgb": [
-                        71,
-                        196,
-                        218
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hIP7 (IPS) - left hemisphere",
-                          "rgb": [
-                            71,
-                            196,
-                            218
-                          ],
-                          "labelIndex": 296,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -22044741,
-                            -79989011,
-                            29353218
-                          ]
-                        },
-                        {
-                          "name": "Area hIP7 (IPS) - right hemisphere",
-                          "rgb": [
-                            71,
-                            196,
-                            218
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 296,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            29041586,
-                            -79117828,
-                            27046207
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "9c6c3c96-8129-4e0e-aa22-a0fb435aab45"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hIP3 (IPS)",
-                      "arealabel": "Area-hIP3",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/P8X0-V1G",
-                      "synonyms": [],
-                      "rgb": [
-                        113,
-                        172,
-                        229
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hIP3 (IPS) - left hemisphere",
-                          "rgb": [
-                            113,
-                            172,
-                            229
-                          ],
-                          "labelIndex": 133,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -30430769,
-                            -55031164,
-                            46842209
-                          ]
-                        },
-                        {
-                          "name": "Area hIP3 (IPS) - right hemisphere",
-                          "rgb": [
-                            113,
-                            172,
-                            229
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 133,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            33538679,
-                            -49884591,
-                            50461950
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "700ac6db-870d-44f1-8786-0c01207f992b"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hIP2 (IPS)",
-                      "arealabel": "Area-hIP2",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/EJTM-NDY",
-                      "synonyms": [],
-                      "rgb": [
-                        127,
-                        245,
-                        203
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hIP2 (IPS) - left hemisphere",
-                          "rgb": [
-                            127,
-                            245,
-                            203
-                          ],
-                          "labelIndex": 129,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -46531100,
-                            -41482722,
-                            43278044
-                          ]
-                        },
-                        {
-                          "name": "Area hIP2 (IPS) - right hemisphere",
-                          "rgb": [
-                            127,
-                            245,
-                            203
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 129,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            44605145,
-                            -39958613,
-                            45130872
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "4490ef3e-ce60-4453-9e9f-85388d0603cb"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hIP4 (IPS)",
-                      "arealabel": "Area-hIP4",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/TSEN-QSY",
-                      "synonyms": [],
-                      "rgb": [
-                        254,
-                        52,
-                        184
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hIP4 (IPS) - left hemisphere",
-                          "rgb": [
-                            254,
-                            52,
-                            184
-                          ],
-                          "labelIndex": 294,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -29349066,
-                            -79948651,
-                            25849585
-                          ]
-                        },
-                        {
-                          "name": "Area hIP4 (IPS) - right hemisphere",
-                          "rgb": [
-                            254,
-                            52,
-                            184
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 294,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            37324927,
-                            -76495150,
-                            22338021
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "5875bfe2-99ca-4e50-bce2-61c201c3dd54"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hIP5 (IPS)",
-                      "arealabel": "Area-hIP5",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/RNSM-Y4Y",
-                      "synonyms": [],
-                      "rgb": [
-                        217,
-                        87,
-                        210
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hIP5 (IPS) - left hemisphere",
-                          "rgb": [
-                            217,
-                            87,
-                            210
-                          ],
-                          "labelIndex": 295,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -28321120,
-                            -73162807,
-                            36664362
-                          ]
-                        },
-                        {
-                          "name": "Area hIP5 (IPS) - right hemisphere",
-                          "rgb": [
-                            217,
-                            87,
-                            210
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 295,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            34614713,
-                            -68930590,
-                            33299252
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "f9717dec-0310-4078-a4ae-294170b4fb37"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hIP6 (IPS)",
-                      "arealabel": "Area-hIP6",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/AFQR-50Q",
-                      "synonyms": [],
-                      "rgb": [
-                        237,
-                        233,
-                        37
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hIP6 (IPS) - left hemisphere",
-                          "rgb": [
-                            237,
-                            233,
-                            37
-                          ],
-                          "labelIndex": 292,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -31988131,
-                            -66522626,
-                            46155045
-                          ]
-                        },
-                        {
-                          "name": "Area hIP6 (IPS) - right hemisphere",
-                          "rgb": [
-                            237,
-                            233,
-                            37
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 292,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            37069307,
-                            -63723479,
-                            45628006
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "b9975f8e-f484-4e82-883a-5fd765855ae0"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hIP8 (IPS)",
-                      "arealabel": "Area-hIP8",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/YYT8-FT8",
-                      "synonyms": [],
-                      "rgb": [
-                        223,
-                        109,
-                        3
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hIP8 (IPS) - left hemisphere",
-                          "rgb": [
-                            223,
-                            109,
-                            3
-                          ],
-                          "labelIndex": 293,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -18133307,
-                            -72231198,
-                            43245125
-                          ]
-                        },
-                        {
-                          "name": "Area hIP8 (IPS) - right hemisphere",
-                          "rgb": [
-                            223,
-                            109,
-                            3
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 293,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            26220986,
-                            -71480127,
-                            41680048
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "a2c1acc7-7fdc-4fbd-90ee-729eda7fdff3"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                }
-              ]
-            },
-            {
-              "name": "occiptal lobe",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "dorsal occipital cortex",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area hOc6 (POS)",
-                      "arealabel": "Area-hOc6",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/4101-1ZG",
-                      "synonyms": [],
-                      "rgb": [
-                        239,
-                        66,
-                        26
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hOc6 (POS) - left hemisphere",
-                          "rgb": [
-                            239,
-                            66,
-                            26
-                          ],
-                          "labelIndex": 291,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -15925775,
-                            -70685971,
-                            16518760
-                          ]
-                        },
-                        {
-                          "name": "Area hOc6 (POS) - right hemisphere",
-                          "rgb": [
-                            239,
-                            66,
-                            26
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 291,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            17750454,
-                            -67625227,
-                            17755898
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "d72e0210-a910-4b15-bcaf-80c3433cd3e0"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hOc4d (Cuneus)",
-                      "arealabel": "Area-hOc4d",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/VSK5-DET",
-                      "synonyms": [],
-                      "rgb": [
-                        109,
-                        218,
-                        10
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hOc4d (Cuneus) - left hemisphere",
-                          "rgb": [
-                            109,
-                            218,
-                            10
-                          ],
-                          "labelIndex": 119,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -17209585,
-                            -87846006,
-                            25522684
-                          ]
-                        },
-                        {
-                          "name": "Area hOc4d (Cuneus) - right hemisphere",
-                          "rgb": [
-                            109,
-                            218,
-                            10
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 119,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            20232373,
-                            -87193644,
-                            27253227
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "8120426c-f65b-4426-8a58-3060e2334921"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hOc3d (Cuneus)",
-                      "arealabel": "Area-hOc3d",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/F9X3-JVJ",
-                      "synonyms": [],
-                      "rgb": [
-                        105,
-                        191,
-                        48
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hOc3d (Cuneus) - left hemisphere",
-                          "rgb": [
-                            105,
-                            191,
-                            48
-                          ],
-                          "labelIndex": 120,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -12816505,
-                            -91289984,
-                            21840872
-                          ]
-                        },
-                        {
-                          "name": "Area hOc3d (Cuneus) - right hemisphere",
-                          "rgb": [
-                            105,
-                            191,
-                            48
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 120,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            16129503,
-                            -88897084,
-                            23080617
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "d7ec4342-ae58-41e3-a68c-28e90a719d41"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "ventral occipital cortex",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area hOc3v (LingG)",
-                      "arealabel": "Area-hOc3v",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/E5E8-1VV",
-                      "synonyms": [],
-                      "rgb": [
-                        83,
-                        179,
-                        155
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hOc3v (LingG) - left hemisphere",
-                          "rgb": [
-                            83,
-                            179,
-                            155
-                          ],
-                          "labelIndex": 10,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -18685863,
-                            -85629087,
-                            -10106719
-                          ]
-                        },
-                        {
-                          "name": "Area hOc3v (LingG) - right hemisphere",
-                          "rgb": [
-                            83,
-                            179,
-                            155
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 10,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            24296060,
-                            -81686611,
-                            -10031193
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "0d6392fd-b905-4bc3-bac9-fc44d8990a30"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hOc4v (LingG)",
-                      "arealabel": "Area-hOc4v",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/AASR-M8P",
-                      "synonyms": [],
-                      "rgb": [
-                        222,
-                        77,
-                        155
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hOc4v (LingG) - left hemisphere",
-                          "rgb": [
-                            222,
-                            77,
-                            155
-                          ],
-                          "labelIndex": 9,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -26315808,
-                            -78419533,
-                            -12497238
-                          ]
-                        },
-                        {
-                          "name": "Area hOc4v (LingG) - right hemisphere",
-                          "rgb": [
-                            222,
-                            77,
-                            155
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 9,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            32665897,
-                            -76519832,
-                            -12453305
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "27d91cbb-5611-4d38-bd17-c0f1ac22b4cc"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "occipital cortex",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area hOc2 (V2, 18)",
-                      "arealabel": "Area-hOc2",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/QG9C-THD",
-                      "synonyms": [],
-                      "rgb": [
-                        84,
-                        110,
-                        22
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hOc2 (V2, 18) - left hemisphere",
-                          "rgb": [
-                            84,
-                            110,
-                            22
-                          ],
-                          "labelIndex": 7,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -10521334,
-                            -88185706,
-                            4055081
-                          ]
-                        },
-                        {
-                          "name": "Area hOc2 (V2, 18) - right hemisphere",
-                          "rgb": [
-                            84,
-                            110,
-                            22
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 7,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            15409559,
-                            -86163484,
-                            2905309
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "04674a3c-bb3a-495e-a466-206355e630bd"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hOc1 (V1, 17, CalcS)",
-                      "arealabel": "Area-hOc1",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/MXJ6-6DH",
-                      "synonyms": [],
-                      "rgb": [
-                        190,
-                        132,
-                        147
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hOc1 (V1, 17, CalcS) - left hemisphere",
-                          "rgb": [
-                            190,
-                            132,
-                            147
-                          ],
-                          "labelIndex": 8,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -8533787,
-                            -84646549,
-                            1855106
-                          ]
-                        },
-                        {
-                          "name": "Area hOc1 (V1, 17, CalcS) - right hemisphere",
-                          "rgb": [
-                            190,
-                            132,
-                            147
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 8,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            14654595,
-                            -81416396,
-                            1637838
-                          ]
-                        }
-                      ],
-                      "relatedAreas": [
-                        {
-                          "name": "Area hOc1",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "b851eb9d-9502-45e9-8dd8-2861f0e6da3f"
-                            }
-                          }
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "5151ab8f-d8cb-4e67-a449-afe2a41fb007"
-                        }
-                      }
-                    }
-                  ]
-                },
-                {
-                  "name": "lateral occipital cortex",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area hOc4lp (LOC)",
-                      "arealabel": "Area-hOc4lp",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/4B87-Q8X",
-                      "synonyms": [],
-                      "rgb": [
-                        96,
-                        113,
-                        253
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hOc4lp (LOC) - left hemisphere",
-                          "rgb": [
-                            96,
-                            113,
-                            253
-                          ],
-                          "labelIndex": 117,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -34066943,
-                            -88725728,
-                            6360721
-                          ]
-                        },
-                        {
-                          "name": "Area hOc4lp (LOC) - right hemisphere",
-                          "rgb": [
-                            96,
-                            113,
-                            253
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 117,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            38538256,
-                            -86375516,
-                            4086228
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "9006ee6a-6dc1-4604-9f20-7e08b42d574d"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hOc5 (LOC)",
-                      "arealabel": "Area-hOc5",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/2WSH-MCT",
-                      "synonyms": [],
-                      "rgb": [
-                        255,
-                        0,
-                        0
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hOc5 (LOC) - left hemisphere",
-                          "rgb": [
-                            255,
-                            0,
-                            0
-                          ],
-                          "labelIndex": 6,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -42484324,
-                            -71486486,
-                            1795676
-                          ]
-                        },
-                        {
-                          "name": "Area hOc5 (LOC) - right hemisphere",
-                          "rgb": [
-                            255,
-                            0,
-                            0
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 6,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            48090700,
-                            -66172216,
-                            3121699
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "b40afb5a-e6a1-47b6-8a3e-1f8a20fbf99a"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area hOc4la (LOC)",
-                      "arealabel": "Area-hOc4la",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/Z9JX-WKB",
-                      "synonyms": [],
-                      "rgb": [
-                        233,
-                        168,
-                        189
-                      ],
-                      "children": [
-                        {
-                          "name": "Area hOc4la (LOC) - left hemisphere",
-                          "rgb": [
-                            233,
-                            168,
-                            189
-                          ],
-                          "labelIndex": 118,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -46291484,
-                            -76947955,
-                            -372761
-                          ]
-                        },
-                        {
-                          "name": "Area hOc4la (LOC) - right hemisphere",
-                          "rgb": [
-                            233,
-                            168,
-                            189
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 118,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            48566255,
-                            -73862041,
-                            -779202
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "94365b82-6204-4937-8b86-fe0433287938"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                }
-              ]
-            },
-            {
-              "name": "frontal lobe",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "inferior frontal gyrus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area 44 (IFG)",
-                      "arealabel": "Area-44",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/F9P8-ZVW",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area 44v",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "7e5e7aa8-28b8-445b-8980-2a6f3fa645b3"
-                            }
-                          }
-                        },
-                        {
-                          "name": "Area 44d",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "8aeae833-81c8-4e27-a8d6-deee339d6052"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        54,
-                        74,
-                        75
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 44 (IFG) - left hemisphere",
-                          "rgb": [
-                            54,
-                            74,
-                            75
-                          ],
-                          "labelIndex": 2,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -54242820,
-                            11425127,
-                            18292735
-                          ]
-                        },
-                        {
-                          "name": "Area 44 (IFG) - right hemisphere",
-                          "rgb": [
-                            54,
-                            74,
-                            75
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 2,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            56359074,
-                            11741030,
-                            13444358
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "8a6be82c-5947-4fff-8348-cf9bf73e4f40"
-                        }
-                      }
-                    },
-                    {
-                      "name": "Area 45 (IFG)",
-                      "arealabel": "Area-45",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/MR1V-BJ3",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area 45",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "131e6de8-b073-4f01-8f60-1bdb5a6c9a9a"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        167,
-                        103,
-                        146
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 45 (IFG) - left hemisphere",
-                          "rgb": [
-                            167,
-                            103,
-                            146
-                          ],
-                          "labelIndex": 1,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -54903012,
-                            26558233,
-                            15528514
-                          ]
-                        },
-                        {
-                          "name": "Area 45 (IFG) - right hemisphere",
-                          "rgb": [
-                            167,
-                            103,
-                            146
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 1,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            55787613,
-                            26216770,
-                            12102941
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "cb32e688-43f0-4ae3-9554-085973137663"
-                        }
-                      }
-                    }
-                  ]
-                },
-                {
-                  "name": "dorsal precentral gyrus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area 6d2 (PreCG)",
-                      "arealabel": "Area-6d2",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/KXHS-N90",
-                      "synonyms": [],
-                      "rgb": [
-                        170,
-                        151,
-                        180
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 6d2 (PreCG) - left hemisphere",
-                          "rgb": [
-                            170,
-                            151,
-                            180
-                          ],
-                          "labelIndex": 288,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -15757793,
-                            2030353,
-                            68024610
-                          ]
-                        },
-                        {
-                          "name": "Area 6d2 (PreCG) - right hemisphere",
-                          "rgb": [
-                            170,
-                            151,
-                            180
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 288,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            14562976,
-                            2312675,
-                            68442439
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "963c5281-67df-4d41-9b91-60b31cf150c0"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area 6d1 (PreCG)",
-                      "arealabel": "Area-6d1",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/4WSQ-8FM",
-                      "synonyms": [],
-                      "rgb": [
-                        45,
-                        33,
-                        27
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 6d1 (PreCG) - left hemisphere",
-                          "rgb": [
-                            45,
-                            33,
-                            27
-                          ],
-                          "labelIndex": 287,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -20332759,
-                            -14746524,
-                            68590141
-                          ]
-                        },
-                        {
-                          "name": "Area 6d1 (PreCG) - right hemisphere",
-                          "rgb": [
-                            45,
-                            33,
-                            27
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 287,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            20258981,
-                            -16559656,
-                            68870890
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "a802f3dc-b7e5-48b7-9845-832a6e6f9b1c"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "posterior medial superior frontal gyrus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area 6ma (preSMA, mesial SFG)",
-                      "arealabel": "Area-6ma",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/WVNR-SPT",
-                      "synonyms": [],
-                      "rgb": [
-                        204,
-                        108,
-                        222
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 6ma (preSMA, mesial SFG) - left hemisphere",
-                          "rgb": [
-                            204,
-                            108,
-                            222
-                          ],
-                          "labelIndex": 299,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -4083913,
-                            4296092,
-                            58555023
-                          ]
-                        },
-                        {
-                          "name": "Area 6ma (preSMA, mesial SFG) - right hemisphere",
-                          "rgb": [
-                            204,
-                            108,
-                            222
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 299,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            5230140,
-                            4042128,
-                            58355079
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "07b4c6a1-8a24-4f88-8f73-b2ea06e1c2f3"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "superior frontal sulcus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area 6d3 (SFS)",
-                      "arealabel": "Area-6d3",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/NVJ5-JJ",
-                      "synonyms": [],
-                      "rgb": [
-                        55,
-                        239,
-                        21
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 6d3 (SFS) - left hemisphere",
-                          "rgb": [
-                            55,
-                            239,
-                            21
-                          ],
-                          "labelIndex": 289,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -23315931,
-                            4317151,
-                            51434008
-                          ]
-                        },
-                        {
-                          "name": "Area 6d3 (SFS) - right hemisphere",
-                          "rgb": [
-                            55,
-                            239,
-                            21
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 289,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            25173639,
-                            1578188,
-                            53334281
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "266c1ada-1840-462f-8223-7ff2df457552"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "frontal pole",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area Fp1 (FPole)",
-                      "arealabel": "Area-Fp1",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/PTKW-R7W",
-                      "synonyms": [],
-                      "rgb": [
-                        226,
-                        14,
-                        200
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Fp1 (FPole) - left hemisphere",
-                          "rgb": [
-                            226,
-                            14,
-                            200
-                          ],
-                          "labelIndex": 212,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -16331031,
-                            64168302,
-                            549101
-                          ]
-                        },
-                        {
-                          "name": "Area Fp1 (FPole) - right hemisphere",
-                          "rgb": [
-                            226,
-                            14,
-                            200
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 212,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            18482225,
-                            63988011,
-                            -317043
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "10dc5343-941b-4e3e-80ed-df031c33bbc6"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Fp2 (FPole)",
-                      "arealabel": "Area-Fp2",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/GZW1-7R3",
-                      "synonyms": [],
-                      "rgb": [
-                        239,
-                        137,
-                        211
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Fp2 (FPole) - left hemisphere",
-                          "rgb": [
-                            239,
-                            137,
-                            211
-                          ],
-                          "labelIndex": 211,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -3739067,
-                            59074587,
-                            -1181973
-                          ]
-                        },
-                        {
-                          "name": "Area Fp2 (FPole) - right hemisphere",
-                          "rgb": [
-                            239,
-                            137,
-                            211
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 211,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            6093420,
-                            59611191,
-                            -509606
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "3bf7bde1-cc06-4657-b296-380275f9d4b8"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "precentral gyrus ",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area 4p (PreCG)",
-                      "arealabel": "Area-4p",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/5HSF-81J",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area 4p",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "861ab96a-c4b5-4ba6-bd40-1e80d4680f89"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        116,
-                        92,
-                        124
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 4p (PreCG) - left hemisphere",
-                          "rgb": [
-                            116,
-                            92,
-                            124
-                          ],
-                          "labelIndex": 123,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -36140917,
-                            -22750424,
-                            49282965
-                          ]
-                        },
-                        {
-                          "name": "Area 4p (PreCG) - right hemisphere",
-                          "rgb": [
-                            116,
-                            92,
-                            124
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 123,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            37510795,
-                            -21359659,
-                            46456250
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "82e6e826-a439-41db-84ff-4674ca3d643a"
-                        }
-                      }
-                    },
-                    {
-                      "name": "Area 4a (PreCG)",
-                      "arealabel": "Area-4a",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/PVPP-P3Q",
-                      "synonyms": [],
-                      "rgb": [
-                        118,
-                        239,
-                        183
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 4a (PreCG) - left hemisphere",
-                          "rgb": [
-                            118,
-                            239,
-                            183
-                          ],
-                          "labelIndex": 124,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -17367391,
-                            -28669064,
-                            67404682
-                          ]
-                        },
-                        {
-                          "name": "Area 4a (PreCG) - right hemisphere",
-                          "rgb": [
-                            118,
-                            239,
-                            183
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 124,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            9609157,
-                            -31334779,
-                            68068112
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "175848ff-4c55-47e3-a0ae-f905a14e03cd"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "mesial precentral gyrus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area 6mp (SMA, mesial SFG)",
-                      "arealabel": "Area-6mp",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/2E1T-47F",
-                      "synonyms": [],
-                      "rgb": [
-                        75,
-                        95,
-                        87
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 6mp (SMA, mesial SFG) - left hemisphere",
-                          "rgb": [
-                            75,
-                            95,
-                            87
-                          ],
-                          "labelIndex": 298,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -4094374,
-                            -14286751,
-                            59329220
-                          ]
-                        },
-                        {
-                          "name": "Area 6mp (SMA, mesial SFG) - right hemisphere",
-                          "rgb": [
-                            75,
-                            95,
-                            87
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 298,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            4949202,
-                            -13788668,
-                            57534028
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "def99e8e-ce8f-4a62-bd5d-739948c4b010"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "medial orbitofrontal cortex",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area Fo1 (OFC)",
-                      "arealabel": "Area-Fo1",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/H2N2-6J2",
-                      "synonyms": [],
-                      "rgb": [
-                        7,
-                        255,
-                        179
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Fo1 (OFC) - left hemisphere",
-                          "rgb": [
-                            7,
-                            255,
-                            179
-                          ],
-                          "labelIndex": 3,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -7962771,
-                            41364968,
-                            -22537687
-                          ]
-                        },
-                        {
-                          "name": "Area Fo1 (OFC) - right hemisphere",
-                          "rgb": [
-                            7,
-                            255,
-                            179
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 3,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            9705948,
-                            40760961,
-                            -22481988
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "3864cb8c-f277-4de6-9f8d-c76d71d7e9a9"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Fo3 (OFC)",
-                      "arealabel": "Area-Fo3",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/E1YQ-65U",
-                      "synonyms": [],
-                      "rgb": [
-                        182,
-                        189,
-                        250
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Fo3 (OFC) - left hemisphere",
-                          "rgb": [
-                            182,
-                            189,
-                            250
-                          ],
-                          "labelIndex": 5,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -21866985,
-                            33732378,
-                            -19882472
-                          ]
-                        },
-                        {
-                          "name": "Area Fo3 (OFC) - right hemisphere",
-                          "rgb": [
-                            182,
-                            189,
-                            250
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 5,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            22929678,
-                            33527877,
-                            -20231493
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "741f6a9e-cfd7-4173-ac7d-ee616c29555e"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Fo2 (OFC)",
-                      "arealabel": "Area-Fo2",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/3JB9-2V2",
-                      "synonyms": [],
-                      "rgb": [
-                        0,
-                        255,
-                        0
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Fo2 (OFC) - left hemisphere",
-                          "rgb": [
-                            0,
-                            255,
-                            0
-                          ],
-                          "labelIndex": 4,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -8588272,
-                            22532156,
-                            -20474464
-                          ]
-                        },
-                        {
-                          "name": "Area Fo2 (OFC) - right hemisphere",
-                          "rgb": [
-                            0,
-                            255,
-                            0
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 4,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            9164379,
-                            21928964,
-                            -20593342
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "30a04d2b-58e1-43d7-8b8f-1f0b598382d0"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "frontal operculum ",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area OP8 (Frontal Operculum)",
-                      "arealabel": "Area-OP8",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/NGF8-TA4",
-                      "synonyms": [],
-                      "rgb": [
-                        29,
-                        76,
-                        168
-                      ],
-                      "children": [
-                        {
-                          "name": "Area OP8 (Frontal Operculum) - left hemisphere",
-                          "rgb": [
-                            29,
-                            76,
-                            168
-                          ],
-                          "labelIndex": 273,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -41777921,
-                            17183344,
-                            7912847
-                          ]
-                        },
-                        {
-                          "name": "Area OP8 (Frontal Operculum) - right hemisphere",
-                          "rgb": [
-                            29,
-                            76,
-                            168
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 273,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            42725111,
-                            16774146,
-                            7832095
-                          ]
-                        }
-                      ]
-                    },
-                    {
-                      "name": "Area OP9 (Frontal Operculum)",
-                      "arealabel": "Area-OP9",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/3A30-5E4",
-                      "synonyms": [],
-                      "rgb": [
-                        175,
-                        123,
-                        34
-                      ],
-                      "children": [
-                        {
-                          "name": "Area OP9 (Frontal Operculum) - left hemisphere",
-                          "rgb": [
-                            175,
-                            123,
-                            34
-                          ],
-                          "labelIndex": 274,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -45090542,
-                            25998787,
-                            5597413
-                          ]
-                        },
-                        {
-                          "name": "Area OP9 (Frontal Operculum) - right hemisphere",
-                          "rgb": [
-                            175,
-                            123,
-                            34
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 274,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            44374928,
-                            26272467,
-                            2966228
-                          ]
-                        }
-                      ]
-                    }
-                  ]
-                },
-                {
-                  "name": "lateral orbitofrontal cortex",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area Fo5 (OFC)",
-                      "arealabel": "Area-Fo5",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/HJMY-ZZP",
-                      "synonyms": [],
-                      "rgb": [
-                        219,
-                        11,
-                        91
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Fo5 (OFC) - left hemisphere",
-                          "rgb": [
-                            219,
-                            11,
-                            91
-                          ],
-                          "labelIndex": 325,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -38055351,
-                            56315867,
-                            -8720295
-                          ]
-                        },
-                        {
-                          "name": "Area Fo5 (OFC) - right hemisphere",
-                          "rgb": [
-                            219,
-                            11,
-                            91
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 325,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            40545983,
-                            54504228,
-                            -4983615
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "3fd2e113-ec08-407b-bc88-172c9285694a"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Fo4 (OFC)",
-                      "arealabel": "Area-Fo4",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/29G0-66F",
-                      "synonyms": [],
-                      "rgb": [
-                        163,
-                        204,
-                        53
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Fo4 (OFC) - left hemisphere",
-                          "rgb": [
-                            163,
-                            204,
-                            53
-                          ],
-                          "labelIndex": 324,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -27573653,
-                            52998204,
-                            -14510778
-                          ]
-                        },
-                        {
-                          "name": "Area Fo4 (OFC) - right hemisphere",
-                          "rgb": [
-                            163,
-                            204,
-                            53
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 324,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            33636124,
-                            52034755,
-                            -15509742
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "2cdee956-207a-4d4d-b051-bef80045210b"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Fo6 (OFC)",
-                      "arealabel": "Area-Fo6",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/34Q4-H62",
-                      "synonyms": [],
-                      "rgb": [
-                        199,
-                        156,
-                        187
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Fo6 (OFC) - left hemisphere",
-                          "rgb": [
-                            199,
-                            156,
-                            187
-                          ],
-                          "labelIndex": 326,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -44272971,
-                            42876258,
-                            -12938967
-                          ]
-                        },
-                        {
-                          "name": "Area Fo6 (OFC) - right hemisphere",
-                          "rgb": [
-                            199,
-                            156,
-                            187
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 326,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            48891176,
-                            40513824,
-                            -12457353
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "330ae178-557c-4bd0-a932-f138c0a05345"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Fo7 (OFC)",
-                      "arealabel": "Area-Fo7",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/3WEV-561",
-                      "synonyms": [],
-                      "rgb": [
-                        64,
-                        211,
-                        186
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Fo7 (OFC) - left hemisphere",
-                          "rgb": [
-                            64,
-                            211,
-                            186
-                          ],
-                          "labelIndex": 327,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -36046240,
-                            37308943,
-                            -11666667
-                          ]
-                        },
-                        {
-                          "name": "Area Fo7 (OFC) - right hemisphere",
-                          "rgb": [
-                            64,
-                            211,
-                            186
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 327,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            37850755,
-                            37700302,
-                            -13777644
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "1b882148-fcdd-4dbe-b33d-659957840e9e"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                }
-              ]
-            },
-            {
-              "name": "insula",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "granular insula",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area Ig1 (Insula)",
-                      "arealabel": "Area-Ig1",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/EKV9-29D",
-                      "synonyms": [],
-                      "rgb": [
-                        18,
-                        111,
-                        40
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Ig1 (Insula) - left hemisphere",
-                          "rgb": [
-                            18,
-                            111,
-                            40
-                          ],
-                          "labelIndex": 115,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -33211215,
-                            -24171963,
-                            9923364
-                          ]
-                        },
-                        {
-                          "name": "Area Ig1 (Insula) - right hemisphere",
-                          "rgb": [
-                            18,
-                            111,
-                            40
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 115,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            33707983,
-                            -23338235,
-                            9071429
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "46cf08af-8086-4e8a-9e9f-182ca583bdf0"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Ig3 (Insula)",
-                      "arealabel": "Area-Ig3",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "",
-                      "synonyms": [],
-                      "rgb": [
-                        105,
-                        253,
-                        197
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Ig3 (Insula) - left hemisphere",
-                          "rgb": [
-                            105,
-                            253,
-                            197
-                          ],
-                          "labelIndex": 336,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -37956284,
-                            -14423497,
-                            13513661
-                          ]
-                        },
-                        {
-                          "name": "Area Ig3 (Insula) - right hemisphere",
-                          "rgb": [
-                            105,
-                            253,
-                            197
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 336,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            38219144,
-                            -13750630,
-                            13916877
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "10dba769-4f6c-40f9-8ffd-e0cce71c5adb"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Ig2 (Insula)",
-                      "arealabel": "Area-Ig2",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/662G-E0W",
-                      "synonyms": [],
-                      "rgb": [
-                        105,
-                        61,
-                        82
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Ig2 (Insula) - left hemisphere",
-                          "rgb": [
-                            105,
-                            61,
-                            82
-                          ],
-                          "labelIndex": 114,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -37117338,
-                            -17859895,
-                            5094571
-                          ]
-                        },
-                        {
-                          "name": "Area Ig2 (Insula) - right hemisphere",
-                          "rgb": [
-                            105,
-                            61,
-                            82
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 114,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            37843632,
-                            -16445145,
-                            5703657
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "49092952-1eef-4b89-b8bf-1bf1f25f149a"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "agranular insula",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area Ia (Insula)",
-                      "arealabel": "Area-Ia",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/WW8G-T2G",
-                      "synonyms": [],
-                      "rgb": [
-                        71,
-                        217,
-                        62
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Ia (Insula) - left hemisphere",
-                          "rgb": [
-                            71,
-                            217,
-                            62
-                          ],
-                          "labelIndex": 339,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -41612827,
-                            -1876485,
-                            -7019002
-                          ]
-                        },
-                        {
-                          "name": "Area Ia (Insula) - right hemisphere",
-                          "rgb": [
-                            71,
-                            217,
-                            62
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 339,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            43525000,
-                            36538,
-                            -7609615
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "110d0d7b-cb88-48ea-9caf-863f548dbe38"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "dys-/agranular insula",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area Id7 (Insula)",
-                      "arealabel": "Area-Id7",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/88QG-JMS",
-                      "synonyms": [],
-                      "rgb": [
-                        101,
-                        202,
-                        38
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Id7 (Insula) - left hemisphere",
-                          "rgb": [
-                            101,
-                            202,
-                            38
-                          ],
-                          "labelIndex": 159,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -30926962,
-                            23741297,
-                            4787031
-                          ]
-                        },
-                        {
-                          "name": "Area Id7 (Insula) - right hemisphere",
-                          "rgb": [
-                            101,
-                            202,
-                            38
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 159,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            35034429,
-                            24873239,
-                            2446009
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "3d5729f5-55c6-412a-8fc1-41a95c71b13a"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "dysgranular insula",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area Id2 (Insula)",
-                      "arealabel": "Area-Id2",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "",
-                      "synonyms": [],
-                      "rgb": [
-                        225,
-                        126,
-                        73
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Id2 (Insula) - left hemisphere",
-                          "rgb": [
-                            225,
-                            126,
-                            73
-                          ],
-                          "labelIndex": 56,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -41933981,
-                            -11436893,
-                            4091262
-                          ]
-                        },
-                        {
-                          "name": "Area Id2 (Insula) - right hemisphere",
-                          "rgb": [
-                            225,
-                            126,
-                            73
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 56,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            44043478,
-                            -10289855,
-                            3759834
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "cf9dea67-649d-4034-ae57-ec389f339277"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Id1 (Insula)",
-                      "arealabel": "Area-Id1",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/F37H-8WB",
-                      "synonyms": [],
-                      "rgb": [
-                        141,
-                        112,
-                        216
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Id1 (Insula) - left hemisphere",
-                          "rgb": [
-                            141,
-                            112,
-                            216
-                          ],
-                          "labelIndex": 116,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -40090747,
-                            -18279359,
-                            -4567616
-                          ]
-                        },
-                        {
-                          "name": "Area Id1 (Insula) - right hemisphere",
-                          "rgb": [
-                            141,
-                            112,
-                            216
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 116,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            40527825,
-                            -17443508,
-                            -4688027
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "c22055c1-514f-4096-906b-abf57286053b"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Id3 (Insula)",
-                      "arealabel": "Area-Id3",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "",
-                      "synonyms": [],
-                      "rgb": [
-                        32,
-                        32,
-                        58
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Id3 (Insula) - left hemisphere",
-                          "rgb": [
-                            32,
-                            32,
-                            58
-                          ],
-                          "labelIndex": 57,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -40414195,
-                            -7819915,
-                            -8263771
-                          ]
-                        },
-                        {
-                          "name": "Area Id3 (Insula) - right hemisphere",
-                          "rgb": [
-                            32,
-                            32,
-                            58
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 57,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            41459316,
-                            -6224335,
-                            -9042586
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "3dcfcfc2-035c-4785-a820-a671f2104ac3"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Id5 (Insula)",
-                      "arealabel": "Area-Id5",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/5CK1-B1G",
-                      "synonyms": [],
-                      "rgb": [
-                        112,
-                        6,
-                        50
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Id5 (Insula) - left hemisphere",
-                          "rgb": [
-                            112,
-                            6,
-                            50
-                          ],
-                          "labelIndex": 338,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -40174302,
-                            -3354190,
-                            741899
-                          ]
-                        },
-                        {
-                          "name": "Area Id5 (Insula) - right hemisphere",
-                          "rgb": [
-                            112,
-                            6,
-                            50
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 338,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            41094953,
-                            -2659538,
-                            607357
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "e03cd3c6-d0be-481c-b906-9b39c1d0b641"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Id6 (Insula)",
-                      "arealabel": "Area-Id6",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/54HZ-KFQ",
-                      "synonyms": [],
-                      "rgb": [
-                        138,
-                        127,
-                        119
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Id6 (Insula) - left hemisphere",
-                          "rgb": [
-                            138,
-                            127,
-                            119
-                          ],
-                          "labelIndex": 340,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -36392282,
-                            9843698,
-                            3385341
-                          ]
-                        },
-                        {
-                          "name": "Area Id6 (Insula) - right hemisphere",
-                          "rgb": [
-                            138,
-                            127,
-                            119
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 340,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            37750946,
-                            10762642,
-                            3041624
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "31bbe92d-e5e8-4cf4-be5d-e6b12c71a107"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area Id4 (Insula)",
-                      "arealabel": "Area-Id4",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/K63G-89H",
-                      "synonyms": [],
-                      "rgb": [
-                        38,
-                        174,
-                        113
-                      ],
-                      "children": [
-                        {
-                          "name": "Area Id4 (Insula) - left hemisphere",
-                          "rgb": [
-                            38,
-                            174,
-                            113
-                          ],
-                          "labelIndex": 337,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -37055965,
-                            -3505155,
-                            11422680
-                          ]
-                        },
-                        {
-                          "name": "Area Id4 (Insula) - right hemisphere",
-                          "rgb": [
-                            38,
-                            174,
-                            113
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 337,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            37461444,
-                            -3746634,
-                            10858017
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "f480ed72-5ca5-4d1f-8905-cbe9bedcfaee"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                }
-              ]
-            },
-            {
-              "name": "temporal lobe",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "superior temporal sulcus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area STS2 (STS)",
-                      "arealabel": "Area-STS2",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/KHY9-J3Y",
-                      "synonyms": [],
-                      "rgb": [
-                        62,
-                        117,
-                        123
-                      ],
-                      "children": [
-                        {
-                          "name": "Area STS2 (STS) - left hemisphere",
-                          "rgb": [
-                            62,
-                            117,
-                            123
-                          ],
-                          "labelIndex": 272,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -56352486,
-                            -8557380,
-                            -14844672
-                          ]
-                        },
-                        {
-                          "name": "Area STS2 (STS) - right hemisphere",
-                          "rgb": [
-                            62,
-                            117,
-                            123
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 272,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            56942990,
-                            -8020716,
-                            -16067930
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "278fc30f-2e24-4046-856b-95dfaf561635"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area STS1 (STS)",
-                      "arealabel": "Area-STS1",
-                      "status": "publicDOI",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/F6DF-H8P",
-                      "synonyms": [],
-                      "rgb": [
-                        205,
-                        228,
-                        4
-                      ],
-                      "children": [
-                        {
-                          "name": "Area STS1 (STS) - left hemisphere",
-                          "rgb": [
-                            205,
-                            228,
-                            4
-                          ],
-                          "labelIndex": 271,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            -54514755,
-                            -16753913,
-                            -5260713
-                          ]
-                        },
-                        {
-                          "name": "Area STS1 (STS) - right hemisphere",
-                          "rgb": [
-                            205,
-                            228,
-                            4
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 271,
-                          "children": [],
-                          "status": "publicDOI",
-                          "position": [
-                            54536567,
-                            -17992636,
-                            -5712544
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "68784b66-ff15-4b09-b28a-a2146c0f8907"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "superior temporal gyrus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area TE 3 (STG)",
-                      "arealabel": "Area-TE-3",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/BN5J-JT8",
-                      "synonyms": [],
-                      "rgb": [
-                        159,
-                        104,
-                        108
-                      ],
-                      "children": [
-                        {
-                          "name": "Area TE 3 (STG) - left hemisphere",
-                          "rgb": [
-                            159,
-                            104,
-                            108
-                          ],
-                          "labelIndex": 31,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -64398501,
-                            -12497885,
-                            1316801
-                          ]
-                        },
-                        {
-                          "name": "Area TE 3 (STG) - right hemisphere",
-                          "rgb": [
-                            159,
-                            104,
-                            108
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 31,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            65811519,
-                            -9018989,
-                            -1027621
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "7e1a3291-efdc-4ca6-a3d0-6c496c34639f"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "Heschl's gyrus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area TE 1.2 (HESCHL)",
-                      "arealabel": "Area-TE-1.2",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/R382-617",
-                      "synonyms": [],
-                      "rgb": [
-                        202,
-                        251,
-                        192
-                      ],
-                      "children": [
-                        {
-                          "name": "Area TE 1.2 (HESCHL) - left hemisphere",
-                          "rgb": [
-                            202,
-                            251,
-                            192
-                          ],
-                          "labelIndex": 30,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -50810427,
-                            -6551343,
-                            1635071
-                          ]
-                        },
-                        {
-                          "name": "Area TE 1.2 (HESCHL) - right hemisphere",
-                          "rgb": [
-                            202,
-                            251,
-                            192
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 30,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            55870330,
-                            -2672527,
-                            52747
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "677cd48c-70fa-4bbd-9f0a-ffdc7744bc0f"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area TE 1.1 (HESCHL)",
-                      "arealabel": "Area-TE-1.1",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/4HA3-BBE",
-                      "synonyms": [],
-                      "rgb": [
-                        8,
-                        113,
-                        68
-                      ],
-                      "children": [
-                        {
-                          "name": "Area TE 1.1 (HESCHL) - left hemisphere",
-                          "rgb": [
-                            8,
-                            113,
-                            68
-                          ],
-                          "labelIndex": 33,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -38219760,
-                            -27125577,
-                            10774700
-                          ]
-                        },
-                        {
-                          "name": "Area TE 1.1 (HESCHL) - right hemisphere",
-                          "rgb": [
-                            8,
-                            113,
-                            68
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 33,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            40719340,
-                            -24106132,
-                            10308962
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "e2969911-77eb-4b21-af70-216cab5285b1"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area TE 1.0 (HESCHL)",
-                      "arealabel": "Area-TE-1.0",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/MV3G-RET",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area Te1",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "f424643e-9baf-4c50-9417-db1ac33dcd3e"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        252,
-                        84,
-                        222
-                      ],
-                      "children": [
-                        {
-                          "name": "Area TE 1.0 (HESCHL) - left hemisphere",
-                          "rgb": [
-                            252,
-                            84,
-                            222
-                          ],
-                          "labelIndex": 27,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -46560150,
-                            -17508772,
-                            7622807
-                          ]
-                        },
-                        {
-                          "name": "Area TE 1.0 (HESCHL) - right hemisphere",
-                          "rgb": [
-                            252,
-                            84,
-                            222
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 27,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            50392116,
-                            -12932573,
-                            5942946
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "13e21153-2ba8-4212-b172-8894f1012225"
-                        }
-                      }
-                    }
-                  ]
-                },
-                {
-                  "name": "fusiform gyrus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area FG2 (FusG)",
-                      "arealabel": "Area-FG2",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/F2JH-KVV",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area FG2",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "8f436328-4251-4706-ae38-767e1ab21c6f"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        67,
-                        94,
-                        149
-                      ],
-                      "children": [
-                        {
-                          "name": "Area FG2 (FusG) - left hemisphere",
-                          "rgb": [
-                            67,
-                            94,
-                            149
-                          ],
-                          "labelIndex": 106,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -43549584,
-                            -65531770,
-                            -16708135
-                          ]
-                        },
-                        {
-                          "name": "Area FG2 (FusG) - right hemisphere",
-                          "rgb": [
-                            67,
-                            94,
-                            149
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 106,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            44839825,
-                            -63606518,
-                            -17316773
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "6e7a0441-4baa-4355-921b-50d23d07d50f"
-                        }
-                      }
-                    },
-                    {
-                      "name": "Area FG3 (FusG)",
-                      "arealabel": "Area-FG3",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/Z0F6-0SY",
-                      "synonyms": [],
-                      "rgb": [
-                        120,
-                        147,
-                        37
-                      ],
-                      "children": [
-                        {
-                          "name": "Area FG3 (FusG) - left hemisphere",
-                          "rgb": [
-                            120,
-                            147,
-                            37
-                          ],
-                          "labelIndex": 239,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -29844935,
-                            -45368421,
-                            -14184493
-                          ]
-                        },
-                        {
-                          "name": "Area FG3 (FusG) - right hemisphere",
-                          "rgb": [
-                            120,
-                            147,
-                            37
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 239,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            31148061,
-                            -44485336,
-                            -15533822
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "023f8ef7-c266-4c45-8bf2-4a17dc52985b"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area FG1 (FusG)",
-                      "arealabel": "Area-FG1",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/5ZVQ-R8R",
-                      "synonyms": [],
-                      "rgb": [
-                        131,
-                        183,
-                        58
-                      ],
-                      "children": [
-                        {
-                          "name": "Area FG1 (FusG) - left hemisphere",
-                          "rgb": [
-                            131,
-                            183,
-                            58
-                          ],
-                          "labelIndex": 107,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -29006116,
-                            -66264526,
-                            -12290010
-                          ]
-                        },
-                        {
-                          "name": "Area FG1 (FusG) - right hemisphere",
-                          "rgb": [
-                            131,
-                            183,
-                            58
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 107,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            32840456,
-                            -64340456,
-                            -12612536
-                          ]
-                        }
-                      ],
-                      "relatedAreas": [
-                        {
-                          "name": "Area FG1",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "6318e160-4ad2-4eec-8a2e-2df6fe07d8f4"
-                            }
-                          }
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "39fb34a8-fd6d-4fba-898c-2f6167e40459"
-                        }
-                      }
-                    },
-                    {
-                      "name": "Area FG4 (FusG)",
-                      "arealabel": "Area-FG4",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/13RG-FYV",
-                      "synonyms": [],
-                      "relatedAreas": [
-                        {
-                          "name": "Area FG2",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "8f436328-4251-4706-ae38-767e1ab21c6f"
-                            }
-                          }
-                        }
-                      ],
-                      "rgb": [
-                        170,
-                        220,
-                        175
-                      ],
-                      "children": [
-                        {
-                          "name": "Area FG4 (FusG) - left hemisphere",
-                          "rgb": [
-                            170,
-                            220,
-                            175
-                          ],
-                          "labelIndex": 238,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -43204016,
-                            -44325167,
-                            -20016734
-                          ]
-                        },
-                        {
-                          "name": "Area FG4 (FusG) - right hemisphere",
-                          "rgb": [
-                            170,
-                            220,
-                            175
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 238,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            43609694,
-                            -43478025,
-                            -22392295
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "fa602743-5f6e-49d1-9734-29dffaa95ff5"
-                        }
-                      }
-                    }
-                  ]
-                }
-              ]
-            },
-            {
-              "name": "limbic lobe",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "cingulate gyrus, frontal part",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Area p24c (pACC)",
-                      "arealabel": "Area-p24c",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/QA7B-JM9",
-                      "synonyms": [],
-                      "rgb": [
-                        241,
-                        164,
-                        195
-                      ],
-                      "children": [
-                        {
-                          "name": "Area p24c (pACC) - left hemisphere",
-                          "rgb": [
-                            241,
-                            164,
-                            195
-                          ],
-                          "labelIndex": 232,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -8144989,
-                            41168443,
-                            14314854
-                          ]
-                        },
-                        {
-                          "name": "Area p24c (pACC) - right hemisphere",
-                          "rgb": [
-                            241,
-                            164,
-                            195
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 232,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            9856593,
-                            40780558,
-                            12002406
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "e6507a3d-f2f8-4c17-84ff-0e7297e836a0"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area 25 (sACC)",
-                      "arealabel": "Area-25",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/51AM-WN4",
-                      "synonyms": [],
-                      "rgb": [
-                        170,
-                        68,
-                        220
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 25 (sACC) - left hemisphere",
-                          "rgb": [
-                            170,
-                            68,
-                            220
-                          ],
-                          "labelIndex": 184,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -3522692,
-                            13560250,
-                            -11860720
-                          ]
-                        },
-                        {
-                          "name": "Area 25 (sACC) - right hemisphere",
-                          "rgb": [
-                            170,
-                            68,
-                            220
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 184,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            4564663,
-                            12954463,
-                            -12174863
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "9010ef76-accd-4308-9951-f37b6a10f42b"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area p24ab (pACC)",
-                      "arealabel": "Area-p24ab",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/DHXC-2KN",
-                      "synonyms": [],
-                      "rgb": [
-                        153,
-                        195,
-                        229
-                      ],
-                      "children": [
-                        {
-                          "name": "Area p24ab (pACC) - left hemisphere",
-                          "rgb": [
-                            153,
-                            195,
-                            229
-                          ],
-                          "labelIndex": 231,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -2244059,
-                            38783168,
-                            6389109
-                          ]
-                        },
-                        {
-                          "name": "Area p24ab (pACC) - right hemisphere",
-                          "rgb": [
-                            153,
-                            195,
-                            229
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 231,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            3429274,
-                            38385609,
-                            7809963
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "5dbb1035-487c-4f43-b551-ccadcf058340"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area s32 (sACC)",
-                      "arealabel": "Area-s32",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/XTRR-172",
-                      "synonyms": [],
-                      "rgb": [
-                        193,
-                        94,
-                        250
-                      ],
-                      "children": [
-                        {
-                          "name": "Area s32 (sACC) - left hemisphere",
-                          "rgb": [
-                            193,
-                            94,
-                            250
-                          ],
-                          "labelIndex": 46,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -6738110,
-                            35256183,
-                            -11765377
-                          ]
-                        },
-                        {
-                          "name": "Area s32 (sACC) - right hemisphere",
-                          "rgb": [
-                            193,
-                            94,
-                            250
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 46,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            4307795,
-                            34460360,
-                            -12141905
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "61b44255-ae3a-4a23-b1bc-7d303a48dbd3"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area 33 (ACC)",
-                      "arealabel": "Area-33",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/X9QP-C6F",
-                      "synonyms": [],
-                      "rgb": [
-                        51,
-                        57,
-                        245
-                      ],
-                      "children": [
-                        {
-                          "name": "Area 33 (ACC) - left hemisphere",
-                          "rgb": [
-                            51,
-                            57,
-                            245
-                          ],
-                          "labelIndex": 39,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -4861218,
-                            14163048,
-                            15911877
-                          ]
-                        },
-                        {
-                          "name": "Area 33 (ACC) - right hemisphere",
-                          "rgb": [
-                            51,
-                            57,
-                            245
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 39,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            5087045,
-                            15562321,
-                            16125051
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "b83a3330-b80e-42a0-b8d2-82f38784aa1d"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area p32 (pACC)",
-                      "arealabel": "Area-p32",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/3JX0-7E5",
-                      "synonyms": [],
-                      "rgb": [
-                        87,
-                        135,
-                        14
-                      ],
-                      "children": [
-                        {
-                          "name": "Area p32 (pACC) - left hemisphere",
-                          "rgb": [
-                            87,
-                            135,
-                            14
-                          ],
-                          "labelIndex": 47,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -6122937,
-                            49256108,
-                            11929896
-                          ]
-                        },
-                        {
-                          "name": "Area p32 (pACC) - right hemisphere",
-                          "rgb": [
-                            87,
-                            135,
-                            14
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 47,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            7759613,
-                            48520792,
-                            12436058
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "b09aaa77-f41b-4008-b8b9-f984b0417cf3"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Area s24 (sACC)",
-                      "arealabel": "Area-s24",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/HXWM-NRX",
-                      "synonyms": [],
-                      "rgb": [
-                        133,
-                        34,
-                        201
-                      ],
-                      "children": [
-                        {
-                          "name": "Area s24 (sACC) - left hemisphere",
-                          "rgb": [
-                            133,
-                            34,
-                            201
-                          ],
-                          "labelIndex": 183,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -3247887,
-                            24596479,
-                            -9615493
-                          ]
-                        },
-                        {
-                          "name": "Area s24 (sACC) - right hemisphere",
-                          "rgb": [
-                            133,
-                            34,
-                            201
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 183,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            3259899,
-                            23813535,
-                            -9257019
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "d4ea6cc5-1e1d-4212-966f-81fed01eb648"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "hippocampal formation",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "HATA (Hippocampus)",
-                      "arealabel": "HATA",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/M1XP-VSQ",
-                      "synonyms": [],
-                      "rgb": [
-                        137,
-                        12,
-                        73
-                      ],
-                      "children": [
-                        {
-                          "name": "HATA (Hippocampus) - left hemisphere",
-                          "rgb": [
-                            137,
-                            12,
-                            73
-                          ],
-                          "labelIndex": 68,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -13947917,
-                            -9576389,
-                            -18975694
-                          ]
-                        },
-                        {
-                          "name": "HATA (Hippocampus) - right hemisphere",
-                          "rgb": [
-                            137,
-                            12,
-                            73
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 68,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            15080586,
-                            -8358974,
-                            -17871795
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "9ec4a423-70fa-43cd-90b3-fbc26a3cbc6c"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Entorhinal Cortex",
-                      "arealabel": "Entorhinal-Cortex",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/KNXY-B1Z",
-                      "synonyms": [],
-                      "rgb": [
-                        35,
-                        159,
-                        214
-                      ],
-                      "children": [
-                        {
-                          "name": "Entorhinal Cortex - left hemisphere",
-                          "rgb": [
-                            35,
-                            159,
-                            214
-                          ],
-                          "labelIndex": 60,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -20926052,
-                            -6082765,
-                            -33357509
-                          ]
-                        },
-                        {
-                          "name": "Entorhinal Cortex - right hemisphere",
-                          "rgb": [
-                            35,
-                            159,
-                            214
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 60,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            22877203,
-                            -3501469,
-                            -32577556
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "030827d4-e0d1-4406-b71f-3f58dc2f9cca"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "CA (Hippocampus)",
-                      "arealabel": "CA",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "relatedAreas": [
-                        {
-                          "name": "CA1 (Hippocampus)",
-                          "fullId": {
-                            "kg": {
-                              "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                              "kgId": "bfc0beb7-310c-4c57-b810-2adc464bd02c"
-                            }
-                          }
-                        }
-                      ],
-                      "doi": "https://doi.org/10.25493/B85T-D88",
-                      "synonyms": [],
-                      "rgb": [
-                        250,
-                        191,
-                        217
-                      ],
-                      "children": [
-                        {
-                          "name": "CA (Hippocampus) - left hemisphere",
-                          "rgb": [
-                            250,
-                            191,
-                            217
-                          ],
-                          "labelIndex": 191,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -27476326,
-                            -26068931,
-                            -11082817
-                          ]
-                        },
-                        {
-                          "name": "CA (Hippocampus) - right hemisphere",
-                          "rgb": [
-                            250,
-                            191,
-                            217
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 191,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            29426785,
-                            -24801145,
-                            -11142814
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "a0d14d3e-bc30-41cf-8b28-540067897f80"
-                        }
-                      }
-                    },
-                    {
-                      "name": "DG (Hippocampus)",
-                      "arealabel": "DG",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/M8JP-XQT",
-                      "synonyms": [],
-                      "rgb": [
-                        149,
-                        55,
-                        120
-                      ],
-                      "children": [
-                        {
-                          "name": "DG (Hippocampus) - left hemisphere",
-                          "rgb": [
-                            149,
-                            55,
-                            120
-                          ],
-                          "labelIndex": 61,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -26946498,
-                            -26708171,
-                            -9589494
-                          ]
-                        },
-                        {
-                          "name": "DG (Hippocampus) - right hemisphere",
-                          "rgb": [
-                            149,
-                            55,
-                            120
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 61,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            28316456,
-                            -24674684,
-                            -10596203
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "0bea7e03-bfb2-4907-9d45-db9071ce627d"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Subiculum (Hippocampus)",
-                      "arealabel": "Subiculum",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/QKJH-F45",
-                      "synonyms": [],
-                      "rgb": [
-                        111,
-                        125,
-                        219
-                      ],
-                      "children": [
-                        {
-                          "name": "Subiculum (Hippocampus) - left hemisphere",
-                          "rgb": [
-                            111,
-                            125,
-                            219
-                          ],
-                          "labelIndex": 192,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -20352171,
-                            -24057796,
-                            -16326997
-                          ]
-                        },
-                        {
-                          "name": "Subiculum (Hippocampus) - right hemisphere",
-                          "rgb": [
-                            111,
-                            125,
-                            219
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 192,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            22543982,
-                            -23195614,
-                            -15923499
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "7e2dab4c-a140-440d-a322-c1679adef2d4"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name": "metencephalon",
-      "status": null,
-      "labelIndex": null,
-      "synonyms": [],
-      "rgb": null,
-      "children": [
-        {
-          "name": "cerebellum",
-          "status": null,
-          "labelIndex": null,
-          "synonyms": [],
-          "rgb": null,
-          "children": [
-            {
-              "name": "cerebellar nuclei",
-              "status": null,
-              "labelIndex": null,
-              "synonyms": [],
-              "rgb": null,
-              "children": [
-                {
-                  "name": "globose nucleus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Interposed Nucleus (Cerebellum)",
-                      "arealabel": "Interposed-Nucleus",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/8PTB-JDH",
-                      "synonyms": [],
-                      "rgb": [
-                        170,
-                        29,
-                        10
-                      ],
-                      "children": [
-                        {
-                          "name": "Interposed Nucleus (Cerebellum) - left hemisphere",
-                          "rgb": [
-                            170,
-                            29,
-                            10
-                          ],
-                          "labelIndex": 251,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -8457921,
-                            -55262376,
-                            -30235149
-                          ]
-                        },
-                        {
-                          "name": "Interposed Nucleus (Cerebellum) - right hemisphere",
-                          "rgb": [
-                            170,
-                            29,
-                            10
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 251,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            7917989,
-                            -54201058,
-                            -31489418
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "85e7bb13-4b73-4f6f-8222-3adb7b800788"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "dentate nucleus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Dorsal Dentate Nucleus (Cerebellum)",
-                      "arealabel": "Dorsal-Dentate-Nucleus",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/M5QG-SHH",
-                      "synonyms": [],
-                      "rgb": [
-                        89,
-                        201,
-                        99
-                      ],
-                      "children": [
-                        {
-                          "name": "Dorsal Dentate Nucleus (Cerebellum) - left hemisphere",
-                          "rgb": [
-                            89,
-                            201,
-                            99
-                          ],
-                          "labelIndex": 240,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -16612782,
-                            -56036341,
-                            -36064536
-                          ]
-                        },
-                        {
-                          "name": "Dorsal Dentate Nucleus (Cerebellum) - right hemisphere",
-                          "rgb": [
-                            89,
-                            201,
-                            99
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 240,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            15388967,
-                            -58303395,
-                            -36586280
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "58095aef-da69-43d4-887c-009c095cecce"
-                        }
-                      },
-                      "relatedAreas": []
-                    },
-                    {
-                      "name": "Ventral Dentate Nucleus (Cerebellum)",
-                      "arealabel": "Ventral-Dentate-Nucleus",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/FQE5-5QR",
-                      "synonyms": [],
-                      "rgb": [
-                        39,
-                        129,
-                        9
-                      ],
-                      "children": [
-                        {
-                          "name": "Ventral Dentate Nucleus (Cerebellum) - left hemisphere",
-                          "rgb": [
-                            39,
-                            129,
-                            9
-                          ],
-                          "labelIndex": 241,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -13112867,
-                            -56176072,
-                            -29957111
-                          ]
-                        },
-                        {
-                          "name": "Ventral Dentate Nucleus (Cerebellum) - right hemisphere",
-                          "rgb": [
-                            39,
-                            129,
-                            9
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 241,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            12107011,
-                            -55974170,
-                            -31385609
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "57282342-5a75-4e07-bcdc-2d368c517b71"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "fastigial nucleus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Fastigial Nucleus (Cerebellum)",
-                      "arealabel": "Fastigial-Nucleus",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/3YJ9-S6G",
-                      "synonyms": [],
-                      "rgb": [
-                        200,
-                        100,
-                        10
-                      ],
-                      "children": [
-                        {
-                          "name": "Fastigial Nucleus (Cerebellum) - left hemisphere",
-                          "rgb": [
-                            200,
-                            100,
-                            10
-                          ],
-                          "labelIndex": 219,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -3828877,
-                            -53149733,
-                            -29013369
-                          ]
-                        },
-                        {
-                          "name": "Fastigial Nucleus (Cerebellum) - right hemisphere",
-                          "rgb": [
-                            200,
-                            100,
-                            10
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 219,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            3011287,
-                            -53069977,
-                            -29040632
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "e8abfe3d-8b64-45c2-8853-314d82873273"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                },
-                {
-                  "name": "emboliform nucleus",
-                  "status": null,
-                  "labelIndex": null,
-                  "synonyms": [],
-                  "rgb": null,
-                  "children": [
-                    {
-                      "name": "Interposed Nucleus (Cerebellum)",
-                      "arealabel": "Interposed-Nucleus",
-                      "status": "publicP",
-                      "labelIndex": null,
-                      "doi": "https://doi.org/10.25493/8PTB-JDH",
-                      "synonyms": [],
-                      "rgb": [
-                        170,
-                        29,
-                        10
-                      ],
-                      "children": [
-                        {
-                          "name": "Interposed Nucleus (Cerebellum) - left hemisphere",
-                          "rgb": [
-                            170,
-                            29,
-                            10
-                          ],
-                          "labelIndex": 251,
-                          "ngId": "jubrain colin v18 left",
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            -8457921,
-                            -55262376,
-                            -30235149
-                          ]
-                        },
-                        {
-                          "name": "Interposed Nucleus (Cerebellum) - right hemisphere",
-                          "rgb": [
-                            170,
-                            29,
-                            10
-                          ],
-                          "ngId": "jubrain colin v18 right",
-                          "labelIndex": 251,
-                          "children": [],
-                          "status": "publicP",
-                          "position": [
-                            7917989,
-                            -54201058,
-                            -31489418
-                          ]
-                        }
-                      ],
-                      "fullId": {
-                        "kg": {
-                          "kgSchema": "minds/core/parcellationregion/v1.0.0",
-                          "kgId": "85e7bb13-4b73-4f6f-8222-3adb7b800788"
-                        }
-                      },
-                      "relatedAreas": []
-                    }
-                  ]
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}
diff --git a/src/api/service.ts b/src/api/service.ts
index 89a5f262aef9a15a03b795cc380e4286c3f0acc3..6adceb099682923f5306647b857346dca23b1aa3 100644
--- a/src/api/service.ts
+++ b/src/api/service.ts
@@ -1,27 +1,41 @@
 import { Inject, Injectable, Optional } from "@angular/core";
 import { select, Store } from "@ngrx/store";
 import { Subject } from "rxjs";
-import { distinctUntilChanged, filter, map, take } from "rxjs/operators";
-import { SAPI, SapiAtlasModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel, OpenMINDSCoordinatePoint } from "src/atlasComponents/sapi";
-import { SxplrCoordinatePointExtension } from "src/atlasComponents/sapi/type";
+import { distinctUntilChanged, filter, map, switchMap, take } from "rxjs/operators";
+import { SAPI } from "src/atlasComponents/sapi";
+import { Point } from "src/atlasComponents/sapi/sxplrTypes";
+import { SxplrCoordinatePointExtension } from "src/atlasComponents/sapi/typeV3";
 import { MainState, atlasSelection, userInteraction, annotation, atlasAppearance } from "src/state"
 import { ClickInterceptor, CLICK_INTERCEPTOR_INJECTOR } from "src/util";
 import { CANCELLABLE_DIALOG, CANCELLABLE_DIALOG_OPTS } from "src/util/interfaces";
 import { Booth, BoothResponder, createBroadcastingJsonRpcChannel, JRPCRequest, JRPCResp } from "./jsonrpc"
+import { translateV3Entities } from "src/atlasComponents/sapi/translateV3"
+import { PathReturn } from "src/atlasComponents/sapi/typeV3"
 
 export type NAMESPACE_TYPE = "sxplr"
 export const namespace: NAMESPACE_TYPE = "sxplr"
 const nameSpaceRegex = new RegExp(`^${namespace}`)
 
-type AddableLayer = atlasAppearance.NgLayerCustomLayer
+/**
+ * plugin type
+ * previously, full json was used
+ * in future, sxplr jsons will be used
+ * but for backwards compatibility, for now, full json will be retrieved and returned
+ */
+type PTAtlas = PathReturn<"/atlases/{atlas_id}">
+type PTSpace = PathReturn<"/spaces/{space_id}">
+type PTParcellation = PathReturn<"/parcellations/{parcellation_id}">
+type PTRegion = PathReturn<"/regions/{region_id}">
+
+type AddableLayer = atlasAppearance.const.NgLayerCustomLayer
 
 type AtId = {
   "@id": string
 }
 
 type RequestUserTypes = {
-  region: SapiRegionModel
-  point: OpenMINDSCoordinatePoint
+  region: PTRegion
+  point: Point
   confirm: void
   input: string
 }
@@ -38,15 +52,15 @@ type RequestUser<T extends keyof RequestUserTypes> = {
 export type ApiBoothEvents = {
   getAllAtlases: {
     request: null
-    response: SapiAtlasModel[]
+    response: PTAtlas[]
   }
   getSupportedTemplates: {
     request: null
-    response: SapiSpaceModel[]
+    response: PTSpace[]
   }
   getSupportedParcellations: {
     request: null
-    response: SapiParcellationModel[]
+    response: PTParcellation[]
   }
 
   selectAtlas: {
@@ -72,7 +86,7 @@ export type ApiBoothEvents = {
       type: 'region' | 'point'
       message: string
     }
-    response: SapiRegionModel | OpenMINDSCoordinatePoint
+    response: PTRegion | Point
   }
   
   addAnnotations: {
@@ -135,11 +149,11 @@ export type HeartbeatEvents = {
 }
 
 export type BroadCastingApiEvents = {
-  atlasSelected: SapiAtlasModel
-  templateSelected: SapiSpaceModel
-  parcellationSelected: SapiParcellationModel
-  allRegions: SapiRegionModel[]
-  regionsSelected: SapiRegionModel[]
+  atlasSelected: PTAtlas
+  templateSelected: PTSpace
+  parcellationSelected: PTParcellation
+  allRegions: PTRegion[]
+  regionsSelected: PTRegion[]
   navigation: MainState['[state.atlasSelection]']['navigation']
 }
 
@@ -187,13 +201,13 @@ export class ApiService implements BoothResponder<ApiBoothEvents>{
     const { type } = this.requestUserQueue[0]
 
     if (type === "region") {
-      let moRegion: SapiRegionModel
+      let moRegion: PTRegion
       this.store.pipe(
         select(userInteraction.selectors.mousingOverRegions),
         filter(val => val.length > 0),
         map(val => val[0]),
         take(1)
-      ).subscribe(region => moRegion = region)
+      ).subscribe(region => moRegion = translateV3Entities.retrieveRegion(region))
       if (!!moRegion) {
         this.fulfillUserRequest(null, moRegion)
         return false
@@ -201,7 +215,7 @@ export class ApiService implements BoothResponder<ApiBoothEvents>{
     }
 
     if (type === "point") {
-      let point: OpenMINDSCoordinatePoint
+      let point: Point
       this.store.pipe(
         select(userInteraction.selectors.mousingOverPosition),
         take(1)
@@ -249,27 +263,27 @@ export class ApiService implements BoothResponder<ApiBoothEvents>{
     this.store.pipe(
       select(atlasSelection.selectors.selectedAtlas)
     ).subscribe(atlas => {
-      this.broadcastCh.emit('atlasSelected', atlas)
+      this.broadcastCh.emit('atlasSelected', translateV3Entities.retrieveAtlas(atlas))
     })
     this.store.pipe(
       select(atlasSelection.selectors.selectedParcellation)
     ).subscribe(parcellation => {
-      this.broadcastCh.emit('parcellationSelected', parcellation)
+      this.broadcastCh.emit('parcellationSelected', translateV3Entities.retrieveParcellation(parcellation))
     })
     this.store.pipe(
       select(atlasSelection.selectors.selectedTemplate)
     ).subscribe(template => {
-      this.broadcastCh.emit('templateSelected', template)
+      this.broadcastCh.emit('templateSelected', translateV3Entities.retrieveTemplate(template))
     })
     this.store.pipe(
       select(atlasSelection.selectors.selectedRegions)
     ).subscribe(regions => {
-      this.broadcastCh.emit('regionsSelected', regions)
+      this.broadcastCh.emit('regionsSelected', regions.map(reg => translateV3Entities.retrieveRegion(reg)))
     })
     this.store.pipe(
       select(atlasSelection.selectors.selectedParcAllRegions)
     ).subscribe(regions => {
-      this.broadcastCh.emit('allRegions', regions)
+      this.broadcastCh.emit('allRegions', regions.map(reg => translateV3Entities.retrieveRegion(reg)))
     })
     this.store.pipe(
       select(atlasSelection.selectors.navigation)
@@ -295,32 +309,34 @@ export class ApiService implements BoothResponder<ApiBoothEvents>{
       ).toPromise()
       return {
         id: event.id,
-        result: atlases,
+        result: atlases.map(atlas => translateV3Entities.retrieveAtlas(atlas)),
         jsonrpc: '2.0'
       }
     }
     case 'getSupportedParcellations': {
       if (!event.id) return
       const parcs = await this.store.pipe(
-        atlasSelection.fromRootStore.allAvailParcs(this.sapi),
-        take(1)
+        select(atlasSelection.selectors.selectedAtlas),
+        switchMap(atlas => this.sapi.getAllParcellations(atlas)),
+        take(1),
       ).toPromise()
       return {
         id: event.id,
         jsonrpc: '2.0',
-        result: parcs
+        result: parcs.map(parc => translateV3Entities.retrieveParcellation(parc))
       }
     }
     case 'getSupportedTemplates': {
       if (!event.id) return
       const spaces = await this.store.pipe(
-        atlasSelection.fromRootStore.allAvailSpaces(this.sapi),
+        select(atlasSelection.selectors.selectedAtlas),
+        switchMap(atlas => this.sapi.getAllSpaces(atlas)),
         take(1)
       ).toPromise()
       return {
         id: event.id,
         jsonrpc: '2.0',
-        result: spaces
+        result: spaces.map(spc =>translateV3Entities.retrieveTemplate(spc))
       }
     }
     case 'selectAtlas': {
diff --git a/src/atlasComponents/annotations/annotation.service.ts b/src/atlasComponents/annotations/annotation.service.ts
index fd67601ee087cf32ddd230d7e42b3ca9fdaea421..3969bc420cdea13c69fef90bbc765de4b047e0de 100644
--- a/src/atlasComponents/annotations/annotation.service.ts
+++ b/src/atlasComponents/annotations/annotation.service.ts
@@ -112,12 +112,12 @@ export class AnnotationLayer {
     this.nglayer && this.nglayer.setVisible(flag)
   }
   dispose() {
-    this.nglayer = null
     AnnotationLayer.Map.delete(this.name)
     this._onHover.complete()
     while(this.onDestroyCb.length > 0) this.onDestroyCb.pop()()
     try {
       this.viewer.layerManager.removeManagedLayer(this.nglayer)
+      this.nglayer = null
     // eslint-disable-next-line no-empty
     } catch (e) {
 
diff --git a/src/atlasComponents/sapi/constants.ts b/src/atlasComponents/sapi/constants.ts
index b31cfc1b14703de11f2c5e2efaee1cacb369347b..6ec87c2352f8a3885b2f872a86f11c8db4fae33b 100644
--- a/src/atlasComponents/sapi/constants.ts
+++ b/src/atlasComponents/sapi/constants.ts
@@ -8,9 +8,11 @@ export const IDS = {
     MNI152: "minds/core/referencespace/v1.0.0/dafcffc5-4826-4bf1-8ff6-46b8a31ff8e2",
     COLIN27: "minds/core/referencespace/v1.0.0/7f39f7be-445b-47c0-9791-e971c0b6d992",
     WAXHOLM: "minds/core/referencespace/v1.0.0/d5717c4a-0fa1-46e6-918c-b8003069ade8",
+    MEBRAINS: "minds/core/referencespace/v1.0.0/MEBRAINS",
   },
   PARCELLATION: {
     JBA29: "minds/core/parcellationatlas/v1.0.0/94c1125b-b87e-45e4-901c-00daee7f2579-290",
+    JBA30: "minds/core/parcellationatlas/v1.0.0/94c1125b-b87e-45e4-901c-00daee7f2579-300",
     WAXHOLMV4: "minds/core/parcellationatlas/v1.0.0/ebb923ba-b4d5-4b82-8088-fa9215c2e1fe-v4",
   }
 }
diff --git a/src/atlasComponents/sapi/core/base.ts b/src/atlasComponents/sapi/core/base.ts
new file mode 100644
index 0000000000000000000000000000000000000000..b5fbcaefc04fc33512ae9ebb4d50cd42fdef6784
--- /dev/null
+++ b/src/atlasComponents/sapi/core/base.ts
@@ -0,0 +1,33 @@
+import { Observable } from "rxjs"
+import { SAPI } from "../sapi.service"
+import { RouteParam } from "../typeV3"
+
+const AllFeatures = {
+  CorticalProfile: "CorticalProfile",
+  EbrainsDataFeature: "EbrainsDataFeature",
+  RegionalConnectivity: "RegionalConnectivity",
+  Tabular: "Tabular",
+  // GeneExpressions: "GeneExpressions",
+  Image: "Image",
+} as const
+
+type AF = keyof typeof AllFeatures
+
+export abstract class SAPIBase<T extends AF> {
+
+  public abstract features$: Observable<string[]>
+
+  constructor(
+    private _sapi: SAPI,
+  ){}
+
+  getFeatures(featureType: T, param: RouteParam<`/feature/${T}`>) {
+    const route = `/feature/${featureType}` as `/feature/${T}`
+    return this._sapi.v3Get(route, param)
+  }
+  
+  getFeatureInstance(featureType: T, param: RouteParam<`/feature/${T}/{feature_id}`>) {
+    const route = `/feature/${featureType}/{feature_id}` as `/feature/${T}/{feature_id}`
+    return this._sapi.v3Get(route, param)
+  }
+}
diff --git a/src/atlasComponents/sapi/core/sapiParcellation.ts b/src/atlasComponents/sapi/core/sapiParcellation.ts
index 085c5a82b8136901136593aa0b2933d992efb22e..21b2b42eca63419aab37f598292c095059d97066 100644
--- a/src/atlasComponents/sapi/core/sapiParcellation.ts
+++ b/src/atlasComponents/sapi/core/sapiParcellation.ts
@@ -1,73 +1,34 @@
-import { Observable } from "rxjs"
-import { switchMap } from "rxjs/operators"
-import { SapiVolumeModel } from ".."
+import { Observable, of } from "rxjs"
 import { SAPI } from "../sapi.service"
-import {SapiParcellationFeatureModel, SapiParcellationModel, SapiQueryPriorityArg, SapiRegionModel} from "../type"
+import { SapiParcellationModel } from "../typeV3"
+import { SAPIBase } from "./base"
 
-type PaginationQuery = {
-  size: number
-  page: number
-}
+/**
+ * All valid parcellation features
+ */
+const ParcellationFeatures = {
+  RegionalConnectivity: "RegionalConnectivity",
+} as const
 
-type ParcellationPaginationQuery = {
-  type?: string
-  size?: number
-  page: number
-}
+export type PF = keyof typeof ParcellationFeatures
 
-export class SAPIParcellation{
+export class SAPIParcellation extends SAPIBase<PF>{
   constructor(private sapi: SAPI, public atlasId: string, public id: string){
-
+    super(sapi)
   }
 
-  getDetail(queryParam?: SapiQueryPriorityArg): Observable<SapiParcellationModel>{
-    return SAPI.BsEndpoint$.pipe(
-      switchMap(endpt => this.sapi.httpGet<SapiParcellationModel>(
-        `${endpt}/atlases/${encodeURIComponent(this.atlasId)}/parcellations/${encodeURIComponent(this.id)}`,
-        null,
-        queryParam
-      ))
-    )
+  getDetail(): Observable<SapiParcellationModel>{
+    return this.sapi.v3Get(`/parcellations/{parcellation_id}`, {
+      path: {
+        parcellation_id: this.id
+      },
+    })
   }
 
-  getRegions(spaceId: string, queryParam?: SapiQueryPriorityArg): Observable<SapiRegionModel[]> {
-    return SAPI.BsEndpoint$.pipe(
-      switchMap(endpt => this.sapi.httpGet<SapiRegionModel[]>(
-        `${endpt}/atlases/${encodeURIComponent(this.atlasId)}/parcellations/${encodeURIComponent(this.id)}/regions`,
-        {
-          space_id: spaceId
-        },
-        queryParam
-      ))
-    )
-  }
-  getVolumes(): Observable<SapiVolumeModel[]>{
-    return SAPI.BsEndpoint$.pipe(
-      switchMap(endpt => this.sapi.httpGet<SapiVolumeModel[]>(
-        `${endpt}/atlases/${encodeURIComponent(this.atlasId)}/parcellations/${encodeURIComponent(this.id)}/volumes`
-      ))
-    ) 
+  getLabelledMap(spaceId: string) {
+    return this.sapi.getMap(this.id, spaceId, "LABELLED")
   }
 
-  getFeatures(parcPagination?: ParcellationPaginationQuery, queryParam?: SapiQueryPriorityArg): Observable<SapiParcellationFeatureModel[]> {
-    return SAPI.BsEndpoint$.pipe(
-      switchMap(endpt => this.sapi.httpGet<SapiParcellationFeatureModel[]>(
-        `${endpt}/atlases/${encodeURIComponent(this.atlasId)}/parcellations/${encodeURIComponent(this.id)}/features`,
-        {
-          type: parcPagination?.type,
-          size: parcPagination?.size?.toString() || '5',
-          page: parcPagination?.page.toString() || '0',
-        },
-        queryParam
-      ))
-    )
-  }
-
-  getFeatureInstance(instanceId: string): Observable<SapiParcellationFeatureModel> {
-    return SAPI.BsEndpoint$.pipe(
-      switchMap(endpt => this.sapi.http.get<SapiParcellationFeatureModel>(
-        `${endpt}/atlases/${encodeURIComponent(this.atlasId)}/parcellations/${encodeURIComponent(this.id)}/features/${encodeURIComponent(instanceId)}`,
-      ))
-    )
-  }
+  static Features$ = of(Object.keys(ParcellationFeatures) as PF[])
+  public features$ = SAPIParcellation.Features$
 }
diff --git a/src/atlasComponents/sapi/core/sapiRegion.ts b/src/atlasComponents/sapi/core/sapiRegion.ts
index d9263cea03f0d7045e3a1f5043f8a4edc2209929..0c5a2d0baf73fa0ba4d6e499abdbe4e3930eeb13 100644
--- a/src/atlasComponents/sapi/core/sapiRegion.ts
+++ b/src/atlasComponents/sapi/core/sapiRegion.ts
@@ -1,22 +1,44 @@
 import { SAPI } from "..";
-import { SapiRegionalFeatureModel, SapiRegionMapInfoModel, SapiRegionModel, cleanIeegSessionDatasets, SapiIeegSessionModel, CleanedIeegDataset, SapiVolumeModel, PaginatedResponse } from "../type";
+import { SapiRegionModel, RouteParam } from "../typeV3";
 import { strToRgb, hexToRgb } from 'common/util'
-import { merge, Observable, of } from "rxjs";
-import { catchError, map, scan, switchMap } from "rxjs/operators";
+import { NEVER, Observable, of } from "rxjs";
+import { map } from "rxjs/operators";
+import { SAPIBase } from "./base";
+import { SxplrRegion } from "../sxplrTypes";
 
-export class SAPIRegion{
+/**
+ * All valid region features
+ */
+const RegionFeatures = {
+  // ReceptorDensityFingerprint: "ReceptorDensityFingerprint",
+  // GeneExpressions: "GeneExpressions",
+  EbrainsDataFeature: "EbrainsDataFeature",
+  
+  // ReceptorDensityProfile: "ReceptorDensityProfile",
+  // BigBrainIntensityProfile: "BigBrainIntensityProfile",
+  // CellDensityProfile: "CellDensityProfile",
+  // LayerwiseBigBrainIntensities: "LayerwiseBigBrainIntensities",
+  // LayerwiseCellDensity: "LayerwiseCellDensity",
+  
+  Tabular: "Tabular",
+  CorticalProfile: "CorticalProfile",
+} as const
 
-  static GetDisplayColor(region: SapiRegionModel): [number, number, number]{
+type RF = keyof typeof RegionFeatures
+
+export class SAPIRegion extends SAPIBase<RF>{
+
+  static GetDisplayColor(region: SxplrRegion): [number, number, number]{
     if (!region) {
       throw new Error(`region must be provided!`)
     }
-    if (region.hasAnnotation?.displayColor) {
-      return hexToRgb(region.hasAnnotation.displayColor)
-    }
-    return strToRgb(JSON.stringify(region))
+    return region.color
+    // if (region.hasAnnotation?.displayColor) {
+    //   return hexToRgb(region.hasAnnotation.displayColor)
+    // }
+    // return strToRgb(JSON.stringify(region))
   }
 
-  private prefix$: Observable<string>
 
   constructor(
     private sapi: SAPI,
@@ -24,97 +46,81 @@ export class SAPIRegion{
     public parcId: string,
     public id: string,
   ){
-    this.prefix$ = SAPI.BsEndpoint$.pipe(
-      map(endpt => `${endpt}/atlases/${encodeURIComponent(this.atlasId)}/parcellations/${encodeURIComponent(this.parcId)}/regions/${encodeURIComponent(this.id)}`)
-    )
+    super(sapi)
   }
 
-  getFeatures(spaceId: string): Observable<(SapiRegionalFeatureModel | CleanedIeegDataset)[]> {
-    return merge(
-      this.prefix$.pipe(
-        switchMap(prefix => 
-          this.sapi.httpGet<SapiRegionalFeatureModel[]>(
-            `${prefix}/features`,
-            {
-              space_id: spaceId
-            }
-          ).pipe(
-            catchError((err, obs) => {
-              return of([])
-            })
-          )
-        )
-      ),
-      spaceId
-        ? this.sapi.getSpace(this.atlasId, spaceId).getFeatures({ parcellationId: this.parcId, region: this.id }).pipe(
-          catchError((err, obs) => {
-            return of([])
-          }),
-          map(feats => {
-            const ieegSessions: SapiIeegSessionModel[] = feats.filter(feat => feat["@type"] === "siibra/features/ieegSession")
-            return cleanIeegSessionDatasets(ieegSessions)
-          }),
-        )
-        : of([] as CleanedIeegDataset[])
-    ).pipe(
-      scan((acc, curr) => [...acc, ...curr], [])
-    )
-  }
+  static Features: RF[] = Object.keys(RegionFeatures) as RF[]
+  static Features$ = of(SAPIRegion.Features)
+  public features$ = SAPIRegion.Features$
 
-  getFeatureInstance(instanceId: string, spaceId: string = null): Observable<SapiRegionalFeatureModel> {
-    return this.prefix$.pipe(
-      switchMap(prefix => this.sapi.httpGet<SapiRegionalFeatureModel>(
-        `${prefix}/features/${encodeURIComponent(instanceId)}`,
-        {
-          space_id: spaceId
-        }
-      ))
-    )
+  /**
+   * @param spaceId 
+   * @returns 
+   */
+  getMapInfo(spaceId: string): Observable<{min: number, max: number}> {
+    return this.sapi.v3Get("/map/statistical_map.info.json", {
+      query: {
+        parcellation_id: this.parcId,
+        region_id: this.id,
+        space_id: spaceId
+      }
+    })
   }
 
-  getMapInfo(spaceId: string): Observable<SapiRegionMapInfoModel> {
-    return this.prefix$.pipe(
-      switchMap(prefix => this.sapi.http.get<SapiRegionMapInfoModel>(
-        `${prefix}/regional_map/info`,
-        {
-          params: {
+  /**
+   * @param spaceId 
+   * @returns 
+   */
+  getMapUrl(spaceId: string): Observable<string> {
+    return SAPI.BsEndpoint$.pipe(
+      map(endpoint => {
+        const { path, params } =  this.sapi.v3GetRoute("/map/statistical_map.nii.gz", {
+          query: {
+            parcellation_id: this.parcId,
+            region_id: this.id,
             space_id: spaceId
           }
+        })
+
+        const search = new URLSearchParams()
+        for (const key in params) {
+          search.set(key, params[key].toString())
         }
-      ))
-    )
-  }
 
-  getMapUrl(spaceId: string): Observable<string> {
-    return this.prefix$.pipe(
-      map(prefix => `${prefix}/regional_map/map?space_id=${encodeURI(spaceId)}`)
+        return `${endpoint}${path}?${search.toString()}`
+      })
     )
   }
 
-  getVolumes(): Observable<PaginatedResponse<SapiVolumeModel>>{
-    return this.prefix$.pipe(
-      switchMap(prefix => this.sapi.httpGet<PaginatedResponse<SapiVolumeModel>>(
-        `${prefix}/volumes`
-      ))
-    )
+  /**
+   * 
+   * @deprecated
+   * @param volumeId 
+   * @returns 
+   */
+  getVolumeInstance(volumeId: string): Observable<never> {
+    return NEVER
   }
 
-  getVolumeInstance(volumeId: string): Observable<SapiVolumeModel> {
-    return this.prefix$.pipe(
-      switchMap(prefix => this.sapi.httpGet<SapiVolumeModel>(
-        `${prefix}/volumes/${encodeURIComponent(volumeId)}`
-      ))
-    )
+  getDetail(spaceId: string): Observable<SapiRegionModel> {
+    return this.sapi.v3Get("/regions/{region_id}", {
+      path: {
+        region_id: this.id
+      },
+      query: {
+        parcellation_id: this.parcId,
+        space_id: spaceId
+      }
+    })
   }
 
-  getDetail(spaceId: string): Observable<SapiRegionModel> {
-    return this.prefix$.pipe(
-      switchMap(prefix => this.sapi.httpGet<SapiRegionModel>(
-        prefix,
-        {
-          space_id: spaceId
-        }
-      ))
-    )
+  getMap(spaceId: string, mapType: RouteParam<"/map">['query']['map_type']) {
+    return this.sapi.v3Get("/map", {
+      query: {
+        space_id: spaceId,
+        parcellation_id: this.parcId,
+        map_type: mapType,
+      }
+    })
   }
 }
diff --git a/src/atlasComponents/sapi/core/sapiSpace.ts b/src/atlasComponents/sapi/core/sapiSpace.ts
index af2171077788d7a8a879590e6c89305883f90e7c..b19359e3cbc373699aa332abb3b06d424d7f0742 100644
--- a/src/atlasComponents/sapi/core/sapiSpace.ts
+++ b/src/atlasComponents/sapi/core/sapiSpace.ts
@@ -1,8 +1,17 @@
-import { Observable, throwError } from "rxjs"
+import { Observable, of, throwError } from "rxjs"
 import { SAPI } from '../sapi.service'
-import { camelToSnake } from 'common/util'
-import {SapiQueryPriorityArg, SapiSpaceModel, SapiSpatialFeatureModel, SapiVolumeModel} from "../type"
+import { SxplrTemplate } from "../sxplrTypes"
 import { map, switchMap } from "rxjs/operators"
+import { SAPIBase } from "./base"
+
+/**
+ * All valid parcellation features
+ */
+const SpaceFeatures = {
+  Image: "Image",
+} as const
+
+export type SF = keyof typeof SpaceFeatures
 
 type FeatureResponse = {
   features: {
@@ -21,9 +30,13 @@ type BBoxSpatialFEatureOpts = {
 
 type SpatialFeatureOpts = RegionalSpatialFeatureOpts | BBoxSpatialFEatureOpts
 
-export class SAPISpace{
+export class SAPISpace extends SAPIBase<SF>{
+
+  static Features$ = of(Object.keys(SpaceFeatures) as SF[])
+  public features$ = SAPISpace.Features$
 
   constructor(private sapi: SAPI, public atlasId: string, public id: string){
+    super(sapi)
     this.prefix$ = SAPI.BsEndpoint$.pipe(
       map(endpt => `${endpt}/atlases/${encodeURIComponent(this.atlasId)}/spaces/${encodeURIComponent(this.id)}`)
     )
@@ -31,76 +44,22 @@ export class SAPISpace{
 
   private prefix$: Observable<string>
 
-  getModalities(param?: SapiQueryPriorityArg): Observable<FeatureResponse> {
+  getModalities(): Observable<FeatureResponse> {
     return this.prefix$.pipe(
       switchMap(prefix => this.sapi.httpGet<FeatureResponse>(
         `${prefix}/features`,
         null,
-        param
       ))
     )
   }
 
-  getFeatures(opts: SpatialFeatureOpts): Observable<SapiSpatialFeatureModel[]> {
-    const query: Record<string, string> = {}
-    for (const [key, value] of Object.entries(opts)) {
-      query[camelToSnake(key)] = value
-    }
+  getDetail(): Observable<SxplrTemplate>{
     return this.prefix$.pipe(
-      switchMap(prefix => this.sapi.httpGet<SapiSpatialFeatureModel[]>(
-        `${prefix}/features`,
-        query
-      ))
-    )
-  }
-
-  getFeatureInstance(instanceId: string, opts: SpatialFeatureOpts): Observable<SapiSpatialFeatureModel> {
-    const query: Record<string, string> = {}
-    for (const [key, value] of Object.entries(opts)) {
-      query[camelToSnake(key)] = value
-    }
-    return this.prefix$.pipe(
-      switchMap(prefix => this.sapi.httpGet<SapiSpatialFeatureModel>(
-        `${prefix}/features/${encodeURIComponent(instanceId)}`,
-        query
-      ))
-    )
-  }
-
-  getDetail(param?: SapiQueryPriorityArg): Observable<SapiSpaceModel>{
-    return this.prefix$.pipe(
-      switchMap(prefix => this.sapi.httpGet<SapiSpaceModel>(
+      switchMap(prefix => this.sapi.httpGet<SxplrTemplate>(
         `${prefix}`,
         null,
-        param
-      ))
-    )
-  }
-
-  getVolumes(): Observable<SapiVolumeModel[]>{
-    return this.prefix$.pipe(
-      switchMap(prefix => this.sapi.httpGet<SapiVolumeModel[]>(
-        `${prefix}/volumes`,
       ))
     )
   }
 
-  getTemplateSize() {
-    return this.getVolumes().pipe(
-      switchMap(volumes => {
-        const ngVolumes = volumes.filter(vol => vol["@type"] === "spy/volume/neuroglancer/precomputed")
-        if (ngVolumes.length === 0) return throwError(`template ${this.id} has no ng volume.`)
-        return this.sapi.httpGet<any>(`${ngVolumes[0].data.url}/info`).pipe(
-          map(infoJson => {
-            const { resolution, size } = infoJson.scales[0]
-            return {
-              voxel: size as [number, number, number],
-              real: [0, 1, 2].map(idx => resolution[idx] * size[idx]) as [number, number, number],
-              transform: ngVolumes[0].data?.detail?.['neuroglancer/precomputed']?.['transform'] as number[][]
-            }
-          })
-        )
-      })
-    )
-  }
 }
diff --git a/src/atlasComponents/sapi/features/index.ts b/src/atlasComponents/sapi/features/index.ts
deleted file mode 100644
index 560300f7fbccdc5d69dbdb52be17c003f0bcfd25..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapi/features/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export {
-  SAPIFeature
-} from "./sapiFeature"
\ No newline at end of file
diff --git a/src/atlasComponents/sapi/features/sapiFeature.ts b/src/atlasComponents/sapi/features/sapiFeature.ts
deleted file mode 100644
index f2f341acce3aca72ba481f3eda6c68083320cfe1..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapi/features/sapiFeature.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { switchMap } from "rxjs/operators";
-import { SAPI } from "../sapi.service";
-import { SapiFeatureModel } from "../type";
-
-export class SAPIFeature {
-  constructor(private sapi: SAPI, public id: string, public opts: Record<string, string> = {}){
-
-  }
-
-  public detail$ = SAPI.BsEndpoint$.pipe(
-    switchMap(endpt => this.sapi.httpGet<SapiFeatureModel>(
-      `${endpt}/features/${this.id}`,
-      this.opts
-    ))
-  )
-}
diff --git a/src/atlasComponents/sapi/index.ts b/src/atlasComponents/sapi/index.ts
index e5d8afd20e4e298a52db0b0edfc3fa61c55a5e74..356276003c98cafb620eaf5aa67df35acffcff4b 100644
--- a/src/atlasComponents/sapi/index.ts
+++ b/src/atlasComponents/sapi/index.ts
@@ -1,22 +1,5 @@
 export { SAPIModule } from './module'
 
-export {
-  SapiAtlasModel,
-  SapiParcellationModel,
-  SapiSpaceModel,
-  SapiRegionModel,
-  SapiVolumeModel,
-  SapiDatasetModel,
-  SapiRegionalFeatureModel,
-  SapiSpatialFeatureModel,
-  SapiFeatureModel,
-  SapiParcellationFeatureModel,
-  CleanedIeegDataset,
-  SxplrCleanedFeatureModel,
-  OpenMINDSCoordinatePoint,
-  CLEANED_IEEG_DATASET_TYPE,
-} from "./type"
-
 export { SAPI } from "./sapi.service"
 export {
   SAPIAtlas,
diff --git a/src/atlasComponents/sapi/sapi.service.ts b/src/atlasComponents/sapi/sapi.service.ts
index 8a44d6236a11bf41bb8d9df215a52e4b5b6c654f..6c79c9b2f79f5d3ed9ce9b671014478e84f41b50 100644
--- a/src/atlasComponents/sapi/sapi.service.ts
+++ b/src/atlasComponents/sapi/sapi.service.ts
@@ -1,41 +1,46 @@
 import { Injectable } from "@angular/core";
 import { HttpClient } from '@angular/common/http';
-import { map, shareReplay, switchMap, take } from "rxjs/operators";
-import { SAPIAtlas, SAPISpace } from './core'
-import {
-  SapiAtlasModel,
-  SapiModalityModel,
-  SapiParcellationModel,
-  SapiQueryPriorityArg,
-  SapiRegionalFeatureModel,
-  SapiRegionModel,
-  SapiSpaceModel,
-  SpyNpArrayDataModel,
-  SxplrCleanedFeatureModel
-} from "./type";
+import { catchError, map, shareReplay, switchMap, take, tap } from "rxjs/operators";
 import { getExportNehuba } from "src/util/fn";
-import { SAPIParcellation } from "./core/sapiParcellation";
-import { SAPIRegion } from "./core/sapiRegion"
 import { MatSnackBar } from "@angular/material/snack-bar";
 import { AtlasWorkerService } from "src/atlasViewer/atlasViewer.workerService.service";
 import { EnumColorMapName } from "src/util/colorMaps";
-import { PRIORITY_HEADER } from "src/util/priority";
-import { NEVER, Observable } from "rxjs";
-import { SAPIFeature } from "./features";
+import { forkJoin, from, NEVER, Observable, of, throwError } from "rxjs";
 import { environment } from "src/environments/environment"
+import {
+  translateV3Entities
+} from "./translateV3"
+import { FeatureType, PathReturn, RouteParam, SapiRoute } from "./typeV3";
+import { BoundingBox, SxplrAtlas, SxplrParcellation, SxplrRegion, SxplrTemplate, VoiFeature, Feature } from "./sxplrTypes";
+import { parcBanList, speciesOrder } from "src/util/constants";
 
-export const SIIBRA_API_VERSION_HEADER_KEY='x-siibra-api-version'
-export const SIIBRA_API_VERSION = '0.2.3'
+export const useViewer = {
+  THREESURFER: "THREESURFER",
+  NEHUBA: "NEHUBA",
+  NOT_SUPPORTED: "NOT_SUPPORTED" 
+} as const
 
-type RegistryType = SAPIAtlas | SAPISpace | SAPIParcellation
+export const SIIBRA_API_VERSION_HEADER_KEY='x-siibra-api-version'
+export const EXPECTED_SIIBRA_API_VERSION = '0.3.0'
 
 let BS_ENDPOINT_CACHED_VALUE: Observable<string> = null
 
+type PaginatedResponse<T> = {
+  items: T[]
+  total: number
+  page: number
+  size: number
+  pages?: number
+}
+
+
 @Injectable({
   providedIn: 'root'
 })
 export class SAPI{
 
+  static API_VERSION = null
+
   /**
    * Used to clear BsEndPoint, so the next static get BsEndpoints$ will
    * fetch again. Only used for unit test of BsEndpoint$
@@ -44,10 +49,43 @@ export class SAPI{
     BS_ENDPOINT_CACHED_VALUE = null
   }
 
+  iteratePages<T>(resp: PaginatedResponse<T>, cb: (page: number) => Observable<PaginatedResponse<T>>) {
+    /**
+     * technically, it's easier to use a concat + merge + reduce map rather than forkJoin + flatmap
+     * but merge does not guarantee same order, forkjoin does
+     * I don't know if page order matters, but it's good to be safe
+     */
+    const pages = Math.ceil(resp.total / resp.size)
+    return forkJoin([
+      of(resp.items),
+      
+      /**
+       * similar to python's range function, this function generates a uniformly increasing array, to pages
+       * discarding first, since we already got it
+       */
+      ...Array(pages).fill(null).map((_, idx) => idx + 1).slice(1)
+        .map(page => 
+          cb(page).pipe(
+            map(v => v.items)
+          )
+        )
+    ]).pipe(
+      map(arrOfArr => arrOfArr.flatMap(v => v))
+    )
+  }
+
   static async VerifyEndpoint(url: string): Promise<string> {
     const resp = await fetch(`${url}/atlases`)
-    const atlases = await resp.json()
-    if (atlases.length > 0) return url
+    await resp.json()
+    if (resp.status >= 400) {
+      return Promise.reject(resp.statusText)
+    }
+    
+    if (!SAPI.API_VERSION) {
+      SAPI.API_VERSION = resp.headers.get(SIIBRA_API_VERSION_HEADER_KEY)
+      console.log(`siibra-api::version::${SAPI.API_VERSION}, expecting::${EXPECTED_SIIBRA_API_VERSION}`)
+    }
+    return url
   }
 
   /**
@@ -105,75 +143,145 @@ export class SAPI{
   }
 
   static ErrorMessage = null
-  
-  registry = {
-    _map: {} as Record<string, {
-      func: (...arg: any[]) => RegistryType
-      args: string[]
-    }>,
-    get<T>(id: string): T {
-      if (!this._map[id]) return null
-      const { func, args } = this._map[id]
-      return func(...args)
-    },
-    set(id: string, func: (...args: any[]) => RegistryType, args: string[]) {
-      if (this._map[id]) {
-        console.warn(`id ${id} already mapped as ${this._map[id]}`)
-      }
-      this._map[id] = { func, args }
-    }
-  }
-
-  getAtlas(atlasId: string): SAPIAtlas {
-    return new SAPIAtlas(this, atlasId)
-  }
 
-  getSpace(atlasId: string, spaceId: string): SAPISpace {
-    return new SAPISpace(this, atlasId, spaceId)
+  getParcRegions(parcId: string) {
+    const param = {
+      query: {
+        parcellation_id: parcId,
+      },
+    }
+    return this.v3Get("/regions", param).pipe(
+      switchMap(resp =>
+        this.iteratePages(
+          resp,
+          (page) => this.v3Get("/regions", {
+            ...param,
+            query: {
+              ...param.query,
+              page
+            },
+          })
+        ).pipe(
+          switchMap(regions => forkJoin(regions.map(r => translateV3Entities.translateRegion(r)))),
+        )
+      ),
+    )
   }
 
-  getParcellation(atlasId: string, parcId: string): SAPIParcellation {
-    return new SAPIParcellation(this, atlasId, parcId)
+  getMap(parcId: string, spaceId: string, mapType: "LABELLED" | "STATISTICAL") {
+    return this.v3Get("/map", {
+      query: {
+        map_type: mapType,
+        parcellation_id: parcId,
+        space_id: spaceId
+      }
+    })
   }
 
-  getRegion(atlasId: string, parcId: string, regionId: string): SAPIRegion{
-    return new SAPIRegion(this, atlasId, parcId, regionId)
+  #isPaged<T>(resp: any): resp is PaginatedResponse<T>{
+    if (!!resp.total || resp.total === 0) return true
+    return false
   }
-
-  getSpaceDetail(atlasId: string, spaceId: string, param?: SapiQueryPriorityArg): Observable<SapiSpaceModel> {
-    return this.getSpace(atlasId, spaceId).getDetail(param)
+  getV3Features<T extends FeatureType>(featureType: T, sapiParam: RouteParam<`/feature/${T}`>): Observable<Feature[]> {
+    const query = structuredClone(sapiParam)
+    return this.v3Get<`/feature/${T}`>(`/feature/${featureType}`, {
+      ...query
+    }).pipe(
+      switchMap(resp => {
+        if (!this.#isPaged(resp)) return throwError(`endpoint not returning paginated response`)
+        return this.iteratePages(
+          resp,
+          page => {
+            const query = structuredClone(sapiParam)
+            query.query.page = page
+            return this.v3Get(`/feature/${featureType}`, {
+              ...query,
+            }).pipe(
+              map(val => {
+                if (this.#isPaged(val)) return val
+                return { items: [], total: 0, page: 0, size: 0 }
+              })
+            )
+          }
+        )
+      }),
+      switchMap(features => features.length === 0
+        ? of([])
+        : forkJoin(
+          features.map(feat => translateV3Entities.translateFeature(feat) )
+        )
+      ),
+      catchError((err) => {
+        console.error("Error fetching features", err)
+        return of([])}),
+    )
   }
 
-  getParcDetail(atlasId: string, parcId: string, param?: SapiQueryPriorityArg): Observable<SapiParcellationModel> {
-    return this.getParcellation(atlasId, parcId).getDetail(param)
+  getV3FeatureDetail<T extends FeatureType>(featureType: T, sapiParam: RouteParam<`/feature/${T}/{feature_id}`>): Observable<PathReturn<`/feature/${T}/{feature_id}`>> {
+    return this.v3Get<`/feature/${T}/{feature_id}`>(`/feature/${featureType}/{feature_id}`, {
+      ...sapiParam
+    })
   }
 
-  getParcRegions(atlasId: string, parcId: string, spaceId: string, queryParam?: SapiQueryPriorityArg): Observable<SapiRegionModel[]> {
-    const parc = this.getParcellation(atlasId, parcId)
-    return parc.getRegions(spaceId, queryParam)
+  getV3FeatureDetailWithId(id: string, params: Record<string,  string> = {}) {
+    return this.v3Get("/feature/{feature_id}", {
+      path: {
+        feature_id: id
+      },
+      query_param: params
+    } as any).pipe(
+      switchMap(val => translateV3Entities.translateFeature(val))
+    )
   }
 
-  getFeature(featureId: string, opts: Record<string, string> = {}) {
-    return new SAPIFeature(this, featureId, opts)
+  getModalities() {
+    return this.v3Get("/feature/_types", { query: {} }).pipe(
+      map(v => v.items)
+    )
   }
 
-  getRegionFeatures(atlasId: string, parcId: string, spaceId: string, regionId: string, priority = 0): Observable<(SapiRegionalFeatureModel | SxplrCleanedFeatureModel)[]>{
-
-    const reg = this.getRegion(atlasId, parcId, regionId)
-    return reg.getFeatures(spaceId)
+  v3GetRoute<T extends SapiRoute>(route: T, sapiParam: RouteParam<T>) {
+    const params: Record<string, string|number> = "query" in sapiParam ? sapiParam["query"] : {}
+    const _path: Record<string, string|number> = "path" in sapiParam ? sapiParam["path"] : {}
+    let path: string = route
+    for (const key in _path) {
+      path = path.replace(`{${key}}`, _path[key].toString())
+    }
+    return { path, params }
   }
 
-  getModalities(): Observable<SapiModalityModel[]> {
+  /**
+   * Should be privated. All components use this method forms a tight coupling to API
+   * Use this method sparingly!
+   * @param route 
+   * @param sapiParam 
+   * @returns 
+   */
+  v3Get<T extends SapiRoute>(route: T, sapiParam: RouteParam<T>){
     return SAPI.BsEndpoint$.pipe(
-      switchMap(endpt => this.http.get<SapiModalityModel[]>(`${endpt}/modalities`))
+      switchMap(endpoint => {
+        const headers: Record<string, string> = {}
+        const { path, params } = this.v3GetRoute(route, sapiParam)
+        return this.http.get<PathReturn<T>>(
+          `${endpoint}${path}`,
+          {
+            headers,
+            params
+          }
+        )
+      })
     )
   }
 
-  httpGet<T>(url: string, params?: Record<string, string>, sapiParam?: SapiQueryPriorityArg){
+  /**
+   * @deprecated
+   * @param url 
+   * @param params 
+   * @param sapiParam 
+   * @returns 
+   */
+  httpGet<T>(url: string, params?: Record<string, string>){
     const headers: Record<string, string> = {}
-    if (sapiParam?.priority) {
-      headers[PRIORITY_HEADER] = sapiParam.priority.toString()
-    }
     return this.http.get<T>(
       url,
       {
@@ -183,26 +291,284 @@ export class SAPI{
     )
   }
 
-  public atlases$ = SAPI.BsEndpoint$.pipe(
-    switchMap(endpt => this.http.get<SapiAtlasModel[]>(
-      `${endpt}/atlases`,
-      {
-        observe: "response"
-      }
+  public atlases$ = this.v3Get("/atlases", {
+    query: {}
+  }).pipe(
+    switchMap(atlases => forkJoin(
+      atlases.items.map(atlas => translateV3Entities.translateAtlas(atlas))
     )),
-    map(resp => {
-      const respVersion = resp.headers.get(SIIBRA_API_VERSION_HEADER_KEY)
-      if (respVersion !== SIIBRA_API_VERSION) {
-        this.snackbar.open(`Expecting ${SIIBRA_API_VERSION}, got ${respVersion}. Some functionalities may not work as expected.`, 'Dismiss', {
+    map(atlases => atlases.sort((a, b) => speciesOrder.indexOf(a.species) - speciesOrder.indexOf(b.species))),
+    tap(() => {
+      const respVersion = SAPI.API_VERSION
+      if (respVersion !== EXPECTED_SIIBRA_API_VERSION) {
+        this.snackbar.open(`Expecting ${EXPECTED_SIIBRA_API_VERSION}, got ${respVersion}. Some functionalities may not work as expected.`, 'Dismiss', {
           duration: 5000
         })
       }
-      console.log(`siibra-api::version::${respVersion}, expecting::${SIIBRA_API_VERSION}`)
-      return resp.body
     }),
-    shareReplay(1)
+    shareReplay(1),
   )
 
+  public getAllSpaces(atlas: SxplrAtlas): Observable<SxplrTemplate[]> {
+    return forkJoin(
+      translateV3Entities.retrieveAtlas(atlas).spaces.map(
+        spc => this.v3Get("/spaces/{space_id}", { path: { space_id: spc["@id"] } }).pipe(
+          switchMap(v => translateV3Entities.translateTemplate(v))
+        )
+      )
+    )
+  }
+
+  public getAllParcellations(atlas: SxplrAtlas): Observable<SxplrParcellation[]> {
+    return forkJoin(
+      translateV3Entities.retrieveAtlas(atlas).parcellations.filter(
+        p => {
+          const { ['@id']: id } = p
+          return !parcBanList.includes(id)
+        }
+      ).map(
+        parc => this.v3Get("/parcellations/{parcellation_id}", { path: { parcellation_id: parc["@id"] } }).pipe(
+          switchMap(v => translateV3Entities.translateParcellation(v))
+        )
+      )
+    )
+  }
+
+  #tmplToParcMap = new Map<string, SxplrParcellation[]>()
+  public getSupportedParcellations(atlas: SxplrAtlas, template: SxplrTemplate): Observable<SxplrParcellation[]> {
+    if (!template) {
+      return throwError(`template cannot be empty!`)
+    }
+    if (this.#tmplToParcMap.has(template.id)) {
+      return of(this.#tmplToParcMap.get(template.id))
+    }
+    return this.getAllParcellations(atlas).pipe(
+      switchMap(parcs => forkJoin(
+        parcs.map(
+          parc => this.getMap(
+            parc.id,
+            template.id,
+            "LABELLED"
+          ).pipe(
+            catchError((err, obs) => of(null as SxplrParcellation)),
+            map(_map => _map && parc)
+          )
+        )
+      ).pipe(
+        map(arr => {
+          const val = arr.filter(v => !!v)
+          this.#tmplToParcMap.set(template.id, val)
+          return val
+        })
+      ))
+    )
+  }
+
+  public getStatisticalMap(parcellation: SxplrParcellation, template: SxplrTemplate, region: SxplrRegion) {
+    const query = {
+      parcellation_id: parcellation.id,
+      region_id: region.name,
+      space_id: template.id
+    }
+    return SAPI.BsEndpoint$.pipe(
+      switchMap(endpoint => {
+        const _url = this.v3GetRoute("/map/statistical_map.nii.gz", {
+          query
+        })
+        const url = new URL(`${endpoint}${_url.path}`)
+        for (const key in _url.params) {
+          url.searchParams.set(key, _url.params[key].toString())
+        }
+        
+        return from((async () => {
+          const resp = await fetch(url)
+          const arraybuffer = await resp.arrayBuffer()
+          let outbuf: ArrayBuffer
+          try {
+            outbuf = (await getExportNehuba()).pako.inflate(arraybuffer).buffer
+          } catch (e) {
+            console.log("unpack error", e)
+            outbuf = arraybuffer
+          }
+      
+          const { result } = await this.workerSvc.sendMessage({
+            method: "PROCESS_NIFTI",
+            param: {
+              nifti: outbuf,
+            },
+            transfers: [outbuf],
+          })
+
+          const { meta, buffer } = result
+          return { meta, buffer } as {
+            meta: {
+              min: number
+              max: number
+            }
+            buffer: ArrayBuffer
+          }
+        })())
+      })
+    )
+  }
+
+  #parcIdToTmplMap = new Map<string, SxplrTemplate[]>()
+  public getSupportedTemplates(atlas: SxplrAtlas, parc: SxplrParcellation): Observable<SxplrTemplate[]> {
+    if (!parc) {
+      return throwError(`parc cannot be empty!`)
+    }
+    if (this.#parcIdToTmplMap.has(parc.id)) {
+      return of(this.#parcIdToTmplMap.get(parc.id))
+    }
+    return this.getAllSpaces(atlas).pipe(
+      switchMap(spaces => forkJoin(
+        spaces.map(
+          space => this.getMap(
+            parc.id,
+            space.id,
+            "LABELLED"
+          ).pipe(
+            catchError((err, obs) => of(null as SxplrTemplate)),
+            map(_map => _map && space)
+          )
+        )
+      ).pipe(
+        map(arr => {
+          const val = arr.filter(v => !!v)
+          this.#parcIdToTmplMap.set(parc.id, val)
+          return val
+        })
+      ))
+    )
+  }
+
+  public getVoiFeatures(bbox: BoundingBox): Observable<VoiFeature[]> {
+    /**
+     * FIXME iterate over all pages
+     */
+    return this.v3Get("/feature/Image", {
+      query: {
+        space_id: bbox.space.id,
+        bbox: JSON.stringify([bbox.minpoint, bbox.maxpoint]),
+      }
+    }).pipe(
+      switchMap(v => Promise.all(v.items.map(item => translateV3Entities.translateVoiFeature(item))))
+    )
+  }
+
+  private async getLabelledMap(parcellation: SxplrParcellation, template: SxplrTemplate) {
+    // No need to retrieve sapi object, since we know @id maps to id
+    return await this.v3Get("/map", {
+      query: {
+        map_type: "LABELLED",
+        parcellation_id: parcellation.id,
+        space_id: template.id
+      }
+    }).toPromise()
+  }
+
+  public useViewer(template: SxplrTemplate) {
+    if (!template) {
+      return of(null as keyof typeof useViewer)
+    }
+    return forkJoin({
+      voxel: this.getVoxelTemplateImage(template),
+      surface: this.getSurfaceTemplateImage(template)
+    }).pipe(
+      map(vols => {
+        if (!vols) return null
+        const { voxel, surface } = vols
+        if (voxel.length > 0 && surface.length > 0) {
+          console.error(`both voxel and surface length are > 0, this should not happen.`)
+          return useViewer.NOT_SUPPORTED
+        }
+        if (voxel.length > 0) {
+          return useViewer.NEHUBA
+        }
+        if (surface.length > 0) {
+          return useViewer.THREESURFER
+        }
+        return useViewer.NOT_SUPPORTED
+      })
+    )
+  }
+
+  public getVoxelTemplateImage(template: SxplrTemplate) {
+    return from(translateV3Entities.translateSpaceToVolumeImage(template))
+  }
+
+  public getVoxelAuxMesh(template: SxplrTemplate) {
+    return from(translateV3Entities.translateSpaceToAuxMesh(template))
+  }
+
+  public getSurfaceTemplateImage(template: SxplrTemplate) {
+    return from(translateV3Entities.translateSpaceToSurfaceImage(template))
+  }
+  /**
+   * Even though this creates a rather tight coupling between sapi.server and nehuba viewer module
+   * This is better than the alternative, which is creating a tight coupling between nehuba viewer module and siibra-api
+   */
+
+  public async getTranslatedLabelledNgMap(parcellation: SxplrParcellation, template: SxplrTemplate) {
+    if (!parcellation || !template) return {}
+    const map = await this.getLabelledMap(parcellation, template)
+
+    for (const regionname in map.indices) {
+      for (const { volume: volumeIdx, fragment, label } of map.indices[regionname]) {
+        const { providedVolumes } = map.volumes[volumeIdx]
+        if (!("neuroglancer/precomputed" in providedVolumes)) {
+          continue
+        }
+        const provider = providedVolumes["neuroglancer/precomputed"]
+          
+        const src = fragment
+          ? provider[fragment]
+          : provider
+
+        const match = /https?:\/\/.*?\/(.*?)$/.exec(src)
+        const regionFragment = match
+          ? match[1]
+          : src
+        translateV3Entities.mapTPRToFrag[template.id][parcellation.id][regionname] = regionFragment
+      }
+    }
+    
+    return await translateV3Entities.translateLabelledMapToNgSegLayers(map)
+  }
+
+  public async getTranslatedLabelledThreeMap(parcellation: SxplrParcellation, template: SxplrTemplate){
+    if (!parcellation || !template) return {}
+    const map = await this.getLabelledMap(parcellation, template)
+    return await translateV3Entities.translateLabelledMapToThreeLabel(map)
+  }
+  
+  #tmplParcMap = new Map<string, PathReturn<"/map">>()
+  public async getRegionLabelIndices(tmpl: SxplrTemplate, parc: SxplrParcellation, region: SxplrRegion) {
+    const key = `${tmpl.id}::${parc.id}`
+
+    if (!this.#tmplParcMap.has(key)) {
+      const _map = await this.v3Get("/map", {
+        query: {
+          map_type: "LABELLED",
+          parcellation_id: parc.id,
+          space_id: tmpl.id
+        }
+      }).toPromise()
+      this.#tmplParcMap.set(key, _map)
+    }
+
+    const { indices } = this.#tmplParcMap.get(key)
+    const index = indices[region.name] || []
+    if (index.length === 0) {
+      throw new Error(`No map index found for ${region.name}`)
+    }
+    if (index.length !== 1) {
+      console.warn(`Multiple map indicies found... Using the first one`)
+    }
+    const _index = index[0]
+    return _index.label
+  }
+
   constructor(
     public http: HttpClient,
     private snackbar: MatSnackBar,
@@ -211,22 +577,18 @@ export class SAPI{
     if (SAPI.ErrorMessage) {
       this.snackbar.open(SAPI.ErrorMessage, 'Dismiss', { duration: 5000 })
     }
-    this.atlases$.subscribe(atlases => {
-      for (const atlas of atlases) {
-        for (const space of atlas.spaces) {
-          this.registry.set(space["@id"], this.getSpace.bind(this), [atlas["@id"], space["@id"]])
-          this.getSpaceDetail(atlas["@id"], space["@id"])
-        }
-        for (const parc of atlas.parcellations) {
-          this.registry.set(parc["@id"], this.getParcellation.bind(this), [atlas["@id"], parc["@id"]])
-          this.getParcDetail(atlas["@id"], parc["@id"])
-        }
-      }
-    })
   }
   
-  async processNpArrayData<T extends keyof ProcessTypedArrayResult>(input: SpyNpArrayDataModel, method: PARSE_TYPEDARRAY = PARSE_TYPEDARRAY.RAW_ARRAY, params: ProcessTypedArrayResult[T]['input'] = null): Promise<ProcessTypedArrayResult[T]['output']> {
-
+  /**
+   * 
+   * @deprecated
+   * @param input 
+   * @param method 
+   * @param params 
+   * @returns 
+   */
+  async processNpArrayData<T extends keyof ProcessTypedArrayResult>(input: any /*SpyNpArrayDataModel*/, method: PARSE_TYPEDARRAY = PARSE_TYPEDARRAY.RAW_ARRAY, params: ProcessTypedArrayResult[T]['input'] = null): Promise<ProcessTypedArrayResult[T]['output']> {
+    return null
     const supportedDtype = [
       "uint8",
       "int32",
@@ -254,7 +616,7 @@ export class SAPI{
 
     try {
       const bin = atob(content)
-      const { pako } = getExportNehuba()
+      const { pako } = await getExportNehuba()
       const array = pako.inflate(bin)
       let workerMsg: string
       switch (method) {
@@ -300,6 +662,9 @@ export class SAPI{
   }
 }
 
+/**
+ * @deprecated
+ */
 export enum PARSE_TYPEDARRAY {
   CANVAS_FORTRAN_RGBA="CANVAS_FORTRAN_RGBA",
   CANVAS_COLORMAP_RGBA="CANVAS_COLORMAP_RGBA",
diff --git a/src/atlasComponents/sapi/schema.ts b/src/atlasComponents/sapi/schema.ts
index 49f3d1b3f257f321dd8704cf10ae93c55ee9e1e5..abec3c87032beadb1865bef6b3a97f9834138871 100644
--- a/src/atlasComponents/sapi/schema.ts
+++ b/src/atlasComponents/sapi/schema.ts
@@ -1,2035 +1,2035 @@
-/**
- * This file was auto-generated by openapi-typescript.
- * Do not make direct changes to the file.
- */
+// /**
+//  * This file was auto-generated by openapi-typescript.
+//  * Do not make direct changes to the file.
+//  */
 
-export interface paths {
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions": {
-    /** Returns all regions for a given parcellation id. */
-    get: operations["get_all_regions_from_atlas_parc_space_atlases__atlas_id__parcellations__parcellation_id__regions_get"]
-  }
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/features": {
-    /** Returns all regional features for a region. */
-    get: operations["get_all_regional_features_for_region_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__features_get"]
-  }
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/features/{feature_id}": {
-    /** Returns a feature for a region, as defined by the modality and feature ID */
-    get: operations["get_single_detailed_regional_feature_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__features__feature_id__get"]
-  }
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/regional_map/info": {
-    /** Returns information about a regional map for given region name. */
-    get: operations["get_regional_map_info_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__regional_map_info_get"]
-  }
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/regional_map/map": {
-    /** Returns a regional map for given region name. */
-    get: operations["get_regional_map_file_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__regional_map_map_get"]
-  }
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/volumes": {
-    get: operations["get_regional_volumes_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__volumes_get"]
-  }
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/volumes/{volume_id}": {
-    get: operations["get_regional_volumes_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__volumes__volume_id__get"]
-  }
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}": {
-    get: operations["get_single_region_detail_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__get"]
-  }
-  "/atlases/{atlas_id}/parcellations": {
-    /** Returns all parcellations that are defined in the siibra client for given atlas. */
-    get: operations["get_all_parcellations_atlases__atlas_id__parcellations_get"]
-  }
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}/features/{feature_id}": {
-    /** Returns a global feature for a specific modality id. */
-    get: operations["get_single_detailed_global_feature_atlases__atlas_id__parcellations__parcellation_id__features__feature_id__get"]
-  }
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}/features": {
-    /** Returns all global features for a parcellation. */
-    get: operations["get_all_global_features_for_parcellation_atlases__atlas_id__parcellations__parcellation_id__features_get"]
-  }
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}/volumes": {
-    /** Returns one parcellation for given id. */
-    get: operations["get_volumes_for_parcellation_atlases__atlas_id__parcellations__parcellation_id__volumes_get"]
-  }
-  "/atlases/{atlas_id}/parcellations/{parcellation_id}": {
-    /** Returns one parcellation for given id. */
-    get: operations["get_single_parcellation_detail_atlases__atlas_id__parcellations__parcellation_id__get"]
-  }
-  "/atlases/{atlas_id}/spaces": {
-    /** Returns all spaces that are defined in the siibra client. */
-    get: operations["get_all_spaces_atlases__atlas_id__spaces_get"]
-  }
-  "/atlases/{atlas_id}/spaces/{space_id}/templates": {
-    /** Returns a template for a given space id. */
-    get: operations["get_template_by_space_id_atlases__atlas_id__spaces__space_id__templates_get"]
-  }
-  "/atlases/{atlas_id}/spaces/{space_id}/parcellation_maps": {
-    /** Returns all parcellation maps for a given space id. */
-    get: operations["get_parcellation_map_for_space_atlases__atlas_id__spaces__space_id__parcellation_maps_get"]
-  }
-  "/atlases/{atlas_id}/spaces/{space_id}/features/{feature_id}": {
-    /**
-     * Get a detailed view on a single spatial feature.
-     * A parcellation id and region id can be provided optional to get more details.
-     */
-    get: operations["get_single_detailed_spatial_feature_atlases__atlas_id__spaces__space_id__features__feature_id__get"]
-  }
-  "/atlases/{atlas_id}/spaces/{space_id}/features": {
-    /** Return all possible feature names and links to get more details */
-    get: operations["get_all_spatial_features_for_space_atlases__atlas_id__spaces__space_id__features_get"]
-  }
-  "/atlases/{atlas_id}/spaces/{space_id}/volumes": {
-    get: operations["get_volumes_for_space_atlases__atlas_id__spaces__space_id__volumes_get"]
-  }
-  "/atlases/{atlas_id}/spaces/{space_id}": {
-    /** Returns one space for given id, with links to further resources */
-    get: operations["get_single_space_detail_atlases__atlas_id__spaces__space_id__get"]
-  }
-  "/atlases": {
-    /** Get all atlases known by siibra. */
-    get: operations["get_all_atlases_atlases_get"]
-  }
-  "/atlases/{atlas_id}": {
-    /** Get more information for a specific atlas with links to further objects. */
-    get: operations["get_atlas_by_id_atlases__atlas_id__get"]
-  }
-  "/genes": {
-    /** Return all genes (name, acronym) in siibra */
-    get: operations["get_gene_names_genes_get"]
-  }
-  "/modalities": {
-    /** Return all possible modalities */
-    get: operations["get_all_available_modalities_modalities_get"]
-  }
-  "/features/{feature_id}": {
-    /**
-     * Get all details for one feature by id.
-     * Since the feature id is unique, no atlas concept is required.
-     *
-     * Further optional params can extend the result.
-     * :param feature_id:
-     * :param atlas_id:
-     * :param space_id:
-     * :param parcellation_id:
-     * :param region_id:
-     * :return: FeatureModels
-     */
-    get: operations["get_feature_details_features__feature_id__get"]
-  }
-}
+// export interface paths {
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions": {
+//     /** Returns all regions for a given parcellation id. */
+//     get: operations["get_all_regions_from_atlas_parc_space_atlases__atlas_id__parcellations__parcellation_id__regions_get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/features": {
+//     /** Returns all regional features for a region. */
+//     get: operations["get_all_regional_features_for_region_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__features_get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/features/{feature_id}": {
+//     /** Returns a feature for a region, as defined by the modality and feature ID */
+//     get: operations["get_single_detailed_regional_feature_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__features__feature_id__get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/regional_map/info": {
+//     /** Returns information about a regional map for given region name. */
+//     get: operations["get_regional_map_info_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__regional_map_info_get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/regional_map/map": {
+//     /** Returns a regional map for given region name. */
+//     get: operations["get_regional_map_file_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__regional_map_map_get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/volumes": {
+//     get: operations["get_regional_volumes_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__volumes_get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/volumes/{volume_id}": {
+//     get: operations["get_regional_volumes_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__volumes__volume_id__get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}": {
+//     get: operations["get_single_region_detail_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations": {
+//     /** Returns all parcellations that are defined in the siibra client for given atlas. */
+//     get: operations["get_all_parcellations_atlases__atlas_id__parcellations_get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}/features/{feature_id}": {
+//     /** Returns a global feature for a specific modality id. */
+//     get: operations["get_single_detailed_global_feature_atlases__atlas_id__parcellations__parcellation_id__features__feature_id__get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}/features": {
+//     /** Returns all global features for a parcellation. */
+//     get: operations["get_all_global_features_for_parcellation_atlases__atlas_id__parcellations__parcellation_id__features_get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}/volumes": {
+//     /** Returns one parcellation for given id. */
+//     get: operations["get_volumes_for_parcellation_atlases__atlas_id__parcellations__parcellation_id__volumes_get"]
+//   }
+//   "/atlases/{atlas_id}/parcellations/{parcellation_id}": {
+//     /** Returns one parcellation for given id. */
+//     get: operations["get_single_parcellation_detail_atlases__atlas_id__parcellations__parcellation_id__get"]
+//   }
+//   "/atlases/{atlas_id}/spaces": {
+//     /** Returns all spaces that are defined in the siibra client. */
+//     get: operations["get_all_spaces_atlases__atlas_id__spaces_get"]
+//   }
+//   "/atlases/{atlas_id}/spaces/{space_id}/templates": {
+//     /** Returns a template for a given space id. */
+//     get: operations["get_template_by_space_id_atlases__atlas_id__spaces__space_id__templates_get"]
+//   }
+//   "/atlases/{atlas_id}/spaces/{space_id}/parcellation_maps": {
+//     /** Returns all parcellation maps for a given space id. */
+//     get: operations["get_parcellation_map_for_space_atlases__atlas_id__spaces__space_id__parcellation_maps_get"]
+//   }
+//   "/atlases/{atlas_id}/spaces/{space_id}/features/{feature_id}": {
+//     /**
+//      * Get a detailed view on a single spatial feature.
+//      * A parcellation id and region id can be provided optional to get more details.
+//      */
+//     get: operations["get_single_detailed_spatial_feature_atlases__atlas_id__spaces__space_id__features__feature_id__get"]
+//   }
+//   "/atlases/{atlas_id}/spaces/{space_id}/features": {
+//     /** Return all possible feature names and links to get more details */
+//     get: operations["get_all_spatial_features_for_space_atlases__atlas_id__spaces__space_id__features_get"]
+//   }
+//   "/atlases/{atlas_id}/spaces/{space_id}/volumes": {
+//     get: operations["get_volumes_for_space_atlases__atlas_id__spaces__space_id__volumes_get"]
+//   }
+//   "/atlases/{atlas_id}/spaces/{space_id}": {
+//     /** Returns one space for given id, with links to further resources */
+//     get: operations["get_single_space_detail_atlases__atlas_id__spaces__space_id__get"]
+//   }
+//   "/atlases": {
+//     /** Get all atlases known by siibra. */
+//     get: operations["get_all_atlases_atlases_get"]
+//   }
+//   "/atlases/{atlas_id}": {
+//     /** Get more information for a specific atlas with links to further objects. */
+//     get: operations["get_atlas_by_id_atlases__atlas_id__get"]
+//   }
+//   "/genes": {
+//     /** Return all genes (name, acronym) in siibra */
+//     get: operations["get_gene_names_genes_get"]
+//   }
+//   "/modalities": {
+//     /** Return all possible modalities */
+//     get: operations["get_all_available_modalities_modalities_get"]
+//   }
+//   "/features/{feature_id}": {
+//     /**
+//      * Get all details for one feature by id.
+//      * Since the feature id is unique, no atlas concept is required.
+//      *
+//      * Further optional params can extend the result.
+//      * :param feature_id:
+//      * :param atlas_id:
+//      * :param space_id:
+//      * :param parcellation_id:
+//      * :param region_id:
+//      * :return: FeatureModels
+//      */
+//     get: operations["get_feature_details_features__feature_id__get"]
+//   }
+// }
 
-export interface components {
-  schemas: {
-    /** AutoradiographyDataModel */
-    AutoradiographyDataModel: {
-      /**
-       * Content Type
-       * @default application/octet-stream
-       */
-      content_type?: string
-      /**
-       * Content Encoding
-       * @default gzip; base64
-       */
-      content_encoding?: string
-      /** X-Width */
-      "x-width": number
-      /** X-Height */
-      "x-height": number
-      /** X-Channel */
-      "x-channel": number
-      /** Dtype */
-      dtype: string
-      /** Content */
-      content: string
-    }
-    /** AxesOrigin */
-    AxesOrigin: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * typeOfUncertainty
-       * @description Distinct technique used to quantify the uncertainty of a measurement.
-       */
-      typeOfUncertainty?: unknown
-      /**
-       * uncertainty
-       * @description Quantitative value range defining the uncertainty of a measurement.
-       */
-      uncertainty?: number[]
-      /**
-       * unit
-       * @description Determinate quantity adopted as a standard of measurement.
-       */
-      unit?: unknown
-      /**
-       * value
-       * @description Entry for a property.
-       */
-      value: number
-    }
-    /** BaseDatasetJsonModel */
-    BaseDatasetJsonModel: {
-      /** @Id */
-      "@id": string
-      /**
-       * @Type
-       * @constant
-       */
-      "@type"?: "https://openminds.ebrains.eu/core/DatasetVersion"
-      metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
-      /** Urls */
-      urls: components["schemas"]["Url"][]
-    }
-    /** BestViewPoint */
-    BestViewPoint: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * coordinateSpace
-       * @description Two or three dimensional geometric setting.
-       */
-      coordinateSpace: unknown
-      /**
-       * Coordinates
-       * @description Structured information on a quantitative value.
-       */
-      coordinates: components["schemas"]["siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Coordinates"][]
-    }
-    /** BoundingBoxModel */
-    BoundingBoxModel: {
-      /** @Type */
-      "@type": string
-      /** Space */
-      space: { [key: string]: string }
-      center: components["schemas"]["siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model"]
-      minpoint: components["schemas"]["siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model"]
-      maxpoint: components["schemas"]["siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model"]
-      /** Shape */
-      shape: number[]
-      /** Isplanar */
-      isPlanar: boolean
-    }
-    /** ConnectivityMatrixDataModel */
-    ConnectivityMatrixDataModel: {
-      /** @Id */
-      "@id": string
-      /** @Type */
-      "@type": string
-      /** Name */
-      name?: string
-      /** Description */
-      description?: string
-      /** Citation */
-      citation?: string
-      /** Authors */
-      authors?: string[]
-      /** Cohort */
-      cohort?: string
-      /** Subject */
-      subject?: string
-      /** Filename */
-      filename?: string
-      /** Dataset Id */
-      dataset_id?: string
-      /** Parcellations */
-      parcellations: { [key: string]: string }[]
-      matrix?: components["schemas"]["NpArrayDataModel"]
-      /** Columns */
-      columns?: string[]
-    }
-    /** CorticalCellDistributionModel */
-    CorticalCellDistributionModel: {
-      /** @Id */
-      "@id": string
-      /**
-       * @Type
-       * @constant
-       */
-      "@type"?: "siibra/features/cells"
-      metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
-      /** Urls */
-      urls: components["schemas"]["Url"][]
-      /** Cells */
-      cells?: components["schemas"]["CorticalCellModel"][]
-      /** Section */
-      section?: string
-      /** Patch */
-      patch?: string
-    }
-    /** CorticalCellModel */
-    CorticalCellModel: {
-      /** X */
-      x: number
-      /** Y */
-      y: number
-      /** Area */
-      area: number
-      /** Layer */
-      layer: number
-      /** Instance Label */
-      "instance label": number
-    }
-    /** DatasetJsonModel */
-    DatasetJsonModel: {
-      /** @Id */
-      "@id": string
-      /**
-       * @Type
-       * @constant
-       */
-      "@type"?: "https://openminds.ebrains.eu/core/DatasetVersion"
-      metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
-      /** Urls */
-      urls: components["schemas"]["Url"][]
-    }
-    /** FingerPrintDataModel */
-    FingerPrintDataModel: {
-      /** Mean */
-      mean: number
-      /** Std */
-      std: number
-      /** Unit */
-      unit: string
-    }
-    /** HTTPValidationError */
-    HTTPValidationError: {
-      /** Detail */
-      detail?: components["schemas"]["ValidationError"][]
-    }
-    /** HasAnnotation */
-    HasAnnotation: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * Bestviewpoint
-       * @description Structured information on a coordinate point.
-       */
-      bestViewPoint?: components["schemas"]["BestViewPoint"]
-      /**
-       * criteria
-       * @description Aspects or standards on which a judgement or decision is based.
-       */
-      criteria?: unknown
-      /**
-       * criteriaQualityType
-       * @description Distinct class that defines how the judgement or decision was made for a particular criteria.
-       */
-      criteriaQualityType: unknown
-      /**
-       * displayColor
-       * @description Preferred coloring.
-       */
-      displayColor?: string
-      /**
-       * inspiredBy
-       * @description Reference to an inspiring element.
-       */
-      inspiredBy?: unknown[]
-      /**
-       * internalIdentifier
-       * @description Term or code that identifies someone or something within a particular product.
-       */
-      internalIdentifier: string
-      /**
-       * laterality
-       * @description Differentiation between a pair of lateral homologous parts of the body.
-       */
-      laterality?: unknown[]
-      /**
-       * visualizedIn
-       * @description Reference to an image in which something is visible.
-       */
-      visualizedIn?: unknown
-    }
-    /** HasTerminologyVersion */
-    HasTerminologyVersion: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * definedIn
-       * @description Reference to a file instance in which something is stored.
-       */
-      definedIn?: unknown[]
-      /** hasEntityVersion */
-      hasEntityVersion: unknown[]
-      /**
-       * ontologyIdentifier
-       * @description Term or code used to identify something or someone registered within a particular ontology.
-       */
-      ontologyIdentifier?: string[]
-    }
-    /** HrefModel */
-    HrefModel: {
-      /** Href */
-      href: string
-    }
-    /** IEEGContactPointModel */
-    IEEGContactPointModel: {
-      /** Inroi */
-      inRoi?: boolean
-      /** Id */
-      id: string
-      point: components["schemas"]["siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model"]
-    }
-    /** IEEGElectrodeModel */
-    IEEGElectrodeModel: {
-      /** Inroi */
-      inRoi?: boolean
-      /** Electrode Id */
-      electrode_id: string
-      /** Contact Points */
-      contact_points: {
-        [key: string]: components["schemas"]["IEEGContactPointModel"]
-      }
-    }
-    /** IEEGSessionModel */
-    IEEGSessionModel: {
-      /** Inroi */
-      inRoi?: boolean
-      /** @Id */
-      "@id": string
-      /**
-       * @Type
-       * @constant
-       */
-      "@type"?: "siibra/features/ieegSession"
-      dataset: components["schemas"]["DatasetJsonModel"]
-      /** Sub Id */
-      sub_id: string
-      /** Electrodes */
-      electrodes: {
-        [key: string]: components["schemas"]["IEEGElectrodeModel"]
-      }
-    }
-    /** NeurotransmitterMarkupModel */
-    NeurotransmitterMarkupModel: {
-      /** Latex */
-      latex: string
-      /** Markdown */
-      markdown: string
-      /** Name */
-      name: string
-      /** Label */
-      label: string
-    }
-    /** NiiMetadataModel */
-    NiiMetadataModel: {
-      /** Min */
-      min: number
-      /** Max */
-      max: number
-    }
-    /** NpArrayDataModel */
-    NpArrayDataModel: {
-      /**
-       * Content Type
-       * @default application/octet-stream
-       */
-      content_type?: string
-      /**
-       * Content Encoding
-       * @default gzip; base64
-       */
-      content_encoding?: string
-      /** X-Width */
-      "x-width": number
-      /** X-Height */
-      "x-height": number
-      /** X-Channel */
-      "x-channel": number
-      /** Dtype */
-      dtype: string
-      /** Content */
-      content: string
-    }
-    /** Page[Union[siibra.features.connectivity.ConnectivityMatrixDataModel, app.models.SerializationErrorModel]] */
-    "Page_Union_siibra.features.connectivity.ConnectivityMatrixDataModel__app.models.SerializationErrorModel__": {
-      /** Items */
-      items: (Partial<components["schemas"]["ConnectivityMatrixDataModel"]> &
-        Partial<components["schemas"]["SerializationErrorModel"]>)[]
-      /** Total */
-      total: number
-      /** Page */
-      page: number
-      /** Size */
-      size: number
-    }
-    /** Page[VolumeModel] */
-    Page_VolumeModel_: {
-      /** Items */
-      items: components["schemas"]["VolumeModel"][]
-      /** Total */
-      total: number
-      /** Page */
-      page: number
-      /** Size */
-      size: number
-    }
-    /** ProfileDataModel */
-    ProfileDataModel: {
-      density: components["schemas"]["NpArrayDataModel"]
-      /** Unit */
-      unit: string
-    }
-    /** QuantitativeOverlapItem */
-    QuantitativeOverlapItem: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * typeOfUncertainty
-       * @description Distinct technique used to quantify the uncertainty of a measurement.
-       */
-      typeOfUncertainty?: unknown
-      /**
-       * uncertainty
-       * @description Quantitative value range defining the uncertainty of a measurement.
-       */
-      uncertainty?: number[]
-      /**
-       * unit
-       * @description Determinate quantity adopted as a standard of measurement.
-       */
-      unit?: unknown
-      /**
-       * value
-       * @description Entry for a property.
-       */
-      value: number
-    }
-    /** QuantitativeOverlapItem1 */
-    QuantitativeOverlapItem1: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * maxValue
-       * @description Greatest quantity attained or allowed.
-       */
-      maxValue: number
-      /** maxValueUnit */
-      maxValueUnit?: unknown
-      /**
-       * minValue
-       * @description Smallest quantity attained or allowed.
-       */
-      minValue: number
-      /** minValueUnit */
-      minValueUnit?: unknown
-    }
-    /** ReceptorDataModel */
-    ReceptorDataModel: {
-      /** Autoradiographs */
-      autoradiographs: {
-        [key: string]: components["schemas"]["AutoradiographyDataModel"]
-      }
-      /** Profiles */
-      profiles: { [key: string]: components["schemas"]["ProfileDataModel"] }
-      /** Fingerprints */
-      fingerprints: {
-        [key: string]: components["schemas"]["FingerPrintDataModel"]
-      }
-      /** Receptor Symbols */
-      receptor_symbols: {
-        [key: string]: components["schemas"]["SymbolMarkupClass"]
-      }
-    }
-    /** ReceptorDatasetModel */
-    ReceptorDatasetModel: {
-      /** @Id */
-      "@id": string
-      /**
-       * @Type
-       * @constant
-       */
-      "@type"?: "siibra/features/receptor"
-      metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
-      /** Urls */
-      urls: components["schemas"]["Url"][]
-      data?: components["schemas"]["ReceptorDataModel"]
-    }
-    /** ReceptorMarkupModel */
-    ReceptorMarkupModel: {
-      /** Latex */
-      latex: string
-      /** Markdown */
-      markdown: string
-      /** Name */
-      name: string
-    }
-    /** RelationAssessmentItem */
-    RelationAssessmentItem: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * criteria
-       * @description Aspects or standards on which a judgement or decision is based.
-       */
-      criteria?: unknown
-      /**
-       * inRelationTo
-       * @description Reference to a related element.
-       */
-      inRelationTo: unknown
-      /**
-       * qualitativeOverlap
-       * @description Semantic characterization of how much two things occupy the same space.
-       */
-      qualitativeOverlap: unknown
-    }
-    /** RelationAssessmentItem1 */
-    RelationAssessmentItem1: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * criteria
-       * @description Aspects or standards on which a judgement or decision is based.
-       */
-      criteria?: unknown
-      /**
-       * inRelationTo
-       * @description Reference to a related element.
-       */
-      inRelationTo: unknown
-      /** Quantitativeoverlap */
-      quantitativeOverlap: Partial<
-        components["schemas"]["QuantitativeOverlapItem"]
-      > &
-        Partial<components["schemas"]["QuantitativeOverlapItem1"]>
-    }
-    /** SapiAtlasModel */
-    SapiAtlasModel: {
-      /** Links */
-      links: { [key: string]: components["schemas"]["HrefModel"] }
-      /** @Id */
-      "@id": string
-      /** Name */
-      name: string
-      /**
-       * @Type
-       * @constant
-       */
-      "@type"?: "juelich/iav/atlas/v1.0.0"
-      /** Spaces */
-      spaces: components["schemas"]["SiibraAtIdModel"][]
-      /** Parcellations */
-      parcellations: components["schemas"]["SiibraAtIdModel"][]
-      species: components["schemas"]["SpeciesModel"]
-    }
-    /** SapiParcellationModel */
-    SapiParcellationModel: {
-      /** Links */
-      links: { [key: string]: components["schemas"]["HrefModel"] }
-      /** @Id */
-      "@id": string
-      /**
-       * @Type
-       * @constant
-       */
-      "@type"?: "minds/core/parcellationatlas/v1.0.0"
-      /** Name */
-      name: string
-      /** Modality */
-      modality?: string
-      /** Datasets */
-      datasets: components["schemas"]["DatasetJsonModel"][]
-      /** Brainatlasversions */
-      brainAtlasVersions: components["schemas"]["siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__Model"][]
-      version?: components["schemas"]["SiibraParcellationVersionModel"]
-    }
-    /** SapiSpaceModel */
-    SapiSpaceModel: {
-      /** Links */
-      links: { [key: string]: components["schemas"]["HrefModel"] }
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * @Id
-       * @description Metadata node identifier.
-       */
-      "@id": string
-      /** @Type */
-      "@type": string
-      /**
-       * anatomicalAxesOrientation
-       * @description Relation between reference planes used in anatomy and mathematics.
-       */
-      anatomicalAxesOrientation: { [key: string]: unknown }
-      /**
-       * Axesorigin
-       * @description Structured information on a quantitative value.
-       */
-      axesOrigin: components["schemas"]["AxesOrigin"][]
-      /**
-       * defaultImage
-       * @description Two or three dimensional image that particluarly represents a specific coordinate space.
-       */
-      defaultImage?: unknown[]
-      /**
-       * digitalIdentifier
-       * @description Digital handle to identify objects or legal persons.
-       */
-      digitalIdentifier?: { [key: string]: unknown }
-      /**
-       * fullName
-       * @description Whole, non-abbreviated name of something or somebody.
-       */
-      fullName: string
-      /**
-       * homepage
-       * @description Main website of something or someone.
-       */
-      homepage?: { [key: string]: unknown }
-      /**
-       * howToCite
-       * @description Preferred format for citing a particular object or legal person.
-       */
-      howToCite?: string
-      /**
-       * nativeUnit
-       * @description Determinate quantity used in the original measurement.
-       */
-      nativeUnit: { [key: string]: unknown }
-      /**
-       * ontologyIdentifier
-       * @description Term or code used to identify something or someone registered within a particular ontology.
-       */
-      ontologyIdentifier?: string[]
-      /**
-       * releaseDate
-       * Format: date
-       * @description Fixed date on which a product is due to become or was made available for the general public to see or buy
-       */
-      releaseDate: string
-      /**
-       * shortName
-       * @description Shortened or fully abbreviated name of something or somebody.
-       */
-      shortName: string
-      /**
-       * versionIdentifier
-       * @description Term or code used to identify the version of something.
-       */
-      versionIdentifier: string
-    }
-    /** SerializationErrorModel */
-    SerializationErrorModel: {
-      /**
-       * Type
-       * @constant
-       */
-      type?: "spy/serialization-error"
-      /** Message */
-      message: string
-    }
-    /** SiibraAtIdModel */
-    SiibraAtIdModel: {
-      /** @Id */
-      "@id": string
-    }
-    /** SiibraParcellationVersionModel */
-    SiibraParcellationVersionModel: {
-      /** Name */
-      name: string
-      /** Deprecated */
-      deprecated?: boolean
-      prev?: components["schemas"]["SiibraAtIdModel"]
-      next?: components["schemas"]["SiibraAtIdModel"]
-    }
-    /** SpeciesModel */
-    SpeciesModel: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * @Id
-       * @description Metadata node identifier.
-       */
-      "@id": string
-      /** @Type */
-      "@type": string
-      /**
-       * definition
-       * @description Short, but precise statement of the meaning of a word, word group, sign or a symbol.
-       */
-      definition?: string
-      /**
-       * description
-       * @description Longer statement or account giving the characteristics of someone or something.
-       */
-      description?: string
-      /**
-       * interlexIdentifier
-       * @description Persistent identifier for a term registered in the InterLex project.
-       */
-      interlexIdentifier?: string
-      /**
-       * knowledgeSpaceLink
-       * @description Persistent link to an encyclopedia entry in the Knowledge Space project.
-       */
-      knowledgeSpaceLink?: string
-      /**
-       * name
-       * @description Word or phrase that constitutes the distinctive designation of a being or thing.
-       */
-      name: string
-      /**
-       * preferredOntologyIdentifier
-       * @description Persistent identifier of a preferred ontological term.
-       */
-      preferredOntologyIdentifier?: string
-      /**
-       * synonym
-       * @description Words or expressions used in the same language that have the same or nearly the same meaning in some or all senses.
-       */
-      synonym?: string[]
-      /** Kgv1Id */
-      kgV1Id: string
-    }
-    /** SymbolMarkupClass */
-    SymbolMarkupClass: {
-      receptor: components["schemas"]["ReceptorMarkupModel"]
-      neurotransmitter: components["schemas"]["NeurotransmitterMarkupModel"]
-    }
-    /** Url */
-    Url: {
-      /** Doi */
-      doi: string
-      /** Cite */
-      cite?: string
-    }
-    /** VOIDataModel */
-    VOIDataModel: {
-      /** @Id */
-      "@id": string
-      /**
-       * @Type
-       * @constant
-       */
-      "@type"?: "siibra/features/voi"
-      metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
-      /** Urls */
-      urls: components["schemas"]["Url"][]
-      /** Volumes */
-      volumes: components["schemas"]["VolumeModel"][]
-      location: components["schemas"]["BoundingBoxModel"]
-    }
-    /** ValidationError */
-    ValidationError: {
-      /** Location */
-      loc: (Partial<string> & Partial<number>)[]
-      /** Message */
-      msg: string
-      /** Error Type */
-      type: string
-    }
-    /** VocabModel */
-    VocabModel: {
-      /** @Vocab */
-      "@vocab": string
-    }
-    /** VolumeDataModel */
-    VolumeDataModel: {
-      /** Type */
-      type: string
-      /** Is Volume */
-      is_volume: boolean
-      /** Is Surface */
-      is_surface: boolean
-      /** Detail */
-      detail: { [key: string]: unknown }
-      space: components["schemas"]["SiibraAtIdModel"]
-      /** Url */
-      url?: string
-      /** Url Map */
-      url_map?: { [key: string]: string }
-      /** Map Type */
-      map_type?: string
-      /** Volume Type */
-      volume_type?: string
-    }
-    /** VolumeModel */
-    VolumeModel: {
-      /** @Id */
-      "@id": string
-      /** @Type */
-      "@type": string
-      metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
-      /** Urls */
-      urls: components["schemas"]["Url"][]
-      data: components["schemas"]["VolumeDataModel"]
-    }
-    /** Copyright */
-    siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__Copyright: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * holder
-       * @description Legal person in possession of something.
-       */
-      holder: unknown[]
-      /**
-       * year
-       * @description Cycle in the Gregorian calendar specified by a number and comprised of 365 or 366 days divided into 12 months beginning with January and ending with December.
-       */
-      year: string
-    }
-    /** Model */
-    siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__Model: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * @Id
-       * @description Metadata node identifier.
-       */
-      "@id": string
-      /** @Type */
-      "@type": string
-      /** abbreviation */
-      abbreviation?: string
-      /**
-       * accessibility
-       * @description Level to which something is accessible to someone or something.
-       */
-      accessibility: { [key: string]: unknown }
-      /** atlasType */
-      atlasType?: { [key: string]: unknown }
-      /**
-       * author
-       * @description Creator of a literary or creative work, as well as a dataset publication.
-       */
-      author?: unknown[]
-      /**
-       * coordinateSpace
-       * @description Two or three dimensional geometric setting.
-       */
-      coordinateSpace: { [key: string]: unknown }
-      /**
-       * Copyright
-       * @description Structured information on the copyright.
-       */
-      copyright?: components["schemas"]["siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__Copyright"]
-      /**
-       * custodian
-       * @description The 'custodian' is a legal person who is responsible for the content and quality of the data, metadata, and/or code of a research product.
-       */
-      custodian?: unknown[]
-      /**
-       * description
-       * @description Longer statement or account giving the characteristics of someone or something.
-       */
-      description?: string
-      /**
-       * digitalIdentifier
-       * @description Digital handle to identify objects or legal persons.
-       */
-      digitalIdentifier?: { [key: string]: unknown }
-      /**
-       * fullDocumentation
-       * @description Non-abridged instructions, comments, and information for using a particular product.
-       */
-      fullDocumentation: { [key: string]: unknown }
-      /**
-       * fullName
-       * @description Whole, non-abbreviated name of something or somebody.
-       */
-      fullName?: string
-      /**
-       * funding
-       * @description Money provided by a legal person for a particular purpose.
-       */
-      funding?: unknown[]
-      hasTerminologyVersion: components["schemas"]["HasTerminologyVersion"]
-      /**
-       * homepage
-       * @description Main website of something or someone.
-       */
-      homepage?: { [key: string]: unknown }
-      /**
-       * howToCite
-       * @description Preferred format for citing a particular object or legal person.
-       */
-      howToCite?: string
-      /**
-       * isAlternativeVersionOf
-       * @description Reference to an original form where the essence was preserved, but presented in an alternative form.
-       */
-      isAlternativeVersionOf?: unknown[]
-      /**
-       * isNewVersionOf
-       * @description Reference to a previous (potentially outdated) particular form of something.
-       */
-      isNewVersionOf?: { [key: string]: unknown }
-      /**
-       * keyword
-       * @description Significant word or concept that are representative of something or someone.
-       */
-      keyword?: unknown[]
-      /**
-       * license
-       * @description Grant by a party to another party as an element of an agreement between those parties that permits to do, use, or own something.
-       */
-      license: { [key: string]: unknown }
-      /**
-       * ontologyIdentifier
-       * @description Term or code used to identify something or someone registered within a particular ontology.
-       */
-      ontologyIdentifier?: string[]
-      /**
-       * Othercontribution
-       * @description Structured information on the contribution made to a research product.
-       */
-      otherContribution?: components["schemas"]["siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__OtherContribution"]
-      /**
-       * relatedPublication
-       * @description Reference to something that was made available for the general public to see or buy.
-       */
-      relatedPublication?: unknown[]
-      /**
-       * releaseDate
-       * Format: date
-       * @description Fixed date on which a product is due to become or was made available for the general public to see or buy
-       */
-      releaseDate: string
-      /**
-       * repository
-       * @description Place, room, or container where something is deposited or stored.
-       */
-      repository?: { [key: string]: unknown }
-      /**
-       * shortName
-       * @description Shortened or fully abbreviated name of something or somebody.
-       */
-      shortName: string
-      /**
-       * supportChannel
-       * @description Way of communication used to interact with users or customers.
-       */
-      supportChannel?: string[]
-      /**
-       * versionIdentifier
-       * @description Term or code used to identify the version of something.
-       */
-      versionIdentifier: string
-      /**
-       * versionInnovation
-       * @description Documentation on what changed in comparison to a previously published form of something.
-       */
-      versionInnovation: string
-    }
-    /** OtherContribution */
-    siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__OtherContribution: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * contributionType
-       * @description Distinct class of what was given or supplied as a part or share.
-       */
-      contributionType: unknown[]
-      /**
-       * contributor
-       * @description Legal person that gave or supplied something as a part or share.
-       */
-      contributor: unknown
-    }
-    /** Coordinates */
-    siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Coordinates: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * typeOfUncertainty
-       * @description Distinct technique used to quantify the uncertainty of a measurement.
-       */
-      typeOfUncertainty?: unknown
-      /**
-       * uncertainty
-       * @description Quantitative value range defining the uncertainty of a measurement.
-       */
-      uncertainty?: number[]
-      /**
-       * unit
-       * @description Determinate quantity adopted as a standard of measurement.
-       */
-      unit?: unknown
-      /**
-       * value
-       * @description Entry for a property.
-       */
-      value: number
-    }
-    /** Model */
-    siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Model: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * @Id
-       * @description Metadata node identifier.
-       */
-      "@id": string
-      /** @Type */
-      "@type": string
-      hasAnnotation?: components["schemas"]["HasAnnotation"]
-      /**
-       * hasParent
-       * @description Reference to a parent object or legal person.
-       */
-      hasParent?: unknown[]
-      /** lookupLabel */
-      lookupLabel?: string
-      /**
-       * name
-       * @description Word or phrase that constitutes the distinctive designation of a being or thing.
-       */
-      name?: string
-      /**
-       * ontologyIdentifier
-       * @description Term or code used to identify something or someone registered within a particular ontology.
-       */
-      ontologyIdentifier?: string[]
-      /** Relationassessment */
-      relationAssessment?: Partial<
-        components["schemas"]["RelationAssessmentItem"]
-      > &
-        Partial<components["schemas"]["RelationAssessmentItem1"]>
-      /**
-       * versionIdentifier
-       * @description Term or code used to identify the version of something.
-       */
-      versionIdentifier: string
-      /**
-       * versionInnovation
-       * @description Documentation on what changed in comparison to a previously published form of something.
-       */
-      versionInnovation?: string
-    }
-    /** Coordinates */
-    siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Coordinates: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * typeOfUncertainty
-       * @description Distinct technique used to quantify the uncertainty of a measurement.
-       */
-      typeOfUncertainty?: unknown
-      /**
-       * uncertainty
-       * @description Quantitative value range defining the uncertainty of a measurement.
-       */
-      uncertainty?: number[]
-      /**
-       * unit
-       * @description Determinate quantity adopted as a standard of measurement.
-       */
-      unit?: unknown
-      /**
-       * value
-       * @description Entry for a property.
-       */
-      value: number
-    }
-    /** Model */
-    siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * @Id
-       * @description Metadata node identifier.
-       */
-      "@id": string
-      /** @Type */
-      "@type": string
-      /**
-       * coordinateSpace
-       * @description Two or three dimensional geometric setting.
-       */
-      coordinateSpace: { [key: string]: unknown }
-      /**
-       * Coordinates
-       * @description Structured information on a quantitative value.
-       */
-      coordinates: components["schemas"]["siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Coordinates"][]
-    }
-    /** Copyright */
-    siibra__openminds__core__v4__products__datasetVersion__Copyright: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * holder
-       * @description Legal person in possession of something.
-       */
-      holder: unknown[]
-      /**
-       * year
-       * @description Cycle in the Gregorian calendar specified by a number and comprised of 365 or 366 days divided into 12 months beginning with January and ending with December.
-       */
-      year: string
-    }
-    /** Model */
-    siibra__openminds__core__v4__products__datasetVersion__Model: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * @Id
-       * @description Metadata node identifier.
-       */
-      "@id": string
-      /** @Type */
-      "@type": string
-      /**
-       * accessibility
-       * @description Level to which something is accessible to someone or something.
-       */
-      accessibility: { [key: string]: unknown }
-      /**
-       * author
-       * @description Creator of a literary or creative work, as well as a dataset publication.
-       */
-      author?: unknown[]
-      /** behavioralProtocol */
-      behavioralProtocol?: unknown[]
-      /**
-       * Copyright
-       * @description Structured information on the copyright.
-       */
-      copyright?: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Copyright"]
-      /**
-       * custodian
-       * @description The 'custodian' is a legal person who is responsible for the content and quality of the data, metadata, and/or code of a research product.
-       */
-      custodian?: unknown[]
-      /** dataType */
-      dataType: unknown[]
-      /**
-       * description
-       * @description Longer statement or account giving the characteristics of someone or something.
-       */
-      description?: string
-      /**
-       * digitalIdentifier
-       * @description Digital handle to identify objects or legal persons.
-       */
-      digitalIdentifier: { [key: string]: unknown }
-      /**
-       * ethicsAssessment
-       * @description Judgment about the applied principles of conduct governing an individual or a group.
-       */
-      ethicsAssessment: { [key: string]: unknown }
-      /** experimentalApproach */
-      experimentalApproach: unknown[]
-      /**
-       * fullDocumentation
-       * @description Non-abridged instructions, comments, and information for using a particular product.
-       */
-      fullDocumentation: { [key: string]: unknown }
-      /**
-       * fullName
-       * @description Whole, non-abbreviated name of something or somebody.
-       */
-      fullName?: string
-      /**
-       * funding
-       * @description Money provided by a legal person for a particular purpose.
-       */
-      funding?: unknown[]
-      /**
-       * homepage
-       * @description Main website of something or someone.
-       */
-      homepage?: { [key: string]: unknown }
-      /**
-       * howToCite
-       * @description Preferred format for citing a particular object or legal person.
-       */
-      howToCite?: string
-      /**
-       * inputData
-       * @description Data that is put into a process or machine.
-       */
-      inputData?: unknown[]
-      /**
-       * isAlternativeVersionOf
-       * @description Reference to an original form where the essence was preserved, but presented in an alternative form.
-       */
-      isAlternativeVersionOf?: unknown[]
-      /**
-       * isNewVersionOf
-       * @description Reference to a previous (potentially outdated) particular form of something.
-       */
-      isNewVersionOf?: { [key: string]: unknown }
-      /**
-       * keyword
-       * @description Significant word or concept that are representative of something or someone.
-       */
-      keyword?: unknown[]
-      /**
-       * license
-       * @description Grant by a party to another party as an element of an agreement between those parties that permits to do, use, or own something.
-       */
-      license: { [key: string]: unknown }
-      /**
-       * Othercontribution
-       * @description Structured information on the contribution made to a research product.
-       */
-      otherContribution?: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__OtherContribution"]
-      /** preparationDesign */
-      preparationDesign?: unknown[]
-      /**
-       * relatedPublication
-       * @description Reference to something that was made available for the general public to see or buy.
-       */
-      relatedPublication?: unknown[]
-      /**
-       * releaseDate
-       * Format: date
-       * @description Fixed date on which a product is due to become or was made available for the general public to see or buy
-       */
-      releaseDate: string
-      /**
-       * repository
-       * @description Place, room, or container where something is deposited or stored.
-       */
-      repository?: { [key: string]: unknown }
-      /**
-       * shortName
-       * @description Shortened or fully abbreviated name of something or somebody.
-       */
-      shortName: string
-      /** studiedSpecimen */
-      studiedSpecimen?: unknown[]
-      /**
-       * studyTarget
-       * @description Structure or function that was targeted within a study.
-       */
-      studyTarget?: unknown[]
-      /**
-       * supportChannel
-       * @description Way of communication used to interact with users or customers.
-       */
-      supportChannel?: string[]
-      /**
-       * technique
-       * @description Method of accomplishing a desired aim.
-       */
-      technique: unknown[]
-      /**
-       * versionIdentifier
-       * @description Term or code used to identify the version of something.
-       */
-      versionIdentifier: string
-      /**
-       * versionInnovation
-       * @description Documentation on what changed in comparison to a previously published form of something.
-       */
-      versionInnovation: string
-    }
-    /** OtherContribution */
-    siibra__openminds__core__v4__products__datasetVersion__OtherContribution: {
-      /**
-       * @Context
-       * @default [object Object]
-       */
-      "@context"?: components["schemas"]["VocabModel"]
-      /**
-       * contributionType
-       * @description Distinct class of what was given or supplied as a part or share.
-       */
-      contributionType: unknown[]
-      /**
-       * contributor
-       * @description Legal person that gave or supplied something as a part or share.
-       */
-      contributor: unknown
-    }
-  }
-}
+// export interface components {
+//   schemas: {
+//     /** AutoradiographyDataModel */
+//     AutoradiographyDataModel: {
+//       /**
+//        * Content Type
+//        * @default application/octet-stream
+//        */
+//       content_type?: string
+//       /**
+//        * Content Encoding
+//        * @default gzip; base64
+//        */
+//       content_encoding?: string
+//       /** X-Width */
+//       "x-width": number
+//       /** X-Height */
+//       "x-height": number
+//       /** X-Channel */
+//       "x-channel": number
+//       /** Dtype */
+//       dtype: string
+//       /** Content */
+//       content: string
+//     }
+//     /** AxesOrigin */
+//     AxesOrigin: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * typeOfUncertainty
+//        * @description Distinct technique used to quantify the uncertainty of a measurement.
+//        */
+//       typeOfUncertainty?: unknown
+//       /**
+//        * uncertainty
+//        * @description Quantitative value range defining the uncertainty of a measurement.
+//        */
+//       uncertainty?: number[]
+//       /**
+//        * unit
+//        * @description Determinate quantity adopted as a standard of measurement.
+//        */
+//       unit?: unknown
+//       /**
+//        * value
+//        * @description Entry for a property.
+//        */
+//       value: number
+//     }
+//     /** BaseDatasetJsonModel */
+//     BaseDatasetJsonModel: {
+//       /** @Id */
+//       "@id": string
+//       /**
+//        * @Type
+//        * @constant
+//        */
+//       "@type"?: "https://openminds.ebrains.eu/core/DatasetVersion"
+//       metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
+//       /** Urls */
+//       urls: components["schemas"]["Url"][]
+//     }
+//     /** BestViewPoint */
+//     BestViewPoint: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * coordinateSpace
+//        * @description Two or three dimensional geometric setting.
+//        */
+//       coordinateSpace: unknown
+//       /**
+//        * Coordinates
+//        * @description Structured information on a quantitative value.
+//        */
+//       coordinates: components["schemas"]["siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Coordinates"][]
+//     }
+//     /** BoundingBoxModel */
+//     BoundingBoxModel: {
+//       /** @Type */
+//       "@type": string
+//       /** Space */
+//       space: { [key: string]: string }
+//       center: components["schemas"]["siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model"]
+//       minpoint: components["schemas"]["siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model"]
+//       maxpoint: components["schemas"]["siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model"]
+//       /** Shape */
+//       shape: number[]
+//       /** Isplanar */
+//       isPlanar: boolean
+//     }
+//     /** ConnectivityMatrixDataModel */
+//     ConnectivityMatrixDataModel: {
+//       /** @Id */
+//       "@id": string
+//       /** @Type */
+//       "@type": string
+//       /** Name */
+//       name?: string
+//       /** Description */
+//       description?: string
+//       /** Citation */
+//       citation?: string
+//       /** Authors */
+//       authors?: string[]
+//       /** Cohort */
+//       cohort?: string
+//       /** Subject */
+//       subject?: string
+//       /** Filename */
+//       filename?: string
+//       /** Dataset Id */
+//       dataset_id?: string
+//       /** Parcellations */
+//       parcellations: { [key: string]: string }[]
+//       matrix?: components["schemas"]["NpArrayDataModel"]
+//       /** Columns */
+//       columns?: string[]
+//     }
+//     /** CorticalCellDistributionModel */
+//     CorticalCellDistributionModel: {
+//       /** @Id */
+//       "@id": string
+//       /**
+//        * @Type
+//        * @constant
+//        */
+//       "@type"?: "siibra/features/cells"
+//       metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
+//       /** Urls */
+//       urls: components["schemas"]["Url"][]
+//       /** Cells */
+//       cells?: components["schemas"]["CorticalCellModel"][]
+//       /** Section */
+//       section?: string
+//       /** Patch */
+//       patch?: string
+//     }
+//     /** CorticalCellModel */
+//     CorticalCellModel: {
+//       /** X */
+//       x: number
+//       /** Y */
+//       y: number
+//       /** Area */
+//       area: number
+//       /** Layer */
+//       layer: number
+//       /** Instance Label */
+//       "instance label": number
+//     }
+//     /** DatasetJsonModel */
+//     DatasetJsonModel: {
+//       /** @Id */
+//       "@id": string
+//       /**
+//        * @Type
+//        * @constant
+//        */
+//       "@type"?: "https://openminds.ebrains.eu/core/DatasetVersion"
+//       metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
+//       /** Urls */
+//       urls: components["schemas"]["Url"][]
+//     }
+//     /** FingerPrintDataModel */
+//     FingerPrintDataModel: {
+//       /** Mean */
+//       mean: number
+//       /** Std */
+//       std: number
+//       /** Unit */
+//       unit: string
+//     }
+//     /** HTTPValidationError */
+//     HTTPValidationError: {
+//       /** Detail */
+//       detail?: components["schemas"]["ValidationError"][]
+//     }
+//     /** HasAnnotation */
+//     HasAnnotation: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * Bestviewpoint
+//        * @description Structured information on a coordinate point.
+//        */
+//       bestViewPoint?: components["schemas"]["BestViewPoint"]
+//       /**
+//        * criteria
+//        * @description Aspects or standards on which a judgement or decision is based.
+//        */
+//       criteria?: unknown
+//       /**
+//        * criteriaQualityType
+//        * @description Distinct class that defines how the judgement or decision was made for a particular criteria.
+//        */
+//       criteriaQualityType: unknown
+//       /**
+//        * displayColor
+//        * @description Preferred coloring.
+//        */
+//       displayColor?: string
+//       /**
+//        * inspiredBy
+//        * @description Reference to an inspiring element.
+//        */
+//       inspiredBy?: unknown[]
+//       /**
+//        * internalIdentifier
+//        * @description Term or code that identifies someone or something within a particular product.
+//        */
+//       internalIdentifier: string
+//       /**
+//        * laterality
+//        * @description Differentiation between a pair of lateral homologous parts of the body.
+//        */
+//       laterality?: unknown[]
+//       /**
+//        * visualizedIn
+//        * @description Reference to an image in which something is visible.
+//        */
+//       visualizedIn?: unknown
+//     }
+//     /** HasTerminologyVersion */
+//     HasTerminologyVersion: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * definedIn
+//        * @description Reference to a file instance in which something is stored.
+//        */
+//       definedIn?: unknown[]
+//       /** hasEntityVersion */
+//       hasEntityVersion: unknown[]
+//       /**
+//        * ontologyIdentifier
+//        * @description Term or code used to identify something or someone registered within a particular ontology.
+//        */
+//       ontologyIdentifier?: string[]
+//     }
+//     /** HrefModel */
+//     HrefModel: {
+//       /** Href */
+//       href: string
+//     }
+//     /** IEEGContactPointModel */
+//     IEEGContactPointModel: {
+//       /** Inroi */
+//       inRoi?: boolean
+//       /** Id */
+//       id: string
+//       point: components["schemas"]["siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model"]
+//     }
+//     /** IEEGElectrodeModel */
+//     IEEGElectrodeModel: {
+//       /** Inroi */
+//       inRoi?: boolean
+//       /** Electrode Id */
+//       electrode_id: string
+//       /** Contact Points */
+//       contact_points: {
+//         [key: string]: components["schemas"]["IEEGContactPointModel"]
+//       }
+//     }
+//     /** IEEGSessionModel */
+//     IEEGSessionModel: {
+//       /** Inroi */
+//       inRoi?: boolean
+//       /** @Id */
+//       "@id": string
+//       /**
+//        * @Type
+//        * @constant
+//        */
+//       "@type"?: "siibra/features/ieegSession"
+//       dataset: components["schemas"]["DatasetJsonModel"]
+//       /** Sub Id */
+//       sub_id: string
+//       /** Electrodes */
+//       electrodes: {
+//         [key: string]: components["schemas"]["IEEGElectrodeModel"]
+//       }
+//     }
+//     /** NeurotransmitterMarkupModel */
+//     NeurotransmitterMarkupModel: {
+//       /** Latex */
+//       latex: string
+//       /** Markdown */
+//       markdown: string
+//       /** Name */
+//       name: string
+//       /** Label */
+//       label: string
+//     }
+//     /** NiiMetadataModel */
+//     NiiMetadataModel: {
+//       /** Min */
+//       min: number
+//       /** Max */
+//       max: number
+//     }
+//     /** NpArrayDataModel */
+//     NpArrayDataModel: {
+//       /**
+//        * Content Type
+//        * @default application/octet-stream
+//        */
+//       content_type?: string
+//       /**
+//        * Content Encoding
+//        * @default gzip; base64
+//        */
+//       content_encoding?: string
+//       /** X-Width */
+//       "x-width": number
+//       /** X-Height */
+//       "x-height": number
+//       /** X-Channel */
+//       "x-channel": number
+//       /** Dtype */
+//       dtype: string
+//       /** Content */
+//       content: string
+//     }
+//     /** Page[Union[siibra.features.connectivity.ConnectivityMatrixDataModel, app.models.SerializationErrorModel]] */
+//     "Page_Union_siibra.features.connectivity.ConnectivityMatrixDataModel__app.models.SerializationErrorModel__": {
+//       /** Items */
+//       items: (Partial<components["schemas"]["ConnectivityMatrixDataModel"]> &
+//         Partial<components["schemas"]["SerializationErrorModel"]>)[]
+//       /** Total */
+//       total: number
+//       /** Page */
+//       page: number
+//       /** Size */
+//       size: number
+//     }
+//     /** Page[VolumeModel] */
+//     Page_VolumeModel_: {
+//       /** Items */
+//       items: components["schemas"]["VolumeModel"][]
+//       /** Total */
+//       total: number
+//       /** Page */
+//       page: number
+//       /** Size */
+//       size: number
+//     }
+//     /** ProfileDataModel */
+//     ProfileDataModel: {
+//       density: components["schemas"]["NpArrayDataModel"]
+//       /** Unit */
+//       unit: string
+//     }
+//     /** QuantitativeOverlapItem */
+//     QuantitativeOverlapItem: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * typeOfUncertainty
+//        * @description Distinct technique used to quantify the uncertainty of a measurement.
+//        */
+//       typeOfUncertainty?: unknown
+//       /**
+//        * uncertainty
+//        * @description Quantitative value range defining the uncertainty of a measurement.
+//        */
+//       uncertainty?: number[]
+//       /**
+//        * unit
+//        * @description Determinate quantity adopted as a standard of measurement.
+//        */
+//       unit?: unknown
+//       /**
+//        * value
+//        * @description Entry for a property.
+//        */
+//       value: number
+//     }
+//     /** QuantitativeOverlapItem1 */
+//     QuantitativeOverlapItem1: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * maxValue
+//        * @description Greatest quantity attained or allowed.
+//        */
+//       maxValue: number
+//       /** maxValueUnit */
+//       maxValueUnit?: unknown
+//       /**
+//        * minValue
+//        * @description Smallest quantity attained or allowed.
+//        */
+//       minValue: number
+//       /** minValueUnit */
+//       minValueUnit?: unknown
+//     }
+//     /** ReceptorDataModel */
+//     ReceptorDataModel: {
+//       /** Autoradiographs */
+//       autoradiographs: {
+//         [key: string]: components["schemas"]["AutoradiographyDataModel"]
+//       }
+//       /** Profiles */
+//       profiles: { [key: string]: components["schemas"]["ProfileDataModel"] }
+//       /** Fingerprints */
+//       fingerprints: {
+//         [key: string]: components["schemas"]["FingerPrintDataModel"]
+//       }
+//       /** Receptor Symbols */
+//       receptor_symbols: {
+//         [key: string]: components["schemas"]["SymbolMarkupClass"]
+//       }
+//     }
+//     /** ReceptorDatasetModel */
+//     ReceptorDatasetModel: {
+//       /** @Id */
+//       "@id": string
+//       /**
+//        * @Type
+//        * @constant
+//        */
+//       "@type"?: "siibra/features/receptor"
+//       metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
+//       /** Urls */
+//       urls: components["schemas"]["Url"][]
+//       data?: components["schemas"]["ReceptorDataModel"]
+//     }
+//     /** ReceptorMarkupModel */
+//     ReceptorMarkupModel: {
+//       /** Latex */
+//       latex: string
+//       /** Markdown */
+//       markdown: string
+//       /** Name */
+//       name: string
+//     }
+//     /** RelationAssessmentItem */
+//     RelationAssessmentItem: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * criteria
+//        * @description Aspects or standards on which a judgement or decision is based.
+//        */
+//       criteria?: unknown
+//       /**
+//        * inRelationTo
+//        * @description Reference to a related element.
+//        */
+//       inRelationTo: unknown
+//       /**
+//        * qualitativeOverlap
+//        * @description Semantic characterization of how much two things occupy the same space.
+//        */
+//       qualitativeOverlap: unknown
+//     }
+//     /** RelationAssessmentItem1 */
+//     RelationAssessmentItem1: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * criteria
+//        * @description Aspects or standards on which a judgement or decision is based.
+//        */
+//       criteria?: unknown
+//       /**
+//        * inRelationTo
+//        * @description Reference to a related element.
+//        */
+//       inRelationTo: unknown
+//       /** Quantitativeoverlap */
+//       quantitativeOverlap: Partial<
+//         components["schemas"]["QuantitativeOverlapItem"]
+//       > &
+//         Partial<components["schemas"]["QuantitativeOverlapItem1"]>
+//     }
+//     /** SapiAtlasModel */
+//     SapiAtlasModel: {
+//       /** Links */
+//       links: { [key: string]: components["schemas"]["HrefModel"] }
+//       /** @Id */
+//       "@id": string
+//       /** Name */
+//       name: string
+//       /**
+//        * @Type
+//        * @constant
+//        */
+//       "@type"?: "juelich/iav/atlas/v1.0.0"
+//       /** Spaces */
+//       spaces: components["schemas"]["SiibraAtIdModel"][]
+//       /** Parcellations */
+//       parcellations: components["schemas"]["SiibraAtIdModel"][]
+//       species: components["schemas"]["SpeciesModel"]
+//     }
+//     /** SapiParcellationModel */
+//     SapiParcellationModel: {
+//       /** Links */
+//       links: { [key: string]: components["schemas"]["HrefModel"] }
+//       /** @Id */
+//       "@id": string
+//       /**
+//        * @Type
+//        * @constant
+//        */
+//       "@type"?: "minds/core/parcellationatlas/v1.0.0"
+//       /** Name */
+//       name: string
+//       /** Modality */
+//       modality?: string
+//       /** Datasets */
+//       datasets: components["schemas"]["DatasetJsonModel"][]
+//       /** Brainatlasversions */
+//       brainAtlasVersions: components["schemas"]["siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__Model"][]
+//       version?: components["schemas"]["SiibraParcellationVersionModel"]
+//     }
+//     /** SapiSpaceModel */
+//     SapiSpaceModel: {
+//       /** Links */
+//       links: { [key: string]: components["schemas"]["HrefModel"] }
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * @Id
+//        * @description Metadata node identifier.
+//        */
+//       "@id": string
+//       /** @Type */
+//       "@type": string
+//       /**
+//        * anatomicalAxesOrientation
+//        * @description Relation between reference planes used in anatomy and mathematics.
+//        */
+//       anatomicalAxesOrientation: { [key: string]: unknown }
+//       /**
+//        * Axesorigin
+//        * @description Structured information on a quantitative value.
+//        */
+//       axesOrigin: components["schemas"]["AxesOrigin"][]
+//       /**
+//        * defaultImage
+//        * @description Two or three dimensional image that particluarly represents a specific coordinate space.
+//        */
+//       defaultImage?: unknown[]
+//       /**
+//        * digitalIdentifier
+//        * @description Digital handle to identify objects or legal persons.
+//        */
+//       digitalIdentifier?: { [key: string]: unknown }
+//       /**
+//        * fullName
+//        * @description Whole, non-abbreviated name of something or somebody.
+//        */
+//       fullName: string
+//       /**
+//        * homepage
+//        * @description Main website of something or someone.
+//        */
+//       homepage?: { [key: string]: unknown }
+//       /**
+//        * howToCite
+//        * @description Preferred format for citing a particular object or legal person.
+//        */
+//       howToCite?: string
+//       /**
+//        * nativeUnit
+//        * @description Determinate quantity used in the original measurement.
+//        */
+//       nativeUnit: { [key: string]: unknown }
+//       /**
+//        * ontologyIdentifier
+//        * @description Term or code used to identify something or someone registered within a particular ontology.
+//        */
+//       ontologyIdentifier?: string[]
+//       /**
+//        * releaseDate
+//        * Format: date
+//        * @description Fixed date on which a product is due to become or was made available for the general public to see or buy
+//        */
+//       releaseDate: string
+//       /**
+//        * shortName
+//        * @description Shortened or fully abbreviated name of something or somebody.
+//        */
+//       shortName: string
+//       /**
+//        * versionIdentifier
+//        * @description Term or code used to identify the version of something.
+//        */
+//       versionIdentifier: string
+//     }
+//     /** SerializationErrorModel */
+//     SerializationErrorModel: {
+//       /**
+//        * Type
+//        * @constant
+//        */
+//       type?: "spy/serialization-error"
+//       /** Message */
+//       message: string
+//     }
+//     /** SiibraAtIdModel */
+//     SiibraAtIdModel: {
+//       /** @Id */
+//       "@id": string
+//     }
+//     /** SiibraParcellationVersionModel */
+//     SiibraParcellationVersionModel: {
+//       /** Name */
+//       name: string
+//       /** Deprecated */
+//       deprecated?: boolean
+//       prev?: components["schemas"]["SiibraAtIdModel"]
+//       next?: components["schemas"]["SiibraAtIdModel"]
+//     }
+//     /** SpeciesModel */
+//     SpeciesModel: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * @Id
+//        * @description Metadata node identifier.
+//        */
+//       "@id": string
+//       /** @Type */
+//       "@type": string
+//       /**
+//        * definition
+//        * @description Short, but precise statement of the meaning of a word, word group, sign or a symbol.
+//        */
+//       definition?: string
+//       /**
+//        * description
+//        * @description Longer statement or account giving the characteristics of someone or something.
+//        */
+//       description?: string
+//       /**
+//        * interlexIdentifier
+//        * @description Persistent identifier for a term registered in the InterLex project.
+//        */
+//       interlexIdentifier?: string
+//       /**
+//        * knowledgeSpaceLink
+//        * @description Persistent link to an encyclopedia entry in the Knowledge Space project.
+//        */
+//       knowledgeSpaceLink?: string
+//       /**
+//        * name
+//        * @description Word or phrase that constitutes the distinctive designation of a being or thing.
+//        */
+//       name: string
+//       /**
+//        * preferredOntologyIdentifier
+//        * @description Persistent identifier of a preferred ontological term.
+//        */
+//       preferredOntologyIdentifier?: string
+//       /**
+//        * synonym
+//        * @description Words or expressions used in the same language that have the same or nearly the same meaning in some or all senses.
+//        */
+//       synonym?: string[]
+//       /** Kgv1Id */
+//       kgV1Id: string
+//     }
+//     /** SymbolMarkupClass */
+//     SymbolMarkupClass: {
+//       receptor: components["schemas"]["ReceptorMarkupModel"]
+//       neurotransmitter: components["schemas"]["NeurotransmitterMarkupModel"]
+//     }
+//     /** Url */
+//     Url: {
+//       /** Doi */
+//       doi: string
+//       /** Cite */
+//       cite?: string
+//     }
+//     /** VOIDataModel */
+//     VOIDataModel: {
+//       /** @Id */
+//       "@id": string
+//       /**
+//        * @Type
+//        * @constant
+//        */
+//       "@type"?: "siibra/features/voi"
+//       metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
+//       /** Urls */
+//       urls: components["schemas"]["Url"][]
+//       /** Volumes */
+//       volumes: components["schemas"]["VolumeModel"][]
+//       location: components["schemas"]["BoundingBoxModel"]
+//     }
+//     /** ValidationError */
+//     ValidationError: {
+//       /** Location */
+//       loc: (Partial<string> & Partial<number>)[]
+//       /** Message */
+//       msg: string
+//       /** Error Type */
+//       type: string
+//     }
+//     /** VocabModel */
+//     VocabModel: {
+//       /** @Vocab */
+//       "@vocab": string
+//     }
+//     /** VolumeDataModel */
+//     VolumeDataModel: {
+//       /** Type */
+//       type: string
+//       /** Is Volume */
+//       is_volume: boolean
+//       /** Is Surface */
+//       is_surface: boolean
+//       /** Detail */
+//       detail: { [key: string]: unknown }
+//       space: components["schemas"]["SiibraAtIdModel"]
+//       /** Url */
+//       url?: string
+//       /** Url Map */
+//       url_map?: { [key: string]: string }
+//       /** Map Type */
+//       map_type?: string
+//       /** Volume Type */
+//       volume_type?: string
+//     }
+//     /** VolumeModel */
+//     VolumeModel: {
+//       /** @Id */
+//       "@id": string
+//       /** @Type */
+//       "@type": string
+//       metadata: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Model"]
+//       /** Urls */
+//       urls: components["schemas"]["Url"][]
+//       data: components["schemas"]["VolumeDataModel"]
+//     }
+//     /** Copyright */
+//     siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__Copyright: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * holder
+//        * @description Legal person in possession of something.
+//        */
+//       holder: unknown[]
+//       /**
+//        * year
+//        * @description Cycle in the Gregorian calendar specified by a number and comprised of 365 or 366 days divided into 12 months beginning with January and ending with December.
+//        */
+//       year: string
+//     }
+//     /** Model */
+//     siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__Model: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * @Id
+//        * @description Metadata node identifier.
+//        */
+//       "@id": string
+//       /** @Type */
+//       "@type": string
+//       /** abbreviation */
+//       abbreviation?: string
+//       /**
+//        * accessibility
+//        * @description Level to which something is accessible to someone or something.
+//        */
+//       accessibility: { [key: string]: unknown }
+//       /** atlasType */
+//       atlasType?: { [key: string]: unknown }
+//       /**
+//        * author
+//        * @description Creator of a literary or creative work, as well as a dataset publication.
+//        */
+//       author?: unknown[]
+//       /**
+//        * coordinateSpace
+//        * @description Two or three dimensional geometric setting.
+//        */
+//       coordinateSpace: { [key: string]: unknown }
+//       /**
+//        * Copyright
+//        * @description Structured information on the copyright.
+//        */
+//       copyright?: components["schemas"]["siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__Copyright"]
+//       /**
+//        * custodian
+//        * @description The 'custodian' is a legal person who is responsible for the content and quality of the data, metadata, and/or code of a research product.
+//        */
+//       custodian?: unknown[]
+//       /**
+//        * description
+//        * @description Longer statement or account giving the characteristics of someone or something.
+//        */
+//       description?: string
+//       /**
+//        * digitalIdentifier
+//        * @description Digital handle to identify objects or legal persons.
+//        */
+//       digitalIdentifier?: { [key: string]: unknown }
+//       /**
+//        * fullDocumentation
+//        * @description Non-abridged instructions, comments, and information for using a particular product.
+//        */
+//       fullDocumentation: { [key: string]: unknown }
+//       /**
+//        * fullName
+//        * @description Whole, non-abbreviated name of something or somebody.
+//        */
+//       fullName?: string
+//       /**
+//        * funding
+//        * @description Money provided by a legal person for a particular purpose.
+//        */
+//       funding?: unknown[]
+//       hasTerminologyVersion: components["schemas"]["HasTerminologyVersion"]
+//       /**
+//        * homepage
+//        * @description Main website of something or someone.
+//        */
+//       homepage?: { [key: string]: unknown }
+//       /**
+//        * howToCite
+//        * @description Preferred format for citing a particular object or legal person.
+//        */
+//       howToCite?: string
+//       /**
+//        * isAlternativeVersionOf
+//        * @description Reference to an original form where the essence was preserved, but presented in an alternative form.
+//        */
+//       isAlternativeVersionOf?: unknown[]
+//       /**
+//        * isNewVersionOf
+//        * @description Reference to a previous (potentially outdated) particular form of something.
+//        */
+//       isNewVersionOf?: { [key: string]: unknown }
+//       /**
+//        * keyword
+//        * @description Significant word or concept that are representative of something or someone.
+//        */
+//       keyword?: unknown[]
+//       /**
+//        * license
+//        * @description Grant by a party to another party as an element of an agreement between those parties that permits to do, use, or own something.
+//        */
+//       license: { [key: string]: unknown }
+//       /**
+//        * ontologyIdentifier
+//        * @description Term or code used to identify something or someone registered within a particular ontology.
+//        */
+//       ontologyIdentifier?: string[]
+//       /**
+//        * Othercontribution
+//        * @description Structured information on the contribution made to a research product.
+//        */
+//       otherContribution?: components["schemas"]["siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__OtherContribution"]
+//       /**
+//        * relatedPublication
+//        * @description Reference to something that was made available for the general public to see or buy.
+//        */
+//       relatedPublication?: unknown[]
+//       /**
+//        * releaseDate
+//        * Format: date
+//        * @description Fixed date on which a product is due to become or was made available for the general public to see or buy
+//        */
+//       releaseDate: string
+//       /**
+//        * repository
+//        * @description Place, room, or container where something is deposited or stored.
+//        */
+//       repository?: { [key: string]: unknown }
+//       /**
+//        * shortName
+//        * @description Shortened or fully abbreviated name of something or somebody.
+//        */
+//       shortName: string
+//       /**
+//        * supportChannel
+//        * @description Way of communication used to interact with users or customers.
+//        */
+//       supportChannel?: string[]
+//       /**
+//        * versionIdentifier
+//        * @description Term or code used to identify the version of something.
+//        */
+//       versionIdentifier: string
+//       /**
+//        * versionInnovation
+//        * @description Documentation on what changed in comparison to a previously published form of something.
+//        */
+//       versionInnovation: string
+//     }
+//     /** OtherContribution */
+//     siibra__openminds__SANDS__v3__atlas__brainAtlasVersion__OtherContribution: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * contributionType
+//        * @description Distinct class of what was given or supplied as a part or share.
+//        */
+//       contributionType: unknown[]
+//       /**
+//        * contributor
+//        * @description Legal person that gave or supplied something as a part or share.
+//        */
+//       contributor: unknown
+//     }
+//     /** Coordinates */
+//     siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Coordinates: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * typeOfUncertainty
+//        * @description Distinct technique used to quantify the uncertainty of a measurement.
+//        */
+//       typeOfUncertainty?: unknown
+//       /**
+//        * uncertainty
+//        * @description Quantitative value range defining the uncertainty of a measurement.
+//        */
+//       uncertainty?: number[]
+//       /**
+//        * unit
+//        * @description Determinate quantity adopted as a standard of measurement.
+//        */
+//       unit?: unknown
+//       /**
+//        * value
+//        * @description Entry for a property.
+//        */
+//       value: number
+//     }
+//     /** Model */
+//     siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Model: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * @Id
+//        * @description Metadata node identifier.
+//        */
+//       "@id": string
+//       /** @Type */
+//       "@type": string
+//       hasAnnotation?: components["schemas"]["HasAnnotation"]
+//       /**
+//        * hasParent
+//        * @description Reference to a parent object or legal person.
+//        */
+//       hasParent?: unknown[]
+//       /** lookupLabel */
+//       lookupLabel?: string
+//       /**
+//        * name
+//        * @description Word or phrase that constitutes the distinctive designation of a being or thing.
+//        */
+//       name?: string
+//       /**
+//        * ontologyIdentifier
+//        * @description Term or code used to identify something or someone registered within a particular ontology.
+//        */
+//       ontologyIdentifier?: string[]
+//       /** Relationassessment */
+//       relationAssessment?: Partial<
+//         components["schemas"]["RelationAssessmentItem"]
+//       > &
+//         Partial<components["schemas"]["RelationAssessmentItem1"]>
+//       /**
+//        * versionIdentifier
+//        * @description Term or code used to identify the version of something.
+//        */
+//       versionIdentifier: string
+//       /**
+//        * versionInnovation
+//        * @description Documentation on what changed in comparison to a previously published form of something.
+//        */
+//       versionInnovation?: string
+//     }
+//     /** Coordinates */
+//     siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Coordinates: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * typeOfUncertainty
+//        * @description Distinct technique used to quantify the uncertainty of a measurement.
+//        */
+//       typeOfUncertainty?: unknown
+//       /**
+//        * uncertainty
+//        * @description Quantitative value range defining the uncertainty of a measurement.
+//        */
+//       uncertainty?: number[]
+//       /**
+//        * unit
+//        * @description Determinate quantity adopted as a standard of measurement.
+//        */
+//       unit?: unknown
+//       /**
+//        * value
+//        * @description Entry for a property.
+//        */
+//       value: number
+//     }
+//     /** Model */
+//     siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * @Id
+//        * @description Metadata node identifier.
+//        */
+//       "@id": string
+//       /** @Type */
+//       "@type": string
+//       /**
+//        * coordinateSpace
+//        * @description Two or three dimensional geometric setting.
+//        */
+//       coordinateSpace: { [key: string]: unknown }
+//       /**
+//        * Coordinates
+//        * @description Structured information on a quantitative value.
+//        */
+//       coordinates: components["schemas"]["siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Coordinates"][]
+//     }
+//     /** Copyright */
+//     siibra__openminds__core__v4__products__datasetVersion__Copyright: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * holder
+//        * @description Legal person in possession of something.
+//        */
+//       holder: unknown[]
+//       /**
+//        * year
+//        * @description Cycle in the Gregorian calendar specified by a number and comprised of 365 or 366 days divided into 12 months beginning with January and ending with December.
+//        */
+//       year: string
+//     }
+//     /** Model */
+//     siibra__openminds__core__v4__products__datasetVersion__Model: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * @Id
+//        * @description Metadata node identifier.
+//        */
+//       "@id": string
+//       /** @Type */
+//       "@type": string
+//       /**
+//        * accessibility
+//        * @description Level to which something is accessible to someone or something.
+//        */
+//       accessibility: { [key: string]: unknown }
+//       /**
+//        * author
+//        * @description Creator of a literary or creative work, as well as a dataset publication.
+//        */
+//       author?: unknown[]
+//       /** behavioralProtocol */
+//       behavioralProtocol?: unknown[]
+//       /**
+//        * Copyright
+//        * @description Structured information on the copyright.
+//        */
+//       copyright?: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__Copyright"]
+//       /**
+//        * custodian
+//        * @description The 'custodian' is a legal person who is responsible for the content and quality of the data, metadata, and/or code of a research product.
+//        */
+//       custodian?: unknown[]
+//       /** dataType */
+//       dataType: unknown[]
+//       /**
+//        * description
+//        * @description Longer statement or account giving the characteristics of someone or something.
+//        */
+//       description?: string
+//       /**
+//        * digitalIdentifier
+//        * @description Digital handle to identify objects or legal persons.
+//        */
+//       digitalIdentifier: { [key: string]: unknown }
+//       /**
+//        * ethicsAssessment
+//        * @description Judgment about the applied principles of conduct governing an individual or a group.
+//        */
+//       ethicsAssessment: { [key: string]: unknown }
+//       /** experimentalApproach */
+//       experimentalApproach: unknown[]
+//       /**
+//        * fullDocumentation
+//        * @description Non-abridged instructions, comments, and information for using a particular product.
+//        */
+//       fullDocumentation: { [key: string]: unknown }
+//       /**
+//        * fullName
+//        * @description Whole, non-abbreviated name of something or somebody.
+//        */
+//       fullName?: string
+//       /**
+//        * funding
+//        * @description Money provided by a legal person for a particular purpose.
+//        */
+//       funding?: unknown[]
+//       /**
+//        * homepage
+//        * @description Main website of something or someone.
+//        */
+//       homepage?: { [key: string]: unknown }
+//       /**
+//        * howToCite
+//        * @description Preferred format for citing a particular object or legal person.
+//        */
+//       howToCite?: string
+//       /**
+//        * inputData
+//        * @description Data that is put into a process or machine.
+//        */
+//       inputData?: unknown[]
+//       /**
+//        * isAlternativeVersionOf
+//        * @description Reference to an original form where the essence was preserved, but presented in an alternative form.
+//        */
+//       isAlternativeVersionOf?: unknown[]
+//       /**
+//        * isNewVersionOf
+//        * @description Reference to a previous (potentially outdated) particular form of something.
+//        */
+//       isNewVersionOf?: { [key: string]: unknown }
+//       /**
+//        * keyword
+//        * @description Significant word or concept that are representative of something or someone.
+//        */
+//       keyword?: unknown[]
+//       /**
+//        * license
+//        * @description Grant by a party to another party as an element of an agreement between those parties that permits to do, use, or own something.
+//        */
+//       license: { [key: string]: unknown }
+//       /**
+//        * Othercontribution
+//        * @description Structured information on the contribution made to a research product.
+//        */
+//       otherContribution?: components["schemas"]["siibra__openminds__core__v4__products__datasetVersion__OtherContribution"]
+//       /** preparationDesign */
+//       preparationDesign?: unknown[]
+//       /**
+//        * relatedPublication
+//        * @description Reference to something that was made available for the general public to see or buy.
+//        */
+//       relatedPublication?: unknown[]
+//       /**
+//        * releaseDate
+//        * Format: date
+//        * @description Fixed date on which a product is due to become or was made available for the general public to see or buy
+//        */
+//       releaseDate: string
+//       /**
+//        * repository
+//        * @description Place, room, or container where something is deposited or stored.
+//        */
+//       repository?: { [key: string]: unknown }
+//       /**
+//        * shortName
+//        * @description Shortened or fully abbreviated name of something or somebody.
+//        */
+//       shortName: string
+//       /** studiedSpecimen */
+//       studiedSpecimen?: unknown[]
+//       /**
+//        * studyTarget
+//        * @description Structure or function that was targeted within a study.
+//        */
+//       studyTarget?: unknown[]
+//       /**
+//        * supportChannel
+//        * @description Way of communication used to interact with users or customers.
+//        */
+//       supportChannel?: string[]
+//       /**
+//        * technique
+//        * @description Method of accomplishing a desired aim.
+//        */
+//       technique: unknown[]
+//       /**
+//        * versionIdentifier
+//        * @description Term or code used to identify the version of something.
+//        */
+//       versionIdentifier: string
+//       /**
+//        * versionInnovation
+//        * @description Documentation on what changed in comparison to a previously published form of something.
+//        */
+//       versionInnovation: string
+//     }
+//     /** OtherContribution */
+//     siibra__openminds__core__v4__products__datasetVersion__OtherContribution: {
+//       /**
+//        * @Context
+//        * @default [object Object]
+//        */
+//       "@context"?: components["schemas"]["VocabModel"]
+//       /**
+//        * contributionType
+//        * @description Distinct class of what was given or supplied as a part or share.
+//        */
+//       contributionType: unknown[]
+//       /**
+//        * contributor
+//        * @description Legal person that gave or supplied something as a part or share.
+//        */
+//       contributor: unknown
+//     }
+//   }
+// }
 
-export interface operations {
-  /** Returns all regions for a given parcellation id. */
-  get_all_regions_from_atlas_parc_space_atlases__atlas_id__parcellations__parcellation_id__regions_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-      }
-      query: {
-        space_id?: string
-        find?: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Model"][]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns all regional features for a region. */
-  get_all_regional_features_for_region_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__features_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-        region_id: string
-      }
-      query: {
-        space_id?: string
-        type?: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": (Partial<
-            components["schemas"]["ReceptorDatasetModel"]
-          > &
-            Partial<components["schemas"]["BaseDatasetJsonModel"]> &
-            Partial<components["schemas"]["CorticalCellDistributionModel"]>)[]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns a feature for a region, as defined by the modality and feature ID */
-  get_single_detailed_regional_feature_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__features__feature_id__get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-        region_id: string
-        feature_id: string
-      }
-      query: {
-        space_id?: string
-        gene?: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": Partial<
-            components["schemas"]["ReceptorDatasetModel"]
-          > &
-            Partial<components["schemas"]["BaseDatasetJsonModel"]> &
-            Partial<components["schemas"]["CorticalCellDistributionModel"]>
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns information about a regional map for given region name. */
-  get_regional_map_info_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__regional_map_info_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-        region_id: string
-      }
-      query: {
-        space_id?: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["NiiMetadataModel"]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns a regional map for given region name. */
-  get_regional_map_file_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__regional_map_map_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-        region_id: string
-      }
-      query: {
-        space_id?: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": unknown
-          "application/octet-stream": string
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  get_regional_volumes_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__volumes_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-        region_id: string
-      }
-      query: {
-        space_id?: string
-        type?: string
-        page?: number
-        size?: number
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["Page_VolumeModel_"]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  get_regional_volumes_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__volumes__volume_id__get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-        region_id: string
-        volume_id: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["VolumeModel"]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  get_single_region_detail_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-        region_id: string
-      }
-      query: {
-        space_id?: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Model"]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns all parcellations that are defined in the siibra client for given atlas. */
-  get_all_parcellations_atlases__atlas_id__parcellations_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["SapiParcellationModel"][]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns a global feature for a specific modality id. */
-  get_single_detailed_global_feature_atlases__atlas_id__parcellations__parcellation_id__features__feature_id__get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-        feature_id: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": Partial<
-            components["schemas"]["ConnectivityMatrixDataModel"]
-          > &
-            Partial<components["schemas"]["SerializationErrorModel"]>
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns all global features for a parcellation. */
-  get_all_global_features_for_parcellation_atlases__atlas_id__parcellations__parcellation_id__features_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-      }
-      query: {
-        type?: string
-        page?: number
-        size?: number
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["Page_Union_siibra.features.connectivity.ConnectivityMatrixDataModel__app.models.SerializationErrorModel__"]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns one parcellation for given id. */
-  get_volumes_for_parcellation_atlases__atlas_id__parcellations__parcellation_id__volumes_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["VolumeModel"][]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns one parcellation for given id. */
-  get_single_parcellation_detail_atlases__atlas_id__parcellations__parcellation_id__get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        parcellation_id: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["SapiParcellationModel"]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns all spaces that are defined in the siibra client. */
-  get_all_spaces_atlases__atlas_id__spaces_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["SapiSpaceModel"][]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns a template for a given space id. */
-  get_template_by_space_id_atlases__atlas_id__spaces__space_id__templates_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        space_id: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": unknown
-          "application/octet-stream": string
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns all parcellation maps for a given space id. */
-  get_parcellation_map_for_space_atlases__atlas_id__spaces__space_id__parcellation_maps_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        space_id: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": unknown
-          "application/octet-stream": string
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /**
-   * Get a detailed view on a single spatial feature.
-   * A parcellation id and region id can be provided optional to get more details.
-   */
-  get_single_detailed_spatial_feature_atlases__atlas_id__spaces__space_id__features__feature_id__get: {
-    parameters: {
-      path: {
-        feature_id: string
-        atlas_id: string
-        space_id: string
-      }
-      query: {
-        parcellation_id?: string
-        region?: string
-        bbox?: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": Partial<
-            components["schemas"]["IEEGSessionModel"]
-          > &
-            Partial<components["schemas"]["VOIDataModel"]>
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Return all possible feature names and links to get more details */
-  get_all_spatial_features_for_space_atlases__atlas_id__spaces__space_id__features_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        space_id: string
-      }
-      query: {
-        parcellation_id?: string
-        type?: string
-        region?: string
-        bbox?: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": (Partial<
-            components["schemas"]["IEEGSessionModel"]
-          > &
-            Partial<components["schemas"]["VOIDataModel"]>)[]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  get_volumes_for_space_atlases__atlas_id__spaces__space_id__volumes_get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        space_id: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["VolumeModel"][]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Returns one space for given id, with links to further resources */
-  get_single_space_detail_atlases__atlas_id__spaces__space_id__get: {
-    parameters: {
-      path: {
-        atlas_id: string
-        space_id: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["SapiSpaceModel"]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Get all atlases known by siibra. */
-  get_all_atlases_atlases_get: {
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["SapiAtlasModel"][]
-        }
-      }
-    }
-  }
-  /** Get more information for a specific atlas with links to further objects. */
-  get_atlas_by_id_atlases__atlas_id__get: {
-    parameters: {
-      path: {
-        atlas_id: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": components["schemas"]["SapiAtlasModel"]
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-  /** Return all genes (name, acronym) in siibra */
-  get_gene_names_genes_get: {
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": unknown
-        }
-      }
-    }
-  }
-  /** Return all possible modalities */
-  get_all_available_modalities_modalities_get: {
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": unknown
-        }
-      }
-    }
-  }
-  /**
-   * Get all details for one feature by id.
-   * Since the feature id is unique, no atlas concept is required.
-   *
-   * Further optional params can extend the result.
-   * :param feature_id:
-   * :param atlas_id:
-   * :param space_id:
-   * :param parcellation_id:
-   * :param region_id:
-   * :return: FeatureModels
-   */
-  get_feature_details_features__feature_id__get: {
-    parameters: {
-      path: {
-        feature_id: string
-      }
-      query: {
-        atlas_id?: string
-        space_id?: string
-        parcellation_id?: string
-        region_id?: string
-      }
-    }
-    responses: {
-      /** Successful Response */
-      200: {
-        content: {
-          "application/json": Partial<
-            components["schemas"]["ReceptorDatasetModel"]
-          > &
-            Partial<components["schemas"]["BaseDatasetJsonModel"]> &
-            Partial<components["schemas"]["CorticalCellDistributionModel"]> &
-            Partial<components["schemas"]["IEEGSessionModel"]> &
-            Partial<components["schemas"]["VOIDataModel"]> &
-            Partial<components["schemas"]["ConnectivityMatrixDataModel"]> &
-            Partial<components["schemas"]["SerializationErrorModel"]>
-        }
-      }
-      /** Validation Error */
-      422: {
-        content: {
-          "application/json": components["schemas"]["HTTPValidationError"]
-        }
-      }
-    }
-  }
-}
+// export interface operations {
+//   /** Returns all regions for a given parcellation id. */
+//   get_all_regions_from_atlas_parc_space_atlases__atlas_id__parcellations__parcellation_id__regions_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//       }
+//       query: {
+//         space_id?: string
+//         find?: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Model"][]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns all regional features for a region. */
+//   get_all_regional_features_for_region_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__features_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//         region_id: string
+//       }
+//       query: {
+//         space_id?: string
+//         type?: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": (Partial<
+//             components["schemas"]["ReceptorDatasetModel"]
+//           > &
+//             Partial<components["schemas"]["BaseDatasetJsonModel"]> &
+//             Partial<components["schemas"]["CorticalCellDistributionModel"]>)[]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns a feature for a region, as defined by the modality and feature ID */
+//   get_single_detailed_regional_feature_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__features__feature_id__get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//         region_id: string
+//         feature_id: string
+//       }
+//       query: {
+//         space_id?: string
+//         gene?: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": Partial<
+//             components["schemas"]["ReceptorDatasetModel"]
+//           > &
+//             Partial<components["schemas"]["BaseDatasetJsonModel"]> &
+//             Partial<components["schemas"]["CorticalCellDistributionModel"]>
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns information about a regional map for given region name. */
+//   get_regional_map_info_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__regional_map_info_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//         region_id: string
+//       }
+//       query: {
+//         space_id?: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["NiiMetadataModel"]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns a regional map for given region name. */
+//   get_regional_map_file_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__regional_map_map_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//         region_id: string
+//       }
+//       query: {
+//         space_id?: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": unknown
+//           "application/octet-stream": string
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   get_regional_volumes_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__volumes_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//         region_id: string
+//       }
+//       query: {
+//         space_id?: string
+//         type?: string
+//         page?: number
+//         size?: number
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["Page_VolumeModel_"]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   get_regional_volumes_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__volumes__volume_id__get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//         region_id: string
+//         volume_id: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["VolumeModel"]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   get_single_region_detail_atlases__atlas_id__parcellations__parcellation_id__regions__region_id__get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//         region_id: string
+//       }
+//       query: {
+//         space_id?: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Model"]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns all parcellations that are defined in the siibra client for given atlas. */
+//   get_all_parcellations_atlases__atlas_id__parcellations_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["SapiParcellationModel"][]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns a global feature for a specific modality id. */
+//   get_single_detailed_global_feature_atlases__atlas_id__parcellations__parcellation_id__features__feature_id__get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//         feature_id: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": Partial<
+//             components["schemas"]["ConnectivityMatrixDataModel"]
+//           > &
+//             Partial<components["schemas"]["SerializationErrorModel"]>
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns all global features for a parcellation. */
+//   get_all_global_features_for_parcellation_atlases__atlas_id__parcellations__parcellation_id__features_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//       }
+//       query: {
+//         type?: string
+//         page?: number
+//         size?: number
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["Page_Union_siibra.features.connectivity.ConnectivityMatrixDataModel__app.models.SerializationErrorModel__"]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns one parcellation for given id. */
+//   get_volumes_for_parcellation_atlases__atlas_id__parcellations__parcellation_id__volumes_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["VolumeModel"][]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns one parcellation for given id. */
+//   get_single_parcellation_detail_atlases__atlas_id__parcellations__parcellation_id__get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         parcellation_id: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["SapiParcellationModel"]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns all spaces that are defined in the siibra client. */
+//   get_all_spaces_atlases__atlas_id__spaces_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["SapiSpaceModel"][]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns a template for a given space id. */
+//   get_template_by_space_id_atlases__atlas_id__spaces__space_id__templates_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         space_id: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": unknown
+//           "application/octet-stream": string
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns all parcellation maps for a given space id. */
+//   get_parcellation_map_for_space_atlases__atlas_id__spaces__space_id__parcellation_maps_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         space_id: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": unknown
+//           "application/octet-stream": string
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /**
+//    * Get a detailed view on a single spatial feature.
+//    * A parcellation id and region id can be provided optional to get more details.
+//    */
+//   get_single_detailed_spatial_feature_atlases__atlas_id__spaces__space_id__features__feature_id__get: {
+//     parameters: {
+//       path: {
+//         feature_id: string
+//         atlas_id: string
+//         space_id: string
+//       }
+//       query: {
+//         parcellation_id?: string
+//         region?: string
+//         bbox?: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": Partial<
+//             components["schemas"]["IEEGSessionModel"]
+//           > &
+//             Partial<components["schemas"]["VOIDataModel"]>
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Return all possible feature names and links to get more details */
+//   get_all_spatial_features_for_space_atlases__atlas_id__spaces__space_id__features_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         space_id: string
+//       }
+//       query: {
+//         parcellation_id?: string
+//         type?: string
+//         region?: string
+//         bbox?: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": (Partial<
+//             components["schemas"]["IEEGSessionModel"]
+//           > &
+//             Partial<components["schemas"]["VOIDataModel"]>)[]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   get_volumes_for_space_atlases__atlas_id__spaces__space_id__volumes_get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         space_id: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["VolumeModel"][]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Returns one space for given id, with links to further resources */
+//   get_single_space_detail_atlases__atlas_id__spaces__space_id__get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//         space_id: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["SapiSpaceModel"]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Get all atlases known by siibra. */
+//   get_all_atlases_atlases_get: {
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["SapiAtlasModel"][]
+//         }
+//       }
+//     }
+//   }
+//   /** Get more information for a specific atlas with links to further objects. */
+//   get_atlas_by_id_atlases__atlas_id__get: {
+//     parameters: {
+//       path: {
+//         atlas_id: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": components["schemas"]["SapiAtlasModel"]
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+//   /** Return all genes (name, acronym) in siibra */
+//   get_gene_names_genes_get: {
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": unknown
+//         }
+//       }
+//     }
+//   }
+//   /** Return all possible modalities */
+//   get_all_available_modalities_modalities_get: {
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": unknown
+//         }
+//       }
+//     }
+//   }
+//   /**
+//    * Get all details for one feature by id.
+//    * Since the feature id is unique, no atlas concept is required.
+//    *
+//    * Further optional params can extend the result.
+//    * :param feature_id:
+//    * :param atlas_id:
+//    * :param space_id:
+//    * :param parcellation_id:
+//    * :param region_id:
+//    * :return: FeatureModels
+//    */
+//   get_feature_details_features__feature_id__get: {
+//     parameters: {
+//       path: {
+//         feature_id: string
+//       }
+//       query: {
+//         atlas_id?: string
+//         space_id?: string
+//         parcellation_id?: string
+//         region_id?: string
+//       }
+//     }
+//     responses: {
+//       /** Successful Response */
+//       200: {
+//         content: {
+//           "application/json": Partial<
+//             components["schemas"]["ReceptorDatasetModel"]
+//           > &
+//             Partial<components["schemas"]["BaseDatasetJsonModel"]> &
+//             Partial<components["schemas"]["CorticalCellDistributionModel"]> &
+//             Partial<components["schemas"]["IEEGSessionModel"]> &
+//             Partial<components["schemas"]["VOIDataModel"]> &
+//             Partial<components["schemas"]["ConnectivityMatrixDataModel"]> &
+//             Partial<components["schemas"]["SerializationErrorModel"]>
+//         }
+//       }
+//       /** Validation Error */
+//       422: {
+//         content: {
+//           "application/json": components["schemas"]["HTTPValidationError"]
+//         }
+//       }
+//     }
+//   }
+// }
 
-export interface external {}
+// export interface external {}
diff --git a/src/atlasComponents/sapi/schemaV3.ts b/src/atlasComponents/sapi/schemaV3.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7c926b526224af5d5bc4ccdff711341591591ce3
--- /dev/null
+++ b/src/atlasComponents/sapi/schemaV3.ts
@@ -0,0 +1,1973 @@
+/**
+ * This file was auto-generated by openapi-typescript.
+ * Do not make direct changes to the file.
+ */
+
+
+export interface paths {
+  "/atlases": {
+    /** Get All Atlases */
+    get: operations["get_all_atlases_atlases_get"]
+  }
+  "/atlases/{atlas_id}": {
+    /** Get Single Atlas */
+    get: operations["get_single_atlas_atlases__atlas_id__get"]
+  }
+  "/spaces": {
+    /** Get All Spaces */
+    get: operations["get_all_spaces_spaces_get"]
+  }
+  "/spaces/{space_id}": {
+    /** Get Single Space */
+    get: operations["get_single_space_spaces__space_id__get"]
+  }
+  "/parcellations": {
+    /** Get All Parcellations */
+    get: operations["get_all_parcellations_parcellations_get"]
+  }
+  "/parcellations/{parcellation_id}": {
+    /** Get Single Parcellation */
+    get: operations["get_single_parcellation_parcellations__parcellation_id__get"]
+  }
+  "/regions": {
+    /** Get All Regions */
+    get: operations["get_all_regions_regions_get"]
+  }
+  "/regions/{region_id}": {
+    /** Get All Regions */
+    get: operations["get_all_regions_regions__region_id__get"]
+  }
+  "/map": {
+    /** Route Get Map */
+    get: operations["route_get_map_map_get"]
+  }
+  "/map/labelled_map.nii.gz": {
+    /**
+     * Route Get Parcellation Labelled Map 
+     * @description Returns a labelled map if region_id is not provided.
+     * 
+     * Returns a mask if a region_id is provided.
+     * 
+     * region_id MAY refer to ANY region on the region hierarchy, and a combined mask will be returned.
+     */
+    get: operations["route_get_parcellation_labelled_map_map_labelled_map_nii_gz_get"]
+  }
+  "/map/statistical_map.nii.gz": {
+    /**
+     * Route Get Region Statistical Map 
+     * @description Returns a statistic map.
+     * 
+     * region_id MUST refer to leaf region on the region hierarchy.
+     */
+    get: operations["route_get_region_statistical_map_map_statistical_map_nii_gz_get"]
+  }
+  "/map/statistical_map.info.json": {
+    /** Route Get Region Statistical Map */
+    get: operations["route_get_region_statistical_map_map_statistical_map_info_json_get"]
+  }
+  "/feature/_types": {
+    /** Get All Feature Types */
+    get: operations["get_all_feature_types_feature__types_get"]
+  }
+  "/feature/RegionalConnectivity": {
+    /** Get All Connectivity Features */
+    get: operations["get_all_connectivity_features_feature_RegionalConnectivity_get"]
+  }
+  "/feature/RegionalConnectivity/{feature_id}": {
+    /**
+     * Get Single Connectivity Feature 
+     * @description subject is an optional param.
+     * If provided, the specific matrix will be return.
+     * If not provided, the matrix averaged between subjects will be returned under the key _average.
+     */
+    get: operations["get_single_connectivity_feature_feature_RegionalConnectivity__feature_id__get"]
+  }
+  "/feature/CorticalProfile": {
+    /** Get All Connectivity Features */
+    get: operations["get_all_connectivity_features_feature_CorticalProfile_get"]
+  }
+  "/feature/CorticalProfile/{feature_id}": {
+    /** Get Single Connectivity Feature */
+    get: operations["get_single_connectivity_feature_feature_CorticalProfile__feature_id__get"]
+  }
+  "/feature/Tabular": {
+    /** Get All Tabular */
+    get: operations["get_all_tabular_feature_Tabular_get"]
+  }
+  "/feature/Tabular/{feature_id}": {
+    /** Get Single Tabular */
+    get: operations["get_single_tabular_feature_Tabular__feature_id__get"]
+  }
+  "/feature/Image": {
+    /** Get All Voi */
+    get: operations["get_all_voi_feature_Image_get"]
+  }
+  "/feature/Image/{feature_id}": {
+    /** Get Single Voi */
+    get: operations["get_single_voi_feature_Image__feature_id__get"]
+  }
+  "/feature/GeneExpressions": {
+    /** Get All Gene */
+    get: operations["get_all_gene_feature_GeneExpressions_get"]
+  }
+  "/feature/GeneExpressions/{feature_id}": {
+    /** Get Single Gene */
+    get: operations["get_single_gene_feature_GeneExpressions__feature_id__get"]
+  }
+  "/feature/EbrainsDataFeature": {
+    /** Get All Ebrains Df */
+    get: operations["get_all_ebrains_df_feature_EbrainsDataFeature_get"]
+  }
+  "/feature/EbrainsDataFeature/{feature_id}": {
+    /** Get Single Ebrains Df */
+    get: operations["get_single_ebrains_df_feature_EbrainsDataFeature__feature_id__get"]
+  }
+  "/feature/{feature_id}": {
+    /**
+     * Get Single Feature 
+     * @description This endpoint allows detail of a single feature to be fetched, without the necessary context. However, the tradeoff for this endpoint is:
+     * 
+     * - the endpoint typing is the union of all possible return types
+     * - the client needs to supply any necessary query param (e.g. subject for regional connectivity, gene for gene expression etc)
+     */
+    get: operations["get_single_feature_feature__feature_id__get"]
+  }
+}
+
+export type webhooks = Record<string, never>;
+
+export interface components {
+  schemas: {
+    /** AxesOrigin */
+    AxesOrigin: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * typeOfUncertainty 
+       * @description Distinct technique used to quantify the uncertainty of a measurement.
+       */
+      typeOfUncertainty?: Record<string, never>
+      /**
+       * uncertainty 
+       * @description Quantitative value range defining the uncertainty of a measurement.
+       */
+      uncertainty?: (number)[]
+      /**
+       * unit 
+       * @description Determinate quantity adopted as a standard of measurement.
+       */
+      unit?: Record<string, never>
+      /**
+       * value 
+       * @description Entry for a property.
+       */
+      value: number
+    }
+    /** BestViewPoint */
+    BestViewPoint: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * coordinateSpace 
+       * @description Two or three dimensional geometric setting.
+       */
+      coordinateSpace: Record<string, never>
+      /**
+       * Coordinates 
+       * @description Structured information on a quantitative value.
+       */
+      coordinates: (components["schemas"]["api__models__openminds__SANDS__v3__atlas__parcellationEntityVersion__Coordinates"])[]
+    }
+    /** BoundingBoxModel */
+    BoundingBoxModel: {
+      /** @Type */
+      "@type": string
+      space: components["schemas"]["SiibraAtIdModel"]
+      center: components["schemas"]["CoordinatePointModel"]
+      minpoint: components["schemas"]["CoordinatePointModel"]
+      maxpoint: components["schemas"]["CoordinatePointModel"]
+      /** Shape */
+      shape: (number)[]
+      /** Isplanar */
+      isPlanar: boolean
+    }
+    /** BrainAtlasVersionModel */
+    BrainAtlasVersionModel: {
+      /** @Type */
+      "@type": string
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * @Id 
+       * @description Metadata node identifier.
+       */
+      "@id": string
+      /** abbreviation */
+      abbreviation?: string
+      /**
+       * accessibility 
+       * @description Level to which something is accessible to someone or something.
+       */
+      accessibility: Record<string, never>
+      /** atlasType */
+      atlasType?: Record<string, never>
+      /**
+       * author 
+       * @description Creator of a literary or creative work, as well as a dataset publication.
+       */
+      author?: (Record<string, never>)[]
+      /**
+       * coordinateSpace 
+       * @description Two or three dimensional geometric setting.
+       */
+      coordinateSpace: Record<string, never>
+      /**
+       * Copyright 
+       * @description Structured information on the copyright.
+       */
+      copyright?: components["schemas"]["Copyright"]
+      /**
+       * custodian 
+       * @description The 'custodian' is a legal person who is responsible for the content and quality of the data, metadata, and/or code of a research product.
+       */
+      custodian?: (Record<string, never>)[]
+      /**
+       * description 
+       * @description Longer statement or account giving the characteristics of someone or something.
+       */
+      description?: string
+      /**
+       * digitalIdentifier 
+       * @description Digital handle to identify objects or legal persons.
+       */
+      digitalIdentifier?: Record<string, never>
+      /**
+       * fullDocumentation 
+       * @description Non-abridged instructions, comments, and information for using a particular product.
+       */
+      fullDocumentation: Record<string, never>
+      /**
+       * fullName 
+       * @description Whole, non-abbreviated name of something or somebody.
+       */
+      fullName?: string
+      /**
+       * funding 
+       * @description Money provided by a legal person for a particular purpose.
+       */
+      funding?: (Record<string, never>)[]
+      hasTerminologyVersion: components["schemas"]["HasTerminologyVersion"]
+      /**
+       * homepage 
+       * @description Main website of something or someone.
+       */
+      homepage?: Record<string, never>
+      /**
+       * howToCite 
+       * @description Preferred format for citing a particular object or legal person.
+       */
+      howToCite?: string
+      /**
+       * isAlternativeVersionOf 
+       * @description Reference to an original form where the essence was preserved, but presented in an alternative form.
+       */
+      isAlternativeVersionOf?: (Record<string, never>)[]
+      /**
+       * isNewVersionOf 
+       * @description Reference to a previous (potentially outdated) particular form of something.
+       */
+      isNewVersionOf?: Record<string, never>
+      /**
+       * keyword 
+       * @description Significant word or concept that are representative of something or someone.
+       */
+      keyword?: (Record<string, never>)[]
+      /**
+       * license 
+       * @description Grant by a party to another party as an element of an agreement between those parties that permits to do, use, or own something.
+       */
+      license: Record<string, never>
+      /**
+       * ontologyIdentifier 
+       * @description Term or code used to identify something or someone registered within a particular ontology.
+       */
+      ontologyIdentifier?: (string)[]
+      /**
+       * Othercontribution 
+       * @description Structured information on the contribution made to a research product.
+       */
+      otherContribution?: components["schemas"]["OtherContribution"]
+      /**
+       * relatedPublication 
+       * @description Reference to something that was made available for the general public to see or buy.
+       */
+      relatedPublication?: (Record<string, never>)[]
+      /**
+       * releaseDate 
+       * @description Fixed date on which a product is due to become or was made available for the general public to see or buy
+       */
+      releaseDate: string
+      /**
+       * repository 
+       * @description Place, room, or container where something is deposited or stored.
+       */
+      repository?: Record<string, never>
+      /**
+       * shortName 
+       * @description Shortened or fully abbreviated name of something or somebody.
+       */
+      shortName: string
+      /**
+       * supportChannel 
+       * @description Way of communication used to interact with users or customers.
+       */
+      supportChannel?: (string)[]
+      /**
+       * versionIdentifier 
+       * @description Term or code used to identify the version of something.
+       */
+      versionIdentifier: string
+      /**
+       * versionInnovation 
+       * @description Documentation on what changed in comparison to a previously published form of something.
+       */
+      versionInnovation: string
+    }
+    /** CommonCoordinateSpaceModel */
+    CommonCoordinateSpaceModel: {
+      /** @Type */
+      "@type": string
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * @Id 
+       * @description Metadata node identifier.
+       */
+      "@id": string
+      /**
+       * anatomicalAxesOrientation 
+       * @description Relation between reference planes used in anatomy and mathematics.
+       */
+      anatomicalAxesOrientation: Record<string, never>
+      /**
+       * Axesorigin 
+       * @description Structured information on a quantitative value.
+       */
+      axesOrigin: (components["schemas"]["AxesOrigin"])[]
+      /**
+       * defaultImage 
+       * @description Two or three dimensional image that particluarly represents a specific coordinate space. Overriden by Siibra API to use as VolumeModel
+       */
+      defaultImage?: (components["schemas"]["VolumeModel"])[]
+      /**
+       * digitalIdentifier 
+       * @description Digital handle to identify objects or legal persons.
+       */
+      digitalIdentifier?: Record<string, never>
+      /**
+       * fullName 
+       * @description Whole, non-abbreviated name of something or somebody.
+       */
+      fullName: string
+      /**
+       * homepage 
+       * @description Main website of something or someone.
+       */
+      homepage?: Record<string, never>
+      /**
+       * howToCite 
+       * @description Preferred format for citing a particular object or legal person.
+       */
+      howToCite?: string
+      /**
+       * nativeUnit 
+       * @description Determinate quantity used in the original measurement.
+       */
+      nativeUnit: Record<string, never>
+      /**
+       * ontologyIdentifier 
+       * @description Term or code used to identify something or someone registered within a particular ontology.
+       */
+      ontologyIdentifier?: (string)[]
+      /**
+       * releaseDate 
+       * @description Fixed date on which a product is due to become or was made available for the general public to see or buy
+       */
+      releaseDate: string
+      /**
+       * shortName 
+       * @description Shortened or fully abbreviated name of something or somebody.
+       */
+      shortName: string
+      /**
+       * versionIdentifier 
+       * @description Term or code used to identify the version of something.
+       */
+      versionIdentifier: string
+    }
+    /**
+     * ConnectivityTypes 
+     * @description An enumeration. 
+     * @enum {unknown}
+     */
+    ConnectivityTypes: "FunctionalConnectivity" | "StreamlineCounts" | "StreamlineLengths"
+    /** CoordinatePointModel */
+    CoordinatePointModel: {
+      /** @Type */
+      "@type": string
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * @Id 
+       * @description Metadata node identifier.
+       */
+      "@id": string
+      /**
+       * coordinateSpace 
+       * @description Two or three dimensional geometric setting.
+       */
+      coordinateSpace: Record<string, never>
+      /**
+       * Coordinates 
+       * @description Structured information on a quantitative value.
+       */
+      coordinates: (components["schemas"]["api__models__openminds__SANDS__v3__miscellaneous__coordinatePoint__Coordinates"])[]
+    }
+    /** Copyright */
+    Copyright: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * holder 
+       * @description Legal person in possession of something.
+       */
+      holder: (Record<string, never>)[]
+      /**
+       * year 
+       * @description Cycle in the Gregorian calendar specified by a number and comprised of 365 or 366 days divided into 12 months beginning with January and ending with December.
+       */
+      year: string
+    }
+    /**
+     * CorticalProfileTypes 
+     * @description An enumeration. 
+     * @enum {unknown}
+     */
+    CorticalProfileTypes: "ReceptorDensityProfile" | "CellDensityProfile" | "BigBrainIntensityProfile"
+    /** DataFrameModel */
+    DataFrameModel: {
+      /** @Type */
+      "@type": string
+      /** Index */
+      index: string[]
+      /** Dtype */
+      dtype: string
+      /** Columns */
+      columns: string[]
+      /** Ndim */
+      ndim: number
+      /** Data */
+      data: ((number | string | (number)[])[])[]
+    }
+    /** EbrainsDatasetModel */
+    EbrainsDatasetModel: {
+      /** @Type */
+      "@type": string
+      /** @Id */
+      "@id": string
+      /** Name */
+      name: string
+      /** Urls */
+      urls: (components["schemas"]["EbrainsDsUrl"])[]
+      /** Description */
+      description: string
+      /** Contributors */
+      contributors: (components["schemas"]["EbrainsDsPerson"])[]
+      /** Ebrains Page */
+      ebrains_page: string
+      /** Custodians */
+      custodians: (components["schemas"]["EbrainsDsPerson"])[]
+    }
+    /** EbrainsDsPerson */
+    EbrainsDsPerson: {
+      /** @Type */
+      "@type": string
+      /** @Id */
+      "@id": string
+      /** Schema.Org/Shortname */
+      "schema.org/shortName": string
+      /** Identifier */
+      identifier: string
+      /** Shortname */
+      shortName: string
+      /** Name */
+      name: string
+    }
+    /** EbrainsDsUrl */
+    EbrainsDsUrl: {
+      /** @Type */
+      "@type": string
+      /** Url */
+      url: string
+    }
+    /** FeatureMetaModel */
+    FeatureMetaModel: {
+      /** Name */
+      name: string
+      /** Display Name */
+      display_name: string
+      /** Path */
+      path?: string
+      /** Query Params */
+      query_params?: (string)[]
+      /** Required Query Params */
+      required_query_params?: (string)[]
+      /** Optional Query Params */
+      optional_query_params?: (string)[]
+      /** Path Params */
+      path_params?: (string)[]
+      /** Category */
+      category?: string
+    }
+    /** HTTPValidationError */
+    HTTPValidationError: {
+      /** Detail */
+      detail?: (components["schemas"]["ValidationError"])[]
+    }
+    /** HasAnnotation */
+    HasAnnotation: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * Bestviewpoint 
+       * @description Structured information on a coordinate point.
+       */
+      bestViewPoint?: components["schemas"]["BestViewPoint"]
+      /**
+       * criteria 
+       * @description Aspects or standards on which a judgement or decision is based.
+       */
+      criteria?: Record<string, never>
+      /**
+       * criteriaQualityType 
+       * @description Distinct class that defines how the judgement or decision was made for a particular criteria.
+       */
+      criteriaQualityType: Record<string, never>
+      /**
+       * displayColor 
+       * @description Preferred coloring.
+       */
+      displayColor?: string
+      /**
+       * inspiredBy 
+       * @description Reference to an inspiring element.
+       */
+      inspiredBy?: (Record<string, never>)[]
+      /**
+       * internalIdentifier 
+       * @description Term or code that identifies someone or something within a particular product.
+       */
+      internalIdentifier: string
+      /**
+       * laterality 
+       * @description Differentiation between a pair of lateral homologous parts of the body.
+       */
+      laterality?: (Record<string, never>)[]
+      /**
+       * visualizedIn 
+       * @description Reference to an image in which something is visible.
+       */
+      visualizedIn?: Record<string, never>
+    }
+    /** HasTerminologyVersion */
+    HasTerminologyVersion: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * definedIn 
+       * @description Reference to a file instance in which something is stored.
+       */
+      definedIn?: (Record<string, never>)[]
+      /** hasEntityVersion */
+      hasEntityVersion: (Record<string, never>)[]
+      /**
+       * ontologyIdentifier 
+       * @description Term or code used to identify something or someone registered within a particular ontology.
+       */
+      ontologyIdentifier?: (string)[]
+    }
+    /**
+     * ImageTypes 
+     * @description An enumeration. 
+     * @enum {unknown}
+     */
+    ImageTypes: "BlockfaceVolumeOfInterest" | "CellBodyStainedVolumeOfInterest" | "CellbodyStainedSection" | "MRIVolumeOfInterest" | "PLIVolumeOfInterest" | "SegmentedVolumeOfInterest"
+    /** LocationModel */
+    LocationModel: {
+      /** @Type */
+      "@type": string
+      space: components["schemas"]["SiibraAtIdModel"]
+    }
+    /** MapIndexModel */
+    MapIndexModel: {
+      /** @Type */
+      "@type": string
+      /** Volume */
+      volume: number
+      /** Label */
+      label?: number
+      /** Fragment */
+      fragment?: string
+    }
+    /** MapModel */
+    MapModel: {
+      /** @Type */
+      "@type": string
+      /** @Id */
+      "@id": string
+      /** Name */
+      name: string
+      /** Shortname */
+      shortname?: string
+      /** Modality */
+      modality?: string
+      /** Description */
+      description?: string
+      /** Publications */
+      publications: (components["schemas"]["SiibraPublication"])[]
+      /** Datasets */
+      datasets: (components["schemas"]["EbrainsDatasetModel"])[]
+      /** Species */
+      species: string
+      /** Indices */
+      indices: {
+        [key: string]: (components["schemas"]["MapIndexModel"])[] | undefined
+      }
+      /** Volumes */
+      volumes: (components["schemas"]["VolumeModel"])[]
+    }
+    /**
+     * MapType 
+     * @description An enumeration. 
+     * @enum {string}
+     */
+    MapType: "LABELLED" | "STATISTICAL"
+    /** OtherContribution */
+    OtherContribution: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * contributionType 
+       * @description Distinct class of what was given or supplied as a part or share.
+       */
+      contributionType: (Record<string, never>)[]
+      /**
+       * contributor 
+       * @description Legal person that gave or supplied something as a part or share.
+       */
+      contributor: Record<string, never>
+    }
+    /** Page[CommonCoordinateSpaceModel] */
+    Page_CommonCoordinateSpaceModel_: {
+      /** Items */
+      items: (components["schemas"]["CommonCoordinateSpaceModel"])[]
+      /** Total */
+      total: number
+      /** Page */
+      page: number
+      /** Size */
+      size: number
+    }
+    /** Page[FeatureMetaModel] */
+    Page_FeatureMetaModel_: {
+      /** Items */
+      items: (components["schemas"]["FeatureMetaModel"])[]
+      /** Total */
+      total: number
+      /** Page */
+      page: number
+      /** Size */
+      size: number
+    }
+    /** Page[ParcellationEntityVersionModel] */
+    Page_ParcellationEntityVersionModel_: {
+      /** Items */
+      items: (components["schemas"]["ParcellationEntityVersionModel"])[]
+      /** Total */
+      total: number
+      /** Page */
+      page: number
+      /** Size */
+      size: number
+    }
+    /** Page[SiibraAtlasModel] */
+    Page_SiibraAtlasModel_: {
+      /** Items */
+      items: (components["schemas"]["SiibraAtlasModel"])[]
+      /** Total */
+      total: number
+      /** Page */
+      page: number
+      /** Size */
+      size: number
+    }
+    /** Page[SiibraCorticalProfileModel] */
+    Page_SiibraCorticalProfileModel_: {
+      /** Items */
+      items: (components["schemas"]["SiibraCorticalProfileModel"])[]
+      /** Total */
+      total: number
+      /** Page */
+      page: number
+      /** Size */
+      size: number
+    }
+    /** Page[SiibraEbrainsDataFeatureModel] */
+    Page_SiibraEbrainsDataFeatureModel_: {
+      /** Items */
+      items: (components["schemas"]["SiibraEbrainsDataFeatureModel"])[]
+      /** Total */
+      total: number
+      /** Page */
+      page: number
+      /** Size */
+      size: number
+    }
+    /** Page[SiibraParcellationModel] */
+    Page_SiibraParcellationModel_: {
+      /** Items */
+      items: (components["schemas"]["SiibraParcellationModel"])[]
+      /** Total */
+      total: number
+      /** Page */
+      page: number
+      /** Size */
+      size: number
+    }
+    /** Page[SiibraRegionalConnectivityModel] */
+    Page_SiibraRegionalConnectivityModel_: {
+      /** Items */
+      items: (components["schemas"]["SiibraRegionalConnectivityModel"])[]
+      /** Total */
+      total: number
+      /** Page */
+      page: number
+      /** Size */
+      size: number
+    }
+    /** Page[SiibraTabularModel] */
+    Page_SiibraTabularModel_: {
+      /** Items */
+      items: (components["schemas"]["SiibraTabularModel"])[]
+      /** Total */
+      total: number
+      /** Page */
+      page: number
+      /** Size */
+      size: number
+    }
+    /** Page[SiibraVoiModel] */
+    Page_SiibraVoiModel_: {
+      /** Items */
+      items: (components["schemas"]["SiibraVoiModel"])[]
+      /** Total */
+      total: number
+      /** Page */
+      page: number
+      /** Size */
+      size: number
+    }
+    /** Page[Union[SiibraCorticalProfileModel, SiibraReceptorDensityFp, SiibraTabularModel]] */
+    Page_Union_SiibraCorticalProfileModel__SiibraReceptorDensityFp__SiibraTabularModel__: {
+      /** Items */
+      items: (components["schemas"]["SiibraCorticalProfileModel"] | components["schemas"]["SiibraReceptorDensityFp"] | components["schemas"]["SiibraTabularModel"])[]
+      /** Total */
+      total: number
+      /** Page */
+      page: number
+      /** Size */
+      size: number
+    }
+    /** ParcellationEntityVersionModel */
+    ParcellationEntityVersionModel: {
+      /** @Type */
+      "@type": string
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * @Id 
+       * @description Metadata node identifier.
+       */
+      "@id": string
+      hasAnnotation?: components["schemas"]["HasAnnotation"]
+      /**
+       * hasParent 
+       * @description Reference to a parent object or legal person.
+       */
+      hasParent?: (Record<string, never>)[]
+      /** lookupLabel */
+      lookupLabel?: string
+      /**
+       * name 
+       * @description Word or phrase that constitutes the distinctive designation of a being or thing.
+       */
+      name?: string
+      /**
+       * ontologyIdentifier 
+       * @description Term or code used to identify something or someone registered within a particular ontology.
+       */
+      ontologyIdentifier?: (string)[]
+      /** Relationassessment */
+      relationAssessment?: components["schemas"]["RelationAssessmentItem"] | components["schemas"]["RelationAssessmentItem1"]
+      /**
+       * versionIdentifier 
+       * @description Term or code used to identify the version of something.
+       */
+      versionIdentifier: string
+      /**
+       * versionInnovation 
+       * @description Documentation on what changed in comparison to a previously published form of something.
+       */
+      versionInnovation?: string
+    }
+    /** QuantitativeOverlapItem */
+    QuantitativeOverlapItem: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * typeOfUncertainty 
+       * @description Distinct technique used to quantify the uncertainty of a measurement.
+       */
+      typeOfUncertainty?: Record<string, never>
+      /**
+       * uncertainty 
+       * @description Quantitative value range defining the uncertainty of a measurement.
+       */
+      uncertainty?: (number)[]
+      /**
+       * unit 
+       * @description Determinate quantity adopted as a standard of measurement.
+       */
+      unit?: Record<string, never>
+      /**
+       * value 
+       * @description Entry for a property.
+       */
+      value: number
+    }
+    /** QuantitativeOverlapItem1 */
+    QuantitativeOverlapItem1: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * maxValue 
+       * @description Greatest quantity attained or allowed.
+       */
+      maxValue: number
+      /** maxValueUnit */
+      maxValueUnit?: Record<string, never>
+      /**
+       * minValue 
+       * @description Smallest quantity attained or allowed.
+       */
+      minValue: number
+      /** minValueUnit */
+      minValueUnit?: Record<string, never>
+    }
+    /** RelationAssessmentItem */
+    RelationAssessmentItem: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * criteria 
+       * @description Aspects or standards on which a judgement or decision is based.
+       */
+      criteria?: Record<string, never>
+      /**
+       * inRelationTo 
+       * @description Reference to a related element.
+       */
+      inRelationTo: Record<string, never>
+      /**
+       * qualitativeOverlap 
+       * @description Semantic characterization of how much two things occupy the same space.
+       */
+      qualitativeOverlap: Record<string, never>
+    }
+    /** RelationAssessmentItem1 */
+    RelationAssessmentItem1: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * criteria 
+       * @description Aspects or standards on which a judgement or decision is based.
+       */
+      criteria?: Record<string, never>
+      /**
+       * inRelationTo 
+       * @description Reference to a related element.
+       */
+      inRelationTo: Record<string, never>
+      /** Quantitativeoverlap */
+      quantitativeOverlap: components["schemas"]["QuantitativeOverlapItem"] | components["schemas"]["QuantitativeOverlapItem1"]
+    }
+    /** SiibraAnchorModel */
+    SiibraAnchorModel: {
+      /** @Type */
+      "@type": string
+      location?: components["schemas"]["LocationModel"]
+      /** Regions */
+      regions: (components["schemas"]["SiibraRegionAssignmentQual"])[]
+    }
+    /** SiibraAtIdModel */
+    SiibraAtIdModel: {
+      /** @Id */
+      "@id": string
+    }
+    /** SiibraAtlasModel */
+    SiibraAtlasModel: {
+      /** @Type */
+      "@type": string
+      /** @Id */
+      "@id": string
+      /** Name */
+      name: string
+      /** Spaces */
+      spaces: (components["schemas"]["SiibraAtIdModel"])[]
+      /** Parcellations */
+      parcellations: (components["schemas"]["SiibraAtIdModel"])[]
+      /** Species */
+      species: string
+    }
+    /** SiibraCorticalProfileModel */
+    SiibraCorticalProfileModel: {
+      /** @Type */
+      "@type": string
+      /** Id */
+      id: string
+      /** Modality */
+      modality: string
+      /** Category */
+      category: string
+      /** Description */
+      description: string
+      /** Name */
+      name: string
+      /** Datasets */
+      datasets: (components["schemas"]["EbrainsDatasetModel"])[]
+      anchor?: components["schemas"]["SiibraAnchorModel"]
+      data?: components["schemas"]["DataFrameModel"]
+      /** Unit */
+      unit?: string
+      /** Boundary Positions */
+      boundary_positions: {
+        [key: string]: number | undefined
+      }
+      /** Boundaries Mapped */
+      boundaries_mapped: boolean
+    }
+    /** SiibraEbrainsDataFeatureModel */
+    SiibraEbrainsDataFeatureModel: {
+      /** @Type */
+      "@type": string
+      /** Id */
+      id: string
+      /** Modality */
+      modality: string
+      /** Category */
+      category: string
+      /** Description */
+      description: string
+      /** Name */
+      name: string
+      /** Datasets */
+      datasets: (components["schemas"]["EbrainsDatasetModel"])[]
+      anchor?: components["schemas"]["SiibraAnchorModel"]
+    }
+    /** SiibraParcellationModel */
+    SiibraParcellationModel: {
+      /** @Type */
+      "@type": string
+      /** @Id */
+      "@id": string
+      /** Name */
+      name: string
+      /** Modality */
+      modality?: string
+      /** Datasets */
+      datasets: (components["schemas"]["EbrainsDatasetModel"])[]
+      /** Brainatlasversions */
+      brainAtlasVersions: (components["schemas"]["BrainAtlasVersionModel"])[]
+      version?: components["schemas"]["SiibraParcellationVersionModel"]
+      /** Shortname */
+      shortname?: string
+    }
+    /** SiibraParcellationVersionModel */
+    SiibraParcellationVersionModel: {
+      /** @Type */
+      "@type": string
+      /** Name */
+      name: string
+      /** Deprecated */
+      deprecated?: boolean
+      prev?: components["schemas"]["SiibraAtIdModel"]
+      next?: components["schemas"]["SiibraAtIdModel"]
+    }
+    /** SiibraPublication */
+    SiibraPublication: {
+      /** @Type */
+      "@type": string
+      /** Citation */
+      citation: string
+      /** Url */
+      url: string
+    }
+    /** SiibraReceptorDensityFp */
+    SiibraReceptorDensityFp: {
+      /** @Type */
+      "@type": string
+      /** Id */
+      id: string
+      /** Modality */
+      modality: string
+      /** Category */
+      category: string
+      /** Description */
+      description: string
+      /** Name */
+      name: string
+      /** Datasets */
+      datasets: (components["schemas"]["EbrainsDatasetModel"])[]
+      anchor?: components["schemas"]["SiibraAnchorModel"]
+      data?: components["schemas"]["DataFrameModel"]
+      /** Neurotransmitters */
+      neurotransmitters?: (string)[]
+      /** Receptors */
+      receptors?: (string)[]
+    }
+    /** SiibraRegionAssignmentQual */
+    SiibraRegionAssignmentQual: {
+      /** @Type */
+      "@type": string
+      region: components["schemas"]["ParcellationEntityVersionModel"]
+      /** Qualification */
+      qualification: string
+    }
+    /** SiibraRegionalConnectivityModel */
+    SiibraRegionalConnectivityModel: {
+      /** @Type */
+      "@type": string
+      /** Id */
+      id: string
+      /** Modality */
+      modality: string
+      /** Category */
+      category: string
+      /** Description */
+      description: string
+      /** Name */
+      name: string
+      /** Datasets */
+      datasets: (components["schemas"]["EbrainsDatasetModel"])[]
+      anchor?: components["schemas"]["SiibraAnchorModel"]
+      /** Cohort */
+      cohort: string
+      /** Subjects */
+      subjects: (string)[]
+      /** Matrices */
+      matrices?: {
+        [key: string]: components["schemas"]["DataFrameModel"] | undefined
+      }
+    }
+    /** SiibraTabularModel */
+    SiibraTabularModel: {
+      /** @Type */
+      "@type": string
+      /** Id */
+      id: string
+      /** Modality */
+      modality: string
+      /** Category */
+      category: string
+      /** Description */
+      description: string
+      /** Name */
+      name: string
+      /** Datasets */
+      datasets: (components["schemas"]["EbrainsDatasetModel"])[]
+      anchor?: components["schemas"]["SiibraAnchorModel"]
+      data?: components["schemas"]["DataFrameModel"]
+    }
+    /** SiibraVoiModel */
+    SiibraVoiModel: {
+      /** @Type */
+      "@type": string
+      /** Id */
+      id: string
+      /** Modality */
+      modality: string
+      /** Category */
+      category: string
+      /** Description */
+      description: string
+      /** Name */
+      name: string
+      /** Datasets */
+      datasets: (components["schemas"]["EbrainsDatasetModel"])[]
+      anchor?: components["schemas"]["SiibraAnchorModel"]
+      volume: components["schemas"]["VolumeModel"]
+      boundingbox: components["schemas"]["BoundingBoxModel"]
+    }
+    /** StatisticModelInfo */
+    StatisticModelInfo: {
+      /** Min */
+      min: number
+      /** Max */
+      max: number
+    }
+    /**
+     * TabularTypes 
+     * @description An enumeration. 
+     * @enum {unknown}
+     */
+    TabularTypes: "ReceptorDensityFingerprint" | "LayerwiseBigBrainIntensities" | "LayerwiseCellDensity"
+    /** ValidationError */
+    ValidationError: {
+      /** Location */
+      loc: (string | number)[]
+      /** Message */
+      msg: string
+      /** Error Type */
+      type: string
+    }
+    /** VocabModel */
+    VocabModel: {
+      /** @Vocab */
+      "@vocab": string
+    }
+    /** VolumeModel */
+    VolumeModel: {
+      /** @Type */
+      "@type": string
+      /** Name */
+      name: string
+      /** Formats */
+      formats: (string)[]
+      /** Providesmesh */
+      providesMesh: boolean
+      /** Providesimage */
+      providesImage: boolean
+      /** Fragments */
+      fragments: {
+        [key: string]: (string)[] | undefined
+      }
+      /** Variant */
+      variant?: string
+      /** Providedvolumes */
+      providedVolumes: {
+        [key: string]: (string | ({
+          [key: string]: string | undefined
+        })) | undefined
+      }
+      space: components["schemas"]["SiibraAtIdModel"]
+      /** Datasets */
+      datasets: (components["schemas"]["EbrainsDatasetModel"])[]
+    }
+    /** Coordinates */
+    api__models__openminds__SANDS__v3__atlas__parcellationEntityVersion__Coordinates: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * typeOfUncertainty 
+       * @description Distinct technique used to quantify the uncertainty of a measurement.
+       */
+      typeOfUncertainty?: Record<string, never>
+      /**
+       * uncertainty 
+       * @description Quantitative value range defining the uncertainty of a measurement.
+       */
+      uncertainty?: (number)[]
+      /**
+       * unit 
+       * @description Determinate quantity adopted as a standard of measurement.
+       */
+      unit?: Record<string, never>
+      /**
+       * value 
+       * @description Entry for a property.
+       */
+      value: number
+    }
+    /** Coordinates */
+    api__models__openminds__SANDS__v3__miscellaneous__coordinatePoint__Coordinates: {
+      /**
+       * @Context 
+       * @default {
+       *   "@vocab": "https://openminds.ebrains.eu/vocab/"
+       * }
+       */
+      "@context"?: components["schemas"]["VocabModel"]
+      /**
+       * typeOfUncertainty 
+       * @description Distinct technique used to quantify the uncertainty of a measurement.
+       */
+      typeOfUncertainty?: Record<string, never>
+      /**
+       * uncertainty 
+       * @description Quantitative value range defining the uncertainty of a measurement.
+       */
+      uncertainty?: (number)[]
+      /**
+       * unit 
+       * @description Determinate quantity adopted as a standard of measurement.
+       */
+      unit?: Record<string, never>
+      /**
+       * value 
+       * @description Entry for a property.
+       */
+      value: number
+    }
+  }
+  responses: never
+  parameters: never
+  requestBodies: never
+  headers: never
+  pathItems: never
+}
+
+export type external = Record<string, never>;
+
+export interface operations {
+
+  get_all_atlases_atlases_get: {
+    /** Get All Atlases */
+    parameters?: {
+      query?: {
+        page?: number
+        size?: number
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["Page_SiibraAtlasModel_"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_single_atlas_atlases__atlas_id__get: {
+    /** Get Single Atlas */
+    parameters: {
+      path: {
+        atlas_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["SiibraAtlasModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_all_spaces_spaces_get: {
+    /** Get All Spaces */
+    parameters?: {
+      query?: {
+        page?: number
+        size?: number
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["Page_CommonCoordinateSpaceModel_"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_single_space_spaces__space_id__get: {
+    /** Get Single Space */
+    parameters: {
+      path: {
+        space_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["CommonCoordinateSpaceModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_all_parcellations_parcellations_get: {
+    /** Get All Parcellations */
+    parameters?: {
+      query?: {
+        page?: number
+        size?: number
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["Page_SiibraParcellationModel_"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_single_parcellation_parcellations__parcellation_id__get: {
+    /** Get Single Parcellation */
+    parameters: {
+      path: {
+        parcellation_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["SiibraParcellationModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_all_regions_regions_get: {
+    /** Get All Regions */
+    parameters: {
+      query: {
+        parcellation_id: string
+        page?: number
+        size?: number
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["Page_ParcellationEntityVersionModel_"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_all_regions_regions__region_id__get: {
+    /** Get All Regions */
+    parameters: {
+      query: {
+        parcellation_id: string
+        space_id: string
+      }
+      path: {
+        region_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["ParcellationEntityVersionModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  route_get_map_map_get: {
+    /** Route Get Map */
+    parameters: {
+      query: {
+        parcellation_id: string
+        space_id: string
+        map_type: components["schemas"]["MapType"]
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["MapModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  route_get_parcellation_labelled_map_map_labelled_map_nii_gz_get: {
+    /**
+     * Route Get Parcellation Labelled Map 
+     * @description Returns a labelled map if region_id is not provided.
+     * 
+     * Returns a mask if a region_id is provided.
+     * 
+     * region_id MAY refer to ANY region on the region hierarchy, and a combined mask will be returned.
+     */
+    parameters: {
+      query: {
+        parcellation_id: string
+        space_id: string
+        region_id?: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: never
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  route_get_region_statistical_map_map_statistical_map_nii_gz_get: {
+    /**
+     * Route Get Region Statistical Map 
+     * @description Returns a statistic map.
+     * 
+     * region_id MUST refer to leaf region on the region hierarchy.
+     */
+    parameters: {
+      query: {
+        parcellation_id: string
+        space_id: string
+        region_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: never
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  route_get_region_statistical_map_map_statistical_map_info_json_get: {
+    /** Route Get Region Statistical Map */
+    parameters: {
+      query: {
+        parcellation_id: string
+        space_id: string
+        region_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["StatisticModelInfo"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_all_feature_types_feature__types_get: {
+    /** Get All Feature Types */
+    parameters?: {
+      query?: {
+        page?: number
+        size?: number
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["Page_FeatureMetaModel_"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_all_connectivity_features_feature_RegionalConnectivity_get: {
+    /** Get All Connectivity Features */
+    parameters: {
+      query: {
+        parcellation_id: string
+        type?: components["schemas"]["ConnectivityTypes"]
+        page?: number
+        size?: number
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["Page_SiibraRegionalConnectivityModel_"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_single_connectivity_feature_feature_RegionalConnectivity__feature_id__get: {
+    /**
+     * Get Single Connectivity Feature 
+     * @description subject is an optional param.
+     * If provided, the specific matrix will be return.
+     * If not provided, the matrix averaged between subjects will be returned under the key _average.
+     */
+    parameters: {
+      query: {
+        parcellation_id: string
+        subject?: string
+        type?: components["schemas"]["ConnectivityTypes"]
+      }
+      path: {
+        feature_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["SiibraRegionalConnectivityModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_all_connectivity_features_feature_CorticalProfile_get: {
+    /** Get All Connectivity Features */
+    parameters: {
+      query: {
+        parcellation_id: string
+        region_id: string
+        type?: components["schemas"]["CorticalProfileTypes"]
+        page?: number
+        size?: number
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["Page_SiibraCorticalProfileModel_"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_single_connectivity_feature_feature_CorticalProfile__feature_id__get: {
+    /** Get Single Connectivity Feature */
+    parameters: {
+      query: {
+        parcellation_id: string
+        region_id: string
+        type?: components["schemas"]["CorticalProfileTypes"]
+      }
+      path: {
+        feature_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["SiibraCorticalProfileModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_all_tabular_feature_Tabular_get: {
+    /** Get All Tabular */
+    parameters: {
+      query: {
+        parcellation_id: string
+        region_id: string
+        type?: components["schemas"]["TabularTypes"]
+        page?: number
+        size?: number
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["Page_Union_SiibraCorticalProfileModel__SiibraReceptorDensityFp__SiibraTabularModel__"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_single_tabular_feature_Tabular__feature_id__get: {
+    /** Get Single Tabular */
+    parameters: {
+      query: {
+        parcellation_id: string
+        region_id: string
+        type?: components["schemas"]["TabularTypes"]
+      }
+      path: {
+        feature_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["SiibraCorticalProfileModel"] | components["schemas"]["SiibraReceptorDensityFp"] | components["schemas"]["SiibraTabularModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_all_voi_feature_Image_get: {
+    /** Get All Voi */
+    parameters: {
+      query: {
+        space_id: string
+        bbox?: string
+        type?: components["schemas"]["ImageTypes"]
+        page?: number
+        size?: number
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["Page_SiibraVoiModel_"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_single_voi_feature_Image__feature_id__get: {
+    /** Get Single Voi */
+    parameters: {
+      query: {
+        space_id: string
+        type?: components["schemas"]["ImageTypes"]
+      }
+      path: {
+        feature_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["SiibraVoiModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_all_gene_feature_GeneExpressions_get: {
+    /** Get All Gene */
+    parameters: {
+      query: {
+        parcellation_id: string
+        region_id: string
+        gene: string
+        page?: number
+        size?: number
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["Page_SiibraTabularModel_"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_single_gene_feature_GeneExpressions__feature_id__get: {
+    /** Get Single Gene */
+    parameters: {
+      query: {
+        parcellation_id: string
+        region_id: string
+        gene: string
+      }
+      path: {
+        feature_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["SiibraTabularModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_all_ebrains_df_feature_EbrainsDataFeature_get: {
+    /** Get All Ebrains Df */
+    parameters: {
+      query: {
+        parcellation_id: string
+        region_id: string
+        page?: number
+        size?: number
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["Page_SiibraEbrainsDataFeatureModel_"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_single_ebrains_df_feature_EbrainsDataFeature__feature_id__get: {
+    /** Get Single Ebrains Df */
+    parameters: {
+      query: {
+        parcellation_id: string
+        region_id: string
+      }
+      path: {
+        feature_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["SiibraEbrainsDataFeatureModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+  get_single_feature_feature__feature_id__get: {
+    /**
+     * Get Single Feature 
+     * @description This endpoint allows detail of a single feature to be fetched, without the necessary context. However, the tradeoff for this endpoint is:
+     * 
+     * - the endpoint typing is the union of all possible return types
+     * - the client needs to supply any necessary query param (e.g. subject for regional connectivity, gene for gene expression etc)
+     */
+    parameters: {
+      path: {
+        feature_id: string
+      }
+    }
+    responses: {
+      /** @description Successful Response */
+      200: {
+        content: {
+          "application/json": components["schemas"]["SiibraVoiModel"] | components["schemas"]["SiibraCorticalProfileModel"] | components["schemas"]["SiibraRegionalConnectivityModel"] | components["schemas"]["SiibraReceptorDensityFp"] | components["schemas"]["SiibraTabularModel"] | components["schemas"]["SiibraEbrainsDataFeatureModel"]
+        }
+      }
+      /** @description Validation Error */
+      422: {
+        content: {
+          "application/json": components["schemas"]["HTTPValidationError"]
+        }
+      }
+    }
+  }
+}
diff --git a/src/atlasComponents/sapi/sxplrTypes.ts b/src/atlasComponents/sapi/sxplrTypes.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0fcf7abfe9067e80de67b0ec59c788d47632c77b
--- /dev/null
+++ b/src/atlasComponents/sapi/sxplrTypes.ts
@@ -0,0 +1,135 @@
+/**
+ * Here, you will find the type interface used by siibra-explorer
+ * SAPI types can change in the future, but hopefully, the setup can allow
+ * a much smoother transition to new API
+ */
+
+
+/**
+ * TODO do a global search on typeV3
+ * anything outside src/atlasComponent should directly import from sxplrTypes, and not from typeV3, or worse type, schemaV3
+ */
+
+export type SxplrRegion = {
+  type: 'SxplrRegion'
+  id: string
+  name: string
+  centroid?: Point
+  color?: [number, number, number]
+  parentIds:string[]
+} & Partial<AdditionalInfo>
+
+export type SxplrParcellation = {
+  type: 'SxplrParcellation'
+  id: string
+  name: string
+  shortName: string
+  modality?: string
+  prevId?: string
+} & Partial<AdditionalInfo>
+
+export type SxplrTemplate = {
+  type: 'SxplrTemplate'
+  id: string
+  name: string
+  shortName: string
+} & Partial<AdditionalInfo>
+
+export type SxplrAtlas = {
+  type: 'SxplrAtlas'
+  id: string
+  name: string
+  species: string
+} & Partial<AdditionalInfo>
+
+export type AdditionalInfo = {
+  desc: string
+  link: {
+    text: string
+    href: string
+  }[]
+}
+
+type Location = {
+  readonly space: SxplrTemplate
+}
+type LocTuple = [number, number, number]
+
+export type Point = {
+  loc: LocTuple
+} & Location
+
+export type BoundingBox = {
+  maxpoint: LocTuple
+  minpoint: LocTuple
+  center: LocTuple
+} & Location
+
+import { NgLayerSpec } from "src/viewerModule/nehuba/config.service/type"
+
+export { NgLayerSpec }
+export {
+  NgPrecompMeshSpec,
+  NgSegLayerSpec,
+} from "src/viewerModule/nehuba/config.service/type"
+
+import { TThreeSurferMesh, TThreeMesh, TThreeMeshLabel } from "src/viewerModule/threeSurfer/types"
+export { TThreeSurferMesh, TThreeMesh, TThreeMeshLabel }
+
+/**
+ * Union of processed image
+ */
+export type TemplateDefaultImage = NgLayerSpec | TThreeMesh
+
+export type LabelledMap = {
+  name: string
+  label: number
+}
+
+export type StatisticalMap = {
+  url: string
+  min: number
+  max: number
+}
+
+/**
+ * Features
+ */
+
+export type Feature = {
+  id: string
+  name: string
+  category?: string
+} & Partial<AdditionalInfo>
+
+type DataFrame = {
+  index: Record<string, string>
+}
+
+export type VoiFeature = {
+  bbox: BoundingBox
+  ngVolume: {
+    url: string
+    transform: number[][]
+    info: Record<string, any>
+  }
+} & Feature
+
+type CorticalDataType = number
+
+export type CorticalFeature<T extends CorticalDataType, IndexType extends string|number=string> = {
+  indices?: IndexType[]
+  corticalProfile?: T[]
+} & Feature
+
+type TabularDataType = number | string | number[]
+
+export type TabularFeature<T extends TabularDataType> = {
+  index: string[]
+  columns: string[]
+  data?: T[][]
+} & Feature
+
+export type GenericInfo = {
+  name: string
+} & AdditionalInfo
diff --git a/src/atlasComponents/sapi/translateV3.ts b/src/atlasComponents/sapi/translateV3.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9c2f9bb317529cd054c5483dbb054978cc09264c
--- /dev/null
+++ b/src/atlasComponents/sapi/translateV3.ts
@@ -0,0 +1,507 @@
+import {
+  SxplrAtlas, SxplrParcellation, SxplrTemplate, SxplrRegion, NgLayerSpec, NgPrecompMeshSpec, NgSegLayerSpec, VoiFeature, Point, TThreeMesh, LabelledMap, CorticalFeature, Feature, TabularFeature, GenericInfo, BoundingBox
+} from "./sxplrTypes"
+import { PathReturn } from "./typeV3"
+import { hexToRgb } from 'common/util'
+import { components } from "./schemaV3"
+import { defaultdict } from "src/util/fn"
+
+
+class TranslateV3 {
+  
+  #atlasMap: Map<string, PathReturn<"/atlases/{atlas_id}">> = new Map()
+  retrieveAtlas(atlas: SxplrAtlas): PathReturn<"/atlases/{atlas_id}"> {
+    return this.#atlasMap.get(atlas.id)
+  }
+  async translateAtlas(atlas:PathReturn<"/atlases/{atlas_id}">): Promise<SxplrAtlas> {
+    this.#atlasMap.set(atlas["@id"], atlas)
+    return {
+      id: atlas["@id"],
+      type: "SxplrAtlas",
+      name: atlas.name,
+      species: atlas.species
+    }
+  }
+
+  async translateDs(ds: PathReturn<"/parcellations/{parcellation_id}">['datasets'][number]): Promise<GenericInfo> {
+    return {
+      name: ds.name,
+      desc: ds.description,
+      link: ds.urls.map(v => ({
+        href: v.url,
+        text: 'Link'
+      }))
+    }
+  }
+
+  #parcellationMap: Map<string, PathReturn<"/parcellations/{parcellation_id}">> = new Map()
+  retrieveParcellation(parcellation: SxplrParcellation): PathReturn<"/parcellations/{parcellation_id}"> {
+    return this.#parcellationMap.get(parcellation.id)
+  }
+  async translateParcellation(parcellation:PathReturn<"/parcellations/{parcellation_id}">): Promise<SxplrParcellation> {
+    const ds = await Promise.all((parcellation.datasets || []).map(ds => this.translateDs(ds)))
+    const { name, ...rest } = ds[0] || {}
+    const { ['@id']: prevId } = parcellation.version?.prev || {}
+    return {
+      id: parcellation["@id"],
+      name: parcellation.name,
+      modality: parcellation.modality,
+      type: "SxplrParcellation",
+      prevId,
+      shortName: parcellation.shortname,
+      ...rest
+    }
+  }
+
+  #templateMap: Map<string, PathReturn<"/spaces/{space_id}">> = new Map()
+  #sxplrTmplMap: Map<string, SxplrTemplate> = new Map()
+  retrieveTemplate(template:SxplrTemplate): PathReturn<"/spaces/{space_id}"> {
+    return this.#templateMap.get(template.id)
+  }
+  async translateTemplate(template:PathReturn<"/spaces/{space_id}">): Promise<SxplrTemplate> {
+
+    this.#templateMap.set(template["@id"], template)
+    const tmpl = {
+      id: template["@id"],
+      name: template.fullName,
+      shortName: template.shortName,
+      type: "SxplrTemplate" as const
+    }
+    this.#sxplrTmplMap.set(tmpl.id, tmpl)
+    return tmpl
+  }
+
+  /**
+   * map of both name and id to region
+   */
+  #regionMap: Map<string, PathReturn<"/regions/{region_id}">> = new Map()
+  retrieveRegion(region: SxplrRegion): PathReturn<"/regions/{region_id}"> {
+    return this.#regionMap.get(region.name)
+  }
+  async translateRegion(region: PathReturn<"/regions/{region_id}">): Promise<SxplrRegion> {
+    const { ['@id']: regionId } = region
+    this.#regionMap.set(regionId, region)
+    this.#regionMap.set(region.name, region)
+    return {
+      id: region["@id"],
+      name: region.name,
+      color: hexToRgb(region.hasAnnotation?.displayColor) as [number, number, number],
+      parentIds: region.hasParent.map( v => v["@id"] ),
+      type: "SxplrRegion",
+      centroid: region.hasAnnotation?.bestViewPoint
+        ? await (async () => {
+          const bestViewPoint = region.hasAnnotation?.bestViewPoint
+          const fullSpace = this.#templateMap.get(bestViewPoint.coordinateSpace['@id'])
+          const space = await this.translateTemplate(fullSpace)
+          return {
+            loc: bestViewPoint.coordinates.map(v => v.value) as [number, number, number],
+            space
+          }
+        })()
+        : null
+    }
+  }
+
+
+  #hasNoFragment(input: Record<string, unknown>): input is Record<string, string> {
+    for (const key in input) {
+      if (typeof input[key] !== 'string') return false
+    }
+    return true
+  }
+  async #extractNgPrecompUnfrag(input: Record<string, unknown>) {
+    if (!this.#hasNoFragment(input)) {
+      throw new Error(`#extractNgPrecompUnfrag can only handle unfragmented volume`)
+    }
+    
+    const returnObj: Record<string, {
+      url: string
+      transform: number[][]
+      info: Record<string, any>
+    }> = {}
+    for (const key in input) {
+      if (key !== 'neuroglancer/precomputed') {
+        continue
+      }
+      const url = input[key]
+      const [ transform, info ] = await Promise.all([
+        this.cFetch(`${url}/transform.json`).then(res => res.json()) as Promise<number[][]>,
+        this.cFetch(`${url}/info`).then(res => res.json()) as Promise<Record<string, any>>,
+      ])
+      returnObj[key] = {
+        url: input[key],
+        transform: transform,
+        info: info,
+      }
+    }
+    return returnObj
+  }
+
+  async translateSpaceToVolumeImage(template: SxplrTemplate): Promise<NgLayerSpec[]> {
+    if (!template) return []
+    const space = this.retrieveTemplate(template)
+    if (!space) return []
+    const returnObj: NgLayerSpec[] = []
+    const validImages = space.defaultImage.filter(di => di.formats.includes("neuroglancer/precomputed"))
+
+    for (const defaultImage of validImages) {
+      
+      const { providedVolumes } = defaultImage
+      const { "neuroglancer/precomputed": precomputedVol, ...rest } = await this.#extractNgPrecompUnfrag(providedVolumes)
+      
+      if (!precomputedVol) {
+        console.error(`neuroglancer/precomputed data source has not been found!`)
+        continue
+      }
+      const { transform, info: _info, url } = precomputedVol
+      const { resolution, size } = _info.scales[0]
+      const info = {
+        voxel: size as [number, number, number],
+        real: [0, 1, 2].map(idx => resolution[idx] * size[idx]) as [number, number, number]
+      }
+      returnObj.push({
+        source: `precomputed://${url}`,
+        transform,
+        info,
+      })
+    }
+    return returnObj
+  }
+
+  async translateSpaceToSurfaceImage(template: SxplrTemplate): Promise<TThreeMesh[]> {
+    if (!template) return []
+    const space = this.retrieveTemplate(template)
+    if (!space) return []
+    const returnObj: TThreeMesh[] = []
+    const validImages = space.defaultImage.filter(di => di.formats.includes("gii-mesh"))
+    for (const defaultImage of validImages) {
+      const { providedVolumes, variant } = defaultImage
+      if (!variant) {
+        console.warn(`variant is not defined!`)
+        continue
+      }
+
+      const { ['gii-mesh']: giiMesh } = providedVolumes
+      if (!giiMesh) {
+        console.warn(`default image does not have gii-mesh in provided volumes`)
+        continue
+      }
+
+      if (typeof giiMesh === "string") {
+        console.warn(`three giiMesh is of type string, must be a dict!`)
+        continue
+      }
+
+      for (const lateriality in giiMesh) {
+        const url = giiMesh[lateriality]
+        
+        returnObj.push({
+          id: `${template.name}-${variant}-${lateriality}`,
+          space: template.name,
+          variant,
+          laterality: /left/.test(lateriality)
+            ? 'left'
+            : /right/.test(lateriality)
+              ? 'right'
+              : null,
+          url,
+        })
+      }
+    }
+    return returnObj
+  }
+
+  async translateLabelledMapToThreeLabel(map:PathReturn<"/map">) {
+    const threeLabelMap: Record<string, { laterality: 'left' | 'right', url: string, region: LabelledMap[] }> = {}
+    const registerLayer = (url: string, laterality: 'left' | 'right', region: string, label: number) => {
+      if (!threeLabelMap[url]) {
+        threeLabelMap[url] = {
+          laterality,
+          region: [],
+          url,
+        }
+      }
+
+      threeLabelMap[url].region.push({
+        name: region,
+        label,
+      })
+    }
+    for (const regionname in map.indices) {
+      for (const { volume: volIdx, fragment, label } of map.indices[regionname]) {
+        const volume = map.volumes[volIdx || 0]
+        if (!volume.formats.includes("gii-label")) {
+          // Does not support gii-label... skipping!
+          continue
+        }
+        const { ["gii-label"]: giiLabel } = volume.providedVolumes
+
+        
+        if (!fragment || !["left hemisphere", "right hemisphere"].includes(fragment)) {
+          console.warn(`either fragment not defined, or fragment is not '{left|right} hemisphere'. Skipping!`)
+          continue
+        }
+        if (!giiLabel[fragment]) {
+          // Does not support gii-label... skipping!
+          continue
+        }
+        let laterality: 'left' | 'right'
+        if (fragment.includes("left")) laterality = "left"
+        if (fragment.includes("right")) laterality = "right"
+        if (!laterality) {
+          console.warn(`cannot determine the laterality! skipping`)
+          continue
+        }
+        registerLayer(giiLabel[fragment], laterality, regionname, label)
+      }
+    }
+    return threeLabelMap
+  }
+  
+  mapTPRToFrag = defaultdict(() => defaultdict(() => defaultdict(() => null as string)))
+
+  #wkmpLblMapToNgSegLayers = new WeakMap()
+  async translateLabelledMapToNgSegLayers(map:PathReturn<"/map">): Promise<Record<string,{layer:NgSegLayerSpec, region: LabelledMap[]}>> {
+    if (this.#wkmpLblMapToNgSegLayers.has(map)) {
+      return this.#wkmpLblMapToNgSegLayers.get(map)
+    }
+    const nglayerSpecMap: Record<string,{layer:NgSegLayerSpec, region: LabelledMap[]}> = {}
+
+    const registerLayer = async (url: string, label: number, region: LabelledMap) => {
+      let segLayerSpec: {layer:NgSegLayerSpec, region: LabelledMap[]}
+      if (url in nglayerSpecMap){
+        segLayerSpec = nglayerSpecMap[url]
+      } else {
+        const resp = await this.cFetch(`${url}/transform.json`)
+        const transform = await resp.json()
+        segLayerSpec = {
+          layer: {
+            labelIndicies: [],
+            source: `precomputed://${url}`,
+            transform,
+          },
+          region: []
+        }
+        nglayerSpecMap[url] = segLayerSpec
+      }
+      segLayerSpec.layer.labelIndicies.push(label)
+      segLayerSpec.region.push(region)
+    }
+    for (const regionname in map.indices) {
+      for (const index of map.indices[regionname]) {
+        const { volume:volumeIdx=0, fragment, label } = index
+        if (!label) {
+          console.error(`Attempmting to add labelledmap with label '${label}'`)
+        }
+        const error = `Attempting to access map volume with idx '${volumeIdx}'`
+        if (!map.volumes[volumeIdx]) {
+          console.error(`${error}, IndexError, Skipping`)
+          continue
+        }
+        const volume = map.volumes[volumeIdx]
+        
+        if (!volume.providedVolumes["neuroglancer/precomputed"]) {
+          // volume does not provide neuroglancer/precomputed
+          // probably when fsaverage has been selected
+          continue
+        }
+
+        const precomputedVol = volume.providedVolumes["neuroglancer/precomputed"]
+        if (typeof precomputedVol === "string") {
+          await registerLayer(precomputedVol, label, { name: regionname, label })
+          continue
+        }
+
+        if (!precomputedVol[fragment]) {
+          console.error(`${error}, fragment provided is '${fragment}', but was not available in volume: ${Object.keys(precomputedVol)}`)
+          continue
+        }
+        await registerLayer(precomputedVol[fragment], label, { name: regionname, label })
+      }
+    }
+    this.#wkmpLblMapToNgSegLayers.set(map, nglayerSpecMap)
+    return nglayerSpecMap
+  }
+
+  #cFetchCache = new Map<string, string>()
+  /**
+   * Cached fetch
+   * 
+   * Since translate v3 has no dependency on any angular components.
+   * We couldn't cache the response. This is a monkey patch to allow for caching of queries.
+   * @param url: string
+   * @returns { status: number, json: () => Promise<unknown> }
+   */
+  async cFetch(url: string): Promise<{ status: number, json?: () => Promise<any> }> {
+    
+    if (!this.#cFetchCache.has(url)) {
+      const resp = await fetch(url)
+      if (resp.status >= 400) {
+        return {
+          status: resp.status,
+        }
+      }
+      const text = await resp.text()
+      this.#cFetchCache.set(url, text)
+    }
+    const cachedText = this.#cFetchCache.get(url)
+    return {
+      status: 200,
+      json() {
+        return Promise.resolve(JSON.parse(cachedText))
+      }
+    }
+  }
+
+  async translateSpaceToAuxMesh(template: SxplrTemplate): Promise<NgPrecompMeshSpec[]>{
+    if (!template) return []
+    const space = this.retrieveTemplate(template)
+    if (!space) return []
+    const returnObj: NgPrecompMeshSpec[] = []
+    const validImages = space.defaultImage.filter(di => di.formats.includes("neuroglancer/precompmesh/surface"))
+
+    for (const defaultImage of validImages) {
+      
+      const { providedVolumes } = defaultImage
+  
+      const { ['neuroglancer/precompmesh/surface']: precompMeshVol } = providedVolumes
+      if (!precompMeshVol) {
+        console.error(`neuroglancer/precompmesh/surface data source has not been found!`)
+        continue
+      }
+      if (typeof precompMeshVol === "object") {
+        console.error(`template default image cannot have fragment`)
+        continue
+      }
+
+      const splitPrecompMeshVol = precompMeshVol.split(" ")
+      if (splitPrecompMeshVol.length !== 2) {
+        console.error(`Expecting exactly two fragments by splitting precompmeshvol, but got ${splitPrecompMeshVol.length}`)
+        continue
+      }
+      const resp = await this.cFetch(`${splitPrecompMeshVol[0]}/transform.json`)
+      if (resp.status >= 400) {
+        console.error(`cannot retrieve transform: ${resp.status}`)
+        continue
+      }
+      const transform: number[][] = await resp.json()
+      returnObj.push({
+        source: `precompmesh://${splitPrecompMeshVol[0]}`,
+        transform,
+        auxMeshes: [{
+          labelIndicies: [Number(splitPrecompMeshVol[1])],
+          name: "Auxiliary mesh"
+        }]
+      })
+    }
+    return returnObj
+  }
+
+  async #translatePoint(point: components["schemas"]["CoordinatePointModel"]): Promise<Point> {
+    const getTmpl = (id: string) => {
+      return this.#sxplrTmplMap.get(id)
+    }
+    return {
+      loc: point.coordinates.map(v => v.value) as [number, number, number],
+      get space() {
+        return getTmpl(point.coordinateSpace['@id'])
+      }
+    }
+  }
+
+  async translateFeature(feat: PathReturn<"/feature/{feature_id}">): Promise<TabularFeature<number|string|number[]>|Feature> {
+    if (this.#isTabular(feat)) {
+      return await this.translateTabularFeature(feat)
+    }
+    if (this.#isVoi(feat)) {
+      return await this.translateVoiFeature(feat)
+    }
+    
+    return await this.translateBaseFeature(feat)
+  }
+
+  async translateBaseFeature(feat: PathReturn<"/feature/{feature_id}">): Promise<Feature>{
+    const { id, name, category, description, datasets } = feat
+    const dsDescs = datasets.map(ds => ds.description)
+    const urls = datasets.flatMap(ds => ds.urls).map(v => ({
+      href: v.url,
+      text: 'link to dataset'
+    }))
+    return {
+      id,
+      name,
+      category,
+      desc: dsDescs[0] || description,
+      link: urls,
+    }
+  }
+
+  #isVoi(feat: unknown): feat is PathReturn<"/feature/Image/{feature_id}"> {
+    return feat['@type'].includes("feature/volume_of_interest")
+  }
+
+  async translateVoiFeature(feat: PathReturn<"/feature/Image/{feature_id}">): Promise<VoiFeature> {
+    const [superObj, { loc: center }, { loc: maxpoint }, { loc: minpoint }, { "neuroglancer/precomputed": precomputedVol }] = await Promise.all([
+      this.translateBaseFeature(feat),
+      this.#translatePoint(feat.boundingbox.center),
+      this.#translatePoint(feat.boundingbox.maxpoint),
+      this.#translatePoint(feat.boundingbox.minpoint),
+      await this.#extractNgPrecompUnfrag(feat.volume.providedVolumes),
+    ])
+    const { ['@id']: spaceId } = feat.boundingbox.space
+    const getSpace = (id: string) => this.#sxplrTmplMap.get(id)
+    const bbox: BoundingBox = {
+      center,
+      maxpoint,
+      minpoint,
+      get space() {
+        return getSpace(spaceId)
+      }
+    }
+    return {
+      ...superObj,
+      bbox,
+      ngVolume: precomputedVol
+    }
+  }
+
+  #isTabular(feat: unknown): feat is PathReturn<"/feature/Tabular/{feature_id}"> {
+    return feat["@type"].includes("feature/tabular")
+  }
+  async translateTabularFeature(feat: unknown): Promise<TabularFeature<number | string| number[]>> {
+    if (!this.#isTabular(feat)) throw new Error(`Feature is not of tabular type`)
+    const superObj = await this.translateBaseFeature(feat)
+    const { data: _data } = feat
+    const { index, columns, data } = _data || {}
+    return {
+      ...superObj,
+      columns,
+      index,
+      data
+    }
+  }
+  
+  async translateCorticalProfile(feat: PathReturn<"/feature/CorticalProfile/{feature_id}">): Promise<CorticalFeature<number>> {
+    return {
+      id: feat.id,
+      name: feat.name,
+      desc: feat.description,
+      link: [
+        ...feat.datasets
+          .map(ds => ds.urls)
+          .flatMap(v => v)
+          .map(url => ({
+            href: url.url,
+            text: url.url
+          })),
+        ...feat.datasets
+          .map(ds => ({
+            href: ds.ebrains_page,
+            text: "ebrains resource"
+          }))
+      ]
+    }
+  }
+}
+
+export const translateV3Entities = new TranslateV3()
diff --git a/src/atlasComponents/sapi/type.ts b/src/atlasComponents/sapi/type.ts
index 905c0dee7f004cba521b96860e44c4da6e801d10..524d3d9a27748792217400a373ee83c97abf7c15 100644
--- a/src/atlasComponents/sapi/type.ts
+++ b/src/atlasComponents/sapi/type.ts
@@ -1,121 +1,121 @@
-import { OperatorFunction } from "rxjs"
-import { map } from "rxjs/operators"
-import { components, operations, paths } from "./schema"
-
-export type IdName = {
-  id: string
-  name: string
-}
-
-export type SapiModalityModel = {
-  name: string
-  types: string[]
-}
-
-type Point = [number, number, number]
-
-export type BoundingBoxConcept = [Point, Point]
-
-export type SapiAtlasModel = components["schemas"]["SapiAtlasModel"]
-export type SapiSpaceModel = components["schemas"]["SapiSpaceModel"]
-export type SapiParcellationModel = components["schemas"]["SapiParcellationModel"]
-export type SapiRegionModel = components["schemas"]["siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Model"]
-export type OpenMINDSCoordinatePoint = components['schemas']['siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model']
-export type SxplrCoordinatePointExtension = {
-  openminds: OpenMINDSCoordinatePoint
-  name: string
-  description: string
-  color: string
-  '@id': string // should match the id of opendminds specs
-}
-
-export type SapiRegionMapInfoModel = components["schemas"]["NiiMetadataModel"]
-export type SapiVOIDataResponse = components["schemas"]["VOIDataModel"]
-export type SapiVolumeModel = components["schemas"]["VolumeModel"]
-export type SapiDatasetModel = components["schemas"]["DatasetJsonModel"]
-export type SpyNpArrayDataModel = components["schemas"]["NpArrayDataModel"]
-export type SapiIeegSessionModel = components["schemas"]["IEEGSessionModel"]
-
-/**
- * utility types
- */
-type PathReturn<T extends keyof paths> = Required<paths[T]["get"]["responses"][200]["content"]["application/json"]>
-export type PaginatedResponse<T> = {
-  items: T[]
-  total: number
-  page: number
-  size: number
-}
-
-/**
- * serialization error type
- */
-export type SapiSerializationErrorModel = components["schemas"]["SerializationErrorModel"]
-
-/**
- * datafeatures from operations
- */
-
-export type SapiRegionalFeatureModel = PathReturn<"/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/features/{feature_id}">
-export type SapiParcellationFeatureModel = PathReturn<"/atlases/{atlas_id}/parcellations/{parcellation_id}/features/{feature_id}">
-export type SapiSpatialFeatureModel = PathReturn<"/atlases/{atlas_id}/spaces/{space_id}/features/{feature_id}">
-
-export type SapiFeatureModel = SapiRegionalFeatureModel | SapiSpatialFeatureModel | SapiParcellationFeatureModel
-
-/**
- * specific data features
- */
-
-export type SapiRegionalFeatureReceptorModel = components["schemas"]["ReceptorDatasetModel"]
-export type SapiParcellationFeatureMatrixModel = components["schemas"]["ConnectivityMatrixDataModel"]
-
-
-export const CLEANED_IEEG_DATASET_TYPE = 'sxplr/cleanedIeegDataset'
-export type CleanedIeegDataset = Required<
-  Omit<SapiDatasetModel, "@type"> & {
-    '@type': 'sxplr/cleanedIeegDataset'
-    sessions: Record<string, Omit<SapiIeegSessionModel, "dataset">>
-  }
->
-
-export function cleanIeegSessionDatasets(ieegSessions: SapiIeegSessionModel[]): CleanedIeegDataset[]{
-  const returnArr: CleanedIeegDataset[] = []
-  for (const sess of ieegSessions) {
-    const { dataset, ...itemToAppend } = sess
-    const existing = returnArr.find(it => it["@id"] === dataset["@id"])
-    if (!existing) {
-      returnArr.push({
-        ...dataset,
-        '@type': CLEANED_IEEG_DATASET_TYPE,
-        sessions: {
-          [sess.sub_id]: itemToAppend
-        }
-      })
-      continue
-    }
-    existing.sessions[sess.sub_id] = itemToAppend
-  }
-  return returnArr
-}
-
-export type SxplrCleanedFeatureModel = CleanedIeegDataset
-
-export function guardPipe<
-  InputType,
-  GuardType extends InputType
->(
-    guardFn: (input: InputType) => input is GuardType
-): OperatorFunction<InputType, GuardType> {
-  return src => src.pipe(
-    map(val => {
-      if (guardFn(val)) {
-        return val
-      }
-      throw new Error(`TypeGuard Error`)
-    })
-  )
-}
-
-export type SapiQueryPriorityArg = {
-  priority: number
-}
+// import { OperatorFunction } from "rxjs"
+// import { map } from "rxjs/operators"
+// import { components, operations, paths } from "./schema"
+
+// export type IdName = {
+//   id: string
+//   name: string
+// }
+
+// export type SapiModalityModel = {
+//   name: string
+//   types: string[]
+// }
+
+// type Point = [number, number, number]
+
+// export type BoundingBoxConcept = [Point, Point]
+
+// export type SapiAtlasModel = components["schemas"]["SapiAtlasModel"]
+// export type SapiSpaceModel = components["schemas"]["SapiSpaceModel"]
+// export type SapiParcellationModel = components["schemas"]["SapiParcellationModel"]
+// export type SapiRegionModel = components["schemas"]["siibra__openminds__SANDS__v3__atlas__parcellationEntityVersion__Model"]
+// export type OpenMINDSCoordinatePoint = components['schemas']['siibra__openminds__SANDS__v3__miscellaneous__coordinatePoint__Model']
+// export type SxplrCoordinatePointExtension = {
+//   openminds: OpenMINDSCoordinatePoint
+//   name: string
+//   description: string
+//   color: string
+//   '@id': string // should match the id of opendminds specs
+// }
+
+// export type SapiRegionMapInfoModel = components["schemas"]["NiiMetadataModel"]
+// export type SapiVOIDataResponse = components["schemas"]["VOIDataModel"]
+// export type SapiVolumeModel = components["schemas"]["VolumeModel"]
+// export type SapiDatasetModel = components["schemas"]["DatasetJsonModel"]
+// export type SpyNpArrayDataModel = components["schemas"]["NpArrayDataModel"]
+// export type SapiIeegSessionModel = components["schemas"]["IEEGSessionModel"]
+
+// /**
+//  * utility types
+//  */
+// type PathReturn<T extends keyof paths> = Required<paths[T]["get"]["responses"][200]["content"]["application/json"]>
+// export type PaginatedResponse<T> = {
+//   items: T[]
+//   total: number
+//   page: number
+//   size: number
+// }
+
+// /**
+//  * serialization error type
+//  */
+// export type SapiSerializationErrorModel = components["schemas"]["SerializationErrorModel"]
+
+// /**
+//  * datafeatures from operations
+//  */
+
+// export type SapiRegionalFeatureModel = PathReturn<"/atlases/{atlas_id}/parcellations/{parcellation_id}/regions/{region_id}/features/{feature_id}">
+// export type SapiParcellationFeatureModel = PathReturn<"/atlases/{atlas_id}/parcellations/{parcellation_id}/features/{feature_id}">
+// export type SapiSpatialFeatureModel = PathReturn<"/atlases/{atlas_id}/spaces/{space_id}/features/{feature_id}">
+
+// export type SapiFeatureModel = SapiRegionalFeatureModel | SapiSpatialFeatureModel | SapiParcellationFeatureModel
+
+// /**
+//  * specific data features
+//  */
+
+// export type SapiRegionalFeatureReceptorModel = components["schemas"]["ReceptorDatasetModel"]
+// export type SapiParcellationFeatureMatrixModel = components["schemas"]["ConnectivityMatrixDataModel"]
+
+
+// export const CLEANED_IEEG_DATASET_TYPE = 'sxplr/cleanedIeegDataset'
+// export type CleanedIeegDataset = Required<
+//   Omit<SapiDatasetModel, "@type"> & {
+//     '@type': 'sxplr/cleanedIeegDataset'
+//     sessions: Record<string, Omit<SapiIeegSessionModel, "dataset">>
+//   }
+// >
+
+// export function cleanIeegSessionDatasets(ieegSessions: SapiIeegSessionModel[]): CleanedIeegDataset[]{
+//   const returnArr: CleanedIeegDataset[] = []
+//   for (const sess of ieegSessions) {
+//     const { dataset, ...itemToAppend } = sess
+//     const existing = returnArr.find(it => it["@id"] === dataset["@id"])
+//     if (!existing) {
+//       returnArr.push({
+//         ...dataset,
+//         '@type': CLEANED_IEEG_DATASET_TYPE,
+//         sessions: {
+//           [sess.sub_id]: itemToAppend
+//         }
+//       })
+//       continue
+//     }
+//     existing.sessions[sess.sub_id] = itemToAppend
+//   }
+//   return returnArr
+// }
+
+// export type SxplrCleanedFeatureModel = CleanedIeegDataset
+
+// export function guardPipe<
+//   InputType,
+//   GuardType extends InputType
+// >(
+//     guardFn: (input: InputType) => input is GuardType
+// ): OperatorFunction<InputType, GuardType> {
+//   return src => src.pipe(
+//     map(val => {
+//       if (guardFn(val)) {
+//         return val
+//       }
+//       throw new Error(`TypeGuard Error`)
+//     })
+//   )
+// }
+
+// export type SapiQueryPriorityArg = {
+//   priority: number
+// }
diff --git a/src/atlasComponents/sapi/typeV3.ts b/src/atlasComponents/sapi/typeV3.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d65db66debe2bff385851d785213cec40749b3c5
--- /dev/null
+++ b/src/atlasComponents/sapi/typeV3.ts
@@ -0,0 +1,51 @@
+import { components, paths, operations } from "./schemaV3"
+
+export type SapiAtlasModel = PathReturn<"/atlases/{atlas_id}">
+export type SapiSpaceModel = PathReturn<"/spaces/{space_id}">
+export type SapiParcellationModel = PathReturn<"/parcellations/{parcellation_id}">
+export type SapiRegionModel = PathReturn<"/regions/{region_id}">
+export type OpenMINDSCoordinatePoint = components['schemas']["CoordinatePointModel"]
+export type SxplrCoordinatePointExtension = {
+  openminds: OpenMINDSCoordinatePoint
+  name: string
+  description: string
+  color: string
+  '@id': string // should match the id of opendminds specs
+}
+export type SapiSpatialFeatureModel = PathReturn<"/feature/Image/{feature_id}">
+export type SapiFeatureModel = SapiSpatialFeatureModel | PathReturn<"/feature/Tabular/{feature_id}"> | PathReturn<"/feature/RegionalConnectivity/{feature_id}"> | PathReturn<"/feature/CorticalProfile/{feature_id}">
+
+export type SapiRoute = keyof paths
+
+type _FeatureType<FeatureRoute extends SapiRoute> = FeatureRoute extends `/feature/${infer FT}`
+  ? FT extends "_types"
+    ? never
+    : FT extends "{feature_id}"
+      ? never
+      : FT extends `${infer _FT}/{${infer _FID}}`
+        ? never
+        : FT
+  : never
+
+export type FeatureType = _FeatureType<SapiRoute>
+
+/**
+ * Support types
+ */
+export type RouteParam<T extends keyof paths> = paths[T]['get']['parameters']
+type Json200 = {
+  200: {
+    content: {
+      "application/json": unknown
+    }
+  }
+}
+export type PathReturn<T extends keyof paths> = paths[T]["get"]["responses"] extends Json200
+  ? paths[T]["get"]["responses"][200]["content"]["application/json"]
+  : unknown
+export type PaginatedModel<T> = {
+  items: T[]
+  total: number
+  page: number
+  size: number
+}
diff --git a/src/atlasComponents/sapiViews/core/atlas/splashScreen/splashScreen.component.ts b/src/atlasComponents/sapiViews/core/atlas/splashScreen/splashScreen.component.ts
index 056e3660c4243ee41bff9e5090354bd6e6fb2deb..442276292251b22b796e4ebe91479ac93b5bde83 100644
--- a/src/atlasComponents/sapiViews/core/atlas/splashScreen/splashScreen.component.ts
+++ b/src/atlasComponents/sapiViews/core/atlas/splashScreen/splashScreen.component.ts
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component } from "@angular/core";
 import { Store } from "@ngrx/store";
 import { tap } from 'rxjs/operators'
 import { SAPI } from "src/atlasComponents/sapi/sapi.service";
-import { SapiAtlasModel } from "src/atlasComponents/sapi/type";
+import { SxplrAtlas } from "src/atlasComponents/sapi/sxplrTypes";
 import { atlasSelection } from "src/state"
 
 @Component({
@@ -28,7 +28,7 @@ export class SapiViewsCoreAtlasSplashScreen {
   ) {
   }
 
-  public selectAtlas(atlas: SapiAtlasModel){
+  public selectAtlas(atlas: SxplrAtlas){
     this.store.dispatch(
       atlasSelection.actions.selectAtlas({
         atlas
diff --git a/src/atlasComponents/sapiViews/core/datasets/dataset/dataset.component.ts b/src/atlasComponents/sapiViews/core/datasets/dataset/dataset.component.ts
deleted file mode 100644
index 22813095a37d1c1b8b6a12b44003995d8b7e8db5..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/core/datasets/dataset/dataset.component.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from "@angular/core";
-import { SapiDatasetModel } from "src/atlasComponents/sapi";
-import { CONST } from "common/constants"
-
-const RESTRICTED_ACCESS_ID = "https://nexus.humanbrainproject.org/v0/data/minds/core/embargostatus/v1.0.0/3054f80d-96a8-4dce-9b92-55c68a8b5efd"
-
-@Component({
-  selector: `sxplr-sapiviews-core-datasets-dataset`,
-  templateUrl: './dataset.template.html',
-  styleUrls: [
-    `./dataset.style.css`
-  ],
-  changeDetection: ChangeDetectionStrategy.OnPush
-})
-
-export class DatasetView implements OnChanges{
-  @Input('sxplr-sapiviews-core-datasets-dataset-input')
-  dataset: SapiDatasetModel
-
-  public isRestricted = false
-  public CONST = CONST
-
-  ngOnChanges(changes: SimpleChanges): void {
-    const { dataset } = changes
-    if (dataset) {
-      this.isRestricted = (dataset.currentValue as SapiDatasetModel)?.metadata?.accessibility?.["@id"] === RESTRICTED_ACCESS_ID
-    }
-  }
-}
diff --git a/src/atlasComponents/sapiViews/core/datasets/dataset/dataset.stories.ts b/src/atlasComponents/sapiViews/core/datasets/dataset/dataset.stories.ts
deleted file mode 100644
index 641e4fb6f7008cfa7128efd019ea7e5871e2b09b..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/core/datasets/dataset/dataset.stories.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import { CommonModule } from "@angular/common"
-import { HttpClientModule } from "@angular/common/http"
-import { Meta, moduleMetadata, Story } from "@storybook/angular"
-import { SAPI } from "src/atlasComponents/sapi"
-import { getHoc1RightFeatureDetail, getHoc1RightFeatures, provideDarkTheme } from "src/atlasComponents/sapi/stories.base"
-import { SapiViewsCoreDatasetModule } from ".."
-import { DatasetView } from "./dataset.component"
-
-export default {
-  component: DatasetView,
-  decorators: [
-    moduleMetadata({
-      imports: [
-        CommonModule,
-        HttpClientModule,
-        SapiViewsCoreDatasetModule,
-      ],
-      providers: [
-        SAPI,
-        ...provideDarkTheme,
-      ],
-      declarations: []
-    })
-  ],
-} as Meta
-
-const Template: Story<DatasetView> = (args: DatasetView, { loaded }) => {
-  const { feature } = loaded
-  return ({
-    props: {
-      ...args,
-      dataset: feature,
-    },
-  })
-}
-
-const loadFeat = async () => {
-  const features = await getHoc1RightFeatures()
-  const receptorfeat = features.find(f => f['@type'] === "siibra/features/receptor")
-  const feature = await getHoc1RightFeatureDetail(receptorfeat["@id"])
-  return {
-    feature
-  }
-}
-
-export const ReceptorDataset = Template.bind({})
-ReceptorDataset.args = {
-
-}
-ReceptorDataset.loaders = [
-  async () => {
-    const { feature } = await loadFeat()
-    return {
-      feature
-    }
-  }
-]
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/core/datasets/dataset/dataset.template.html b/src/atlasComponents/sapiViews/core/datasets/dataset/dataset.template.html
deleted file mode 100644
index a04996afbb8d961cba682ed0cd1cc9d5b2940d31..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/core/datasets/dataset/dataset.template.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<ng-template #headerTmpl>
-  <ng-content select="[header]"></ng-content>
-</ng-template>
-
-<mat-card *ngIf="!dataset">
-
-  <ng-template [ngTemplateOutlet]="headerTmpl"></ng-template>
-  <span>
-    Dataset not specified.
-  </span>
-</mat-card>
-
-<mat-card *ngIf="dataset"
-  class="mat-elevation-z4 sxplr-z-4">
-  <mat-card-title>
-    <ng-template [ngTemplateOutlet]="headerTmpl"></ng-template>
-    <span>
-      {{ dataset.metadata.fullName }}
-    </span>
-  </mat-card-title>
-
-  <mat-card-subtitle class="sxplr-d-inline-flex sxplr-align-items-stretch">
-    <mat-icon class="sxplr-m-a" fontSet="fas" fontIcon="fa-database"></mat-icon>
-    <span class="sxplr-m-a">
-      EBRAINS dataset
-    </span>
-
-    <button *ngIf="isRestricted"
-      [matTooltip]="CONST.GDPR_TEXT"
-      mat-icon-button color="warn">
-      <i class="fas fa-exclamation-triangle"></i>
-    </button>
-
-    <mat-divider class="sxplr-pl-1" [vertical]="true"></mat-divider>
-
-    <a mat-icon-button sxplr-hide-when-local *ngFor="let url of dataset.urls" [href]="url.doi | parseDoi" target="_blank">
-      <i class="fas fa-external-link-alt"></i>
-    </a>
-  </mat-card-subtitle>
-</mat-card>
-
-<mat-card *ngIf="dataset" class="sxplr-z-0">
-  <mat-card-content>
-    <markdown-dom class="sxplr-muted" [markdown]="dataset?.metadata?.description">
-    </markdown-dom>
-  </mat-card-content>
-</mat-card>
diff --git a/src/atlasComponents/sapiViews/core/datasets/index.ts b/src/atlasComponents/sapiViews/core/datasets/index.ts
deleted file mode 100644
index d265981874bb6564d2dac8f9738d7069436154e9..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/core/datasets/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export {
-  SapiViewsCoreDatasetModule
-} from "./module"
-
-export {
-  DatasetView
-} from "./dataset/dataset.component"
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/core/datasets/module.ts b/src/atlasComponents/sapiViews/core/datasets/module.ts
deleted file mode 100644
index d7b43955b58f954fa02bbbf9000982e5ac382b41..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/core/datasets/module.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { CommonModule } from "@angular/common";
-import { NgModule } from "@angular/core";
-import { MarkdownModule } from "src/components/markdown";
-import { AngularMaterialModule } from "src/sharedModules";
-import { StrictLocalModule } from "src/strictLocal";
-import { SapiViewsUtilModule } from "../../util/module";
-import { DatasetView } from "./dataset/dataset.component";
-
-@NgModule({
-  imports: [
-    CommonModule,
-    AngularMaterialModule,
-    MarkdownModule,
-    SapiViewsUtilModule,
-    StrictLocalModule,
-  ],
-  declarations: [
-    DatasetView,
-  ],
-  exports: [
-    DatasetView
-  ]
-})
-
-export class SapiViewsCoreDatasetModule{}
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/core/module.ts b/src/atlasComponents/sapiViews/core/module.ts
index c30a1d83ebe1a72a911acbfdc796729e683431d8..d307b3b54b77681c32a3c8cc8cbbbd0a3cb2cf14 100644
--- a/src/atlasComponents/sapiViews/core/module.ts
+++ b/src/atlasComponents/sapiViews/core/module.ts
@@ -1,7 +1,6 @@
 import { CommonModule } from "@angular/common";
 import { NgModule } from "@angular/core";
 import { SapiViewsCoreAtlasModule } from "./atlas/module";
-import { SapiViewsCoreDatasetModule } from "./datasets";
 import { SapiViewsCoreParcellationModule } from "./parcellation/module";
 import { SapiViewsCoreRegionModule } from "./region";
 import { SapiViewsCoreRichModule } from "./rich/module";
@@ -10,7 +9,6 @@ import { SapiViewsCoreSpaceModule } from "./space";
 @NgModule({
   imports: [
     CommonModule,
-    SapiViewsCoreDatasetModule,
     SapiViewsCoreRegionModule,
     SapiViewsCoreAtlasModule,
     SapiViewsCoreSpaceModule,
@@ -18,7 +16,6 @@ import { SapiViewsCoreSpaceModule } from "./space";
     SapiViewsCoreRichModule,
   ],
   exports: [
-    SapiViewsCoreDatasetModule,
     SapiViewsCoreRegionModule,
     SapiViewsCoreAtlasModule,
     SapiViewsCoreSpaceModule,
diff --git a/src/atlasComponents/sapiViews/core/parcellation/filterGroupedParcellations.pipe.ts b/src/atlasComponents/sapiViews/core/parcellation/filterGroupedParcellations.pipe.ts
index 62910eab45e5529ee22f137afa92e4978d42cfe4..7436e01bf89832325ea7ff44d65efef29e6ae79c 100644
--- a/src/atlasComponents/sapiViews/core/parcellation/filterGroupedParcellations.pipe.ts
+++ b/src/atlasComponents/sapiViews/core/parcellation/filterGroupedParcellations.pipe.ts
@@ -1,5 +1,5 @@
 import { Pipe, PipeTransform } from "@angular/core";
-import { SapiParcellationModel } from "src/atlasComponents/sapi";
+import { SxplrParcellation } from "src/atlasComponents/sapi/sxplrTypes";
 import { GroupedParcellation } from "./groupedParcellation";
 
 @Pipe({
@@ -8,11 +8,11 @@ import { GroupedParcellation } from "./groupedParcellation";
 })
 
 export class FilterGroupedParcellationPipe implements PipeTransform{
-  public transform(parcs: SapiParcellationModel[], getGroupsFlag: boolean=false): (SapiParcellationModel|GroupedParcellation)[] {
+  public transform(parcs: SxplrParcellation[], getGroupsFlag: boolean=false): (SxplrParcellation|GroupedParcellation)[] {
     if (!getGroupsFlag) {
       return parcs.filter(p => !p.modality)
     }
-    const map: Record<string, SapiParcellationModel[]> = {}
+    const map: Record<string, SxplrParcellation[]> = {}
     for (const parc of parcs.filter(p => !!p.modality)) {
       if (!map[parc.modality]) {
         map[parc.modality] = []
diff --git a/src/atlasComponents/sapiViews/core/parcellation/filterUnsupportedParc.pipe.ts b/src/atlasComponents/sapiViews/core/parcellation/filterUnsupportedParc.pipe.ts
index 222020d7296acd3555b08c2b69c05fd49ceba80c..0f3c648ecd17c2520519ab15fc8e9d0a66560899 100644
--- a/src/atlasComponents/sapiViews/core/parcellation/filterUnsupportedParc.pipe.ts
+++ b/src/atlasComponents/sapiViews/core/parcellation/filterUnsupportedParc.pipe.ts
@@ -1,8 +1,9 @@
 import { Pipe, PipeTransform } from "@angular/core";
-import { SapiParcellationModel } from "src/atlasComponents/sapi/type";
+import { SxplrParcellation } from "src/atlasComponents/sapi/sxplrTypes";
 import { GroupedParcellation } from "./groupedParcellation";
+import { translateV3Entities } from "src/atlasComponents/sapi/translateV3"
 
-type Filterables = SapiParcellationModel | GroupedParcellation
+type Filterables = SxplrParcellation | GroupedParcellation
 
 const unsupportedIds = [
   "https://doi.org/10.1016/j.jneumeth.2020.108983/mni152",
@@ -23,11 +24,12 @@ export class FilterUnsupportedParcPipe implements PipeTransform{
       if (p instanceof GroupedParcellation) {
         return hideGroup.indexOf(p.name) < 0
       }
-      if (unsupportedIds.includes(p["@id"])) {
+      if (unsupportedIds.includes(p.id)) {
         return false
       }
-      if (p.version) {
-        return !p.version.deprecated
+      const apiP = translateV3Entities.retrieveParcellation(p)
+      if (apiP.version) {
+        return !apiP.version.deprecated
       }
       return true
     })
diff --git a/src/atlasComponents/sapiViews/core/parcellation/groupedParcellation.ts b/src/atlasComponents/sapiViews/core/parcellation/groupedParcellation.ts
index c66d6e9818a3884cb0c48fc58de56bee4373e113..81b5ea8c01a9ae11dab6d7af8cc8bca2e4db8190 100644
--- a/src/atlasComponents/sapiViews/core/parcellation/groupedParcellation.ts
+++ b/src/atlasComponents/sapiViews/core/parcellation/groupedParcellation.ts
@@ -1,9 +1,9 @@
-import { SapiParcellationModel } from "src/atlasComponents/sapi"
+import { SxplrParcellation } from "src/atlasComponents/sapi/sxplrTypes"
 
 export class GroupedParcellation{
   name: string
-  parcellations: SapiParcellationModel[]
-  constructor(name: string, parcellations: SapiParcellationModel[]){
+  parcellations: SxplrParcellation[]
+  constructor(name: string, parcellations: SxplrParcellation[]){
     this.name = name
     this.parcellations = parcellations
   }
diff --git a/src/atlasComponents/sapiViews/core/parcellation/isGroupedParcellation.pipe.ts b/src/atlasComponents/sapiViews/core/parcellation/isGroupedParcellation.pipe.ts
new file mode 100644
index 0000000000000000000000000000000000000000..bdcd4f5183e582f5a08848c4852fac1196b7b74b
--- /dev/null
+++ b/src/atlasComponents/sapiViews/core/parcellation/isGroupedParcellation.pipe.ts
@@ -0,0 +1,13 @@
+import { Pipe, PipeTransform } from "@angular/core"
+import { GroupedParcellation } from "./groupedParcellation"
+
+@Pipe({
+  name: 'isGroupedParcellation',
+  pure: true
+})
+
+export class IsGroupedParcellation implements PipeTransform{
+  public transform(input: unknown): input is GroupedParcellation {
+    return input['parcellations'] instanceof Array
+  }
+}
diff --git a/src/atlasComponents/sapiViews/core/parcellation/module.ts b/src/atlasComponents/sapiViews/core/parcellation/module.ts
index d3074f6e8e56b7ddabbf65bd74336f7d098ae42a..1dba15a672f32048508569aa03b9a63f9e96fed0 100644
--- a/src/atlasComponents/sapiViews/core/parcellation/module.ts
+++ b/src/atlasComponents/sapiViews/core/parcellation/module.ts
@@ -13,6 +13,7 @@ import { FilterUnsupportedParcPipe } from "./filterUnsupportedParc.pipe";
 import { ParcellationDoiPipe } from "./parcellationDoi.pipe";
 import { ParcellationVisibilityService } from "./parcellationVis.service";
 import { ParcellationGroupSelectedPipe } from "./parcellationGroupSelected.pipe";
+import { IsGroupedParcellation } from "./isGroupedParcellation.pipe";
 
 @NgModule({
   imports: [
@@ -29,12 +30,14 @@ import { ParcellationGroupSelectedPipe } from "./parcellationGroupSelected.pipe"
     FilterUnsupportedParcPipe,
     ParcellationDoiPipe,
     ParcellationGroupSelectedPipe,
+    IsGroupedParcellation,
   ],
   exports: [
     FilterGroupedParcellationPipe,
     FilterUnsupportedParcPipe,
     ParcellationGroupSelectedPipe,
     ParcellationDoiPipe,
+    IsGroupedParcellation,
   ],
   providers: [
     ParcellationVisibilityService,
diff --git a/src/atlasComponents/sapiViews/core/parcellation/parcellationDoi.pipe.ts b/src/atlasComponents/sapiViews/core/parcellation/parcellationDoi.pipe.ts
index 8652365e1bb40d6565ccfd9d88e30eb94492c6d4..dad016dc1eb4e383a42bd4054162783c77b4ea6d 100644
--- a/src/atlasComponents/sapiViews/core/parcellation/parcellationDoi.pipe.ts
+++ b/src/atlasComponents/sapiViews/core/parcellation/parcellationDoi.pipe.ts
@@ -1,5 +1,5 @@
 import { Pipe, PipeTransform } from "@angular/core";
-import { SapiParcellationModel } from "src/atlasComponents/sapi/type";
+import { SxplrParcellation } from "src/atlasComponents/sapi/sxplrTypes";
 
 @Pipe({
   name: 'parcellationDoiPipe',
@@ -7,12 +7,7 @@ import { SapiParcellationModel } from "src/atlasComponents/sapi/type";
 })
 
 export class ParcellationDoiPipe implements PipeTransform {
-  public transform(parc: SapiParcellationModel): string[] {
-    const urls = (parc?.brainAtlasVersions || []).filter(
-      v => v.digitalIdentifier && v.digitalIdentifier['@type'] === 'https://openminds.ebrains.eu/core/DOI'
-    ).map(
-      v => v.digitalIdentifier['@id'] as string
-    )
-    return Array.from(new Set(urls))
+  public transform(_parc: SxplrParcellation): string[] {
+    return (_parc.link || []).map(v => v.href)
   }
 }
diff --git a/src/atlasComponents/sapiViews/core/parcellation/parcellationGroupSelected.pipe.ts b/src/atlasComponents/sapiViews/core/parcellation/parcellationGroupSelected.pipe.ts
index cd31e439157a8e34182c03427fb70c35031241b9..ad36105afe5198c558c9ff5b553b17d365102435 100644
--- a/src/atlasComponents/sapiViews/core/parcellation/parcellationGroupSelected.pipe.ts
+++ b/src/atlasComponents/sapiViews/core/parcellation/parcellationGroupSelected.pipe.ts
@@ -1,11 +1,9 @@
 import { Pipe, PipeTransform } from "@angular/core";
-import { SapiParcellationModel } from "src/atlasComponents/sapi/type";
+import { SxplrParcellation } from "src/atlasComponents/sapi/sxplrTypes";
 import { GroupedParcellation } from "./groupedParcellation";
+import { IsGroupedParcellation } from "./isGroupedParcellation.pipe"
 
-function isGroupedParc(parc: GroupedParcellation|unknown): parc is GroupedParcellation {
-  if (!parc['parcellations']) return false
-  return (parc['parcellations'] as SapiParcellationModel[]).every(p => p["@type"] === "minds/core/parcellationatlas/v1.0.0")
-}
+const pipe = new IsGroupedParcellation()
 
 @Pipe({
   name: 'parcellationGroupSelected',
@@ -13,8 +11,8 @@ function isGroupedParc(parc: GroupedParcellation|unknown): parc is GroupedParcel
 })
 
 export class ParcellationGroupSelectedPipe implements PipeTransform {
-  public transform(parc: GroupedParcellation|unknown, selectedParcellation: SapiParcellationModel): boolean {
-    if (!isGroupedParc(parc)) return false
-    return parc.parcellations.some(p => p["@id"] === selectedParcellation["@id"])
+  public transform(parc: GroupedParcellation|unknown, selectedParcellation: SxplrParcellation): boolean {
+    if (!pipe.transform(parc)) return false
+    return parc.parcellations.some(p => p.id === selectedParcellation.id)
   }
 }
diff --git a/src/atlasComponents/sapiViews/core/parcellation/parcellationVersion.pipe.spec.ts b/src/atlasComponents/sapiViews/core/parcellation/parcellationVersion.pipe.spec.ts
deleted file mode 100644
index 1d446f159af3a6cb1e52fc322e560a8eca6ad01b..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/core/parcellation/parcellationVersion.pipe.spec.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import { IDS } from "src/atlasComponents/sapi/constants"
-import { SAPI } from "src/atlasComponents/sapi/sapi.service"
-import { SapiParcellationModel } from "src/atlasComponents/sapi/type"
-import { getTraverseFunctions } from "./parcellationVersion.pipe"
-
-describe(`parcellationVersion.pipe.ts`, () => {
-  describe("getTraverseFunctions", () => {
-    let julichBrainParcellations: SapiParcellationModel[] = []
-    let endpoint: string
-    beforeAll(async () => {
-      const bsEndPoint = await SAPI.BsEndpoint$.toPromise()
-      endpoint = bsEndPoint
-      const res = await fetch(`${bsEndPoint}/atlases/${encodeURIComponent(IDS.ATLAES.HUMAN)}/parcellations`)
-      const arr: SapiParcellationModel[] = await res.json()
-      julichBrainParcellations = arr.filter(it => /Julich-Brain Cytoarchitectonic Maps/.test(it.name))
-    })
-    it("> should be at least 3 parcellations", () => {
-      console.log(`testing against endpoint: ${endpoint}`)
-      expect(julichBrainParcellations.length).toBeGreaterThanOrEqual(3)
-    })
-
-    const scenarios = [{
-      name: "default",
-      inputFlag: undefined,
-      expect25: false
-    },{
-      name: "skipDeprecated set to true",
-      inputFlag: true,
-      expect25: false
-    },{
-      name: "skipDeprecated set to false",
-      inputFlag: false,
-      expect25: true
-    }]
-
-    for (const { name, inputFlag, expect25} of scenarios) {
-      describe(name, () => {
-        it(`expect to find 25: ${expect25}`, () => {
-          const { findNewer, findOldest } = typeof inputFlag === "undefined"
-          ? getTraverseFunctions(julichBrainParcellations)
-          : getTraverseFunctions(julichBrainParcellations, inputFlag)
-          let cursor: SapiParcellationModel = findOldest()
-          let foundFlag: boolean = false
-          while (cursor) {
-            if (cursor.name === "Julich-Brain Cytoarchitectonic Maps 2.5") {
-              if (expect25) foundFlag = true
-              break
-            }
-            cursor = findNewer(cursor)
-          }
-          expect(foundFlag).toEqual(expect25)
-        })
-      })
-    }
-  })
-})
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/core/parcellation/parcellationVersion.pipe.ts b/src/atlasComponents/sapiViews/core/parcellation/parcellationVersion.pipe.ts
deleted file mode 100644
index a2e5e1f3ff73e2b3ec837188c52c5670e4348e46..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/core/parcellation/parcellationVersion.pipe.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import { Pipe, PipeTransform } from "@angular/core";
-import { SapiParcellationModel } from "src/atlasComponents/sapi/type";
-
-export function getTraverseFunctions(parcellations: SapiParcellationModel[], skipDeprecated: boolean = true) {
-
-  const getTraverse = (key: 'prev' | 'next') => {
-
-    const returnFunction = (parc: SapiParcellationModel) => {
-      if (!parc.version) {
-        throw new Error(`parcellation ${parc.name} does not have version defined!`)
-      }
-      if (!parc.version[key]) {
-        return null
-      }
-      const found = parcellations.find(p => p["@id"] === parc.version[key]["@id"])
-      if (!found) {
-        throw new Error(`parcellation ${parc.name} references ${parc.version[key]['@id']} as ${key} version, but it cannot be found.`)
-      }
-      if (skipDeprecated && found.version.deprecated) {
-        return returnFunction(found)
-      }
-      return found
-    }
-
-    return returnFunction
-  }
-  
-  const findNewer = getTraverse('next')
-  const findOlder = getTraverse('prev')
-
-  const getFindMostFn = (findNewest) => {
-    const useFn = findNewest
-      ? findNewer
-      : findOlder
-    return () => {
-      let cursor = parcellations[0]
-      let returnParc: SapiParcellationModel
-      while (cursor) {
-        returnParc = cursor
-        cursor = useFn(cursor)
-      }
-      return returnParc
-    }
-  }
-
-  return {
-    findNewer,
-    findOlder,
-    findNewest: getFindMostFn(true),
-    findOldest: getFindMostFn(false)
-  }
-  
-}
-
-
-@Pipe({
-  name: 'orderParcellationByVersion',
-  pure: true
-})
-
-export class OrderParcellationByVersionPipe implements PipeTransform{
-  public transform(parcellations: SapiParcellationModel[], newestFirst: boolean = true, index: number = 0) {
-    const {
-      findNewer,
-      findOlder
-    } = getTraverseFunctions(parcellations)
-
-    const findMostFn = newestFirst ? findNewer : findOlder
-    const tranverseFn = newestFirst ? findOlder : findNewer
-
-    const mostParc = (() => {
-      let cursor = parcellations[0]
-      let returnParc: SapiParcellationModel
-      while (cursor) {
-        returnParc = cursor
-        cursor = findMostFn(cursor)
-      }
-      return returnParc
-    })()
-
-    let idx = 0
-    let cursor = mostParc
-    while (idx < index) {
-      cursor = tranverseFn(cursor)
-      if (!cursor) {
-        throw new Error(`index out of bound`)
-      }
-      idx ++
-    }
-    return cursor
-  }
-}
diff --git a/src/atlasComponents/sapiViews/core/region/module.ts b/src/atlasComponents/sapiViews/core/region/module.ts
index 60fd2425cc9b9f67008b8caa8c386dcf32614bd8..9482528706f278dc726d6a17f8096ac82fed2328 100644
--- a/src/atlasComponents/sapiViews/core/region/module.ts
+++ b/src/atlasComponents/sapiViews/core/region/module.ts
@@ -1,12 +1,12 @@
 import { CommonModule } from "@angular/common";
 import { NgModule } from "@angular/core";
 import { MarkdownModule } from "src/components/markdown";
+import { ReadmoreModule } from "src/components/readmore";
 import { SpinnerModule } from "src/components/spinner";
+import { FeatureModule } from "src/features";
 import { AngularMaterialModule } from "src/sharedModules";
 import { StrictLocalModule } from "src/strictLocal";
-import { SapiViewsFeaturesModule } from "../../features";
 import { SapiViewsUtilModule } from "../../util/module";
-import { SapiViewsCoreRegionRegionChip } from "./region/chip/region.chip.component";
 import { SapiViewsCoreRegionRegionListItem } from "./region/listItem/region.listItem.component";
 import { SapiViewsCoreRegionRegionBase } from "./region/region.base.directive";
 import { SapiViewsCoreRegionRegionalFeatureDirective } from "./region/region.features.directive";
@@ -17,22 +17,21 @@ import { SapiViewsCoreRegionRegionRich } from "./region/rich/region.rich.compone
     CommonModule,
     AngularMaterialModule,
     SapiViewsUtilModule,
-    SapiViewsFeaturesModule,
     SpinnerModule,
     MarkdownModule,
     StrictLocalModule,
+    FeatureModule,
+    ReadmoreModule,
   ],
   declarations: [
     SapiViewsCoreRegionRegionListItem,
     SapiViewsCoreRegionRegionRich,
-    SapiViewsCoreRegionRegionChip,
     SapiViewsCoreRegionRegionBase,
     SapiViewsCoreRegionRegionalFeatureDirective,
   ],
   exports: [
     SapiViewsCoreRegionRegionListItem,
     SapiViewsCoreRegionRegionRich,
-    SapiViewsCoreRegionRegionChip,
     SapiViewsCoreRegionRegionBase,
     SapiViewsCoreRegionRegionalFeatureDirective,
   ]
diff --git a/src/atlasComponents/sapiViews/core/region/region/chip/region.chip.component.ts b/src/atlasComponents/sapiViews/core/region/region/chip/region.chip.component.ts
deleted file mode 100644
index 1852f3e602a60d3739dc5bffa89a190b64fb33f7..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/core/region/region/chip/region.chip.component.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Component, EventEmitter, Output } from "@angular/core";
-import { SapiViewsCoreRegionRegionBase } from "../region.base.directive";
-
-@Component({
-  selector: `sxplr-sapiviews-core-region-region-chip`,
-  templateUrl: `./region.chip.template.html`,
-  styleUrls: [
-    `./region.chip.style.css`
-  ]
-})
-
-export class SapiViewsCoreRegionRegionChip extends SapiViewsCoreRegionRegionBase {
-  shouldFetchDetail = true
-  @Output('sxplr-sapiviews-core-region-region-chip-clicked')
-  clickEmitter = new EventEmitter<MouseEvent>()
-
-  onClick(event: MouseEvent){
-    this.clickEmitter.emit(event)
-  }
-}
diff --git a/src/atlasComponents/sapiViews/core/region/region/chip/region.chip.stories.ts b/src/atlasComponents/sapiViews/core/region/region/chip/region.chip.stories.ts
deleted file mode 100644
index ec74e25aadf0b5f3d00ef164efd2ff19238259bb..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/core/region/region/chip/region.chip.stories.ts
+++ /dev/null
@@ -1,134 +0,0 @@
-import { CommonModule } from "@angular/common"
-import { HttpClientModule } from "@angular/common/http"
-import { Meta, moduleMetadata, Story } from "@storybook/angular"
-import { SAPI } from "src/atlasComponents/sapi"
-import { provideDarkTheme, getHumanAtlas, getJba29, getMni152, getHoc1Right, get44Left } from "src/atlasComponents/sapi/stories.base"
-import { AngularMaterialModule } from "src/sharedModules"
-import { SapiViewsCoreRegionModule } from "../../module"
-import { SapiViewsCoreRegionRegionChip } from "./region.chip.component"
-
-
-export default {
-  component: SapiViewsCoreRegionRegionChip,
-  decorators: [
-    moduleMetadata({
-      imports: [
-        CommonModule,
-        HttpClientModule,
-        SapiViewsCoreRegionModule,
-        AngularMaterialModule,
-      ],
-      providers: [
-        SAPI,
-        ...provideDarkTheme,
-      ],
-      declarations: []
-    })
-  ],
-} as Meta
-
-const Template: Story<SapiViewsCoreRegionRegionChip> = (args: SapiViewsCoreRegionRegionChip, { loaded, parameters }) => {
-  const { 
-    atlas,
-    parcellation,
-    template,
-    region,
-  } = loaded
-  const {
-    contentProjection
-  } = parameters
-
-  return ({
-    props: {
-      atlas,
-      parcellation,
-      template,
-      region,
-    },
-    template: `
-    <sxplr-sapiviews-core-region-region-chip>
-      ${contentProjection || ''}
-    </sxplr-sapiviews-core-region-region-chip>
-    `
-  })
-}
-Template.loaders = []
-
-const getContentProjection = ({ prefix = null, suffix = null }) => {
-  let returnVal = ``
-  if (prefix) {
-    returnVal += `<div prefix>${prefix}</div>`
-  }
-  if (suffix) {
-    returnVal += `<div suffix>${suffix}</div>`
-  }
-  return returnVal
-}
-
-export const Default = Template.bind({})
-Default.loaders = [
-  async () => {
-    
-    const atlas = await getHumanAtlas()
-    const parcellation = await getJba29()
-    const template = await getMni152()
-    const region = await getHoc1Right()
-
-    return {
-      atlas,
-      parcellation,
-      template,
-      region,
-    }
-  }
-]
-
-export const Dark = Template.bind({})
-Dark.loaders = [
-  async () => {
-    
-    const atlas = await getHumanAtlas()
-    const parcellation = await getJba29()
-    const template = await getMni152()
-    const region = await get44Left()
-
-    return {
-      atlas,
-      parcellation,
-      template,
-      region,
-    }
-  }
-]
-
-export const Prefix = Template.bind({})
-Prefix.loaders = [
-  ...Default.loaders
-]
-Prefix.parameters = {
-  contentProjection: getContentProjection({
-    prefix: `PREFIX`,
-  })
-}
-
-export const Suffix = Template.bind({})
-Suffix.loaders = [
-  ...Default.loaders
-]
-Suffix.parameters = {
-  contentProjection: getContentProjection({
-    suffix: `SUFFIX`,
-  })
-}
-
-
-export const PrefixSuffix = Template.bind({})
-PrefixSuffix.loaders = [
-  ...Default.loaders
-]
-PrefixSuffix.parameters = {
-  contentProjection: getContentProjection({
-    prefix: `PREFIX`,
-    suffix: `SUFFIX`,
-  })
-}
diff --git a/src/atlasComponents/sapiViews/core/region/region/chip/region.chip.style.css b/src/atlasComponents/sapiViews/core/region/region/chip/region.chip.style.css
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/atlasComponents/sapiViews/core/region/region/chip/region.chip.template.html b/src/atlasComponents/sapiViews/core/region/region/chip/region.chip.template.html
deleted file mode 100644
index 9b8262ee0441e16ce49b34d4a6d43ea9b60833b8..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/core/region/region/chip/region.chip.template.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<ng-template #prefixTmpl>
-  <ng-content select="[prefix]"></ng-content>
-</ng-template>
-
-<ng-template #suffixTmpl>
-  <ng-content select="[suffix]"></ng-content>
-</ng-template>
-
-<div *ngIf="!region">
-  <div class="sxplr-d-inline-block">
-    <ng-template [ngTemplateOutlet]="prefixTmpl"></ng-template>
-  </div>
-  <spinner-cmp class="sxplr-d-inline-block"></spinner-cmp>
-  <div class="sxplr-d-inline-block">
-    <ng-template [ngTemplateOutlet]="suffixTmpl"></ng-template>
-  </div>
-</div>
-
-<mat-chip-list *ngIf="region"
-  [ngClass]="{
-    'darktheme': regionDarkmode,
-    'lighttheme': !regionDarkmode
-  }">
-  <mat-chip
-    (click)="onClick($event)"
-    class="sxplr-custom-cmp text"
-    [style.backgroundColor]="regionRgbString"
-    >
-    <ng-template [ngTemplateOutlet]="prefixTmpl"></ng-template>
-    <span class="mat-body">
-      {{ region.name }}
-    </span>
-    <ng-template [ngTemplateOutlet]="suffixTmpl"></ng-template>
-  </mat-chip>
-</mat-chip-list>
diff --git a/src/atlasComponents/sapiViews/core/region/region/region.base.directive.ts b/src/atlasComponents/sapiViews/core/region/region/region.base.directive.ts
index 96f374b267ced1fb700333654b7e62a39a9e311a..a2204a080335eb69d7644bf8c383eb4fb3d643f4 100644
--- a/src/atlasComponents/sapiViews/core/region/region/region.base.directive.ts
+++ b/src/atlasComponents/sapiViews/core/region/region/region.base.directive.ts
@@ -1,9 +1,11 @@
-import { Directive, EventEmitter, Input, OnDestroy, Output } from "@angular/core";
-import { SapiAtlasModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi";
+import { Directive, EventEmitter, Input, Output, SimpleChanges } from "@angular/core";
+import { SxplrAtlas, SxplrParcellation, SxplrRegion, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
+import { translateV3Entities } from "src/atlasComponents/sapi/translateV3"
 import { rgbToHsl } from 'common/util'
 import { SAPI } from "src/atlasComponents/sapi/sapi.service";
-import { BehaviorSubject, Subject } from "rxjs";
+import { BehaviorSubject, combineLatest } from "rxjs";
 import { SAPIRegion } from "src/atlasComponents/sapi/core";
+import { map, switchMap } from "rxjs/operators";
 
 @Directive({
   selector: `[sxplr-sapiviews-core-region]`,
@@ -17,20 +19,19 @@ export class SapiViewsCoreRegionRegionBase {
   public fetchInProgress$ = new BehaviorSubject<boolean>(false)
 
   @Input('sxplr-sapiviews-core-region-atlas')
-  atlas: SapiAtlasModel
+  atlas: SxplrAtlas
   @Input('sxplr-sapiviews-core-region-template')
-  template: SapiSpaceModel
+  template: SxplrTemplate
   @Input('sxplr-sapiviews-core-region-parcellation')
-  parcellation: SapiParcellationModel
+  parcellation: SxplrParcellation
 
   @Output('sxplr-sapiviews-core-region-navigate-to')
   onNavigateTo = new EventEmitter<number[]>()
 
-  protected region$ = new Subject<SapiRegionModel>()
-  private _region: SapiRegionModel
+  protected region$ = new BehaviorSubject<SxplrRegion>(null)
+  private _region: SxplrRegion
   @Input('sxplr-sapiviews-core-region-region')
-  set region(val: SapiRegionModel) {
-    
+  set region(val: SxplrRegion) {
     this.region$.next(val)
 
     if (!this.shouldFetchDetail || !val) {
@@ -58,6 +59,24 @@ export class SapiViewsCoreRegionRegionBase {
     return this._region
   }
 
+  private ATP$ = new BehaviorSubject<{
+    atlas: SxplrAtlas
+    template: SxplrTemplate
+    parcellation: SxplrParcellation
+  }>(null)
+
+  protected ATPR$ = combineLatest([
+    this.ATP$,
+    this.region$
+  ]).pipe(
+    map(([ atp, region ]) => ({ ...atp, region }))
+  )
+
+  ngOnChanges(sc: SimpleChanges): void {
+    const { atlas, template, parcellation } = this
+    this.ATP$.next({ atlas, template, parcellation })
+  }
+
   regionRgbString: string = `rgb(200, 200, 200)`
   regionDarkmode = false
   // in mm!!
@@ -76,7 +95,7 @@ export class SapiViewsCoreRegionRegionBase {
       /**
        * color
        */
-      const rgb = SAPIRegion.GetDisplayColor(this.region)
+      const rgb = SAPIRegion.GetDisplayColor(this.region) || [200, 200, 200]
       this.regionRgbString = `rgb(${rgb.join(',')})`
       const [_h, _s, l] = rgbToHsl(...rgb)
       this.regionDarkmode = l < 0.4
@@ -84,14 +103,12 @@ export class SapiViewsCoreRegionRegionBase {
       /**
        * position
        */
-      this.regionPosition = this.region.hasAnnotation?.bestViewPoint?.coordinates.map(v => v.value)
+      this.regionPosition = this.region.centroid?.loc
 
       /**
        * dois
        */
-      this.dois = (this.region.hasAnnotation?.inspiredBy || [])
-        .map(insp => insp["@id"] as string)
-        .filter(id => /^https?:\/\/doi\.org/.test(id))
+      this.dois = (this.region.link || []).map(link => link.href)
     }
   }
 
@@ -99,8 +116,18 @@ export class SapiViewsCoreRegionRegionBase {
     this.onNavigateTo.emit(position.map(v => v*1e6))
   }
 
-  protected async fetchDetail(region: SapiRegionModel) {
-    return this.sapi.getRegion(this.atlas["@id"],this.parcellation["@id"], region.name).getDetail(this.template["@id"]).toPromise()
+  protected async fetchDetail(region: SxplrRegion): Promise<SxplrRegion> {
+    return this.sapi.v3Get("/regions/{region_id}", {
+      path: {
+        region_id: region.name
+      },
+      query: {
+        parcellation_id: this.parcellation.id,
+        space_id: this.template.id
+      }
+    }).pipe(
+      switchMap(r => translateV3Entities.translateRegion(r))
+    ).toPromise()
   }
 
   constructor(protected sapi: SAPI){
diff --git a/src/atlasComponents/sapiViews/core/region/region/region.features.directive.ts b/src/atlasComponents/sapiViews/core/region/region/region.features.directive.ts
index 47a4b6912c7a701b116fae6e13c0591c4005ab19..b7019d477953329a64fb471ad620b4f7486b059f 100644
--- a/src/atlasComponents/sapiViews/core/region/region/region.features.directive.ts
+++ b/src/atlasComponents/sapiViews/core/region/region/region.features.directive.ts
@@ -1,8 +1,8 @@
 import { Directive, OnChanges, SimpleChanges } from "@angular/core";
-import { BehaviorSubject, Observable } from "rxjs";
-import { switchMap,  filter, startWith, shareReplay, finalize } from "rxjs/operators";
-import { SAPI, SapiAtlasModel, SapiParcellationModel, SapiRegionalFeatureModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi";
-import { SxplrCleanedFeatureModel } from "src/atlasComponents/sapi/type";
+import { BehaviorSubject, merge, NEVER } from "rxjs";
+import { switchMap,  filter, startWith, shareReplay, scan } from "rxjs/operators";
+import { SAPI, SAPIRegion } from "src/atlasComponents/sapi";
+import { SxplrAtlas, SxplrParcellation, SxplrTemplate, SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes"
 import { SapiViewsCoreRegionRegionBase } from "./region.base.directive";
 
 @Directive({
@@ -12,37 +12,13 @@ import { SapiViewsCoreRegionRegionBase } from "./region.base.directive";
 
 export class SapiViewsCoreRegionRegionalFeatureDirective extends SapiViewsCoreRegionRegionBase implements OnChanges{
 
-  private ATPR$ = new BehaviorSubject<{
-    atlas: SapiAtlasModel
-    template: SapiSpaceModel
-    parcellation: SapiParcellationModel
-    region: SapiRegionModel
-  }>(null)
-
-  ngOnChanges(sc: SimpleChanges): void {
-    const { atlas, template, parcellation, region } = this
-    this.ATPR$.next({ atlas, template, parcellation, region })
-  }
-
   constructor(sapi: SAPI){
     super(sapi)
   }
 
-  private features$: Observable<(SapiRegionalFeatureModel|SxplrCleanedFeatureModel)[]> = this.ATPR$.pipe(
-    filter(arg => {
-      if (!arg) return false
-      const { atlas, parcellation, region, template } = arg
-      return !!atlas && !!parcellation && !!region && !!template 
-    }),
-    switchMap(({ atlas, parcellation, region, template }) => {
-      this.busy$.next(true)
-      return this.sapi.getRegionFeatures(atlas["@id"], parcellation["@id"], template["@id"], region.name).pipe(
-        finalize(() => this.busy$.next(false))
-      )
-    }),
-  )
+  private features$ = NEVER
 
-  public listOfFeatures$: Observable<(SapiRegionalFeatureModel|SxplrCleanedFeatureModel)[]> = this.features$.pipe(
+  public listOfFeatures$ = this.features$.pipe(
     startWith([]),
     shareReplay(1),
   )
diff --git a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.component.ts b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.component.ts
index 0d506febda44ca7366f7366a622403b06a488228..9db77ddb32c2077ff94f932785ffc5469a50b6a3 100644
--- a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.component.ts
+++ b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.component.ts
@@ -1,11 +1,13 @@
-import { Observable, Subject } from "rxjs";
+import { concat, Observable, of, Subject } from "rxjs";
 import { Component, EventEmitter, Inject, Output } from "@angular/core";
 import { DARKTHEME } from "src/util/injectionTokens";
 import { SapiViewsCoreRegionRegionBase } from "../region.base.directive";
 import { ARIA_LABELS, CONST } from 'common/constants'
-import { SapiRegionalFeatureModel } from "src/atlasComponents/sapi";
+import { Feature } from "src/atlasComponents/sapi/sxplrTypes";
 import { SAPI } from "src/atlasComponents/sapi/sapi.service";
 import { environment } from "src/environments/environment";
+import { map, shareReplay, switchMap } from "rxjs/operators";
+import { PathReturn } from "src/atlasComponents/sapi/typeV3";
 
 @Component({
   selector: 'sxplr-sapiviews-core-region-region-rich',
@@ -24,7 +26,7 @@ export class SapiViewsCoreRegionRegionRich extends SapiViewsCoreRegionRegionBase
   public CONST = CONST
 
   @Output('sxplr-sapiviews-core-region-region-rich-feature-clicked')
-  featureClicked = new EventEmitter<SapiRegionalFeatureModel>()
+  featureClicked = new EventEmitter<Feature>()
 
   public expandedPanel: string
 
@@ -35,7 +37,7 @@ export class SapiViewsCoreRegionRegionRich extends SapiViewsCoreRegionRegionBase
     super(sapi)
   }
 
-  handleRegionalFeatureClicked(feat: SapiRegionalFeatureModel) {
+  handleRegionalFeatureClicked(feat: Feature) {
     this.featureClicked.emit(feat)
   }
 
@@ -51,4 +53,43 @@ export class SapiViewsCoreRegionRegionRich extends SapiViewsCoreRegionRegionBase
 
   activePanelTitles$: Observable<string[]> = new Subject()
 
+  private regionalStatisticalMaps$ = this.ATPR$.pipe(
+    switchMap(({ parcellation, template, region }) =>
+      concat(
+        of([] as PathReturn<"/map">["volumes"]),
+        this.sapi.getMap(parcellation.id, template.id, "STATISTICAL").pipe(
+          map(v => {
+            const mapIndices = v.indices[region.name]
+            return mapIndices.map(mapIdx => v.volumes[mapIdx.volume])
+          })
+        )
+      )
+    ),
+    shareReplay(1)
+  )
+
+  public dois$ = this.regionalStatisticalMaps$.pipe(
+    map(sms => {
+      const returnUrls: string[] = []
+      for (const sm of sms) {
+        for (const ds of sm.datasets) {
+          for (const url of ds.urls) {
+            returnUrls.push(url.url)
+          }
+          
+        }
+      }
+      return returnUrls
+    })
+  )
+
+  public desc$ = this.regionalStatisticalMaps$.pipe(
+    map(sm => {
+      for (const ds of (sm?.[0]?.datasets) || []) {
+        if (ds.description) {
+          return ds.description
+        }
+      }
+    }),
+  )
 }
diff --git a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
index 188ba25fa6fa921b2a4192ccf6b74c18fb240723..cc72755c1f242e656b9c092e87026e4ab2c1ed66 100644
--- a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
+++ b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
@@ -19,6 +19,10 @@
         {{ region.name }}
       </mat-card-title>
 
+      <mat-card-subtitle>
+        {{ parcellation.name }}
+      </mat-card-subtitle>
+
 
       <!-- subtitle on what it is -->
       <mat-card-subtitle class="d-inline-flex align-items-center flex-wrap">
@@ -40,7 +44,7 @@
         </button>
 
         <!-- explore doi -->
-        <a *ngFor="let doi of dois"
+        <a *ngFor="let doi of dois$ | async"
           [href]="doi | parseDoi"
           sxplr-hide-when-local
           [matTooltip]="ARIA_LABELS.EXPLORE_DATASET_IN_KG"
@@ -54,139 +58,32 @@
     </div>
   </mat-card>
 
-
-  <!-- kg regional features list -->
-  <ng-template #kgRegionalFeatureList>
-    <div sxplr-sapiviews-core-region-regional-feature
-      [sxplr-sapiviews-core-region-atlas]="atlas"
-      [sxplr-sapiviews-core-region-template]="template"
-      [sxplr-sapiviews-core-region-parcellation]="parcellation"
-      [sxplr-sapiviews-core-region-region]="region"
-      #rfDir="sapiViewsRegionalFeature"
-      class="feature-list-container"
-      >
-
-      <spinner-cmp *ngIf="rfDir.busy$ | async"></spinner-cmp>
-
-      <sxplr-sapiviews-features-entry-list-item
-        *ngFor="let feat of rfDir.listOfFeatures$ | async | orderFilterFeatures"
-        [sxplr-sapiviews-features-entry-list-item-feature]="feat"
-        (click)="handleRegionalFeatureClicked(feat)">
-      </sxplr-sapiviews-features-entry-list-item>
-    </div>
-    
+  <!-- desc -->
+  <ng-template [ngIf]="(desc$ | async) || region.desc" let-desc>
+    <readmore-component>
+      <markdown-dom class="sxplr-m-2 sxplr-muted" [markdown]="desc">
+      </markdown-dom>
+    </readmore-component>
   </ng-template>
 
-  <ng-template #regionDesc>
-    <markdown-dom class="sxplr-muted" [markdown]="region?.versionInnovation || 'No description provided.'">
-    </markdown-dom>
-  </ng-template>
-
-  <mat-accordion class="d-block mt-2">
-
-    <!-- desc -->
-    <ng-container *ngTemplateOutlet="ngMatAccordionTmpl; context: {
-      title: CONST.DESCRIPTION,
-      iconClass: 'fas fa-info',
-      content: regionDesc,
-      desc: '',
-      iconTooltip: 'Description',
-      iavNgIf: !!region?.versionInnovation
-    }">
-
-    </ng-container>
-
-    <!-- only show dynamic data when strict-local is set to false -->
-    <ng-template [ngIf]="!environment.STRICT_LOCAL">
-
-      <!-- feature list -->
-      <ng-container *ngTemplateOutlet="ngMatAccordionTmpl; context: {
-        title: CONST.REGIONAL_FEATURES,
-        iconClass: 'fas fa-database',
-        content: kgRegionalFeatureList,
-        desc: '',
-        iconTooltip: 'Regional Features',
-        iavNgIf: true
-      }">
-      </ng-container>
-
-      <!-- connectivity -->
-      <ng-template #sxplrSapiviewsFeaturesConnectivityBrowser>
-        <sxplr-sapiviews-features-connectivity-browser
-          class="pe-all flex-shrink-1"
-          [region]="region"
-          [sxplr-sapiviews-features-connectivity-browser-atlas]="atlas"
-          [sxplr-sapiviews-features-connectivity-browser-parcellation]="parcellation"
-          [sxplr-sapiviews-features-connectivity-browser-space]="template"
-          [accordionExpanded]="expandedPanel === CONST.CONNECTIVITY"
-          [types]="hasConnectivityDirective.availableModalities"
-        >
-        </sxplr-sapiviews-features-connectivity-browser>
-      </ng-template>
-
-      <ng-container *ngTemplateOutlet="ngMatAccordionTmpl; context: {
-        title: CONST.CONNECTIVITY,
-        iconClass: 'fab fa-connectdevelop',
-        content: sxplrSapiviewsFeaturesConnectivityBrowser,
-        iavNgIf: hasConnectivityDirective.hasConnectivity
-      }">
-      </ng-container>
-
-      <div sxplr-sapiviews-features-connectivity-check
-          [sxplr-sapiviews-features-connectivity-check-atlas]="atlas"
-          [sxplr-sapiviews-features-connectivity-check-parcellation]="parcellation"
-          [region]="region"
-          #hasConnectivityDirective="hasConnectivityDirective">
-      </div>
-    </ng-template>
 
-  </mat-accordion>
-
-</ng-template>
-
-<!-- expansion tmpl -->
-<ng-template #ngMatAccordionTmpl
-  let-title="title"
-  let-desc="desc"
-  let-iconClass="iconClass"
-  let-iconTooltip="iconTooltip"
-  let-iavNgIf="iavNgIf"
-  let-content="content">
-  
-  <mat-expansion-panel
-    [expanded]="activePanelTitles$ | async | includes : title"
-    [attr.data-opened]="expansionPanel.expanded"
-    [attr.data-mat-expansion-title]="title"
-    (closed)="handleExpansionPanelClosedEv(title)"
-    (afterExpand)="handleExpansionPanelAfterExpandEv(title)"
-    hideToggle
-    *ngIf="iavNgIf"
-    #expansionPanel="matExpansionPanel">
-
-    <mat-expansion-panel-header>
-
-      <!-- title -->
-      <mat-panel-title>
-        {{ title }}
-      </mat-panel-title>
-
-      <!-- desc + icon -->
-      <mat-panel-description class="sxplr-d-flex sxplr-align-items-center sxplr-justify-content-end"
-        [matTooltip]="iconTooltip">
-        <span class="mr-3">{{ desc }}</span>
-        <span class="accordion-icon d-inline-flex justify-content-center">
-          <i [class]="iconClass"></i>
-        </span>
-      </mat-panel-description>
-
-    </mat-expansion-panel-header>
+  <!-- header for regional feature -->
+  <mat-card>
+    <mat-card-header>
+      <mat-card-title>
+        Features anchored to region
+      </mat-card-title>
+    </mat-card-header>
+    <mat-card-content *ngIf="!(featureEntryCmp.busyTallying$ | async) && (featureEntryCmp.totals$ | async) == 0"
+      class="text-muted">
+      No regional features found.
+    </mat-card-content>
+  </mat-card>
 
-    <!-- content -->
-    <ng-template matExpansionPanelContent>
-      <ng-container *ngTemplateOutlet="content; context: {
-        expansionPanel: expansionPanel
-      }">
-      </ng-container>
-    </ng-template>
-  </mat-expansion-panel>
+  <sxplr-feature-entry
+    [template]="template"
+    [parcellation]="parcellation"
+    [region]="region"
+    #featureEntryCmp="featureEntryCmp">
+  </sxplr-feature-entry>
 </ng-template>
diff --git a/src/atlasComponents/sapiViews/core/rich/ATPSelector/module.ts b/src/atlasComponents/sapiViews/core/rich/ATPSelector/module.ts
index 188a5487140e5da124b84bebab05c831796b54c1..0588d1e997f523da09701ac2c5b4d3fb38e88c0a 100644
--- a/src/atlasComponents/sapiViews/core/rich/ATPSelector/module.ts
+++ b/src/atlasComponents/sapiViews/core/rich/ATPSelector/module.ts
@@ -11,6 +11,7 @@ import { SapiViewsCoreParcellationModule } from "src/atlasComponents/sapiViews/c
 import { PureATPSelector } from "./pureDumb/pureATPSelector.components";
 import { WrapperATPSelector } from "./wrapper/wrapper.component";
 import { SAPIModule } from "src/atlasComponents/sapi/module";
+import { MatTooltipModule } from "@angular/material/tooltip";
 
 @NgModule({
   imports: [
@@ -20,6 +21,7 @@ import { SAPIModule } from "src/atlasComponents/sapi/module";
     MarkdownModule,
     MatRippleModule,
     MatIconModule,
+    MatTooltipModule,
     MatButtonModule,
     DialogModule,
     SAPIModule,
diff --git a/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.components.ts b/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.components.ts
index 13c9abbb1da7cf2bce5db618c999f9c46d543777..ef1976937906642f2d5ca1cbf1daea9a89d8d30a 100644
--- a/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.components.ts
+++ b/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.components.ts
@@ -1,5 +1,5 @@
 import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from "@angular/core";
-import { SapiAtlasModel, SapiParcellationModel, SapiSpaceModel } from "src/atlasComponents/sapi/type";
+import { SxplrAtlas, SxplrParcellation, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
 import { FilterGroupedParcellationPipe, GroupedParcellation } from "src/atlasComponents/sapiViews/core/parcellation";
 
 export const darkThemePalette = [
@@ -15,16 +15,16 @@ export const lightThemePalette = [
 ]
 
 export type ATP = {
-  atlas: SapiAtlasModel
-  template: SapiSpaceModel
-  parcellation: SapiParcellationModel
+  atlas: SxplrAtlas
+  template: SxplrTemplate
+  parcellation: SxplrParcellation
 }
 
 function isATPGuard(atp: Record<string, unknown>): atp is Partial<ATP> {
   const { atlas, template, parcellation } = atp
-  if (atlas && atlas["@type"] === "juelich/iav/atlas/v1.0.0") return true
-  if (template && template["@type"] === "https://openminds.ebrains.eu/sands/CoordinateSpace") return true
-  if (parcellation && parcellation["@type"] === "minds/core/parcellationatlas/v1.0.0") return true
+  if (atlas && atlas["type"] === "SxplrAtlas") return true
+  if (template && template["type"] === "SxplrTemplate") return true
+  if (parcellation && parcellation["type"] === "SxplrParcellation") return true
   return false
 }
 
@@ -51,15 +51,15 @@ export class PureATPSelector implements OnChanges{
   public selectedIds: string[] = []
 
   @Input(`sxplr-pure-atp-selector-atlases`)
-  public allAtlases: SapiAtlasModel[] = []
+  public allAtlases: SxplrAtlas[] = []
 
   @Input(`sxplr-pure-atp-selector-templates`)
-  public availableTemplates: SapiSpaceModel[] = []
+  public availableTemplates: SxplrTemplate[] = []
 
   @Input(`sxplr-pure-atp-selector-parcellations`)
-  public parcellations: SapiParcellationModel[] = []
+  public parcellations: SxplrParcellation[] = []
 
-  public parcAndGroup: (GroupedParcellation|SapiParcellationModel)[] = []
+  public parcAndGroup: (GroupedParcellation|SxplrParcellation)[] = []
 
   @Input('sxplr-pure-atp-selector-is-busy')
   public isBusy: boolean = false
@@ -67,7 +67,7 @@ export class PureATPSelector implements OnChanges{
   @Output('sxplr-pure-atp-selector-on-select')
   selectLeafEmitter = new EventEmitter<Partial<ATP>>()
 
-  getChildren(parc: GroupedParcellation|SapiParcellationModel){
+  getChildren(parc: GroupedParcellation|SxplrParcellation){
     return (parc as GroupedParcellation).parcellations || []
   }
 
@@ -83,7 +83,7 @@ export class PureATPSelector implements OnChanges{
         this.selectedIds = []
       } else {
         const { atlas, parcellation, template } = changes.selectedATP.currentValue as ATP
-        this.selectedIds = [atlas?.["@id"], parcellation?.["@id"], template?.["@id"]].filter(v => !!v)
+        this.selectedIds = [atlas?.id, parcellation?.id, template?.id].filter(v => !!v)
       }
     }
 
diff --git a/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.style.scss b/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.style.scss
index f5c72a7f8bcd6303da0c2c95f4e1cf6d5ec72e56..f19870a138365f48ef47703f3604c1ee1e04e4b0 100644
--- a/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.style.scss
+++ b/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.style.scss
@@ -19,6 +19,11 @@
   margin-left: 0.2rem;
 }
 
+sxplr-smart-chip
+{
+  min-width: 10rem;
+}
+
 sxplr-smart-chip:not(:last-child)
 {
   margin-left: -2.5rem;
diff --git a/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.template.html b/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.template.html
index 5814b72ab091e6a09e6cbc7e2759abff11e336f2..fcd29e36827512ebba26de01e3d792a405e0132b 100644
--- a/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.template.html
+++ b/src/atlasComponents/sapiViews/core/rich/ATPSelector/pureDumb/pureATPSelector.template.html
@@ -8,13 +8,21 @@
     (itemClicked)="selectLeaf({ parcellation: $event })"
     [elevation]="2"
     [disabled]="isBusy">
-    <ng-template sxplrSmartChipContent>
-      <span class="chip-text">
-        <span>
+
+    <ng-template sxplrSmartChipHeader>
+      <span>
+        Parcellation
       </span>
-        {{ ATP.parcellation.name }}
+
+      <span class="sxplr-ml-1 text-muted">
+        ({{ parcellations.length }})
       </span>
+    </ng-template>
 
+    <ng-template sxplrSmartChipContent>
+      <span class="chip-text">
+        {{ ATP.parcellation.shortName }}
+      </span>
       <ng-content select="[parcellation-chip-suffix]">
       </ng-content>
 
@@ -24,8 +32,8 @@
         sxplr-dialog
         [sxplr-dialog-size]="null"
         [sxplr-dialog-data]="{
-          title: ATP.parcellation.name || ATP.parcellation.fullName,
-          descMd: (ATP.parcellation.brainAtlasVersions || [])[0]?.versionInnovation,
+          title: ATP.parcellation.name,
+          descMd: ATP.parcellation.desc,
           actions: ATP.parcellation | parcellationDoiPipe
         }">
         <i class="fas fa-info"></i>
@@ -35,6 +43,7 @@
 
       <ng-container *ngTemplateOutlet="optionTmpl; context: {
         $implicit: parc,
+        suffixText: (parc | isGroupedParcellation) && '(' + parc.parcellations.length  + ')' ,
         overridePrefixIconTmpl: (parc | parcellationGroupSelected : ATP.parcellation)
           ? halfSelectedTmpl
           : null
@@ -50,9 +59,21 @@
     (itemClicked)="selectLeaf({ template: $event })"
     [elevation]="4"
     [disabled]="isBusy">
+    
+    <ng-template sxplrSmartChipHeader>
+      <span>
+        Template
+      </span>
+
+      <span class="sxplr-ml-1 text-muted">
+        ({{ availableTemplates.length }})
+      </span>
+    </ng-template>
+
+
     <ng-template sxplrSmartChipContent>
       <span class="chip-text">
-        {{ ATP.template.fullName }}
+        {{ ATP.template.shortName }}
       </span>
     </ng-template>
     <ng-template sxplrSmartChipMenu let-space>
@@ -67,6 +88,18 @@
     (itemClicked)="selectLeaf({ atlas: $event})"
     [elevation]="6"
     [disabled]="isBusy">
+
+    <ng-template sxplrSmartChipHeader>
+      <span>
+        Atlas
+      </span>
+
+      <span class="sxplr-ml-1 text-muted">
+        ({{ allAtlases.length }})
+      </span>
+    </ng-template>
+
+    
     <ng-template sxplrSmartChipContent>
       <span class="chip-text">
         {{ ATP.atlas.name }}
@@ -89,7 +122,8 @@
   #optionTmpl
   let-item
   let-overridePrefixIconTmpl="overridePrefixIconTmpl"
-  let-overrideSuffixIcon="overrideSuffixIcon">
+  let-overrideSuffixIcon="overrideSuffixIcon"
+  let-suffixText="suffixText">
 
   <!-- prefix -->
   <ng-template [ngIf]="overridePrefixIconTmpl" [ngIfElse]="defaultPrefix">
@@ -99,15 +133,22 @@
     <ng-template [ngIf]="selectedIds" let-selectedIds>
       <mat-icon
         fontSet="fas"
-        [fontIcon]="selectedIds.includes(item['@id']) ? 'fa-circle' : 'fa-none'"
+        [fontIcon]="selectedIds.includes(item.id) ? 'fa-circle' : 'fa-none'"
         >
       </mat-icon>
     </ng-template>
   </ng-template>
 
   <!-- button body -->
-  <span *ngIf="item" class="full-sized-button">
-    {{ item.version?.name || item.name || item.fullName }}
+  <span *ngIf="item" class="full-sized-button"
+    [matTooltip]="item.version?.name || item.name || item.fullName"
+    [matTooltipPosition]="'above'">
+    {{ item.version?.name || item.shortName || item.name || item.fullName }}
+    <ng-template [ngIf]="suffixText">
+      <span class="text-muted">
+        {{ suffixText }}
+      </span>
+    </ng-template>
   </span>
 
   <!-- suffix -->
diff --git a/src/atlasComponents/sapiViews/core/rich/ATPSelector/wrapper/wrapper.component.ts b/src/atlasComponents/sapiViews/core/rich/ATPSelector/wrapper/wrapper.component.ts
index a5520b4a722473bbf0c55d88f4a6a8e4d69788e1..6a8a8b546078f57907c0d7bf03bb8443f8d1bcb0 100644
--- a/src/atlasComponents/sapiViews/core/rich/ATPSelector/wrapper/wrapper.component.ts
+++ b/src/atlasComponents/sapiViews/core/rich/ATPSelector/wrapper/wrapper.component.ts
@@ -1,10 +1,9 @@
 import { Component, Inject, OnDestroy } from "@angular/core";
 import { MatDialog } from "@angular/material/dialog";
-import { Store } from "@ngrx/store";
+import { select, Store } from "@ngrx/store";
 import { Observable, of, Subject, Subscription } from "rxjs";
 import { filter, map, switchMap, tap, withLatestFrom } from "rxjs/operators";
 import { SAPI } from "src/atlasComponents/sapi/sapi.service";
-import { ParcellationSupportedInSpacePipe } from "src/atlasComponents/sapiViews/util/parcellationSupportedInSpace.pipe";
 import { atlasSelection } from "src/state";
 import { fromRootStore } from "src/state/atlasSelection";
 import { DialogFallbackCmp } from "src/ui/dialogInfo";
@@ -12,9 +11,9 @@ import { DARKTHEME } from "src/util/injectionTokens";
 import { ParcellationVisibilityService } from "../../../parcellation/parcellationVis.service";
 import { darkThemePalette, lightThemePalette, ATP } from "../pureDumb/pureATPSelector.components"
 
-function isATPGuard(obj: any): obj is ATP {
+function isATPGuard(obj: any): obj is Partial<ATP&{ requested: Partial<ATP> }> {
   if (!obj) return false
-  return obj.atlas || obj.template || obj.parcellation
+  return (obj.atlas || obj.template || obj.parcellation) && (!obj.requested || isATPGuard(obj.requested))
 }
 
 const banListParcName = new Set([
@@ -35,19 +34,15 @@ export class WrapperATPSelector implements OnDestroy{
   lightThemePalette = lightThemePalette
 
   #subscription: Subscription[] = []
-  #parcSupportedInSpacePipe = new ParcellationSupportedInSpacePipe(this.sapi)
 
-  #askUser(title: string, descMd: string): Observable<boolean> {
-    const agree = "OK"
+  #askUser(title: string, descMd: string, actions: string[]): Observable<string> {
     return this.dialog.open(DialogFallbackCmp, {
       data: {
         title,
         descMd,
-        actions: [agree]
+        actions: actions
       }
-    }).afterClosed().pipe(
-      map(val => val === agree)
-    )
+    }).afterClosed()
   }
 
   selectedATP$ = this.store$.pipe(
@@ -56,11 +51,12 @@ export class WrapperATPSelector implements OnDestroy{
 
   allAtlases$ = this.sapi.atlases$
   availableTemplates$ = this.store$.pipe(
-    fromRootStore.allAvailSpaces(this.sapi),
+    select(atlasSelection.selectors.selectedAtlas),
+    switchMap(atlas => this.sapi.getAllSpaces(atlas))
   )
   parcs$ = this.store$.pipe(
-    fromRootStore.allAvailParcs(this.sapi),
-    map(parcs => parcs.filter(p => !banListParcName.has(p.name)))
+    select(atlasSelection.selectors.selectedAtlas),
+    switchMap(atlas => this.sapi.getAllParcellations(atlas))
   )
   isBusy$ = new Subject<boolean>()
   
@@ -85,21 +81,47 @@ export class WrapperATPSelector implements OnDestroy{
             return of({ atlas })
           }
           if (template) {
-            return this.#parcSupportedInSpacePipe.transform(selectedATP.parcellation, template).pipe(
-              switchMap(supported => supported
-                ? of({ template })
-                : this.#askUser(`Incompatible parcellation`, `Attempting to load template **${template.fullName}**, which does not support parcellation **${selectedATP.parcellation.name}**. Proceed anyway and load the default parcellation?`).pipe(
-                  switchMap(flag => of(flag ? { template } : null))
-                ))
+            return this.sapi.getSupportedParcellations(selectedATP.atlas, template).pipe(
+              switchMap(parcs => {
+                if (parcs.find(p => p.id === selectedATP.parcellation.id)) {
+                  return of({ template })
+                }
+                return this.#askUser(
+                  null,
+                  `Template **${template.name}** does not support the current parcellation **${selectedATP.parcellation.name}**. Please select one of the following parcellations:`,
+                  parcs.map(p => p.name)
+                ).pipe(
+                  map(parcname => {
+                    const foundParc = parcs.find(p => p.name === parcname)
+                    if (foundParc) {
+                      return ({ template, requested: { parcellation: foundParc } })
+                    }
+                    return null
+                  })
+                )
+              })
             )
           }
           if (parcellation) {
-            return this.#parcSupportedInSpacePipe.transform(parcellation, selectedATP.template).pipe(
-              switchMap(supported=> supported
-                ? of({ parcellation })
-                : this.#askUser(`Incompatible template`, `Attempting to load parcellation **${parcellation.name}**, which is not supported in template **${selectedATP.template.fullName}**. Proceed anyway and load the default template?`).pipe(
-                  switchMap(flag => of(flag ? { parcellation } : null))
-                ))
+            return this.sapi.getSupportedTemplates(selectedATP.atlas, parcellation).pipe(
+              switchMap(tmpls => {
+                if (tmpls.find(t => t.id === selectedATP.template.id)) {
+                  return of({ parcellation })
+                }
+                return this.#askUser(
+                  null,
+                  `Parcellation **${parcellation.name}** is not mapped in the current template **${selectedATP.template.name}**. Please select one of the following templates:`,
+                  tmpls.map(tmpl => tmpl.name)
+                ).pipe(
+                  map(tmplname => {
+                    const foundTmpl = tmpls.find(tmpl => tmpl.name === tmplname)
+                    if (foundTmpl) {
+                      return ({ requested: { template: foundTmpl }, parcellation })
+                    }
+                    return null
+                  })
+                )
+              })
             )
           }
           return of(null)
@@ -109,9 +131,8 @@ export class WrapperATPSelector implements OnDestroy{
           return !!val
         })
       ).subscribe((obj) => {
-
         if (!isATPGuard(obj)) return
-        const { atlas, parcellation, template } = obj
+        const { atlas, parcellation, template, requested } = obj
         if (atlas) {
           this.store$.dispatch(
             atlasSelection.actions.selectAtlas({ atlas })
@@ -119,20 +140,20 @@ export class WrapperATPSelector implements OnDestroy{
         }
         if (parcellation) {
           this.store$.dispatch(
-            atlasSelection.actions.selectParcellation({ parcellation })
+            atlasSelection.actions.selectParcellation({ parcellation, requested })
           )
         }
         if (template) {
           this.store$.dispatch(
-            atlasSelection.actions.selectTemplate({ template })
+            atlasSelection.actions.selectTemplate({ template, requested })
           )
         }
       })
     )
   }
 
-  private selectLeaf$ = new Subject<ATP>()
-  selectLeaf(atp: ATP) {
+  private selectLeaf$ = new Subject<Partial<ATP>>()
+  selectLeaf(atp: Partial<ATP>) {
     this.selectLeaf$.next(atp)
   }
 
diff --git a/src/atlasComponents/sapiViews/core/rich/regionsHierarchy/regionsHierarchy.component.ts b/src/atlasComponents/sapiViews/core/rich/regionsHierarchy/regionsHierarchy.component.ts
index b82c2ba05f70cbca2247b464e1d2de29b6a9a838..07e87e2182654ee0a76d6561f02faabdb97c87be 100644
--- a/src/atlasComponents/sapiViews/core/rich/regionsHierarchy/regionsHierarchy.component.ts
+++ b/src/atlasComponents/sapiViews/core/rich/regionsHierarchy/regionsHierarchy.component.ts
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, In
 import { UntypedFormControl } from "@angular/forms";
 import { Subscription } from "rxjs";
 import { debounceTime, distinctUntilChanged, filter, startWith } from "rxjs/operators";
-import { SapiRegionModel } from "src/atlasComponents/sapi/type";
+import { SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes";
 import { SxplrFlatHierarchyTreeView } from "src/components/flatHierarchy/treeView/treeView.component";
 import { FilterByRegexPipe } from "./filterByRegex.pipe";
 import { RegionTreeFilterPipe } from "./regionTreeFilter.pipe";
@@ -21,11 +21,11 @@ const filterByRegexPipe = new FilterByRegexPipe()
 
 export class SapiViewsCoreRichRegionsHierarchy {
 
-  static IsParent(region: SapiRegionModel, parentRegion: SapiRegionModel) {
-    return region.hasParent?.some(parent => parent['@id'] === parentRegion["@id"])
+  static IsParent(region: SxplrRegion, parentRegion: SxplrRegion): boolean {
+    return region.parentIds.some(id => parentRegion.id === id)
   }
 
-  static FilterRegions(regions: SapiRegionModel[], searchTerm: string): SapiRegionModel[]{
+  static FilterRegions(regions: SxplrRegion[], searchTerm: string): SxplrRegion[]{
     if (searchTerm === '' || !searchTerm) {
       return regions
     }
@@ -37,19 +37,19 @@ export class SapiViewsCoreRichRegionsHierarchy {
   }
 
   @Input('sxplr-sapiviews-core-rich-regionshierarchy-accent-regions')
-  accentedRegions: SapiRegionModel[] = []
+  accentedRegions: SxplrRegion[] = []
 
   @Input('sxplr-sapiviews-core-rich-regionshierarchy-placeholder')
   placeholderText: string = 'Search all regions'
 
-  passedRegions: SapiRegionModel[] = []
+  passedRegions: SxplrRegion[] = []
 
-  private _regions: SapiRegionModel[] = []
+  private _regions: SxplrRegion[] = []
   get regions(){
     return this._regions
   }
   @Input('sxplr-sapiviews-core-rich-regionshierarchy-regions')
-  set regions(val: SapiRegionModel[]){
+  set regions(val: SxplrRegion[]){
     this._regions = val
     this.passedRegions = SapiViewsCoreRichRegionsHierarchy.FilterRegions(
       this._regions,
@@ -58,10 +58,10 @@ export class SapiViewsCoreRichRegionsHierarchy {
   }
 
   @Output('sxplr-sapiviews-core-rich-regionshierarchy-region-select')
-  nodeClicked = new EventEmitter<SapiRegionModel>()
+  nodeClicked = new EventEmitter<SxplrRegion>()
 
   @ViewChild(SxplrFlatHierarchyTreeView)
-  treeView: SxplrFlatHierarchyTreeView<SapiRegionModel>
+  treeView: SxplrFlatHierarchyTreeView<SxplrRegion>
 
   isParent = SapiViewsCoreRichRegionsHierarchy.IsParent
 
@@ -95,4 +95,14 @@ export class SapiViewsCoreRichRegionsHierarchy {
 
   private subs: Subscription[] = []
   
+  onNodeClick(roi: SxplrRegion){
+    /**
+     * only allow leave nodes to be selectable for now
+     */
+    const children = this._regions.filter(r => this.isParent(r, roi))
+    if (children.length > 0) {
+      return
+    }
+    this.nodeClicked.emit(roi)
+  }
 }
diff --git a/src/atlasComponents/sapiViews/core/rich/regionsHierarchy/regionsHierarchy.template.html b/src/atlasComponents/sapiViews/core/rich/regionsHierarchy/regionsHierarchy.template.html
index f3a4e82d473fcb11a80abf856c560f79e722ac89..762ae45d856a8a5e53defdfbeea120c2437df898 100644
--- a/src/atlasComponents/sapiViews/core/rich/regionsHierarchy/regionsHierarchy.template.html
+++ b/src/atlasComponents/sapiViews/core/rich/regionsHierarchy/regionsHierarchy.template.html
@@ -28,6 +28,6 @@
   [sxplr-flat-hierarchy-is-parent]="isParent"
   [sxplr-flat-hierarchy-render-node-tmpl]="tmplRef"
   [sxplr-flat-hierarchy-tree-view-expand-on-init]="true"
-  sxplr-flat-hierarchy-tree-view-lineheight="24"
-  (sxplr-flat-hierarchy-tree-view-node-clicked)="nodeClicked.emit($event)">
-</sxplr-flat-hierarchy-tree-view>
\ No newline at end of file
+  [sxplr-flat-hierarchy-tree-view-lineheight]="24"
+  (sxplr-flat-hierarchy-tree-view-node-clicked)="onNodeClick($event)">
+</sxplr-flat-hierarchy-tree-view>
diff --git a/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearch.component.ts b/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearch.component.ts
index d169eb904f4ce01fe5d9753a95acce50180d326b..15de8e31fe6a57d4545f2ab50f8fbcbef914376b 100644
--- a/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearch.component.ts
+++ b/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearch.component.ts
@@ -1,24 +1,12 @@
 import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from "@angular/core";
-import { SapiRegionModel } from "src/atlasComponents/sapi/type";
+import { SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes";
 import { ARIA_LABELS } from "common/constants"
 import { UntypedFormControl } from "@angular/forms";
 import { debounceTime, distinctUntilChanged, map, startWith } from "rxjs/operators";
 import { MatAutocompleteSelectedEvent } from "@angular/material/autocomplete";
 import { SapiViewsCoreRichRegionListTemplateDirective } from "./regionListSearchTmpl.directive";
 
-/**
- * Filter function, which determines whether the region will be included in the list of autocompleted search.
- * Ideally, only the selectable regions are included in the result.
- * 
- * @param region input region
- * @returns {boolean} whether or not to include the region in the list search
- */
-const filterRegionForListSearch = (region: SapiRegionModel): boolean => {
-  const visualizedIn = region.hasAnnotation?.visualizedIn
-  return !!visualizedIn
-}
-
-const filterRegionViaSearch = (searchTerm: string) => (region:SapiRegionModel) => {
+const filterRegionViaSearch = (searchTerm: string) => (region:SxplrRegion) => {
   return region.name.toLocaleLowerCase().includes(searchTerm.toLocaleLowerCase())
 }
 
@@ -37,13 +25,13 @@ export class SapiViewsCoreRichRegionListSearch {
 
   showNOptions = 4
 
-  private _regions: SapiRegionModel[] = []
+  private _regions: SxplrRegion[] = []
   get regions(){
     return this._regions
   }
   @Input('sxplr-sapiviews-core-rich-regionlistsearch-regions')
-  set regions(val: SapiRegionModel[]) {
-    this._regions = val.filter(filterRegionForListSearch)
+  set regions(reg: SxplrRegion[]) {
+    this._regions = reg.filter(r => !reg.some(c => c.parentIds.includes(r.id)))
   }
 
   @ContentChild(SapiViewsCoreRichRegionListTemplateDirective)
@@ -56,7 +44,7 @@ export class SapiViewsCoreRichRegionListSearch {
   currentSearch: string = ''
 
   @Output('sxplr-sapiviews-core-rich-regionlistsearch-region-select')
-  onOptionSelected = new EventEmitter<SapiRegionModel>()
+  onOptionSelected = new EventEmitter<SxplrRegion>()
 
   public searchFormControl = new UntypedFormControl()
 
@@ -64,7 +52,7 @@ export class SapiViewsCoreRichRegionListSearch {
     startWith(''),
     distinctUntilChanged(),
     debounceTime(160),
-    map((searchTerm: string | SapiRegionModel) => {
+    map((searchTerm: string | SxplrRegion) => {
       if (typeof searchTerm === "string") {
         return this.regions.filter(filterRegionViaSearch(searchTerm))
       }
@@ -76,12 +64,12 @@ export class SapiViewsCoreRichRegionListSearch {
     map(list => list.slice(0, this.showNOptions))
   )
 
-  displayFn(region: SapiRegionModel){
+  displayFn(region: SxplrRegion){
     return region?.name || ''
   }
 
   optionSelected(opt: MatAutocompleteSelectedEvent) {
-    const selectedRegion = opt.option.value as SapiRegionModel
+    const selectedRegion = opt.option.value as SxplrRegion
     this.onOptionSelected.emit(selectedRegion)
   }
 }
diff --git a/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearchTmpl.directive.ts b/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearchTmpl.directive.ts
index ecc282ee47ba3a328c13444d7890afcd8c62047b..e254a2cac29660c396cc18c02bb5e06fb648aec4 100644
--- a/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearchTmpl.directive.ts
+++ b/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearchTmpl.directive.ts
@@ -1,10 +1,10 @@
 import { Directive, TemplateRef } from "@angular/core";
-import { SapiRegionModel } from "src/atlasComponents/sapi/type";
+import { SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes";
 
 @Directive({
   selector: 'ng-template[region-template],ng-template[regionTemplate]'
 })
 
 export class SapiViewsCoreRichRegionListTemplateDirective{
-  constructor(public tmplRef: TemplateRef<SapiRegionModel>){}
+  constructor(public tmplRef: TemplateRef<SxplrRegion>){}
 }
diff --git a/src/atlasComponents/sapiViews/core/space/boundingBox.directive.ts b/src/atlasComponents/sapiViews/core/space/boundingBox.directive.ts
index 3d592f3974c5db9b91fb6172fdf05df516b8ad63..72d0e2e66fc7ff0b8da0d520a6ec4438432a88df 100644
--- a/src/atlasComponents/sapiViews/core/space/boundingBox.directive.ts
+++ b/src/atlasComponents/sapiViews/core/space/boundingBox.directive.ts
@@ -1,9 +1,12 @@
-import { Directive, Input, OnChanges, SimpleChanges } from "@angular/core";
+import { Directive, Input, OnChanges } from "@angular/core";
 import { BehaviorSubject, Observable } from "rxjs";
 import { distinctUntilChanged } from "rxjs/operators";
-import { BoundingBoxConcept, SapiAtlasModel, SapiSpaceModel } from "src/atlasComponents/sapi/type";
+import { BoundingBox, SxplrTemplate, SxplrAtlas } from "src/atlasComponents/sapi/sxplrTypes"
 
-function validateBbox(input: any): boolean {
+type Point = [number, number, number]
+type BBox = [Point, Point]
+
+function validateBbox(input: any): input is BoundingBox {
   if (!Array.isArray(input)) return false
   if (input.length !== 2) return false
   return input.every(el => Array.isArray(el) && el.length === 3 && el.every(val => typeof val === "number"))
@@ -16,18 +19,21 @@ function validateBbox(input: any): boolean {
 
 export class SapiViewsCoreSpaceBoundingBox implements OnChanges{
   @Input('sxplr-sapiviews-core-space-boundingbox-atlas')
-  atlas: SapiAtlasModel
+  atlas: SxplrAtlas
 
   @Input('sxplr-sapiviews-core-space-boundingbox-space')
-  space: SapiSpaceModel
+  space: SxplrTemplate
 
-  private _bbox: BoundingBoxConcept
+  private _bbox: BBox
   @Input('sxplr-sapiviews-core-space-boundingbox-spec')
-  set bbox(val: string | BoundingBoxConcept ) {
+  set bbox(val: string | BBox ) {
 
     if (typeof val === "string") {
       try {
-        const [min, max] = JSON.parse(val)
+        const [min, max]: [
+          [number, number, number],
+          [number, number, number],
+        ] = JSON.parse(val)
         this._bbox = [min, max]
       } catch (e) {
         console.warn(`Parse bbox input error`)
@@ -40,14 +46,14 @@ export class SapiViewsCoreSpaceBoundingBox implements OnChanges{
     }
     this._bbox = val
   }
-  get bbox(): BoundingBoxConcept {
+  get bbox(): BBox {
     return this._bbox
   }
 
   private _bbox$: BehaviorSubject<{
-    atlas: SapiAtlasModel
-    space: SapiSpaceModel
-    bbox: BoundingBoxConcept
+    atlas: SxplrAtlas
+    space: SxplrTemplate
+    bbox: BBox
   }> = new BehaviorSubject({
     atlas: null,
     space: null,
@@ -55,13 +61,13 @@ export class SapiViewsCoreSpaceBoundingBox implements OnChanges{
   })
 
   public bbox$: Observable<{
-    atlas: SapiAtlasModel
-    space: SapiSpaceModel
-    bbox: BoundingBoxConcept
+    atlas: SxplrAtlas
+    space: SxplrTemplate
+    bbox: BBox
   }> = this._bbox$.asObservable().pipe(
     distinctUntilChanged(
-      (prev, curr) => prev.atlas?.["@id"] === curr.atlas?.['@id']
-        && prev.space?.["@id"] === curr.space?.["@id"]
+      (prev, curr) => prev.atlas?.id === curr.atlas?.id
+        && prev.space?.id === curr.space?.id
         && JSON.stringify(prev.bbox) === JSON.stringify(curr.bbox)
     )
   )
diff --git a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.stories.ts b/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.stories.ts
deleted file mode 100644
index 870492b96ef2ef98bc6657c01e3b78652a23c945..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.stories.ts
+++ /dev/null
@@ -1,168 +0,0 @@
-import { CommonModule } from "@angular/common"
-import { HttpClientModule } from "@angular/common/http"
-import {ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA} from "@angular/core"
-import { FormsModule } from "@angular/forms"
-import { BrowserAnimationsModule } from "@angular/platform-browser/animations"
-import { Meta, moduleMetadata, Story } from "@storybook/angular"
-import { SAPI, SapiAtlasModel, SapiParcellationModel } from "src/atlasComponents/sapi"
-import { getJba29Features, getHumanAtlas, getJba29 } from "src/atlasComponents/sapi/stories.base"
-import {SapiParcellationFeatureMatrixModel, SapiParcellationFeatureModel} from "src/atlasComponents/sapi/type"
-import { AngularMaterialModule } from "src/sharedModules"
-import {ConnectivityBrowserComponent} from "src/atlasComponents/sapiViews/features/connectivity";
-import {PARSE_TYPEDARRAY} from "src/atlasComponents/sapi/sapi.service";
-import {catchError, take} from "rxjs/operators"
-import {of} from "rxjs";
-
-@Component({
-  selector: 'autoradiograph-wrapper-cmp',
-  template: `
-    
-  <button mat-button (click)="datasetSliderChanged(1)" class="mb-3">Load Connectivity</button>
-
-  <div class="d-flex">Source: {{regionName}}</div>
-
-    <mat-label>
-        Dataset
-    </mat-label>
-    <mat-slider [min]="1"
-            [max]="numberOfDatasets"
-            (change)="datasetSliderChanged($event.value)"
-            [value]="pageNumber"
-            thumbLabel
-            step="1"
-            class="w-100">
-    </mat-slider>
-
-  <hbp-connectivity-matrix-row
-      #connectivityComponent
-      [region]="regionName"
-      [connections]="connectionsString"
-      showSource="true"
-      theme="light">
-  </hbp-connectivity-matrix-row>
-      
-  `,
-  styles: [
-    `
-    :host
-    {
-      display: block;
-      max-width: 60rem;
-      max-height: 60rem;
-    }
-    `
-  ]
-})
-class ExampleConnectivityBrowserWrapper {
-  atlas: SapiAtlasModel
-  parcellation: SapiParcellationModel
-  features: SapiParcellationFeatureModel[] = []
-  featureId: string
-
-  regionName: string = 'Area TE 3 (STG) right'
-  type: string = 'siibra/features/connectivity/streamlineCounts'
-  pageNumber = 1
-  numberOfDatasets = 1
-  private regionIndexInMatrix = -1
-  public connectionsString: string
-
-
-  constructor(private sapi: SAPI, private cdf: ChangeDetectorRef) {
-  }
-
-  datasetSliderChanged(pageNumber) {
-    this.pageNumber = pageNumber
-    this.loadDataset()
-  }
-
-  loadDataset() {
-    return this.sapi.getParcellation(this.atlas["@id"], this.parcellation["@id"])
-        .getFeatures({type: this.type, page: this.pageNumber, size: 1})
-        .pipe(
-            take(1),
-            catchError(() => {
-              return of(null)
-            })
-        ).subscribe((res: any) => {
-          if (res && res.items) {
-            this.numberOfDatasets = res.total
-            this.featureId = res.items[0]['@id']
-            this.fetchConnectivity()
-          }
-        })
-  }
-
-  fetchConnectivity() {
-    this.sapi.getParcellation(this.atlas["@id"], this.parcellation["@id"]).getFeatureInstance(this.featureId)
-      .pipe(take(1))
-      .subscribe(ds=> {
-        const matrixData = ds as SapiParcellationFeatureMatrixModel
-        this.regionIndexInMatrix =  (matrixData.columns as Array<string>).findIndex(md => md === this.regionName)
-        this.sapi.processNpArrayData<PARSE_TYPEDARRAY.RAW_ARRAY>(matrixData.matrix, PARSE_TYPEDARRAY.RAW_ARRAY)
-          .then(matrix => {
-            const areas = {}
-            matrix.rawArray[this.regionIndexInMatrix].forEach((value, i) => {
-              areas[matrixData.columns[i]] = value
-            })
-            this.connectionsString = JSON.stringify(areas)
-            this.cdf.detectChanges()
-          })
-      })
-  }
-
-
-}
-
-export default {
-  component: ExampleConnectivityBrowserWrapper,
-  decorators: [
-    moduleMetadata({
-      imports: [
-        CommonModule,
-        AngularMaterialModule,
-        HttpClientModule,
-        BrowserAnimationsModule,
-      ],
-      providers: [
-        SAPI
-      ],
-      schemas: [
-        CUSTOM_ELEMENTS_SCHEMA,
-      ],
-      declarations: [
-        ConnectivityBrowserComponent
-      ]
-    })
-  ],
-} as Meta
-
-const Template: Story<ExampleConnectivityBrowserWrapper> = (args: ExampleConnectivityBrowserWrapper, { loaded }) => {
-  const { atlas, parc, features } = loaded
-  return ({
-    props: {
-      ...args,
-      atlas: atlas,
-      parcellation: parc,
-      features
-    },
-  })
-}
-
-Template.loaders = [
-  async () => {
-    const atlas = await getHumanAtlas()
-    const parc = await getJba29()
-    const features = await getJba29Features()
-    return {
-      atlas, parc, features
-    }
-  }
-]
-
-export const Default = Template.bind({})
-Default.args = {
-
-}
-Default.loaders = [
-  ...Template.loaders
-]
diff --git a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.template.html b/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.template.html
deleted file mode 100644
index 17c00557e594cd5edbc564bc2dda2ef99d41b58b..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.template.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<div class="w-100 h-100 d-block d-flex flex-column sxplr-pb-2">
-    <div>
-        <div *ngIf="types && types.length"
-             class="flex-grow-0 flex-shrink-0 d-flex flex-row flex-nowrap d-flex flex-column">
-            <mat-form-field class="flex-grow-1 flex-shrink-1 w-100">
-                <mat-label>
-                    Modality
-                </mat-label>
-
-                <mat-select
-                        [value]="selectedType"
-                        (selectionChange)="selectType($event.value)">
-                    <mat-option
-                            *ngFor="let type of types"
-                            [value]="type.name">
-                        {{ type.name }}
-                    </mat-option>
-                </mat-select>
-            </mat-form-field>
-
-            <mat-form-field *ngIf="selectedType" class="flex-grow-1 flex-shrink-1 w-100">
-                <mat-label>
-                    Cohort
-                </mat-label>
-
-                <mat-select
-                        [disabled]="fetching"
-                        [value]="selectedCohort"
-                        (selectionChange)="selectCohort($event.value)">
-                    <mat-option
-                            *ngFor="let cohort of cohorts"
-                            [value]="cohort">
-                        {{ cohort }}
-                    </mat-option>
-                </mat-select>
-            </mat-form-field>
-        </div>
-
-        <mat-radio-group *ngIf="selectedCohort" [(ngModel)]="selectedView">
-            <mat-radio-button value="average" class="m-2" [disabled]="averageDisabled" color="primary">
-                Average
-            </mat-radio-button>
-            <mat-radio-button value="subject" class="m-2" [disabled]="subjectsDisabled"  color="primary">
-                Subject
-            </mat-radio-button>
-        </mat-radio-group>
-
-        <div *ngIf="selectedView !== 'average' && selectedCohort && cohortSubjects"
-             class="flex-grow-0 flex-shrink-0 d-flex flex-column">
-            <div class="flex-grow-1 flex-shrink-1 w-100">
-                <mat-label>
-                    Subject
-                </mat-label>
-                <mat-slider [min]="0"
-                            [max]="cohortSubjects.length - 1"
-                            (change)="subjectSliderChanged($event.value)"
-                            [value]="selectedSubjectIndex"
-                            thumbLabel
-                            step="1"
-                            class="w-100">
-                </mat-slider>
-            </div>
-
-            <div *ngIf="selectedSubjectsDatasets && selectedSubjectsDatasets.length > 1"
-                 class="flex-grow-0 flex-shrink-0 d-flex flex-nowrap align-items-center">
-                <div class="flex-grow-1 flex-shrink-1 w-100">
-                    <mat-label>
-                        Dataset
-                    </mat-label>
-                    <mat-slider [min]="0"
-                                [max]="selectedSubjectsDatasets.length - 1"
-                                (change)="subjectDatasetSliderChanged($event.value)"
-                                [value]="selectedSubjectDatasetIndex"
-                                thumbLabel
-                                step="1"
-                                class="w-100">
-                    </mat-slider>
-                </div>
-            </div>
-        </div>
-
-    </div>
-
-    <div class="d-flex justify-content-center">
-        <mat-spinner *ngIf="fetching"></mat-spinner>
-    </div>
-
-    <div *ngIf="regionName && !fetching"
-         [style.visibility]="selectedCohort && (selectedSubjectDatasetIndex >= 0 || !averageDisabled)? 'visible' : 'hidden'"
-         class="d-flex align-items-center">
-        <mat-checkbox class="mr-2"
-                      [checked]="logChecked"
-                      (change)="changeLog($event.checked)"
-                      [disabled]="logDisabled || noConnectivityForRegion">Log 10</mat-checkbox>
-        <button mat-button [matMenuTriggerFor]="exportMenu"
-                [disabled]="!connectedAreas.value">
-            <i class="fas fa-download mr-2"></i>
-            <span>Export</span>
-        </button>
-        <button *ngIf="selectedDataset && selectedDataset['@id']" iav-stop="mousedown click" class="icons" mat-icon-button sxplr-dialog [sxplr-dialog-size]="null"
-            [sxplr-dialog-data]="{
-                  title: selectedDataset?.name,
-                  descMd: selectedDataset?.description + ' ' + (selectedDataset?.authors? selectedDataset?.authors.join() : ''),
-                  actions: selectedDataset | connectivityDoiPipe
-                }">
-            <i class="fas fa-info"></i>
-        </button>
-    </div>
-
-    <hbp-connectivity-matrix-row
-        #connectivityComponent
-        [style.visibility]="regionName && !fetching && !noConnectivityForRegion && selectedCohort
-                             && (selectedSubjectDatasetIndex >= 0 || !averageDisabled)? 'visible' : 'hidden'"
-        [region]="regionName + (regionHemisphere? ' - ' + regionHemisphere : '')"
-        [connections]="connectionsString"
-        show-export="true" hide-export-view="true"
-        theme="dark">
-    </hbp-connectivity-matrix-row>
-    <div *ngIf="noConnectivityForRegion">No connectivity for the region.</div>
-
-    <full-connectivity-grid #fullConnectivityGrid
-                            [matrix]="matrixString"
-                            [datasetName]="selectedDataset?.name"
-                            [datasetDescription]="selectedDataset?.description"
-                            only-export="true">
-    </full-connectivity-grid>
-
-    <mat-menu #exportMenu="matMenu">
-        <button mat-menu-item [disabled]="noConnectivityForRegion" (click)="exportConnectivityProfile()">Regional</button>
-        <button mat-menu-item (click)="exportFullConnectivity()">Dataset</button>
-    </mat-menu>
-</div>
diff --git a/src/atlasComponents/sapiViews/features/connectivity/connectivityDoi.pipe.ts b/src/atlasComponents/sapiViews/features/connectivity/connectivityDoi.pipe.ts
deleted file mode 100644
index ee527989cefa890fb8af7f1cf2fd8bc52411912b..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/connectivity/connectivityDoi.pipe.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { Pipe, PipeTransform } from "@angular/core"
-import { SapiParcellationFeatureModel } from "src/atlasComponents/sapi/type"
-
-@Pipe({
-    name: 'connectivityDoiPipe',
-    pure: true
-  })
-  
-  export class ConnectivityDoiPipe implements PipeTransform {
-    public transform(dataset: SapiParcellationFeatureModel): string[] {
-      const url = `https://search.kg.ebrains.eu/instances/${dataset['dataset_id']}`
-      return [url]
-    }
-  }
-  
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/connectivity/hasConnectivity.directive.ts b/src/atlasComponents/sapiViews/features/connectivity/hasConnectivity.directive.ts
deleted file mode 100644
index 122083f1d33a5ab54c2d2c78de59e0d39a7f552e..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/connectivity/hasConnectivity.directive.ts
+++ /dev/null
@@ -1,107 +0,0 @@
-import {Directive, Input, OnDestroy} from "@angular/core";
-import {Subscription} from "rxjs";
-import {map, take} from "rxjs/operators";
-import {SAPI} from "src/atlasComponents/sapi/sapi.service";
-import {
-  SapiAtlasModel, SapiModalityModel,
-  SapiParcellationFeatureModel,
-  SapiParcellationModel,
-  SapiRegionModel
-} from "src/atlasComponents/sapi/type";
-
-@Directive({
-  selector: '[sxplr-sapiviews-features-connectivity-check]',
-  exportAs: 'hasConnectivityDirective'
-})
-
-export class HasConnectivity implements OnDestroy {
-
-    private subscriptions: Subscription[] = []
-
-    @Input('sxplr-sapiviews-features-connectivity-check-atlas')
-    atlas: SapiAtlasModel
-
-    @Input('sxplr-sapiviews-features-connectivity-check-parcellation')
-    parcellation: SapiParcellationModel
-
-    private _region: SapiRegionModel
-
-    @Input()
-    set region(val: SapiRegionModel) {
-      this._region = val
-      if (val) {
-        if (!this.connectivityModalities.length) {
-          this.waitForModalities = true
-        } else {
-          this.checkConnectivity()
-        }
-      } else {
-        this.connectivityNumber = 0
-      }
-    }
-
-    get region() {
-      return this._region
-    }
-
-    public hasConnectivity = false
-    public connectivityNumber = 0
-
-    private connectivityModalities: SapiModalityModel[] = []
-    private waitForModalities = false
-    public defaultProfile: DefaultProfile
-    public availableModalities: SapiModalityModel[] = []
-    public numberOfDatasets: number = 0
-
-    constructor(private sapi: SAPI) {
-      this.getModalities()            
-    }
-
-    getModalities() {        
-      this.sapi.getModalities()
-        .pipe(map((mod: SapiModalityModel[]) => mod.filter((m: SapiModalityModel) => m.types && m.types.find(t => t.includes('siibra/features/connectivity')))))
-        .subscribe(modalities => {
-          this.connectivityModalities = modalities
-          if (this.waitForModalities) {
-            this.waitForModalities = false
-            this.checkConnectivity()
-          } 
-
-        })
-    }
-
-    private checkConnectivity() {
-      if (this.region.name) {
-        this.connectivityModalities.forEach(m => {
-          const type = m.types[0]
-          
-          this.sapi.getParcellation(this.atlas["@id"], this.parcellation["@id"])
-            .getFeatures({type, page: 1, size: 1}).pipe(take(1))
-            .subscribe((res: SapiParcellationFeatureModel[] | any) => {
-              if (res && res.items) {
-                this.availableModalities.push(m)
-                const firstDataset = res.items[0]
-
-                if (firstDataset) {
-                  this.hasConnectivity = true
-                } else {
-                  this.hasConnectivity = false
-                  this.connectivityNumber = 0
-                }
-              }
-            })
-        })
-      }
-    }
-
-    ngOnDestroy(){
-      while (this.subscriptions.length > 0) this.subscriptions.pop().unsubscribe()
-    }
-}
-
-type DefaultProfile = {
-    type: string
-    selectedDataset: SapiParcellationFeatureModel
-    matrix: SapiParcellationFeatureModel
-    numberOfDatasets: number
-}
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/entry/entry.component.ts b/src/atlasComponents/sapiViews/features/entry/entry.component.ts
deleted file mode 100644
index 691af83bd53ab4c5937c283fb3ea93056b917910..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/entry/entry.component.ts
+++ /dev/null
@@ -1,181 +0,0 @@
-import { Component, Input, OnDestroy } from "@angular/core";
-import { Store } from "@ngrx/store";
-import { TNgAnnotationPoint } from "src/atlasComponents/annotations";
-import { SapiFeatureModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel, CLEANED_IEEG_DATASET_TYPE } from "src/atlasComponents/sapi";
-import { IeegOnFocusEvent, ContactPoint, Electrode, Session, IeegOnDefocusEvent } from "../ieeg";
-import { atlasSelection, annotation } from "src/state"
-
-@Component({
-  selector: 'sxplr-sapiviews-features-entry',
-  templateUrl: './entry.template.html',
-  styleUrls: [
-    './entry.style.css'
-  ]
-})
-
-export class FeatureEntryCmp implements OnDestroy{
-
-  /**
-   * in future, hopefully feature detail can be queried with just id,
-   * and atlas/space/parcellation/region are no longer necessary
-   */
-  @Input('sxplr-sapiviews-features-entry-atlas')
-  atlas: SapiFeatureModel
-
-  @Input('sxplr-sapiviews-features-entry-space')
-  space: SapiSpaceModel
-
-  @Input('sxplr-sapiviews-features-entry-parcellation')
-  parcellation: SapiParcellationModel
-
-  @Input('sxplr-sapiviews-features-entry-region')
-  region: SapiRegionModel
-
-  @Input('sxplr-sapiviews-features-entry-feature')
-  feature: SapiFeatureModel
-
-  featureType = {
-    receptor: "siibra/features/receptor",
-    ieeg: CLEANED_IEEG_DATASET_TYPE
-  }
-
-  private addedAnnotations: annotation.UnionAnnotation[] = []
-
-  ieegOnFocus(ev: IeegOnFocusEvent){
-    if (ev.contactPoint) {
-      /**
-       * navigate to the point
-       */
-      this.store.dispatch(
-        atlasSelection.actions.navigateTo({
-          navigation: {
-            position: ev.contactPoint.point.coordinates.map(v => v.value * 1e6)
-          },
-          animation: true
-        })
-      )
-      return
-    }
-    if (ev.session) {
-      /**
-       * 
-       */
-      const allInRoiPoints: TNgAnnotationPoint[] = this.getPointsFromSession(ev.session, true)
-      const allNonInRoiPoints: TNgAnnotationPoint[] = this.getPointsFromSession(ev.session, false)
-      const annotationsToBeAdded: annotation.UnionAnnotation[] = []
-      for (const pt of allInRoiPoints) {
-        annotationsToBeAdded.push({
-          "@id": pt.id,
-          color: annotation.AnnotationColor.RED,
-          openminds: {
-            "@id": pt.id,
-            "@type": "https://openminds.ebrains.eu/sands/CoordinatePoint",
-            coordinateSpace: {
-              "@id": this.space["@id"]
-            },
-            coordinates: pt.point.map(v => {
-              return {
-                value: v / 1e6
-              }
-            })
-          },
-          name: pt.description || "Untitled"
-        })
-      }
-      for (const pt of allNonInRoiPoints) {
-        annotationsToBeAdded.push({
-          "@id": pt.id,
-          color: annotation.AnnotationColor.WHITE,
-          openminds: {
-            "@id": pt.id,
-            "@type": "https://openminds.ebrains.eu/sands/CoordinatePoint",
-            coordinateSpace: {
-              "@id": this.space["@id"]
-            },
-            coordinates: pt.point.map(v => {
-              return {
-                value: v / 1e6
-              }
-            })
-          },
-          name: pt.description || "Untitled"
-        })
-      }
-      this.addedAnnotations = annotationsToBeAdded
-      this.store.dispatch(
-        annotation.actions.addAnnotations({
-          annotations: annotationsToBeAdded
-        })
-      )
-    }
-  }
-  ieegOnDefocus(ev: IeegOnDefocusEvent){
-    if (ev.session) {
-      const allInRoiPoints: TNgAnnotationPoint[] = this.getPointsFromSession(ev.session, true)
-      const allNonInRoiPoints: TNgAnnotationPoint[] = this.getPointsFromSession(ev.session, false)
-
-      this.store.dispatch(
-        annotation.actions.rmAnnotations({
-          annotations: [...allInRoiPoints, ...allNonInRoiPoints].map(p => {
-            return { "@id": p.id }
-          })
-        })
-      )
-    }
-  }
-
-  ngOnDestroy(): void {
-    this.store.dispatch(
-      annotation.actions.rmAnnotations({
-        annotations: this.addedAnnotations
-      })
-    )
-  }
-
-  constructor(
-    private store: Store
-  ){
-
-  }
-
-  private getPointsFromSession(session: Session<string>, inRoi: boolean):TNgAnnotationPoint[]{
-    const allPoints: TNgAnnotationPoint[] = []
-    for (const electrodeKey in session.electrodes) {
-      const electrode = session.electrodes[electrodeKey]
-      const points = this.getPointsFromElectrode(electrode, inRoi)
-      allPoints.push(...points)
-    }
-    return allPoints.map(pt => {
-      return {
-        ...pt,
-        id: `${session.sub_id}:${pt.id}`
-      }
-    })
-  }
-
-  private getPointsFromElectrode(electrode: Electrode<string>, inRoi: boolean): TNgAnnotationPoint[] {
-    const allPoints: TNgAnnotationPoint[] = []
-    for (const ctptKey in electrode.contact_points) {
-      const ctpt = electrode.contact_points[ctptKey]
-      if (!inRoi !== !ctpt.inRoi) {
-        continue
-      }
-      const point = this.getPointFromCtPt(ctpt)
-      allPoints.push(point)
-    }
-    return allPoints.map(pt => {
-      return {
-        ...pt,
-        id: `${electrode.electrode_id}:${pt.id}`
-      }
-    })
-  }
-
-  private getPointFromCtPt(ctpt: ContactPoint<string>): TNgAnnotationPoint {
-    return {
-      id: ctpt.id,
-      point: ctpt.point.coordinates.map(coord => coord.value * 1e6 ) as [number, number, number],
-      type: 'point'
-    }
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/entry/entry.style.css b/src/atlasComponents/sapiViews/features/entry/entry.style.css
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/atlasComponents/sapiViews/features/entry/entry.template.html b/src/atlasComponents/sapiViews/features/entry/entry.template.html
deleted file mode 100644
index 38a00def6eba0d9546e5c729431e4d53a05292bb..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/entry/entry.template.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<div [ngSwitch]="feature?.['@type']">
-  <sxplr-sapiviews-features-receptor-entry
-    *ngSwitchCase="featureType.receptor"
-    [sxplr-sapiviews-features-receptor-atlas]="atlas"
-    [sxplr-sapiviews-features-receptor-parcellation]="parcellation"
-    [sxplr-sapiviews-features-receptor-template]="space"
-    [sxplr-sapiviews-features-receptor-region]="region"
-    [sxplr-sapiviews-features-receptor-featureid]="feature['@id']">
-  </sxplr-sapiviews-features-receptor-entry>
-  <sxplr-sapiviews-features-ieeg-ieegdataset
-    *ngSwitchCase="featureType.ieeg"  
-    [sxplr-sapiviews-features-ieeg-ieegdataset-atlas]="atlas"
-    [sxplr-sapiviews-features-ieeg-ieegdataset-space]="space"
-    [sxplr-sapiviews-features-ieeg-ieegdataset-parcellation]="parcellation"
-    [sxplr-sapiviews-features-ieeg-ieegdataset-region]="region"
-    [sxplr-sapiviews-features-ieeg-ieegdataset-feature]="feature"
-    (sxplr-sapiviews-features-ieeg-ieegdataset-on-focus)="ieegOnFocus($event)"
-    (sxplr-sapiviews-features-ieeg-ieegdataset-on-defocus)="ieegOnDefocus($event)"
-  >
-
-  </sxplr-sapiviews-features-ieeg-ieegdataset>
-</div>
diff --git a/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.component.ts b/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.component.ts
deleted file mode 100644
index 8008affe34a6b783fd1b93ed14ee527279e36d04..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.component.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
-import { SapiFeatureModel } from "src/atlasComponents/sapi";
-import { CleanedIeegDataset, CLEANED_IEEG_DATASET_TYPE, SapiDatasetModel, SapiParcellationFeatureMatrixModel, SapiRegionalFeatureReceptorModel, SapiSerializationErrorModel, SapiVOIDataResponse, SxplrCleanedFeatureModel } from "src/atlasComponents/sapi/type";
-
-@Component({
-  selector: `sxplr-sapiviews-features-entry-list-item`,
-  templateUrl: `./entryListItem.template.html`,
-  styleUrls: [
-    `./entryListItem.style.css`
-  ],
-  changeDetection: ChangeDetectionStrategy.OnPush,
-})
-
-export class SapiViewsFeaturesEntryListItem{
-  @Input('sxplr-sapiviews-features-entry-list-item-feature')
-  feature: SapiFeatureModel | SxplrCleanedFeatureModel
-
-  @Input('sxplr-sapiviews-features-entry-list-item-ripple')
-  ripple = true
-
-  get label(): string{
-    if (!this.feature) return null
-    const { '@type': type } = this.feature
-    if (
-      type === "https://openminds.ebrains.eu/core/DatasetVersion" ||
-      type === "siibra/features/cells" ||
-      type === "siibra/features/receptor" ||
-      type === "siibra/features/voi" ||
-      type === CLEANED_IEEG_DATASET_TYPE
-    ) {
-      return (this.feature as (SapiDatasetModel | SapiRegionalFeatureReceptorModel | SapiVOIDataResponse | CleanedIeegDataset) ).metadata.fullName
-    }
-
-    if (
-      type === "siibra/features/connectivity" ||
-      type === "siibra/features/connectivity/streamlineCounts"
-    ) {
-      return (this.feature as SapiParcellationFeatureMatrixModel).name
-    }
-    if (type === "spy/serialization-error") {
-      return (this.feature as SapiSerializationErrorModel).message
-    }
-    return "Unknown type"
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.style.css b/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.style.css
deleted file mode 100644
index 58f6c43f50f172f58c7933747209ca04ea5530a2..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.style.css
+++ /dev/null
@@ -1,5 +0,0 @@
-:host span
-{
-  overflow: hidden;
-  white-space: nowrap;
-}
diff --git a/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.template.html b/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.template.html
deleted file mode 100644
index fc1ac7920b3599f52aafb071417eb6bb41c0d6e1..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/entryListItem/entryListItem.template.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<div matRipple [matRippleDisabled]="!ripple"
-  class="sxplr-p-2">
-
-  <mat-chip-list
-    *ngIf="feature | featureBadgeFlag"
-    class="sxplr-scale-80 transform-origin-left-center sxplr-pe-none">
-    <mat-chip
-      [color]="feature | featureBadgeColour"
-      selected>
-      {{ feature | featureBadgeName }}
-    </mat-chip>
-  </mat-chip-list>
-
-  <span class="d-block mat-body">
-    {{ label }}
-  </span>
-</div>
diff --git a/src/atlasComponents/sapiViews/features/entryListItem/entryListitem.stories.ts b/src/atlasComponents/sapiViews/features/entryListItem/entryListitem.stories.ts
deleted file mode 100644
index a93cd9816a00d9f29567b8a55ecfe481030e8c31..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/entryListItem/entryListitem.stories.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import { CommonModule } from "@angular/common"
-import { Meta, moduleMetadata, Story } from "@storybook/angular"
-import { SapiFeatureModel } from "src/atlasComponents/sapi"
-import { getHoc1RightFeatures, getHoc1RightSpatialFeatures, getJba29Features, provideDarkTheme } from "src/atlasComponents/sapi/stories.base"
-import { AngularMaterialModule } from "src/sharedModules"
-import { SapiViewsFeaturesEntryListItem } from "./entryListItem.component"
-import { Component, EventEmitter, Input, Output } from "@angular/core"
-import { SapiViewsFeaturesModule } from ".."
-
-@Component({
-  selector: `feature-list-item-wrapper`,
-  template: `
-  <mat-card>
-    <sxplr-sapiviews-features-entry-list-item
-      *ngFor="let feat of features"
-      (click)="clicked.emit(feat)"
-      [sxplr-sapiviews-features-entry-list-item-feature]="feat"
-      [sxplr-sapiviews-features-entry-list-item-ripple]="ripple">
-    </sxplr-sapiviews-features-entry-list-item>
-  </mat-card>
-  `
-})
-
-class FeatureListItemWrapper {
-  features: SapiFeatureModel[] = []
-
-  @Input()
-  ripple: boolean = true
-
-  @Output()
-  clicked = new EventEmitter()
-}
-
-export default {
-  component: FeatureListItemWrapper,
-  decorators: [
-    moduleMetadata({
-      imports: [
-        CommonModule,
-        AngularMaterialModule,
-        SapiViewsFeaturesModule,
-      ],
-      declarations: [],
-      providers: [
-        ...provideDarkTheme,
-      ],
-    })
-  ],
-
-} as Meta
-
-const Template: Story<SapiViewsFeaturesEntryListItem> = (args: SapiViewsFeaturesEntryListItem, { loaded }) => {
-  const { features } = loaded
-  return ({
-    props: {
-      ...args,
-      features
-    },
-  })
-}
-
-
-export const RegionalFeatures = Template.bind({})
-RegionalFeatures.args = {
-
-}
-RegionalFeatures.loaders = [
-  async () => {
-    const features = [
-      ...(await getHoc1RightSpatialFeatures()),
-      ...(await getHoc1RightFeatures())
-    ]
-    return {
-      features
-    }
-  }
-]
-
-export const ParcellationFeatures = Template.bind({})
-ParcellationFeatures.loaders = [
-  async () => {
-
-    const features = await getJba29Features()
-    return {
-      features
-    }
-  }
-]
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/featureBadgeColor.pipe.ts b/src/atlasComponents/sapiViews/features/featureBadgeColor.pipe.ts
deleted file mode 100644
index 474d6a2adfe72257c35a406abde767ab7054f143..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/featureBadgeColor.pipe.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { Pipe, PipeTransform } from "@angular/core";
-import { SapiFeatureModel, SxplrCleanedFeatureModel, CLEANED_IEEG_DATASET_TYPE } from "src/atlasComponents/sapi";
-
-@Pipe({
-  name: 'featureBadgeColour',
-  pure: true
-})
-
-export class FeatureBadgeColourPipe implements PipeTransform{
-  public transform(regionalFeature: SapiFeatureModel|SxplrCleanedFeatureModel) {
-    if (regionalFeature['@type'] === "siibra/features/receptor") {
-      return "accent"
-    }
-    if (regionalFeature['@type'] === CLEANED_IEEG_DATASET_TYPE) {
-      return "primary"
-    }
-    return "default"
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/featureBadgeFlag.pipe.ts b/src/atlasComponents/sapiViews/features/featureBadgeFlag.pipe.ts
deleted file mode 100644
index 986edffac941e522ee27d76dd3ab626aa40b993d..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/featureBadgeFlag.pipe.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { Pipe, PipeTransform } from "@angular/core";
-import { SapiFeatureModel, SxplrCleanedFeatureModel, CLEANED_IEEG_DATASET_TYPE } from "src/atlasComponents/sapi";
-
-@Pipe({
-  name: 'featureBadgeFlag',
-  pure: true
-})
-
-export class FeatureBadgeFlagPipe implements PipeTransform{
-  public transform(regionalFeature: SapiFeatureModel|SxplrCleanedFeatureModel) {
-    return regionalFeature['@type'] === "siibra/features/receptor"
-      || regionalFeature['@type'] === CLEANED_IEEG_DATASET_TYPE
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/featureBadgeName.pipe.ts b/src/atlasComponents/sapiViews/features/featureBadgeName.pipe.ts
deleted file mode 100644
index 33570440c6aa4c0f601d7171cac61cce7c42e712..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/featureBadgeName.pipe.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { Pipe, PipeTransform } from "@angular/core";
-import { SapiFeatureModel, SxplrCleanedFeatureModel, CLEANED_IEEG_DATASET_TYPE } from "src/atlasComponents/sapi";
-
-@Pipe({
-  name: 'featureBadgeName',
-  pure: true
-})
-
-export class FeatureBadgeNamePipe implements PipeTransform{
-  public transform(regionalFeature: SapiFeatureModel|SxplrCleanedFeatureModel) {
-    if (regionalFeature['@type'] === "siibra/features/receptor") {
-      return "receptor density"
-    }
-    if (regionalFeature["@type"] === CLEANED_IEEG_DATASET_TYPE) {
-      return "IEEG dataset"
-    }
-    return null
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.component.ts b/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.component.ts
deleted file mode 100644
index de23194ff366b475d57954b3050aa2cf94cfb256..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.component.ts
+++ /dev/null
@@ -1,113 +0,0 @@
-import { Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from "@angular/core";
-import { BehaviorSubject, forkJoin } from "rxjs";
-import { SAPI } from "src/atlasComponents/sapi/sapi.service";
-import { CleanedIeegDataset, cleanIeegSessionDatasets, SapiAtlasModel, SapiIeegSessionModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi/type";
-
-export type Session<SId extends string> = CleanedIeegDataset['sessions'][SId]
-export type Electrode<EId extends string> = Session<string>['electrodes'][EId]
-export type ContactPoint<CId extends string> = Electrode<string>['contact_points'][CId]
-
-export type IeegOnFocusEvent = {
-  contactPoint: ContactPoint<string>
-  electrode: Electrode<string>
-  session: Session<string>
-}
-
-export type IeegOnDefocusEvent = {
-  contactPoint: ContactPoint<string>
-  electrode: Electrode<string>
-  session: Session<string>
-}
-
-@Component({
-  selector: `sxplr-sapiviews-features-ieeg-ieegdataset`,
-  templateUrl: `./ieegDataset.template.html`,
-  styleUrls: [
-    `./ieegDataset.style.css`
-  ]
-})
-
-export class IEEGDatasetCmp implements OnChanges{
-
-  @Input('sxplr-sapiviews-features-ieeg-ieegdataset-atlas')
-  public atlas: SapiAtlasModel
-  
-  @Input('sxplr-sapiviews-features-ieeg-ieegdataset-space')
-  public space: SapiSpaceModel
-
-  @Input('sxplr-sapiviews-features-ieeg-ieegdataset-parcellation')
-  public parcellation: SapiParcellationModel
-
-  @Input('sxplr-sapiviews-features-ieeg-ieegdataset-region')
-  public region: SapiRegionModel
-  
-  /**
-   * we must assume that the passed feature does not have the detail flag on
-   * We need to fetch the 
-   */
-  @Input('sxplr-sapiviews-features-ieeg-ieegdataset-feature')
-  public feature: CleanedIeegDataset
-  public detailedFeature: CleanedIeegDataset
-
-  @Output('sxplr-sapiviews-features-ieeg-ieegdataset-on-focus')
-  public onFocus = new EventEmitter<IeegOnFocusEvent>()
-
-  @Output('sxplr-sapiviews-features-ieeg-ieegdataset-on-defocus')
-  public onDefocus = new EventEmitter<IeegOnDefocusEvent>()
-  
-  public busy$ = new BehaviorSubject<boolean>(false)
-
-  ngOnChanges(changes: SimpleChanges): void {
-    if (!this.feature) {
-      return
-    }
-    if (this.feature && this.feature["@type"] !== "sxplr/cleanedIeegDataset") {
-      throw new Error(`expected @type to be sxplr-cleaned-ieeg-dataset, but is ${this.feature['@type']}.`)
-    }
-    this.busy$.next(true)
-    
-    forkJoin(
-      Object.entries(this.feature.sessions).map(([ key, session ]) => {
-        return this.sapi.getSpace(this.atlas["@id"], this.space["@id"]).getFeatureInstance(session["@id"], { parcellationId: this.parcellation["@id"], region: this.region.name })
-      })
-    ).subscribe(feats => {
-
-      const ieegSessions: SapiIeegSessionModel[] = feats.filter(feat => feat["@type"] === "siibra/features/ieegSession")
-      const features = cleanIeegSessionDatasets(ieegSessions)
-      const foundFeat = features.find(f => f["@id"] === this.feature["@id"])
-      if (foundFeat) {
-        this.detailedFeature = foundFeat
-      }
-      this.busy$.next(false)
-    })
-  }
-
-  public onContactPointClicked(cpt: ContactPoint<string>, ele: Electrode<string>, sess: Session<string>){
-    this.onFocus.emit({
-      contactPoint: cpt,
-      electrode: ele,
-      session: sess
-    })
-  }
-
-  public onPanelOpen(session: Session<string>){
-    this.onFocus.emit({
-      contactPoint: null,
-      electrode: null,
-      session: session
-    })
-  }
-
-  public onPanelClose(session: Session<string>){
-    this.onDefocus.emit({
-      contactPoint: null,
-      electrode: null,
-      session: session
-    })
-  }
-
-  constructor(private sapi: SAPI){
-
-  }
-
-}
diff --git a/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.stories.ts b/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.stories.ts
deleted file mode 100644
index c9f08880e4525ab8c2d9f550abee83bf60c876fc..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.stories.ts
+++ /dev/null
@@ -1,113 +0,0 @@
-import { Meta, moduleMetadata, Story } from "@storybook/angular"
-import { SAPI, SapiAtlasModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi"
-import { getHoc1Right, getHumanAtlas, getJba29, getMni152, provideDarkTheme, getMni152SpatialFeatureHoc1Right } from "src/atlasComponents/sapi/stories.base"
-import { SxplrSapiViewsFeaturesIeegModule } from ".."
-import { Component } from "@angular/core"
-import { cleanIeegSessionDatasets, SapiSpatialFeatureModel } from "src/atlasComponents/sapi/type"
-import { action } from "@storybook/addon-actions"
-
-@Component({
-  selector: 'ieeg-entry-wrapper-cmp',
-  template: `
-  <sxplr-sapiviews-features-ieeg-ieegdataset
-    [sxplr-sapiviews-features-ieeg-ieegdataset-atlas]="atlas"
-    [sxplr-sapiviews-features-ieeg-ieegdataset-space]="template"
-    [sxplr-sapiviews-features-ieeg-ieegdataset-parcellation]="parcellation"
-    [sxplr-sapiviews-features-ieeg-ieegdataset-region]="region"
-    [sxplr-sapiviews-features-ieeg-ieegdataset-feature]="feature"
-    (sxplr-sapiviews-features-ieeg-ieegdataset-on-focus)="handleCtptClick($event)"
-    (sxplr-sapiviews-features-ieeg-ieegdataset-on-defocus)="handleOnDeFocus($event)"
-  >
-  </sxplr-sapiviews-features-ieeg-ieegdataset>
-  `,
-  styles: [
-    `
-    :host
-    {
-      display: block;
-      width: 20rem;
-    }
-    `
-  ]
-})
-class EntryWrappercls {
-  atlas: SapiAtlasModel
-  template: SapiSpaceModel
-  feature: SapiSpatialFeatureModel
-  parcellation: SapiParcellationModel
-  region: SapiRegionModel
-
-  handleOnFocus(cpt: unknown){}
-  handleOnDeFocus(cpt: unknown) {}
-}
-
-export default {
-  component: EntryWrappercls,
-  decorators: [
-    moduleMetadata({
-      imports: [
-        SxplrSapiViewsFeaturesIeegModule,
-      ],
-      providers: [
-        SAPI,
-        ...provideDarkTheme,
-      ],
-      declarations: [
-        EntryWrappercls
-      ]
-    })
-  ],
-} as Meta
-
-const Template: Story<EntryWrappercls> = (args: EntryWrappercls, { loaded }) => {
-  const { atlas, parc, space, region, feature } = loaded
-  return ({
-    props: {
-      ...args,
-      atlas: atlas,
-      parcellation: parc,
-      template: space,
-      region: region,
-      feature,
-      handleOnFocus: action('handleOnFocus'),
-      handleOnDeFocus: action('handleOnDeFocus')
-    },
-  })
-}
-
-const loadFeat = async () => {
-  const atlas = await getHumanAtlas()
-  const space = await getMni152()
-  const parc = await getJba29()
-  const region = await getHoc1Right()
-  
-  const features = await getMni152SpatialFeatureHoc1Right()
-  const spatialFeats = features.filter(f => f["@type"] === "siibra/features/ieegSession")
-  const feature = cleanIeegSessionDatasets(spatialFeats)[0]
-  return {
-    atlas,
-    space,
-    parc,
-    region,
-    feature
-  }
-}
-
-export const Default = Template.bind({})
-Default.args = {
-
-}
-Default.loaders = [
-  async () => {
-    const {
-      atlas,
-      space,
-      feature,
-      parc,
-      region,
-    } = await loadFeat()
-    return {
-      atlas, space, feature, parc, region  
-    }
-  }
-]
diff --git a/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.style.css b/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.style.css
deleted file mode 100644
index 1c554eef70e8adae01cba4530c534a389ce6c93a..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.style.css
+++ /dev/null
@@ -1,4 +0,0 @@
-mat-form-field
-{
-  width: 100%;
-}
diff --git a/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.template.html b/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.template.html
deleted file mode 100644
index af7464f5e24b254d42985ef55766f755696c4909..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/ieeg/ieegDataset/ieegDataset.template.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<spinner-cmp *ngIf="busy$ | async; else resultTmpl">
-</spinner-cmp>
-
-<ng-template #resultTmpl>
-
-  <mat-accordion *ngIf="!!detailedFeature">
-    <ng-template
-      ngFor
-      [ngForOf]="detailedFeature.sessions | keyvalue"
-      let-sessionKeyVal>
-  
-      <ng-template
-        [ngIf]="sessionKeyVal.value.inRoi"
-        [ngTemplateOutlet]="sessionTmpl"
-        [ngTemplateOutletContext]="{
-          $implicit: sessionKeyVal.value
-        }">
-  
-      </ng-template>
-  
-    </ng-template>
-  </mat-accordion>
-  
-</ng-template>
-
-<!-- session template -->
-<ng-template #sessionTmpl let-session>
-  <mat-expansion-panel
-    (opened)="onPanelOpen(session)"
-    (closed)="onPanelClose(session)">
-    <mat-expansion-panel-header>
-      SessionID: {{ session.sub_id }}
-    </mat-expansion-panel-header>
-
-    <ng-template matExpansionPanelContent>
-      <ng-template
-        ngFor
-        [ngForOf]="session.electrodes | keyvalue | inRoi"
-        let-electrodeKeyVal>
-        <ng-template
-          [ngTemplateOutlet]="electrodeTmpl"
-          [ngTemplateOutletContext]="{
-            electrode: electrodeKeyVal.value,
-            session: session
-          }">
-
-        </ng-template>
-      </ng-template>
-
-      <mat-divider></mat-divider>
-      <ng-template
-        ngFor
-        [ngForOf]="session.electrodes | keyvalue | inRoi : false"
-        let-electrodeKeyVal>
-        <div class="sxplr-very-muted">
-          <ng-template
-            [ngTemplateOutlet]="electrodeTmpl"
-            [ngTemplateOutletContext]="{
-              electrode: electrodeKeyVal.value,
-              session: session
-            }">
-
-          </ng-template>
-        </div>
-      </ng-template>
-    </ng-template>
-  </mat-expansion-panel>
-</ng-template>
-
-<!-- electrode template -->
-<ng-template
-  #electrodeTmpl
-  let-electrode="electrode"
-  let-session="session">
-  <mat-form-field appearance="fill">
-    <mat-label>
-      ElectrodeID: {{ electrode.electrode_id }}
-    </mat-label>
-    <mat-chip-list>
-      <ng-template
-        ngFor
-        [ngForOf]="electrode.contact_points | keyvalue"
-        let-contactPointKeyVal>
-
-        <ng-template
-          [ngTemplateOutlet]="contactPointTmpl"
-          [ngTemplateOutletContext]="{
-            contactPointKey: contactPointKeyVal.key,
-            contactPoint: contactPointKeyVal.value,
-            electrode: electrode,
-            session: session
-          }">
-        </ng-template>
-      </ng-template>
-    </mat-chip-list>
-  </mat-form-field>
-</ng-template>
-
-<!-- contact point template -->
-<ng-template
-  #contactPointTmpl
-  let-contactPoint="contactPoint"
-  let-key="contactPointKey"
-  let-electrode="electrode"
-  let-session="session">
-  <mat-chip
-    (click)="onContactPointClicked(contactPoint, electrode, session)"
-    [color]="contactPoint.inRoi ? 'primary' : 'default'"
-    selected>
-    {{ key }}
-  </mat-chip>
-</ng-template>
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/ieeg/inRoi.pipe.ts b/src/atlasComponents/sapiViews/features/ieeg/inRoi.pipe.ts
deleted file mode 100644
index 4f215c8ccd96ff7af503abc521e3c6558383c234..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/ieeg/inRoi.pipe.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { Pipe, PipeTransform } from "@angular/core";
-
-interface InRoi {
-  key: string
-  value: {
-    inRoi: boolean
-  }
-}
-
-@Pipe({
-  name: 'inRoi',
-  pure: true
-})
-
-export class InRoiPipe implements PipeTransform{
-  public transform(list: InRoi[], inroi=true): InRoi[] {
-    return list.filter(it => it.value.inRoi === inroi)
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/ieeg/index.ts b/src/atlasComponents/sapiViews/features/ieeg/index.ts
deleted file mode 100644
index 757808e777ca4f96b83bba521ab6c71d3903cfaa..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/ieeg/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { IEEGDatasetCmp, IeegOnFocusEvent, IeegOnDefocusEvent, ContactPoint, Electrode, Session } from "./ieegDataset/ieegDataset.component"
-export { SxplrSapiViewsFeaturesIeegModule } from "./module"
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/ieeg/module.ts b/src/atlasComponents/sapiViews/features/ieeg/module.ts
deleted file mode 100644
index c91161eac8e261121aaa58e583265961b324c007..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/ieeg/module.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { CommonModule } from "@angular/common";
-import { NgModule } from "@angular/core";
-import { MatChipsModule } from "@angular/material/chips";
-import { MatDividerModule } from "@angular/material/divider";
-import { MatExpansionModule } from "@angular/material/expansion";
-import { MatFormFieldModule } from "@angular/material/form-field";
-import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
-import { SAPIModule } from "src/atlasComponents/sapi/module";
-import { SpinnerModule } from "src/components/spinner";
-import { IEEGDatasetCmp } from "./ieegDataset/ieegDataset.component";
-import { InRoiPipe } from "./inRoi.pipe";
-
-@NgModule({
-  imports: [
-    CommonModule,
-    MatExpansionModule,
-    MatChipsModule,
-    MatFormFieldModule,
-    MatDividerModule,
-    BrowserAnimationsModule,
-    SpinnerModule,
-    SAPIModule,
-  ],
-  declarations: [
-    IEEGDatasetCmp,
-    InRoiPipe,
-  ],
-  exports: [
-    IEEGDatasetCmp,
-  ]
-})
-
-export class SxplrSapiViewsFeaturesIeegModule{}
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/index.ts b/src/atlasComponents/sapiViews/features/index.ts
deleted file mode 100644
index 89e1fafbad8108576c708d401326b2d5f4137f6d..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export {
-  SapiViewsFeaturesModule
-} from "./module"
-
-export {
-  SapiViewsFeaturesVoiQuery
-} from "./voi"
diff --git a/src/atlasComponents/sapiViews/features/module.ts b/src/atlasComponents/sapiViews/features/module.ts
deleted file mode 100644
index 3df348c72f79be4b53c3050e30627c896e8b93f2..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/module.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import { CommonModule, DOCUMENT } from "@angular/common"
-import { NgModule } from "@angular/core"
-import { AngularMaterialModule } from "src/sharedModules"
-import { appendScriptFactory, APPEND_SCRIPT_TOKEN } from "src/util/constants"
-import { FeatureEntryCmp } from "./entry/entry.component"
-import { SapiViewsFeaturesEntryListItem } from "./entryListItem/entryListItem.component"
-import { FeatureBadgeColourPipe } from "./featureBadgeColor.pipe"
-import { FeatureBadgeFlagPipe } from "./featureBadgeFlag.pipe"
-import { FeatureBadgeNamePipe } from "./featureBadgeName.pipe"
-import * as ieeg from "./ieeg"
-import * as receptor from "./receptors"
-import {SapiViewsFeatureConnectivityModule} from "src/atlasComponents/sapiViews/features/connectivity";
-import * as voi from "./voi"
-import { OrderFilterFeaturesPipe } from "./orderFilterFeatureList.pipe"
-
-const {
-  SxplrSapiViewsFeaturesIeegModule
-} = ieeg
-const {
-  ReceptorViewModule
-} = receptor
-const { SapiViewsFeaturesVoiModule } = voi
-
-@NgModule({
-  imports: [
-    CommonModule,
-    ReceptorViewModule,
-    SxplrSapiViewsFeaturesIeegModule,
-    AngularMaterialModule,
-    SapiViewsFeaturesVoiModule,
-    SapiViewsFeatureConnectivityModule,
-  ],
-  declarations: [
-    FeatureEntryCmp,
-    FeatureBadgeNamePipe,
-    FeatureBadgeColourPipe,
-    FeatureBadgeFlagPipe,
-    SapiViewsFeaturesEntryListItem,
-    OrderFilterFeaturesPipe,
-  ],
-  providers: [
-    {
-      provide: APPEND_SCRIPT_TOKEN,
-      useFactory: appendScriptFactory,
-      deps: [ DOCUMENT ]
-    }
-  ],
-  exports: [
-    FeatureEntryCmp,
-    SapiViewsFeaturesEntryListItem,
-    SapiViewsFeaturesVoiModule,
-    SapiViewsFeatureConnectivityModule,
-    OrderFilterFeaturesPipe,
-  ]
-})
-export class SapiViewsFeaturesModule{}
diff --git a/src/atlasComponents/sapiViews/features/orderFilterFeatureList.pipe.ts b/src/atlasComponents/sapiViews/features/orderFilterFeatureList.pipe.ts
deleted file mode 100644
index 382862b0300f4bdaffadce20aeb4e28274a8bef6..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/orderFilterFeatureList.pipe.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { Pipe, PipeTransform } from "@angular/core";
-import { CLEANED_IEEG_DATASET_TYPE, SapiFeatureModel, SxplrCleanedFeatureModel } from "src/atlasComponents/sapi/type";
-import { environment } from "src/environments/environment"
-
-type PipableFeatureType = SapiFeatureModel | SxplrCleanedFeatureModel
-
-type ArrayOperation<T extends boolean | number> = (input: PipableFeatureType) => T
-
-const FILTER_FN: ArrayOperation<boolean> = feature => {
-  return feature["@type"] !== "siibra/features/cells"
-}
-
-const ORDER_LIST: ArrayOperation<number> = feature => {
-  if (feature["@type"] === "siibra/features/receptor") return -4
-  if (feature["@type"] === CLEANED_IEEG_DATASET_TYPE) return -3
-  if (feature['@type'] === "https://openminds.ebrains.eu/core/DatasetVersion") return 2
-  return 0
-}
-
-@Pipe({
-  name: 'orderFilterFeatures',
-  pure: true
-})
-
-export class OrderFilterFeaturesPipe implements PipeTransform{
-  public transform(inputFeatures: PipableFeatureType[]): PipableFeatureType[] {
-    return inputFeatures
-      .filter(f => {
-        /**
-         * if experimental flag is set, do not filter out anything
-         */
-        if (environment.EXPERIMENTAL_FEATURE_FLAG) return true
-        return FILTER_FN(f)
-      })
-      .sort((a, b) => ORDER_LIST(a) - ORDER_LIST(b))
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/receptors/autoradiography/autoradiograph.stories.ts b/src/atlasComponents/sapiViews/features/receptors/autoradiography/autoradiograph.stories.ts
deleted file mode 100644
index 093ec6a110eaca060b0bf3e48204026ee5ed1946..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/autoradiography/autoradiograph.stories.ts
+++ /dev/null
@@ -1,146 +0,0 @@
-import { CommonModule } from "@angular/common"
-import { HttpClientModule } from "@angular/common/http"
-import { Component, ViewChild } from "@angular/core"
-import { FormsModule } from "@angular/forms"
-import { BrowserAnimationsModule } from "@angular/platform-browser/animations"
-import { Meta, moduleMetadata, Story } from "@storybook/angular"
-import { SAPI, SapiAtlasModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi"
-import { getHoc1RightFeatureDetail, getHoc1RightFeatures, getHoc1Right, getHumanAtlas, getJba29, getMni152 } from "src/atlasComponents/sapi/stories.base"
-import { SapiRegionalFeatureReceptorModel } from "src/atlasComponents/sapi/type"
-import { AngularMaterialModule } from "src/sharedModules"
-import { Autoradiography } from "./autoradiography.component"
-
-@Component({
-  selector: 'autoradiograph-wrapper-cmp',
-  template: `
-  <mat-form-field appearance="fill">
-    <mat-select [(ngModel)]="selectedSymbol">
-      <mat-option value="" disabled>
-        --select--
-      </mat-option>
-
-      <mat-option [value]="option"
-        *ngFor="let option of options">
-        {{ option }}
-      </mat-option>
-    </mat-select>
-  </mat-form-field>
-  <sxplr-sapiviews-features-receptor-autoradiograph
-    class="d-inline-block w-100 h-100"
-    [sxplr-sapiviews-features-receptor-atlas]="atlas"
-    [sxplr-sapiviews-features-receptor-parcellation]="parcellation"
-    [sxplr-sapiviews-features-receptor-template]="template"
-    [sxplr-sapiviews-features-receptor-region]="region"
-    [sxplr-sapiviews-features-receptor-featureid]="featureId"
-    [sxplr-sapiviews-features-receptor-data]="feature"
-    [sxplr-sapiviews-features-receptor-autoradiograph-selected-symbol]="selectedSymbol"
-  >
-  </sxplr-sapiviews-features-receptor-autoradiograph>
-  `,
-  styles: [
-    `
-    :host
-    {
-      display: block;
-      max-width: 24rem;
-      max-height: 24rem;
-    }
-    `
-  ]
-})
-class AutoRadiographWrapperCls {
-  atlas: SapiAtlasModel
-  parcellation: SapiParcellationModel
-  template: SapiSpaceModel
-  region: SapiRegionModel
-
-  feature: SapiRegionalFeatureReceptorModel
-  featureId: string
-
-  @ViewChild(Autoradiography)
-  ar: Autoradiography
-
-  selectedSymbol: string
-
-  get options(){
-    return Object.keys(this.feature?.data?.autoradiographs || this.ar?.receptorData?.data?.autoradiographs || {})
-  }
-}
-
-export default {
-  component: AutoRadiographWrapperCls,
-  decorators: [
-    moduleMetadata({
-      imports: [
-        CommonModule,
-        AngularMaterialModule,
-        HttpClientModule,
-        BrowserAnimationsModule,
-        FormsModule,
-      ],
-      providers: [
-        SAPI
-      ],
-      declarations: [
-        Autoradiography
-      ]
-    })
-  ],
-} as Meta
-
-const Template: Story<AutoRadiographWrapperCls> = (args: AutoRadiographWrapperCls, { loaded }) => {
-  const { atlas, parc, space, region, featureId, feature } = loaded
-  return ({
-    props: {
-      ...args,
-      atlas: atlas,
-      parcellation: parc,
-      template: space,
-      region: region,
-      feature,
-      featureId,
-    },
-  })
-}
-
-const loadFeat = async () => {
-  const atlas = await getHumanAtlas()
-  const parc = await getJba29()
-  const region = await getHoc1Right()
-  const space = await getMni152()
-  const features = await getHoc1RightFeatures()
-  const receptorfeat = features.find(f => f['@type'] === "siibra/features/receptor")
-  const feature = await getHoc1RightFeatureDetail(receptorfeat["@id"])
-  return {
-    atlas,
-    parc,
-    space,
-    region,
-    featureId: receptorfeat["@id"],
-    feature
-  }
-}
-
-export const Default = Template.bind({})
-Default.args = {
-
-}
-Default.loaders = [
-  async () => {
-    const { atlas, parc, space, region, featureId } = await loadFeat()
-    return {
-      atlas, parc, space, region, featureId
-    }
-  }
-]
-
-export const LoadViaDirectlyInjectData = Template.bind({})
-LoadViaDirectlyInjectData.loaders = [
-  async () => {
-
-    const { feature } = await loadFeat()
-    return {
-      feature
-    }
-  }
-]
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/receptors/autoradiography/autoradiography.component.ts b/src/atlasComponents/sapiViews/features/receptors/autoradiography/autoradiography.component.ts
deleted file mode 100644
index ecd059f0a8fd1411e9a5c7b211c7aac78cff91ae..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/autoradiography/autoradiography.component.ts
+++ /dev/null
@@ -1,82 +0,0 @@
-import { AfterViewInit, Component, ElementRef, Input, OnChanges, SimpleChanges } from "@angular/core";
-import { SAPI } from "src/atlasComponents/sapi";
-import { PARSE_TYPEDARRAY } from "src/atlasComponents/sapi/sapi.service";
-import { BaseReceptor } from "../base";
-
-@Component({
-  selector: `sxplr-sapiviews-features-receptor-autoradiograph`,
-  templateUrl: './autoradiography.template.html',
-  styleUrls: [
-    './autoradiography.style.css'
-  ],
-  exportAs: 'sxplrSapiViewsFeaturesReceptorAR'
-})
-
-export class Autoradiography extends BaseReceptor implements OnChanges, AfterViewInit{
-  
-  @Input('sxplr-sapiviews-features-receptor-autoradiograph-selected-symbol')
-  selectedSymbol: string
-
-  private pleaseRender = false
-
-  width: number
-  height: number
-  renderBuffer: Uint8ClampedArray
-
-  async ngOnChanges(simpleChanges: SimpleChanges) {
-    await super.ngOnChanges(simpleChanges)
-    if (!this.receptorData) {
-      return
-    }
-    if (this.selectedSymbol) {
-      const fp = this.receptorData.data.autoradiographs[this.selectedSymbol]
-      if (!fp) {
-        this.error = `selectedSymbol ${this.selectedSymbol} cannot be found. Valid symbols are ${Object.keys(this.receptorData.data.autoradiographs)}`
-        return
-      }
-      const { "x-width": width, "x-height": height } = fp
-      
-      this.width = width
-      this.height = height
-
-      const { result } = await this.sapi.processNpArrayData<PARSE_TYPEDARRAY.CANVAS_FORTRAN_RGBA>(fp, PARSE_TYPEDARRAY.CANVAS_FORTRAN_RGBA)
-      this.renderBuffer = result
-      this.rerender()
-    }
-  }
-  constructor(sapi: SAPI, private el: ElementRef){
-    super(sapi)
-  }
-
-  ngAfterViewInit(): void {
-    if (this.pleaseRender) this.rerender()
-  }
-
-  rerender(){
-    this.dataBlobAvailable = false
-    if (!this.el || !this.renderBuffer) {
-      this.pleaseRender = true
-      return
-    }
-
-    const arContainer = (this.el.nativeElement as HTMLElement)
-    while (arContainer.firstChild) {
-      arContainer.removeChild(arContainer.firstChild)
-    }
-
-    const canvas = document.createElement("canvas")
-    canvas.height = this.height
-    canvas.width = this.width
-    arContainer.appendChild(canvas)
-    const ctx = canvas.getContext("2d")
-    const imgData = ctx.createImageData(this.width, this.height)
-    imgData.data.set(this.renderBuffer)
-    ctx.putImageData(imgData, 0, 0)
-
-    canvas.toBlob(blob => {
-      this.dataBlobAvailable = true
-      this.dataBlob$.next(blob)
-    })
-    this.pleaseRender = false
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/receptors/autoradiography/autoradiography.style.css b/src/atlasComponents/sapiViews/features/receptors/autoradiography/autoradiography.style.css
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/atlasComponents/sapiViews/features/receptors/autoradiography/autoradiography.template.html b/src/atlasComponents/sapiViews/features/receptors/autoradiography/autoradiography.template.html
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/atlasComponents/sapiViews/features/receptors/base.ts b/src/atlasComponents/sapiViews/features/receptors/base.ts
deleted file mode 100644
index 2428c72f6e315c97f98a5914c867d7c6c7560af8..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/base.ts
+++ /dev/null
@@ -1,100 +0,0 @@
-import { Directive, Input, SimpleChanges } from "@angular/core";
-import { BehaviorSubject } from "rxjs";
-import { SAPI, SapiAtlasModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi";
-import { SapiRegionalFeatureReceptorModel } from "src/atlasComponents/sapi/type";
-
-@Directive()
-export abstract class BaseReceptor{
-  
-  @Input('sxplr-sapiviews-features-receptor-atlas')
-  atlas: SapiAtlasModel
-  
-  @Input('sxplr-sapiviews-features-receptor-parcellation')
-  parcellation: SapiParcellationModel
-
-  @Input('sxplr-sapiviews-features-receptor-template')
-  template: SapiSpaceModel
-  
-  @Input('sxplr-sapiviews-features-receptor-region')
-  region: SapiRegionModel
-
-  @Input('sxplr-sapiviews-features-receptor-featureid')
-  featureId: string
-
-  @Input('sxplr-sapiviews-features-receptor-data')
-  receptorData: SapiRegionalFeatureReceptorModel
-
-  error: string
-
-  async ngOnChanges(simpleChanges: SimpleChanges) {
-    if (simpleChanges.receptorData?.currentValue) {
-      this.rerender()
-      return
-    }
-    if (this.canFetch) {
-      this.receptorData = await this.fetchReceptorData()
-      this.rerender()
-    }
-  }
-
-  private get canFetch() {
-    if (!this.atlas) {
-      this.error = `atlas needs to be defined, but is not`
-      return false
-    }
-    if (!this.parcellation) {
-      this.error = `parcellation needs to be defined, but is not`
-      return false
-    }
-    if (!this.region) {
-      this.error = `region needs to be defined, but is not`
-      return false
-    }
-    if (!this.featureId) {
-      this.error = `featureId needs to be defined, but is not`
-      return false
-    }
-    return true
-  }
-
-  protected async fetchReceptorData() {
-    this.error = null
-    if (!this.atlas) {
-      this.error = `atlas needs to be defined, but is not`
-      return
-    }
-    if (!this.parcellation) {
-      this.error = `parcellation needs to be defined, but is not`
-      return
-    }
-    if (!this.region) {
-      this.error = `region needs to be defined, but is not`
-      return
-    }
-    if (!this.featureId) {
-      this.error = `featureId needs to be defined, but is not`
-      return
-    }
-    const result = await this.sapi.getRegion(this.atlas["@id"], this.parcellation["@id"], this.region.name).getFeatureInstance(this.featureId, this.template["@id"]).toPromise()
-    if (result["@type"] !== "siibra/features/receptor") {
-      throw new Error(`BaseReceptor Error. Expected .type to be "siibra/features/receptor", but was "${result['@type']}"`)
-    }
-    return result
-  }
-
-  abstract rerender(): void
-
-  /**
-   * flag to indicate that getDataBlob() can be called.
-   */
-  dataBlobAvailable = false
-  /**
-   * blob object observable, representing the data of the component. This allows the data to be downloaded.
-   */
-  dataBlob$ = new BehaviorSubject<Blob>(null)
-
-  constructor(
-    protected sapi: SAPI
-  ){
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/receptors/entry/entry.component.ts b/src/atlasComponents/sapiViews/features/receptors/entry/entry.component.ts
deleted file mode 100644
index 3f6a756c1b26a15d26a93c4900347072cd79be27..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/entry/entry.component.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { ChangeDetectorRef, Component, OnChanges, SimpleChanges } from "@angular/core";
-import { SAPI } from "src/atlasComponents/sapi";
-import { BaseReceptor } from "../base";
-
-@Component({
-  selector: 'sxplr-sapiviews-features-receptor-entry',
-  templateUrl: `./entry.template.html`,
-  styleUrls: [
-    `./entry.style.css`
-  ]
-})
-
-export class Entry extends BaseReceptor implements OnChanges {
-  selectedSymbol: string
-  symbolsOptions: string[] = []
-
-  async ngOnChanges(simpleChanges: SimpleChanges): Promise<void> {
-    await super.ngOnChanges(simpleChanges)
-  }
-
-  loading = true
-  rerender(): void {
-    if (this.receptorData.data.receptor_symbols) {
-      this.loading = false
-      this.symbolsOptions = Object.keys(this.receptorData.data.receptor_symbols)
-    }
-    this.cdr.detectChanges()
-  }
-  constructor(
-    sapi: SAPI,
-    private cdr: ChangeDetectorRef,
-  ){
-    super(sapi)
-  }
-
-  setSelectedSymbol(select: string){
-    this.selectedSymbol = select
-  }
-
-  getDataBlob(): Promise<Blob> {
-    throw new Error(`cannot get blob of entry component`)
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/receptors/entry/entry.stories.ts b/src/atlasComponents/sapiViews/features/receptors/entry/entry.stories.ts
deleted file mode 100644
index 63f07ee1ef4f6dd57c402e07d08a4e9c5d742f01..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/entry/entry.stories.ts
+++ /dev/null
@@ -1,127 +0,0 @@
-import { CommonModule, DOCUMENT } from "@angular/common"
-import { HttpClientModule } from "@angular/common/http"
-import { Meta, moduleMetadata, Story } from "@storybook/angular"
-import { SAPI, SapiAtlasModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi"
-import { getHoc1RightFeatureDetail, getHoc1RightFeatures, getHoc1Right, getHumanAtlas, getJba29, getMni152, provideDarkTheme } from "src/atlasComponents/sapi/stories.base"
-import { AngularMaterialModule } from "src/sharedModules"
-import { Entry } from "./entry.component"
-import { ReceptorViewModule } from ".."
-import { appendScriptFactory, APPEND_SCRIPT_TOKEN } from "src/util/constants"
-import { Component, Output } from "@angular/core"
-import { SapiRegionalFeatureReceptorModel } from "src/atlasComponents/sapi/type"
-
-@Component({
-  selector: 'entry-wrapper-cmp',
-  template: `
-  <sxplr-sapiviews-features-receptor-entry
-    [sxplr-sapiviews-features-receptor-atlas]="atlas"
-    [sxplr-sapiviews-features-receptor-parcellation]="parcellation"
-    [sxplr-sapiviews-features-receptor-template]="template"
-    [sxplr-sapiviews-features-receptor-region]="region"
-    [sxplr-sapiviews-features-receptor-featureid]="featureId"
-    [sxplr-sapiviews-features-receptor-data]="feature"
-  >
-  </sxplr-sapiviews-features-receptor-entry>
-  `,
-  styles: [
-    `
-    :host
-    {
-      display: block;
-      width: 20rem;
-    }
-    `
-  ]
-})
-class EntryWrappercls {
-  atlas: SapiAtlasModel
-  parcellation: SapiParcellationModel
-  template: SapiSpaceModel
-  region: SapiRegionModel
-  feature: SapiRegionalFeatureReceptorModel
-  featureId: string
-
-}
-
-export default {
-  component: EntryWrappercls,
-  decorators: [
-    moduleMetadata({
-      imports: [
-        CommonModule,
-        HttpClientModule,
-        ReceptorViewModule,
-        AngularMaterialModule,
-      ],
-      providers: [
-        SAPI,
-        {
-          provide: APPEND_SCRIPT_TOKEN,
-          useFactory: appendScriptFactory,
-          deps: [ DOCUMENT ]
-        },
-        ...provideDarkTheme,
-      ],
-      declarations: [
-        EntryWrappercls
-      ]
-    })
-  ],
-} as Meta
-
-const Template: Story<Entry> = (args: Entry, { loaded }) => {
-  const { atlas, parc, space, region, featureId, feature } = loaded
-  return ({
-    props: {
-      ...args,
-      atlas: atlas,
-      parcellation: parc,
-      template: space,
-      region: region,
-      feature,
-      featureId,
-    },
-  })
-}
-
-const loadFeat = async () => {
-  const atlas = await getHumanAtlas()
-  const parc = await getJba29()
-  const region = await getHoc1Right()
-  const space = await getMni152()
-  const features = await getHoc1RightFeatures()
-  const receptorfeat = features.find(f => f['@type'] === "siibra/features/receptor")
-  const feature = await getHoc1RightFeatureDetail(receptorfeat["@id"])
-  return {
-    atlas,
-    parc,
-    space,
-    region,
-    featureId: receptorfeat["@id"],
-    feature
-  }
-}
-
-export const Default = Template.bind({})
-Default.args = {
-
-}
-Default.loaders = [
-  async () => {
-    const { atlas, parc, space, region, featureId } = await loadFeat()
-    return {
-      atlas, parc, space, region, featureId
-    }
-  }
-]
-
-export const LoadViaDirectlyInjectData = Template.bind({})
-LoadViaDirectlyInjectData.loaders = [
-  async () => {
-
-    const { feature } = await loadFeat()
-    return {
-      feature
-    }
-  }
-]
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/receptors/entry/entry.style.css b/src/atlasComponents/sapiViews/features/receptors/entry/entry.style.css
deleted file mode 100644
index 0645dc01a568740a2c3d2f51c486adcb7f111a02..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/entry/entry.style.css
+++ /dev/null
@@ -1,4 +0,0 @@
-:host
-{
-  display: block;
-}
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/receptors/entry/entry.template.html b/src/atlasComponents/sapiViews/features/receptors/entry/entry.template.html
deleted file mode 100644
index e88ce49a8da4549d21f77e950af2c9a1361a4fb1..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/entry/entry.template.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<mat-card>
-  <spinner-cmp *ngIf="loading"></spinner-cmp>
-
-  <ng-template [ngTemplateOutlet]="downloadBtn"
-    [ngTemplateOutletContext]="{
-      label: 'fingerprint.tsv',
-      filename: 'fingerprint.tsv',
-      receptorCmp: fp
-    }">
-  </ng-template>
-  <sxplr-sapiviews-features-receptor-fingerprint
-    [sxplr-sapiviews-features-receptor-data]="receptorData"
-    (sxplr-sapiviews-features-receptor-fingerprint-receptor-selected)="setSelectedSymbol($event)"
-    #fp="sxplrSapiViewsFeaturesReceptorFP"
-  >
-  </sxplr-sapiviews-features-receptor-fingerprint>
-
-  <mat-form-field appearance="fill" class="w-100">
-    <mat-select [(ngModel)]="selectedSymbol">
-      <mat-option value="null" disabled>
-        --select--
-      </mat-option>
-
-      <mat-option [value]="option"
-        *ngFor="let option of symbolsOptions">
-        {{ option }}
-      </mat-option>
-    </mat-select>
-  </mat-form-field>
-
-  <ng-template [ngIf]="selectedSymbol">
-    
-    <ng-template [ngTemplateOutlet]="downloadBtn"
-      [ngTemplateOutletContext]="{
-        label: 'profile.tsv',
-        filename: 'profile.tsv',
-        receptorCmp: profile
-      }">
-    </ng-template>
-    <sxplr-sapiviews-features-receptor-profile
-      [sxplr-sapiviews-features-receptor-data]="receptorData"
-      [sxplr-sapiviews-features-receptor-profile-selected-symbol]="selectedSymbol"
-      #profile="sxplrSapiViewsFeaturesReceptorProfile">
-    </sxplr-sapiviews-features-receptor-profile>
-
-
-    <ng-template [ngTemplateOutlet]="downloadBtn"
-      [ngTemplateOutletContext]="{
-        label: 'autoradiograph.png',
-        filename: 'autoradiograph.png',
-        receptorCmp: ar
-      }">
-    </ng-template>
-    <sxplr-sapiviews-features-receptor-autoradiograph
-      [sxplr-sapiviews-features-receptor-data]="receptorData"
-      [sxplr-sapiviews-features-receptor-autoradiograph-selected-symbol]="selectedSymbol"
-      #ar="sxplrSapiViewsFeaturesReceptorAR"
-    >
-    </sxplr-sapiviews-features-receptor-autoradiograph>
-  </ng-template>
-
-</mat-card>
-
-
-<!-- download data button template -->
-<ng-template #downloadBtn
-  let-label="label"
-  let-filename="filename"
-  let-receptorCmp="receptorCmp">
-  <button mat-button
-    *ngIf="receptorCmp.dataBlobAvailable"
-    single-file-output
-    [single-file-output-blob]="receptorCmp.dataBlob$ | async"
-    [single-file-output-filename]="filename">
-    <i class="fas fa-download"></i>
-    <span>
-      {{ label }}
-    </span>
-  </button>
-</ng-template>
diff --git a/src/atlasComponents/sapiViews/features/receptors/fingerprint/fingerprint.component.ts b/src/atlasComponents/sapiViews/features/receptors/fingerprint/fingerprint.component.ts
deleted file mode 100644
index 98c5b0076da0350cd0a30fdc01633ee57b6e3bab..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/fingerprint/fingerprint.component.ts
+++ /dev/null
@@ -1,128 +0,0 @@
-import { AfterViewInit, Component, ElementRef, EventEmitter, HostListener, Inject, OnChanges, OnDestroy, Output, SimpleChanges, ViewChild } from "@angular/core";
-import { fromEvent, Observable, Subscription } from "rxjs";
-import { distinctUntilChanged, map } from "rxjs/operators";
-import { SAPI } from "src/atlasComponents/sapi";
-import { SapiRegionalFeatureReceptorModel } from "src/atlasComponents/sapi/type";
-import { DARKTHEME } from "src/util/injectionTokens";
-import { BaseReceptor } from "../base";
-
-/**
- * kg-dataset-dumb-radar requires input to be a different shape
- * once the the return signature
- */
-type RequiredType = {
-  receptor: {
-    label: string
-  }
-  density: {
-    mean: number
-    sd: number
-    unit: string
-  }
-}
-
-function transformRadar(input: SapiRegionalFeatureReceptorModel['data']['fingerprints']): RequiredType[]{
-  const listRequired: RequiredType[] = []
-  for (const key in input) {
-    const item = input[key]
-    listRequired.push({
-      receptor: {
-        label: key
-      },
-      density: {
-        mean: item.mean,
-        sd: item.std,
-        unit: item.unit
-      }
-    })
-    
-  }
-  return listRequired
-}
-
-@Component({
-  selector: 'sxplr-sapiviews-features-receptor-fingerprint',
-  templateUrl: './fingerprint.template.html',
-  styleUrls: [
-    './fingerprint.style.css'
-  ],
-  exportAs: "sxplrSapiViewsFeaturesReceptorFP"
-})
-
-export class Fingerprint extends BaseReceptor implements OnChanges, AfterViewInit, OnDestroy{
-
-  @Output('sxplr-sapiviews-features-receptor-fingerprint-receptor-selected')
-  selectReceptor = new EventEmitter<string>()
-
-  @HostListener('click')
-  onClick(){
-    if (this.mouseOverReceptor)  {
-      this.selectReceptor.emit(this.mouseOverReceptor)
-    }
-  }
-
-  async ngOnChanges(simpleChanges: SimpleChanges) {
-    await super.ngOnChanges(simpleChanges)
-  }
-
-  constructor(sapi: SAPI, private el: ElementRef, @Inject(DARKTHEME) public darktheme$: Observable<boolean>){
-    super(sapi)
-  }
-
-  get dumbRadarCmp(){
-    return this.el?.nativeElement?.querySelector('kg-dataset-dumb-radar')
-  }
-
-  private setDumbRadarPlease = false
-  private sub: Subscription[] = []
-  private mouseOverReceptor: string
-
-  ngOnDestroy(){
-    while (this.sub.length > 0) this.sub.pop().unsubscribe()
-  }
-
-  ngAfterViewInit(){
-    if (this.setDumbRadarPlease) {
-      this.rerender()
-    }
-
-    this.sub.push(
-      fromEvent<CustomEvent>(this.el.nativeElement, 'kg-ds-prv-regional-feature-mouseover').pipe(
-        map(ev => ev.detail?.data?.receptor?.label),
-        distinctUntilChanged(),
-      ).subscribe(label => {
-        this.mouseOverReceptor = label
-      })
-    )
-  }
-
-  rerender(): void {
-   
-    if (!this.dumbRadarCmp) {
-      this.setDumbRadarPlease = true
-      return
-    }
-    
-    this.dumbRadarCmp.metaBs = this.receptorData.data.receptor_symbols
-    this.dumbRadarCmp.radar= transformRadar(this.receptorData.data.fingerprints)
-
-    this.dataBlob$.next(this.getDataBlob())
-    this.dataBlobAvailable = true
-    this.setDumbRadarPlease = false
-  }
-
-  private getDataBlob(): Blob {
-    if (!this.receptorData?.data?.fingerprints) throw new Error(`raw data unavailable. Try again later.`)
-    const fingerprints = this.receptorData.data.fingerprints
-    const output: string[] = []
-    output.push(
-      ["name", "mean", "std"].join("\t")
-    )
-    for (const key in fingerprints) {
-      output.push(
-        [key, fingerprints[key].mean, fingerprints[key].std].join("\t")
-      )
-    }
-    return new Blob([output.join("\n")], { type: 'text/tab-separated-values' })
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/receptors/fingerprint/fingerprint.stories.ts b/src/atlasComponents/sapiViews/features/receptors/fingerprint/fingerprint.stories.ts
deleted file mode 100644
index 1c3327ac1470cc2a7d650aa3b5196f70958dbbe2..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/fingerprint/fingerprint.stories.ts
+++ /dev/null
@@ -1,128 +0,0 @@
-import { CommonModule, DOCUMENT } from "@angular/common"
-import { HttpClientModule } from "@angular/common/http"
-import { Component, EventEmitter, Output } from "@angular/core"
-import { Meta, moduleMetadata, Story } from "@storybook/angular"
-import { SAPI, SapiAtlasModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi"
-import { getHoc1RightFeatureDetail, getHoc1RightFeatures, getHoc1Right, getHumanAtlas, getJba29, getMni152, provideDarkTheme } from "src/atlasComponents/sapi/stories.base"
-import { SapiRegionalFeatureReceptorModel } from "src/atlasComponents/sapi/type"
-import { AngularMaterialModule } from "src/sharedModules"
-import { appendScriptFactory, APPEND_SCRIPT_TOKEN } from "src/util/constants"
-import { ReceptorViewModule } from ".."
-
-@Component({
-  selector: 'fingerprint-wrapper-cmp',
-  template: `
-  <sxplr-sapiviews-features-receptor-fingerprint
-    [sxplr-sapiviews-features-receptor-atlas]="atlas"
-    [sxplr-sapiviews-features-receptor-parcellation]="parcellation"
-    [sxplr-sapiviews-features-receptor-template]="template"
-    [sxplr-sapiviews-features-receptor-region]="region"
-    [sxplr-sapiviews-features-receptor-featureid]="featureId"
-    [sxplr-sapiviews-features-receptor-data]="feature"
-    (sxplr-sapiviews-features-receptor-fingerprint-receptor-selected)="selectReceptor.emit($event)"
-  >
-  </sxplr-sapiviews-features-receptor-fingerprint>
-  `,
-  styles: [
-    `
-    :host
-    {
-      display: block;
-      width: 20rem;
-      height: 20rem;
-    }
-    `
-  ]
-})
-class FingerprintWrapperCls {
-  atlas: SapiAtlasModel
-  parcellation: SapiParcellationModel
-  template: SapiSpaceModel
-  region: SapiRegionModel
-  feature: SapiRegionalFeatureReceptorModel
-  featureId: string
-
-  @Output()
-  selectReceptor = new EventEmitter()
-}
-
-export default {
-  component: FingerprintWrapperCls,
-  decorators: [
-    moduleMetadata({
-      imports: [
-        CommonModule,
-        AngularMaterialModule,
-        HttpClientModule,
-        ReceptorViewModule,
-      ],
-      providers: [
-        SAPI,
-        {
-          provide: APPEND_SCRIPT_TOKEN,
-          useFactory: appendScriptFactory,
-          deps: [ DOCUMENT ]
-        },
-        ...provideDarkTheme,
-      ],
-      declarations: []
-    })
-  ],
-} as Meta
-
-const Template: Story<FingerprintWrapperCls> = (args: FingerprintWrapperCls, { loaded }) => {
-  const { atlas, parc, space, region, featureId, feature } = loaded
-  return ({
-    props: {
-      ...args,
-      atlas: atlas,
-      parcellation: parc,
-      template: space,
-      region: region,
-      feature,
-      featureId,
-    },
-  })
-}
-
-const loadFeat = async () => {
-  const atlas = await getHumanAtlas()
-  const parc = await getJba29()
-  const region = await getHoc1Right()
-  const space = await getMni152()
-  const features = await getHoc1RightFeatures()
-  const receptorfeat = features.find(f => f['@type'] === "siibra/features/receptor")
-  const feature = await getHoc1RightFeatureDetail(receptorfeat["@id"])
-  return {
-    atlas,
-    parc,
-    space,
-    region,
-    featureId: receptorfeat["@id"],
-    feature
-  }
-}
-
-export const Default = Template.bind({})
-Default.args = {
-
-}
-Default.loaders = [
-  async () => {
-    const { atlas, parc, space, region, featureId } = await loadFeat()
-    return {
-      atlas, parc, space, region, featureId
-    }
-  }
-]
-
-export const LoadViaDirectlyInjectData = Template.bind({})
-LoadViaDirectlyInjectData.loaders = [
-  async () => {
-
-    const { feature } = await loadFeat()
-    return {
-      feature
-    }
-  }
-]
diff --git a/src/atlasComponents/sapiViews/features/receptors/fingerprint/fingerprint.style.css b/src/atlasComponents/sapiViews/features/receptors/fingerprint/fingerprint.style.css
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/atlasComponents/sapiViews/features/receptors/fingerprint/fingerprint.template.html b/src/atlasComponents/sapiViews/features/receptors/fingerprint/fingerprint.template.html
deleted file mode 100644
index c315de7303ead0ebb5e0c2032fd4a647d381dd39..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/fingerprint/fingerprint.template.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<kg-dataset-dumb-radar
-  [attr.kg-ds-prv-darkmode]="darktheme$ | async">
-</kg-dataset-dumb-radar>
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/receptors/index.ts b/src/atlasComponents/sapiViews/features/receptors/index.ts
deleted file mode 100644
index 7ccaf9d94dbb4e164a98d600c701de5f419ed346..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { Autoradiography } from "./autoradiography/autoradiography.component";
-export { Fingerprint } from "./fingerprint/fingerprint.component"
-export { Profile } from "./profile/profile.component"
-export { ReceptorViewModule } from "./module"
diff --git a/src/atlasComponents/sapiViews/features/receptors/module.ts b/src/atlasComponents/sapiViews/features/receptors/module.ts
deleted file mode 100644
index 34f29d7f07be5b5df7ddfaad65d9f2c6423fbb04..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/module.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { CommonModule } from "@angular/common";
-import { APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core";
-import { FormsModule } from "@angular/forms";
-import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
-import { SpinnerModule } from "src/components/spinner";
-import { AngularMaterialModule } from "src/sharedModules";
-import { APPEND_SCRIPT_TOKEN } from "src/util/constants";
-import { ZipFilesOutputModule } from "src/zipFilesOutput/module";
-import { Autoradiography } from "./autoradiography/autoradiography.component";
-import { Entry } from "./entry/entry.component";
-import { Fingerprint } from "./fingerprint/fingerprint.component"
-import { Profile } from "./profile/profile.component"
-
-@NgModule({
-  imports: [
-    CommonModule,
-    AngularMaterialModule,
-    FormsModule,
-    BrowserAnimationsModule,
-    SpinnerModule,
-    ZipFilesOutputModule,
-  ],
-  declarations: [
-    Autoradiography,
-    Fingerprint,
-    Profile,
-    Entry,
-  ],
-  exports: [
-    Autoradiography,
-    Fingerprint,
-    Profile,
-    Entry,
-  ],
-  schemas: [
-    CUSTOM_ELEMENTS_SCHEMA,
-  ]
-})
-
-export class ReceptorViewModule{}
diff --git a/src/atlasComponents/sapiViews/features/receptors/profile/profile.component.ts b/src/atlasComponents/sapiViews/features/receptors/profile/profile.component.ts
deleted file mode 100644
index 864584597568df263ed93be923f757bcd585f125..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/profile/profile.component.ts
+++ /dev/null
@@ -1,91 +0,0 @@
-import { AfterViewInit, Component, ElementRef, Inject, Input, OnChanges, SimpleChanges } from "@angular/core";
-import { Observable } from "rxjs";
-import { SAPI } from "src/atlasComponents/sapi";
-import { PARSE_TYPEDARRAY } from "src/atlasComponents/sapi/sapi.service";
-import { DARKTHEME } from "src/util/injectionTokens";
-import { BaseReceptor } from "../base";
-
-@Component({
-  selector: `sxplr-sapiviews-features-receptor-profile`,
-  templateUrl: './profile.template.html',
-  styleUrls: [
-    './profile.style.css'
-  ],
-  exportAs: "sxplrSapiViewsFeaturesReceptorProfile"
-})
-
-export class Profile extends BaseReceptor implements AfterViewInit, OnChanges{
-
-  @Input('sxplr-sapiviews-features-receptor-profile-selected-symbol')
-  selectedSymbol: string
-
-  private pleaseRender = false
-  dumbLineData: Record<number, number>
-
-  constructor(sapi: SAPI, private el: ElementRef, @Inject(DARKTHEME) public darktheme$: Observable<boolean> ){
-    super(sapi)
-  }
-
-  async ngOnChanges(simpleChanges: SimpleChanges) {
-    await super.ngOnChanges(simpleChanges)
-    if (!this.receptorData) {
-      return
-    }
-    if (this.selectedSymbol) {
-      this.rerender()
-    }
-  }
-
-  ngAfterViewInit(): void {
-    if (this.pleaseRender) {
-      this.rerender()
-    }
-  }
-
-  get dumbLineCmp(){
-    return this.el?.nativeElement?.querySelector('kg-dataset-dumb-line')
-  }
-
-  async rerender() {
-    this.dataBlobAvailable = false
-    if (!this.dumbLineCmp) {
-      this.pleaseRender = true
-      return
-    }
-    this.pleaseRender = false
-    this.dumbLineData = null
-    
-    if (this.receptorData?.data?.profiles?.[this.selectedSymbol]) {
-      const { rawArray } = await this.sapi.processNpArrayData<PARSE_TYPEDARRAY.RAW_ARRAY>(
-        this.receptorData.data.profiles[this.selectedSymbol].density,
-        PARSE_TYPEDARRAY.RAW_ARRAY
-      )
-      if (rawArray.length !== 1) {
-        this.error = `expected rawArray.length to be 1, but is ${rawArray.length} instead`
-        return
-      }
-      const prof = rawArray[0]
-      this.dumbLineData = {}
-      for (const idx in prof) {
-        this.dumbLineData[idx] = prof[idx]
-      }
-      this.dataBlob$.next(this.getDataBlob())
-      this.dataBlobAvailable = true
-      this.dumbLineCmp.profileBs = this.dumbLineData
-    }
-  }
-
-  private getDataBlob(): Blob {
-    if (!this.dumbLineData) throw new Error(`data has not been populated. Perhaps wait until render finishes?`)
-    const output: string[] = []
-    output.push(
-      ["cortical depth (%)", "receptor density (fmol/mg)"].join("\t")
-    )
-    for (const key in this.dumbLineData) {
-      output.push(
-        [key, this.dumbLineData[key]].join("\t")
-      )
-    }
-    return new Blob([output.join("\n")], { type: 'text/tab-separated-values' })
-  }
-}
diff --git a/src/atlasComponents/sapiViews/features/receptors/profile/profile.stories.ts b/src/atlasComponents/sapiViews/features/receptors/profile/profile.stories.ts
deleted file mode 100644
index 83d309f52d008d14183329f0539cf179c0354867..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/profile/profile.stories.ts
+++ /dev/null
@@ -1,155 +0,0 @@
-import { CommonModule, DOCUMENT } from "@angular/common"
-import { HttpClientModule } from "@angular/common/http"
-import { Component, NgZone, ViewChild } from "@angular/core"
-import { FormsModule } from "@angular/forms"
-import { BrowserAnimationsModule } from "@angular/platform-browser/animations"
-import { Meta, moduleMetadata, Story } from "@storybook/angular"
-import { BehaviorSubject, Subject } from "rxjs"
-import { SAPI, SapiAtlasModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi"
-import { addAddonEventListener, getHoc1RightFeatureDetail, getHoc1RightFeatures, getHoc1Right, getHumanAtlas, getJba29, getMni152, provideDarkTheme } from "src/atlasComponents/sapi/stories.base"
-import { SapiRegionalFeatureReceptorModel } from "src/atlasComponents/sapi/type"
-import { AngularMaterialModule } from "src/sharedModules"
-import { appendScriptFactory, APPEND_SCRIPT_TOKEN } from "src/util/constants"
-import { DARKTHEME } from "src/util/injectionTokens"
-import { ReceptorViewModule } from ".."
-import { Profile } from "./profile.component"
-
-@Component({
-  selector: 'autoradiograph-wrapper-cmp',
-  template: `
-  <mat-form-field appearance="fill">
-    <mat-select [(ngModel)]="selectedSymbol">
-      <mat-option value="" disabled>
-        --select--
-      </mat-option>
-
-      <mat-option [value]="option"
-        *ngFor="let option of options">
-        {{ option }}
-      </mat-option>
-    </mat-select>
-  </mat-form-field>
-  <sxplr-sapiviews-features-receptor-profile
-    class="d-inline-block w-100 h-100"
-    [sxplr-sapiviews-features-receptor-atlas]="atlas"
-    [sxplr-sapiviews-features-receptor-parcellation]="parcellation"
-    [sxplr-sapiviews-features-receptor-template]="template"
-    [sxplr-sapiviews-features-receptor-region]="region"
-    [sxplr-sapiviews-features-receptor-featureid]="featureId"
-    [sxplr-sapiviews-features-receptor-data]="feature"
-    [sxplr-sapiviews-features-receptor-profile-selected-symbol]="selectedSymbol"
-  >
-  </sxplr-sapiviews-features-receptor-profile>
-  `,
-  styles: [
-    `
-    :host
-    {
-      display: block;
-      max-width: 24rem;
-      max-height: 24rem;
-    }
-    `
-  ]
-})
-class ProfileWrapperCls {
-  atlas: SapiAtlasModel
-  parcellation: SapiParcellationModel
-  template: SapiSpaceModel
-  region: SapiRegionModel
-
-  feature: SapiRegionalFeatureReceptorModel
-  featureId: string
-
-  @ViewChild(Profile)
-  profile: Profile
-
-  selectedSymbol: string
-
-  get options(){
-    return Object.keys(this.feature?.data?.profiles || this.profile?.receptorData?.data?.profiles || {})
-  }
-}
-
-export default {
-  component: ProfileWrapperCls,
-  decorators: [
-    moduleMetadata({
-      imports: [
-        CommonModule,
-        AngularMaterialModule,
-        HttpClientModule,
-        BrowserAnimationsModule,
-        FormsModule,
-        ReceptorViewModule,
-      ],
-      providers: [
-        SAPI,
-        {
-          provide: APPEND_SCRIPT_TOKEN,
-          useFactory: appendScriptFactory,
-          deps: [ DOCUMENT ]
-        },
-        ...provideDarkTheme,
-      ],
-      declarations: []
-    })
-  ],
-} as Meta
-
-const Template: Story<ProfileWrapperCls> = (args: ProfileWrapperCls, { loaded }) => {
-  const { atlas, parc, space, region, featureId, feature } = loaded
-  return ({
-    props: {
-      ...args,
-      atlas: atlas,
-      parcellation: parc,
-      template: space,
-      region: region,
-      feature,
-      featureId,
-    },
-  })
-}
-
-const loadFeat = async () => {
-  const atlas = await getHumanAtlas()
-  const parc = await getJba29()
-  const region = await getHoc1Right()
-  const space = await getMni152()
-  const features = await getHoc1RightFeatures()
-  const receptorfeat = features.find(f => f['@type'] === "siibra/features/receptor")
-  const feature = await getHoc1RightFeatureDetail(receptorfeat["@id"])
-  return {
-    atlas,
-    parc,
-    space,
-    region,
-    featureId: receptorfeat["@id"],
-    feature
-  }
-}
-
-export const Default = Template.bind({})
-Default.args = {
-
-}
-Default.loaders = [
-  async () => {
-    const { atlas, parc, space, region, featureId } = await loadFeat()
-    return {
-      atlas, parc, space, region, featureId
-    }
-  }
-]
-
-export const LoadViaDirectlyInjectData = Template.bind({})
-LoadViaDirectlyInjectData.loaders = [
-  async () => {
-
-    const { feature } = await loadFeat()
-    return {
-      feature
-    }
-  }
-]
diff --git a/src/atlasComponents/sapiViews/features/receptors/profile/profile.style.css b/src/atlasComponents/sapiViews/features/receptors/profile/profile.style.css
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/atlasComponents/sapiViews/features/receptors/profile/profile.template.html b/src/atlasComponents/sapiViews/features/receptors/profile/profile.template.html
deleted file mode 100644
index 182db6578a311b5661b8a571c927ab11d6c149ae..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/receptors/profile/profile.template.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<kg-dataset-dumb-line
-  [attr.kg-ds-prv-darkmode]="darktheme$ | async">
-</kg-dataset-dumb-line>
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/voi/index.ts b/src/atlasComponents/sapiViews/features/voi/index.ts
deleted file mode 100644
index 55b2fbc01ff6805ae01ef334e88d52db40ded951..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/voi/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { SapiViewsFeaturesVoiModule } from "./module"
-export { SapiViewsFeaturesVoiQuery } from "./voiQuery.directive"
diff --git a/src/atlasComponents/sapiViews/features/voi/module.ts b/src/atlasComponents/sapiViews/features/voi/module.ts
deleted file mode 100644
index e9817aacad60533082cbf4be70c62831d50727cd..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/voi/module.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { CommonModule } from "@angular/common";
-import { NgModule } from "@angular/core";
-import { SAPIModule } from "src/atlasComponents/sapi/module";
-import { SapiViewsFeaturesVoiQuery } from "./voiQuery.directive";
-
-@NgModule({
-  imports: [
-    CommonModule,
-    SAPIModule,
-  ],
-  declarations: [
-    SapiViewsFeaturesVoiQuery,
-  ],
-  exports: [
-    SapiViewsFeaturesVoiQuery
-  ]
-})
-
-export class SapiViewsFeaturesVoiModule{}
diff --git a/src/atlasComponents/sapiViews/features/voi/voiQuery.directive.ts b/src/atlasComponents/sapiViews/features/voi/voiQuery.directive.ts
deleted file mode 100644
index 623011d89b1d2385fec8ca30c3456082056128e7..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/features/voi/voiQuery.directive.ts
+++ /dev/null
@@ -1,190 +0,0 @@
-import { Directive, EventEmitter, Inject, Input, OnChanges, OnDestroy, Optional, Output, SimpleChanges } from "@angular/core";
-import { interval, merge, Observable, of, Subject, Subscription } from "rxjs";
-import { debounce, debounceTime, distinctUntilChanged, filter, pairwise, shareReplay, startWith, switchMap, take, tap } from "rxjs/operators";
-import { AnnotationLayer, TNgAnnotationPoint, TNgAnnotationAABBox } from "src/atlasComponents/annotations";
-import { SAPI } from "src/atlasComponents/sapi/sapi.service";
-import { BoundingBoxConcept, SapiAtlasModel, SapiSpaceModel, SapiVOIDataResponse, OpenMINDSCoordinatePoint } from "src/atlasComponents/sapi/type";
-import { ClickInterceptor, CLICK_INTERCEPTOR_INJECTOR } from "src/util";
-import { arrayEqual } from "src/util/array";
-
-@Directive({
-  selector: '[sxplr-sapiviews-features-voi-query]',
-  exportAs: 'sxplrSapiViewsFeaturesVoiQuery'
-})
-
-export class SapiViewsFeaturesVoiQuery implements OnChanges, OnDestroy{
-
-  static VOI_LAYER_NAME = 'voi-annotation-layer'
-  static VOI_ANNOTATION_COLOR = "#ffff00"
-  private voiQuerySpec = new Subject<{
-    atlas: SapiAtlasModel
-    space: SapiSpaceModel
-    bbox: BoundingBoxConcept
-  }>()
-
-  private canFetchVoi(){
-    return !!this.atlas && !!this.space && !!this.bbox
-  }
-  
-  @Input('sxplr-sapiviews-features-voi-query-atlas')
-  atlas: SapiAtlasModel
-
-  @Input('sxplr-sapiviews-features-voi-query-space')
-  space: SapiSpaceModel
-
-  @Input('sxplr-sapiviews-features-voi-query-bbox')
-  bbox: BoundingBoxConcept
-
-  @Output('sxplr-sapiviews-features-voi-query-onhover')
-  onhover = new EventEmitter<SapiVOIDataResponse>()
-
-  @Output('sxplr-sapiviews-features-voi-query-onclick')
-  onclick = new EventEmitter<SapiVOIDataResponse>()
-
-  public busy$ = new EventEmitter<boolean>()
-  public features$: Observable<SapiVOIDataResponse[]> = this.voiQuerySpec.pipe(
-    debounceTime(160),
-    tap(() => this.busy$.emit(true)),
-    switchMap(({ atlas, bbox, space }) => {
-      if (!this.canFetchVoi()) {
-        return of([])
-      }
-      return merge(
-        of([]),
-        this.sapi.getSpace(atlas["@id"], space["@id"]).getFeatures({ bbox: JSON.stringify(bbox) }).pipe(
-          tap(val => {
-            this.busy$.emit(false)
-          })
-        )
-      )
-    }),
-    startWith([]),
-    shareReplay(1)
-  )
-
-  private hoveredFeat: SapiVOIDataResponse
-  private onDestroyCb: (() => void)[] = []
-  private subscription: Subscription[] = []
-  ngOnChanges(simpleChanges: SimpleChanges): void {
-    if (simpleChanges.space) {
-      this.voiBBoxSvc = null
-    }
-    const {
-      atlas,
-      space,
-      bbox
-    } = this
-    this.voiQuerySpec.next({ atlas, space, bbox })
-  }
-  ngOnDestroy(): void {
-    if (this.voiBBoxSvc) this.voiBBoxSvc.dispose()
-    while (this.subscription.length > 0) this.subscription.pop().unsubscribe()
-    while (this.voiSubs.length > 0) this.voiSubs.pop().unsubscribe()
-    while(this.onDestroyCb.length > 0) this.onDestroyCb.pop()()
-  }
-
-  handleOnHoverFeature({ id }: { id?: string }){
-    const ann = this.annotationIdToFeature.get(id)
-    this.hoveredFeat = ann
-    this.onhover.emit(ann)
-  }
-
-  private voiSubs: Subscription[] = []
-  private _voiBBoxSvc: AnnotationLayer
-  get voiBBoxSvc(): AnnotationLayer {
-    if (this._voiBBoxSvc) return this._voiBBoxSvc
-    try {
-      const layer = AnnotationLayer.Get(
-        SapiViewsFeaturesVoiQuery.VOI_LAYER_NAME,
-        SapiViewsFeaturesVoiQuery.VOI_ANNOTATION_COLOR
-      )
-      this._voiBBoxSvc = layer
-      this.voiSubs.push(
-        layer.onHover.subscribe(val => this.handleOnHoverFeature(val || {}))
-      )
-      return layer
-    } catch (e) {
-      return null
-    }
-  }
-  set voiBBoxSvc(val) {
-    if (!!val) {
-      throw new Error(`cannot set voiBBoxSvc directly`)
-    }
-    while (this.voiSubs.length > 0) this.voiSubs.pop().unsubscribe()
-    this._voiBBoxSvc && this._voiBBoxSvc.dispose()
-    this._voiBBoxSvc = null
-  }
-
-  constructor(
-    private sapi: SAPI,
-    @Optional() @Inject(CLICK_INTERCEPTOR_INJECTOR) clickInterceptor: ClickInterceptor,
-  ){
-    const handle = () => {
-      if (!this.hoveredFeat) return true
-      this.onclick.emit(this.hoveredFeat)
-      return false
-    }
-    this.onDestroyCb.push(
-      () => clickInterceptor.deregister(handle)
-    )
-    clickInterceptor.register(handle)
-    this.subscription.push(
-      this.features$.pipe(
-        startWith([] as SapiVOIDataResponse[]),
-        distinctUntilChanged(arrayEqual((o, n) => o["@id"] === n["@id"])),
-        pairwise(),
-        debounce(() => 
-          interval(16).pipe(
-            filter(() => !!this.voiBBoxSvc),
-            take(1),
-          )
-        ),
-      ).subscribe(([ prev, curr ]) => {
-        for (const v of prev) {
-          const box = this.pointsToAABB(v.location.maxpoint, v.location.minpoint)
-          const point = this.pointToPoint(v.location.center)
-          this.annotationIdToFeature.delete(box.id)
-          this.annotationIdToFeature.delete(point.id)
-          if (!this.voiBBoxSvc) continue
-          for (const ann of [box, point]) {
-            this.voiBBoxSvc.removeAnnotation({
-              id: ann.id
-            })
-          }
-        }
-        for (const v of curr) {
-          const box = this.pointsToAABB(v.location.maxpoint, v.location.minpoint)
-          const point = this.pointToPoint(v.location.center)
-          this.annotationIdToFeature.set(box.id, v)
-          this.annotationIdToFeature.set(point.id, v)
-          if (!this.voiBBoxSvc) {
-            throw new Error(`annotation is expected to be added, but annotation layer cannot be instantiated.`)
-          }
-          for (const ann of [box, point]) {
-            this.voiBBoxSvc.updateAnnotation(ann)
-          }
-        }
-        if (this.voiBBoxSvc) this.voiBBoxSvc.setVisible(true)
-      })
-    )
-  }
-
-  private annotationIdToFeature = new Map<string, SapiVOIDataResponse>()
-
-  private pointsToAABB(pointA: OpenMINDSCoordinatePoint, pointB: OpenMINDSCoordinatePoint): TNgAnnotationAABBox{
-    return {
-      id: `${SapiViewsFeaturesVoiQuery.VOI_LAYER_NAME}:${pointA["@id"]}:${pointB["@id"]}`,
-      pointA: pointA.coordinates.map(v => v.value * 1e6) as [number, number, number],
-      pointB: pointB.coordinates.map(v => v.value * 1e6) as [number, number, number],
-      type: "aabbox"
-    }
-  }
-  private pointToPoint(point: OpenMINDSCoordinatePoint): TNgAnnotationPoint {
-    return {
-      id: `${SapiViewsFeaturesVoiQuery.VOI_LAYER_NAME}:${point["@id"]}`,
-      point: point.coordinates.map(v => v.value * 1e6) as [number, number, number],
-      type: "point"
-    }
-  }
-}
diff --git a/src/atlasComponents/sapiViews/module.ts b/src/atlasComponents/sapiViews/module.ts
index ff029f0362be7205bec3a45957debcc25f87197c..aa5faf15b444b6a3158c09c0af2d05ac2b52a4de 100644
--- a/src/atlasComponents/sapiViews/module.ts
+++ b/src/atlasComponents/sapiViews/module.ts
@@ -1,14 +1,11 @@
 import { NgModule } from "@angular/core";
 import { SapiViewsCoreModule } from "./core";
-import { SapiViewsFeaturesModule } from "./features";
 
 @NgModule({
   imports: [
-    SapiViewsFeaturesModule,
     SapiViewsCoreModule,
   ],
   exports: [
-    SapiViewsFeaturesModule,
     SapiViewsCoreModule,
   ]
 })
diff --git a/src/atlasComponents/sapiViews/richDataset.stories.ts b/src/atlasComponents/sapiViews/richDataset.stories.ts
deleted file mode 100644
index 03ac405b682240aedd06eac97db2b8d659e55d00..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/richDataset.stories.ts
+++ /dev/null
@@ -1,138 +0,0 @@
-import { CommonModule } from "@angular/common"
-import { HttpClientModule } from "@angular/common/http"
-import { Component } from "@angular/core"
-import { provideMockStore } from "@ngrx/store/testing"
-import { Meta, moduleMetadata, Story } from "@storybook/angular"
-import { SAPI } from "src/atlasComponents/sapi"
-import { getHoc1RightFeatureDetail, getHoc1RightFeatures, getHoc1Right, getHumanAtlas, getJba29, getMni152, provideDarkTheme, getMni152SpatialFeatureHoc1Right } from "src/atlasComponents/sapi/stories.base"
-import { AngularMaterialModule } from "src/sharedModules"
-import { cleanIeegSessionDatasets, SapiAtlasModel, SapiFeatureModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "../sapi/type"
-import { SapiViewsCoreDatasetModule } from "./core/datasets"
-import { SapiViewsFeaturesModule } from "./features"
-
-@Component({
-  selector: `rich-dataset-wrapper-cmp`,
-  template: `
-  <div *ngIf="!dataset">
-    Dataset must be provided
-  </div>
-  <mat-card *ngIf="dataset">
-    <sxplr-sapiviews-core-datasets-dataset
-      [sxplr-sapiviews-core-datasets-dataset-input]="dataset">
-    </sxplr-sapiviews-core-datasets-dataset>
-
-    <sxplr-sapiviews-features-entry
-      [sxplr-sapiviews-features-entry-atlas]="atlas"
-      [sxplr-sapiviews-features-entry-space]="template"
-      [sxplr-sapiviews-features-entry-parcellation]="parcellation"
-      [sxplr-sapiviews-features-entry-region]="region"
-      [sxplr-sapiviews-features-entry-feature]="dataset">
-    </sxplr-sapiviews-features-entry>
-  </mat-card>
-  
-  `,
-  styles: [
-    `mat-card { max-width: 40rem; }`
-  ]
-})
-
-class RichDatasetWrapperCmp {
-  atlas: SapiAtlasModel
-  parcellation: SapiParcellationModel
-  template: SapiSpaceModel
-  region: SapiRegionModel
-  dataset: SapiFeatureModel
-}
-
-export default {
-  component: RichDatasetWrapperCmp,
-  decorators: [
-    moduleMetadata({
-      imports: [
-        AngularMaterialModule,
-        CommonModule,
-        HttpClientModule,
-        SapiViewsCoreDatasetModule,
-        SapiViewsFeaturesModule,
-      ],
-      providers: [
-        SAPI,
-        provideMockStore(),
-        ...provideDarkTheme,
-      ],
-      declarations: []
-    })
-  ],
-} as Meta
-
-const Template: Story<RichDatasetWrapperCmp> = (args: RichDatasetWrapperCmp, { loaded }) => {
-  const {
-    
-    atlas, 
-    parcellation, 
-    template, 
-    region, 
-    feature
-  } = loaded
-  return ({
-    props: {
-      atlas, 
-      parcellation, 
-      template, 
-      region, 
-      dataset: feature,
-    },
-  })
-}
-
-const loadRegionMetadata = async () => {
-
-  const atlas = await getHumanAtlas()
-  const parcellation = await getJba29()
-  const template = await getMni152()
-  const region = await getHoc1Right()
-  return {
-    atlas, 
-    parcellation, 
-    template, 
-    region, 
-  }
-}
-
-const loadFeat = async () => {
-  const features = await getHoc1RightFeatures()
-  return { features }
-}
-
-export const ReceptorDataset = Template.bind({})
-ReceptorDataset.args = {
-
-}
-ReceptorDataset.loaders = [
-  async () => {
-    return await loadRegionMetadata()
-  },
-  async () => {
-    const { features } = await loadFeat()
-    const receptorfeat = features.find(f => f['@type'] === "siibra/features/receptor")
-    const feature = await getHoc1RightFeatureDetail(receptorfeat["@id"])
-    return { feature }
-  }
-]
-
-export const IeegDataset = Template.bind({})
-IeegDataset.args = {
-
-}
-IeegDataset.loaders = [
-  async () => {
-    return await loadRegionMetadata()
-  },
-  async () => {
-    const features = await getMni152SpatialFeatureHoc1Right()
-    const spatialFeats = features.filter(f => f["@type"] === "siibra/features/ieegSession")
-    const feature = cleanIeegSessionDatasets(spatialFeats)[0]
-    
-    return { feature }
-  }
-]
diff --git a/src/atlasComponents/sapiViews/util/module.ts b/src/atlasComponents/sapiViews/util/module.ts
index 2ab8ff874d96216b9ad2528ac1ed83a3e95c204d..e863302c8626f285de94af0b4347b302a8ac715d 100644
--- a/src/atlasComponents/sapiViews/util/module.ts
+++ b/src/atlasComponents/sapiViews/util/module.ts
@@ -1,9 +1,7 @@
 import { NgModule } from "@angular/core";
 import { AddUnitAndJoin } from "./addUnitAndJoin.pipe";
 import { EqualityPipe } from "./equality.pipe";
-import { IncludesPipe } from "./includes.pipe";
 import { NumbersPipe } from "./numbers.pipe";
-import { ParcellationSupportedInSpacePipe } from "./parcellationSupportedInSpace.pipe";
 import { ParseDoiPipe } from "./parseDoi.pipe";
 
 @NgModule({
@@ -12,16 +10,12 @@ import { ParseDoiPipe } from "./parseDoi.pipe";
     ParseDoiPipe,
     NumbersPipe,
     AddUnitAndJoin,
-    IncludesPipe,
-    ParcellationSupportedInSpacePipe,
   ],
   exports: [
     EqualityPipe,
     ParseDoiPipe,
     NumbersPipe,
     AddUnitAndJoin,
-    IncludesPipe,
-    ParcellationSupportedInSpacePipe,
   ]
 })
 
diff --git a/src/atlasComponents/sapiViews/util/parcellationSupportedInSpace.pipe.ts b/src/atlasComponents/sapiViews/util/parcellationSupportedInSpace.pipe.ts
deleted file mode 100644
index 8d69ecf0ce16d1df1227b985471003a8280110d5..0000000000000000000000000000000000000000
--- a/src/atlasComponents/sapiViews/util/parcellationSupportedInSpace.pipe.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { Pipe, PipeTransform } from "@angular/core";
-import { NEVER, Observable, of } from "rxjs";
-import { map } from "rxjs/operators";
-import { SAPIParcellation } from "src/atlasComponents/sapi/core";
-import { SAPI } from "src/atlasComponents/sapi/sapi.service";
-import { SapiParcellationModel, SapiSpaceModel } from "src/atlasComponents/sapi/type";
-
-export const knownExceptions = {
-  supported: {
-    /**
-     * jba29
-     */
-    'minds/core/parcellationatlas/v1.0.0/94c1125b-b87e-45e4-901c-00daee7f2579-290': [
-      /**
-       * big brain
-       */
-      'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588'
-    ]
-  }
-}
-
-@Pipe({
-  name: 'parcellationSuppportedInSpace',
-  pure: false,
-})
-
-export class ParcellationSupportedInSpacePipe implements PipeTransform{
-
-  constructor(private sapi: SAPI){}
-
-  public transform(parc: SapiParcellationModel|string, tmpl: SapiSpaceModel|string): Observable<boolean> {
-    if (!parc) return NEVER
-    const parcId = typeof parc === "string"
-      ? parc
-      : parc["@id"]
-    const tmplId = typeof tmpl === "string"
-      ? tmpl
-      : tmpl["@id"]
-    for (const key in knownExceptions.supported) {
-      if (key === parcId && knownExceptions.supported[key].indexOf(tmplId) >= 0) {
-        return of(true)
-      }
-    }
-    return this.sapi.registry.get<SAPIParcellation>(parcId).getVolumes().pipe(
-      map(volumes => volumes.some(v => v.data.space["@id"] === tmplId))
-    )
-  }
-}
\ No newline at end of file
diff --git a/src/atlasComponents/userAnnotations/annotationMode/annotationMode.component.ts b/src/atlasComponents/userAnnotations/annotationMode/annotationMode.component.ts
index 5eacf72e95c4baadee42cbb70d28a09ddb84dc62..accf24d9ec78d3d0d1503e62d9b2717bee468aa3 100644
--- a/src/atlasComponents/userAnnotations/annotationMode/annotationMode.component.ts
+++ b/src/atlasComponents/userAnnotations/annotationMode/annotationMode.component.ts
@@ -18,13 +18,7 @@ export class AnnotationMode implements OnDestroy{
 
   public ARIA_LABELS = ARIA_LABELS
 
-  public moduleAnnotationTypes: {
-    instance: {
-      name: string
-      iconClass: string
-    }
-    onClick: () => void
-  }[] = []
+  public moduleAnnotationTypes = this.modularToolSvc.moduleAnnotationTypes
 
   private onDestroyCb: (() => void)[] = []
 
@@ -34,7 +28,6 @@ export class AnnotationMode implements OnDestroy{
     @Optional() @Inject(CLICK_INTERCEPTOR_INJECTOR) clickInterceptor: ClickInterceptor,
     @Optional() @Inject(CONTEXT_MENU_ITEM_INJECTOR) ctxMenuInterceptor: TContextMenu<TContextMenuReg<TContextArg<'nehuba' | 'threeSurfer'>>>
   ) {
-    this.moduleAnnotationTypes = this.modularToolSvc.moduleAnnotationTypes
     const stopClickProp = () => false
     if (clickInterceptor) {
       const { register, deregister } = clickInterceptor
diff --git a/src/atlasComponents/userAnnotations/filterAnnotationBySpace.pipe.ts b/src/atlasComponents/userAnnotations/filterAnnotationBySpace.pipe.ts
index d339398c0a55865d2a4fce6e2feb9246e4a5606b..006909f05341ef58caddd23e12faedfebbca4507 100644
--- a/src/atlasComponents/userAnnotations/filterAnnotationBySpace.pipe.ts
+++ b/src/atlasComponents/userAnnotations/filterAnnotationBySpace.pipe.ts
@@ -1,5 +1,6 @@
 import { Pipe, PipeTransform } from "@angular/core";
 import { IAnnotationGeometry } from "./tools/type";
+import { SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes"
 
 type TOpts = {
   reverse?: boolean
@@ -11,10 +12,10 @@ type TOpts = {
 })
 
 export class FilterAnnotationsBySpace implements PipeTransform{
-  public transform(annotations: IAnnotationGeometry[], space: { '@id': string }, opts?: TOpts): IAnnotationGeometry[]{
+  public transform(annotations: IAnnotationGeometry[], space: SxplrTemplate, opts?: TOpts): IAnnotationGeometry[]{
     const { reverse = false } = opts || {}
     return reverse
-      ? annotations.filter(ann => ann.space?.["@id"] !== space?.["@id"])
-      : annotations.filter(ann => ann.space?.["@id"] === space?.["@id"])
+      ? annotations.filter(ann => ann.space?.id !== space?.id)
+      : annotations.filter(ann => ann.space?.id === space?.id)
   }
 }
diff --git a/src/atlasComponents/userAnnotations/singleAnnotationUnit/singleAnnotationUnit.component.ts b/src/atlasComponents/userAnnotations/singleAnnotationUnit/singleAnnotationUnit.component.ts
index 0bc24b95167e2ea75e17af99b52237f0120b88cc..15bfc561e3f86608e4b18f0de67970d1391d8af5 100644
--- a/src/atlasComponents/userAnnotations/singleAnnotationUnit/singleAnnotationUnit.component.ts
+++ b/src/atlasComponents/userAnnotations/singleAnnotationUnit/singleAnnotationUnit.component.ts
@@ -1,4 +1,4 @@
-import { AfterViewInit, Component, ComponentFactoryResolver, Inject, Injector, Input, OnDestroy, Optional, Pipe, PipeTransform, ViewChild, ViewContainerRef } from "@angular/core";
+import { AfterViewInit, Component, Injector, Input, OnDestroy, Pipe, PipeTransform, Type, ViewChild, ViewContainerRef } from "@angular/core";
 import { IAnnotationGeometry, UDPATE_ANNOTATION_TOKEN } from "../tools/type";
 import { Point } from '../tools/point'
 import { Polygon } from '../tools/poly'
@@ -30,16 +30,13 @@ export class SingleAnnotationUnit implements OnDestroy, AfterViewInit{
 
   private chSubs: Subscription[] = []
   private subs: Subscription[] = []
-  public templateSpaces: {
-    ['@id']: string
-  }[] = []
   ngOnChanges(){
     while(this.chSubs.length > 0) this.chSubs.pop().unsubscribe()
     
     this.formGrp = new UntypedFormGroup({
       name: new UntypedFormControl(this.managedAnnotation.name),
       spaceId: new UntypedFormControl({
-        value: this.managedAnnotation.space["@id"],
+        value: this.managedAnnotation.space.id,
         disabled: true
       }),
       desc: new UntypedFormControl(this.managedAnnotation.desc),
@@ -65,7 +62,6 @@ export class SingleAnnotationUnit implements OnDestroy, AfterViewInit{
     private store: Store<any>,
     private snackbar: MatSnackBar,
     private svc: ModularUserAnnotationToolService,
-    private cfr: ComponentFactoryResolver,
     private injector: Injector,
   ){
   }
@@ -79,7 +75,6 @@ export class SingleAnnotationUnit implements OnDestroy, AfterViewInit{
         })
         throw new Error(`Edit component not found!`)
       }
-      const cf = this.cfr.resolveComponentFactory(editCmp)
       
       const injector = Injector.create({
         providers: [{
@@ -88,7 +83,7 @@ export class SingleAnnotationUnit implements OnDestroy, AfterViewInit{
         }],
         parent: this.injector
       })
-      this.editAnnotationVCR.createComponent(cf, null, injector)
+      this.editAnnotationVCR.createComponent(editCmp as Type<unknown>, {injector})
     }
   }
 
diff --git a/src/atlasComponents/userAnnotations/singleAnnotationUnit/singleAnnotationUnit.template.html b/src/atlasComponents/userAnnotations/singleAnnotationUnit/singleAnnotationUnit.template.html
index 51f1c004700f834b92c3afd81d6cd93ee3d01026..c362a2edda62fe300e9b4d3d455ea065edd430d3 100644
--- a/src/atlasComponents/userAnnotations/singleAnnotationUnit/singleAnnotationUnit.template.html
+++ b/src/atlasComponents/userAnnotations/singleAnnotationUnit/singleAnnotationUnit.template.html
@@ -4,8 +4,8 @@
       Space
     </mat-label>
     <mat-select formControlName="spaceId">
-      <mat-option *ngFor="let tmpl of tmpls$ | async" [value]="tmpl['@id']">
-        {{ tmpl.fullName }}
+      <mat-option *ngFor="let tmpl of tmpls$ | async" [value]="tmpl.id">
+        {{ tmpl.name }}
       </mat-option>
     </mat-select>
   </mat-form-field>
diff --git a/src/atlasComponents/userAnnotations/tools/line.ts b/src/atlasComponents/userAnnotations/tools/line.ts
index 3d01d57dc41678c9958d1c52b41e734fce28ae28..c156a9e09544fb3e82b50820f49d50668a4ea094 100644
--- a/src/atlasComponents/userAnnotations/tools/line.ts
+++ b/src/atlasComponents/userAnnotations/tools/line.ts
@@ -127,6 +127,7 @@ export class Line extends IAnnotationGeometry{
       coordinatesFrom,
       coordinatesTo
     } = json
+    const { ['@id']: spaceId } = coordinateSpace
     if (type !== 'tmp/line') throw new Error(`cannot parse line from sands`)
     const fromPt = coordinatesFrom.map(c => {
       if (c.unit["@id"] !== 'id.link/mm') throw new Error(`Cannot parse unit`)
@@ -145,17 +146,17 @@ export class Line extends IAnnotationGeometry{
           x: fromPt[0],
           y: fromPt[1],
           z: fromPt[2],
-          space: coordinateSpace
+          space: { id: spaceId }
         }),
         new Point({
           '@type': "siibra-ex/annotation/point",
           x: toPoint[0],
           y: toPoint[1],
           z: toPoint[2],
-          space: coordinateSpace
+          space: { id: spaceId }
         })
       ],
-      space: coordinateSpace
+      space: { id: spaceId }
     })
     return line
   }
diff --git a/src/atlasComponents/userAnnotations/tools/line/line.template.html b/src/atlasComponents/userAnnotations/tools/line/line.template.html
index 3f72bd1d7a590f34b3f20636a44a7ff46f9ce2e2..2cff6f5feb88b61d0bdaed4008b2435fd30d0da4 100644
--- a/src/atlasComponents/userAnnotations/tools/line/line.template.html
+++ b/src/atlasComponents/userAnnotations/tools/line/line.template.html
@@ -7,7 +7,7 @@
 <mat-chip-list>
   <mat-chip *ngFor="let point of (updateAnnotation?.points || []) ; let i = index"
     (click)="gotoRoi(point)"
-    [matTooltip]="point">
+    [matTooltip]="point.toString()">
     {{ i }}
   </mat-chip>
 </mat-chip-list>
diff --git a/src/atlasComponents/userAnnotations/tools/point.ts b/src/atlasComponents/userAnnotations/tools/point.ts
index f69baf0e4045e8300de93c42a086b57ceee7292e..a2e10804108682e14e844481094063cfac3fad5c 100644
--- a/src/atlasComponents/userAnnotations/tools/point.ts
+++ b/src/atlasComponents/userAnnotations/tools/point.ts
@@ -56,6 +56,7 @@ export class Point extends IAnnotationGeometry {
       coordinateSpace,
       coordinates
     } = sands
+    const { ['@id']: spaceId } = coordinateSpace
     if (type === 'https://openminds.ebrains.eu/sands/CoordinatePoint') {
       const parsedCoordinate = coordinates.map(coord => {
         const { value, unit } = coord
@@ -64,7 +65,7 @@ export class Point extends IAnnotationGeometry {
       })
       const point = new Point({
         id,
-        space: coordinateSpace,
+        space: { id: spaceId },
         "@type": 'siibra-ex/annotation/point',
         x: parsedCoordinate[0],
         y: parsedCoordinate[1],
diff --git a/src/atlasComponents/userAnnotations/tools/point/point.template.html b/src/atlasComponents/userAnnotations/tools/point/point.template.html
index 805ab08767a59c9f202ae053b814150678bef881..90f1b5807dad478c8c519736a144258de0e19d30 100644
--- a/src/atlasComponents/userAnnotations/tools/point/point.template.html
+++ b/src/atlasComponents/userAnnotations/tools/point/point.template.html
@@ -5,7 +5,7 @@
 </span>
 
 <mat-chip-list>
-  <mat-chip [matTooltip]="updateAnnotation"
+  <mat-chip [matTooltip]="updateAnnotation.toString()"
     (click)="gotoRoi()">
     0
   </mat-chip>
diff --git a/src/atlasComponents/userAnnotations/tools/poly.ts b/src/atlasComponents/userAnnotations/tools/poly.ts
index 47dd27c7dc56924a1be4911045523577e7e9d1ad..37a0fdbd397fe43fa136409af1503a2cb2443bbe 100644
--- a/src/atlasComponents/userAnnotations/tools/poly.ts
+++ b/src/atlasComponents/userAnnotations/tools/poly.ts
@@ -166,6 +166,7 @@ export class Polygon extends IAnnotationGeometry{
       coordinateSpace,
       coordinates
     } = sands
+    const { ["@id"]: spaceId } = coordinateSpace
     if (type === 'tmp/poly') {
       const points: Point[] = []
       const edges: [number, number][] = []
@@ -175,7 +176,9 @@ export class Polygon extends IAnnotationGeometry{
           return c.value * 1e6
         })
         const p = new Point({
-          space: coordinateSpace,
+          space: {
+            id: spaceId
+          },
           x: parsedValue[0],
           y: parsedValue[1],
           z:  parsedValue[2],
@@ -190,7 +193,7 @@ export class Polygon extends IAnnotationGeometry{
       const poly = new Polygon({
         id,
         "@type": 'siibra-ex/annotation/polyline',
-        space: coordinateSpace,
+        space: { id: spaceId },
         points,
         edges
       })
diff --git a/src/atlasComponents/userAnnotations/tools/poly/poly.template.html b/src/atlasComponents/userAnnotations/tools/poly/poly.template.html
index 6827915b80ecfb04504184c6519b9670cfa62cf0..71158649f12a4f782a0f149da06ce81b3bd7a25c 100644
--- a/src/atlasComponents/userAnnotations/tools/poly/poly.template.html
+++ b/src/atlasComponents/userAnnotations/tools/poly/poly.template.html
@@ -7,7 +7,7 @@
 <mat-chip-list>
   <mat-chip *ngFor="let point of (updateAnnotation?.points || []); let i = index"
     (click)="gotoRoi(point)"
-    [matTooltip]="point">
+    [matTooltip]="point.toString()">
     {{ i }}
   </mat-chip>
 </mat-chip-list>
diff --git a/src/atlasComponents/userAnnotations/tools/service.ts b/src/atlasComponents/userAnnotations/tools/service.ts
index e998c9c53a65be4965b8cad62e84d1b45df3c3f3..4a18bd4f3dc806ea1bef95f1f6339a17b63f6ead 100644
--- a/src/atlasComponents/userAnnotations/tools/service.ts
+++ b/src/atlasComponents/userAnnotations/tools/service.ts
@@ -1,9 +1,9 @@
-import { Injectable, OnDestroy } from "@angular/core";
+import { Injectable, OnDestroy, Type } from "@angular/core";
 import { ARIA_LABELS } from 'common/constants'
 import { Inject, Optional } from "@angular/core";
 import { select, Store } from "@ngrx/store";
 import { BehaviorSubject, combineLatest, fromEvent, merge, Observable, of, Subject, Subscription } from "rxjs";
-import {map, switchMap, filter, shareReplay, pairwise } from "rxjs/operators";
+import {map, switchMap, filter, shareReplay, pairwise, withLatestFrom } from "rxjs/operators";
 import { NehubaViewerUnit } from "src/viewerModule/nehuba";
 import { NEHUBA_INSTANCE_INJTKN } from "src/viewerModule/nehuba/util";
 import { AbsToolClass, ANNOTATION_EVENT_INJ_TOKEN, IAnnotationEvents, IAnnotationGeometry, INgAnnotationTypes, INJ_ANNOT_TARGET, TAnnotationEvent, ClassInterface, TCallbackFunction, TSands, TGeometryJson, TNgAnnotationLine, TCallback } from "./type";
@@ -12,24 +12,15 @@ import { Polygon } from "./poly";
 import { Line } from "./line";
 import { Point } from "./point";
 import { FilterAnnotationsBySpace } from "../filterAnnotationBySpace.pipe";
-import { retry } from 'common/util'
 import { MatSnackBar } from "@angular/material/snack-bar";
 import { actions } from "src/state/atlasSelection";
 import { atlasSelection } from "src/state";
-import { SapiSpaceModel } from "src/atlasComponents/sapi";
+import { SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
 import { AnnotationLayer } from "src/atlasComponents/annotations";
+import { translateV3Entities } from "src/atlasComponents/sapi/translateV3";
 
 const LOCAL_STORAGE_KEY = 'userAnnotationKey'
 
-const IAV_VOXEL_SIZES_NM = {
-  'minds/core/referencespace/v1.0.0/265d32a0-3d84-40a5-926f-bf89f68212b9': [25000, 25000, 25000],
-  'minds/core/referencespace/v1.0.0/d5717c4a-0fa1-46e6-918c-b8003069ade8': [39062.5, 39062.5, 39062.5],
-  'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588': [21166.666015625, 20000, 21166.666015625],
-  'minds/core/referencespace/v1.0.0/7f39f7be-445b-47c0-9791-e971c0b6d992': [1000000, 1000000, 1000000,],
-  'minds/core/referencespace/v1.0.0/dafcffc5-4826-4bf1-8ff6-46b8a31ff8e2': [1000000, 1000000, 1000000],
-  'minds/core/referencespace/v1.0.0/MEBRAINS_T1.masked': [1000000, 1000000, 1000000]
-}
-
 type TAnnotationMetadata = {
   id: string
   name: string
@@ -91,7 +82,7 @@ export class ModularUserAnnotationToolService implements OnDestroy{
   private activeToolName: string
   private forcedAnnotationRefresh$ = new BehaviorSubject(null)
 
-  private selectedTmpl: SapiSpaceModel
+  private selectedTmpl: SxplrTemplate
   private selectedTmpl$ = this.store.pipe(
     select(atlasSelection.selectors.selectedTemplate),
   )
@@ -153,8 +144,8 @@ export class ModularUserAnnotationToolService implements OnDestroy{
     name: string
     iconClass: string
     toolInstance: AbsToolClass<any>
-    target?: ClassInterface<IAnnotationGeometry>
-    editCmp?: ClassInterface<any>
+    target?: Type<IAnnotationGeometry>
+    editCmp?: Type<unknown>
     onDestoryCallBack: () => void
   }[] = []
   private mousePosReal: [number, number, number]
@@ -268,6 +259,19 @@ export class ModularUserAnnotationToolService implements OnDestroy{
     }
   }
 
+  #voxelSize = this.store.pipe(
+    select(atlasSelection.selectors.selectedTemplate),
+    switchMap(tmpl => translateV3Entities.translateSpaceToVolumeImage(tmpl)),
+    map(volImages => {
+      if (volImages.length === 0) {
+        return null
+      }
+      const volImage = volImages[0]
+      const { real, voxel } = volImage.info
+      return [0, 1, 2].map(idx => real[idx]/voxel[idx]) as [number, number, number]
+    })
+  )
+
   constructor(
     private store: Store<any>,
     private snackbar: MatSnackBar,
@@ -452,15 +456,14 @@ export class ModularUserAnnotationToolService implements OnDestroy{
      */
     this.subscription.push(
       store.pipe(
-        select(atlasSelection.selectors.viewerMode)
-      ).subscribe(viewerMode => {
+        select(atlasSelection.selectors.viewerMode),
+        withLatestFrom(this.#voxelSize),
+      ).subscribe(([viewerMode, voxelSize]) => {
         this.currMode = viewerMode
         if (viewerMode === ModularUserAnnotationToolService.VIEWER_MODE) {
           if (this.annotationLayer) this.annotationLayer.setVisible(true)
           else {
-            const viewer = (window as any).viewer
-            const voxelSize = IAV_VOXEL_SIZES_NM[this.selectedTmpl["@id"]]
-            if (!voxelSize) throw new Error(`voxelSize of ${this.selectedTmpl["@id"]} cannot be found!`)
+            if (!voxelSize) throw new Error(`voxelSize of ${this.selectedTmpl.id} cannot be found!`)
             if (this.annotationLayer) {
               this.annotationLayer.dispose()
             }
@@ -501,7 +504,7 @@ export class ModularUserAnnotationToolService implements OnDestroy{
         this.annotnEvSubj.next({
           type: 'metadataEv',
           detail: {
-            space: tmpl && { ['@id']: tmpl['@id'] }
+            space: tmpl
           }
         })
         this.forcedAnnotationRefresh$.next(null)
@@ -535,15 +538,7 @@ export class ModularUserAnnotationToolService implements OnDestroy{
     if (!encoded) return []
     const bin = atob(encoded)
     
-    await retry(() => {
-      if (!!getExportNehuba()) return true
-      else throw new Error(`export nehuba not yet ready`)
-    }, {
-      timeout: 1000,
-      retries: 10
-    })
-    
-    const { pako } = getExportNehuba()
+    const { pako } = await getExportNehuba()
     const decoded = pako.inflate(bin, { to: 'string' })
     const arr = JSON.parse(decoded)
     const anns: IAnnotationGeometry[] = []
@@ -572,14 +567,14 @@ export class ModularUserAnnotationToolService implements OnDestroy{
    */
   private metadataMap = new Map<string, TAnnotationMetadata>()
 
-  private storeAnnotation(anns: IAnnotationGeometry[]){
+  private async storeAnnotation(anns: IAnnotationGeometry[]){
     const arr = []
     for (const ann of anns) {
       const json = ann.toJSON()
       arr.push(json)
     }
     const stringifiedJSON = JSON.stringify(arr)
-    const exportNehuba = getExportNehuba()
+    const exportNehuba = await getExportNehuba()
     if (!exportNehuba) return
     const { pako } = exportNehuba
     const compressed = pako.deflate(stringifiedJSON)
@@ -610,7 +605,7 @@ export class ModularUserAnnotationToolService implements OnDestroy{
     this.forcedAnnotationRefresh$.next(null)
   }
 
-  public getEditAnnotationCmp(annotation: IAnnotationGeometry): ClassInterface<any>{
+  public getEditAnnotationCmp(annotation: IAnnotationGeometry): Type<unknown>{
     const foundTool = this.registeredTools.find(t => t.target && annotation instanceof t.target)
     return foundTool && foundTool.editCmp
   }
diff --git a/src/atlasComponents/userAnnotations/tools/type.ts b/src/atlasComponents/userAnnotations/tools/type.ts
index 763a58fcb59efc5aeee758008f2d5a6c710ac7c7..eb6f15882be83d17ed7ff30870a879e39ca8101f 100644
--- a/src/atlasComponents/userAnnotations/tools/type.ts
+++ b/src/atlasComponents/userAnnotations/tools/type.ts
@@ -41,7 +41,9 @@ export abstract class AbsToolClass<T extends IAnnotationGeometry> {
   init(){
     this.subs.push(
       this.metadataEv$.subscribe(ev => {
-        this.space = ev.detail.space
+        this.space = ev.detail.space && ({
+          id: ev.detail.space.id
+        })
       })
     )
   }
@@ -225,7 +227,7 @@ export type TCallbackFunction = <T extends keyof TCallback>(arg: TCallback[T]['c
 export type TBaseAnnotationGeomtrySpec = {
   id?: string
   space?: {
-    ['@id']: string
+    id: string
   }
   name?: string
   desc?: string
@@ -377,7 +379,7 @@ export type TNgMouseEvent = {
 }
 
 export type TMetaEvent = {
-  space: { ['@id']: string }
+  space: { id: string }
 }
 
 export interface IAnnotationEvents {
diff --git a/src/atlasViewer/atlasViewer.component.ts b/src/atlasViewer/atlasViewer.component.ts
index 15dbb49421acaec542c842562853d946422e64d6..5f510e7fda57199da499e2922ead4451b772bb84 100644
--- a/src/atlasViewer/atlasViewer.component.ts
+++ b/src/atlasViewer/atlasViewer.component.ts
@@ -26,6 +26,7 @@ import { environment } from 'src/environments/environment'
 import { DOCUMENT } from "@angular/common";
 import { userPreference } from "src/state"
 import { DARKTHEME } from "src/util/injectionTokens";
+import { EnumQuickTourSeverity } from "src/ui/quickTour/constrants";
 
 /**
  * TODO
@@ -207,7 +208,8 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit {
 
 If you have any comments or need further support, please contact us at [${this.supportEmailAddress}](mailto:${this.supportEmailAddress})`,
     description: `That's it! We hope you enjoy your stay. If you have any comments or need further support, please contact us at ${this.supportEmailAddress}`,
-    position: 'center'
+    position: 'center' as const,
+    priority: EnumQuickTourSeverity.LOW
   }
 
   @HostBinding('attr.version')
diff --git a/src/atlasViewer/atlasViewer.template.html b/src/atlasViewer/atlasViewer.template.html
index ed2e2c6da37077aeea63cf59942a0b7dc7386986..864976bc6901450056408aecc096df0c0254e7ce 100644
--- a/src/atlasViewer/atlasViewer.template.html
+++ b/src/atlasViewer/atlasViewer.template.html
@@ -30,7 +30,7 @@
     [quick-tour-description-md]="quickTourFinale.descriptionMd"
     [quick-tour-order]="quickTourFinale.order"
     [quick-tour-overwrite-arrow]="emptyArrowTmpl"
-    quick-tour-severity="low">
+    [quick-tour-severity]="quickTourFinale.priority">
     <!-- prevent default is required so that user do not zoom in on UI or scroll on mobile UI -->
     <iav-cmp-viewer-container
       class="w-100 h-100 d-block"
diff --git a/src/components/dynamicMaterialBtn/dynamicMaterialBtn.component.ts b/src/components/dynamicMaterialBtn/dynamicMaterialBtn.component.ts
index d0a19e9ba7a5343c35f025cc7d2c51b90ac96c3e..57c20da0e5163f5676d6f0c8da887b65dc03ceb5 100644
--- a/src/components/dynamicMaterialBtn/dynamicMaterialBtn.component.ts
+++ b/src/components/dynamicMaterialBtn/dynamicMaterialBtn.component.ts
@@ -1,7 +1,7 @@
 import { Component, Input } from "@angular/core";
 
-type TypeMatBtnStyle = 'mat-button' | 'mat-raised-button' | 'mat-stroked-button' | 'mat-flat-button' | 'mat-icon-button' | 'mat-fab' | 'mat-mini-fab'
-type TypeMatBtnColor = 'basic' | 'primary' | 'accent' | 'warn'
+export type TypeMatBtnStyle = 'mat-button' | 'mat-raised-button' | 'mat-stroked-button' | 'mat-flat-button' | 'mat-icon-button' | 'mat-fab' | 'mat-mini-fab'
+export type TypeMatBtnColor = 'basic' | 'primary' | 'accent' | 'warn'
 
 @Component({
   selector: 'iav-dynamic-mat-button',
diff --git a/src/components/readmore/readmoreCmp/readmore.component.ts b/src/components/readmore/readmoreCmp/readmore.component.ts
index 914f7c09278b4953c8e24e67f9fe844db5fc38ce..2d460afb8db8c85d9a46c537f2e4fe320d2e8e89 100644
--- a/src/components/readmore/readmoreCmp/readmore.component.ts
+++ b/src/components/readmore/readmoreCmp/readmore.component.ts
@@ -11,7 +11,7 @@ import { readmoreAnimations } from "./readmore.animations";
 })
 
 export class ReadmoreComponent implements OnChanges, AfterContentChecked {
-  @Input() public collapsedHeight: number = 45
+  @Input() public collapsedHeight: number = 85
   @Input() public show: boolean = false
   @Input() public animationLength: number = 180
   @ViewChild('contentContainer', { read: ElementRef, static: true }) public contentContainer: ElementRef
diff --git a/src/components/readmore/readmoreCmp/readmore.style.css b/src/components/readmore/readmoreCmp/readmore.style.css
index 166ec29d499bd01a7010e8753854ef89d1cfd161..f49a4a951ac455d5760907af91b22502799574eb 100644
--- a/src/components/readmore/readmoreCmp/readmore.style.css
+++ b/src/components/readmore/readmoreCmp/readmore.style.css
@@ -13,3 +13,41 @@ div.readmore-content
 {
   overflow:hidden;
 }
+
+.veil
+{
+  position: relative;
+}
+
+.veil::before
+{
+  position: absolute;
+  left: 0;
+  top: 0;
+  content: '';
+  width: 100%;
+  height: 100%;
+  pointer-events: none;
+  z-index: 999;
+}
+
+.veil::before
+{
+  
+  background: linear-gradient(
+    to bottom,
+    rgba(200,200,200, 0),
+    70%,
+    rgba(200,200,200, 1)
+  );
+}
+
+:host-context([darktheme=true]) .veil::before
+{
+  background: linear-gradient(
+    to bottom,
+    rgba(50,50,50, 0),
+    70%,
+    rgba(50,50,50, 1)
+  );
+}
diff --git a/src/components/readmore/readmoreCmp/readmore.template.html b/src/components/readmore/readmoreCmp/readmore.template.html
index 0eea38ac44faaa477c9757137a660c8804e3b5f4..2315e05ad02ec9e12563466cdfaa1c2078edb1aa 100644
--- a/src/components/readmore/readmoreCmp/readmore.template.html
+++ b/src/components/readmore/readmoreCmp/readmore.template.html
@@ -7,7 +7,8 @@
       fullHeight: fullHeight,
       animationLength: animationLength
     }}"
-  class="readmore-content">
+  class="readmore-content"
+  [ngClass]="show ? 'full' : 'veil'">
   <div #contentContainer>
     <ng-content>
     </ng-content>
diff --git a/src/components/smartChip/component/smartChip.component.ts b/src/components/smartChip/component/smartChip.component.ts
index d933960efe0b817d2cb3c29b23b306c62706df04..b68cfb42769e31067b42614351e8db04717fdcf7 100644
--- a/src/components/smartChip/component/smartChip.component.ts
+++ b/src/components/smartChip/component/smartChip.component.ts
@@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, HostBin
 import { SmartChipContent } from "../smartChip.content.directive"
 import { SmartChipMenu } from "../smartChip.menu.directive";
 import { rgbToHsl, hexToRgb } from 'common/util'
+import { SmartChipHeader } from "../smartChip.header.directive";
 
 const cssColorToHsl = (input: string) => {
   if (/rgb/i.test(input)) {
@@ -36,7 +37,7 @@ const cssColorToHsl = (input: string) => {
   selector: `sxplr-smart-chip`,
   templateUrl: `./smartChip.template.html`,
   styleUrls: [
-    `/smartChip.style.css`
+    `./smartChip.style.scss`
   ],
   changeDetection: ChangeDetectionStrategy.OnPush
 })
@@ -45,6 +46,9 @@ export class SmartChip<T extends object> implements OnChanges{
   @Input('color')
   color = `rgba(200, 200, 200, 1)`
 
+  @Input('noMenu')
+  noMenuFlag = false
+
   @Input('disabled')
   disabled: boolean = false
 
@@ -68,6 +72,9 @@ export class SmartChip<T extends object> implements OnChanges{
   @ContentChild(SmartChipMenu)
   menuTmpl: SmartChipMenu
 
+  @ContentChild(SmartChipHeader)
+  headerTmpl: SmartChipHeader
+
   @HostBinding('class')
   darkTheme: string = 'lighttheme'
 
diff --git a/src/components/smartChip/component/smartChip.style.css b/src/components/smartChip/component/smartChip.style.css
deleted file mode 100644
index 3b0e266234f8891616d14e3aa9db2aa30f701159..0000000000000000000000000000000000000000
--- a/src/components/smartChip/component/smartChip.style.css
+++ /dev/null
@@ -1,41 +0,0 @@
-:host
-{
-  margin: 0.5rem 1rem;
-  min-height: 32px;
-  height: 1px;
-}
-
-.smart-chip
-{
-  box-sizing: border-box;
-  height: 100%;
-
-  padding: 0.5rem 1rem;
-  border-radius: 1rem;
-
-  display: inline-flex;
-  flex-direction: row;
-  align-items: center;
-}
-
-.smart-chip
-{
-  opacity: 1.0;
-  transition: opacity 160ms ease-in-out;
-}
-
-.smart-chip:not(.disabled):hover
-{
-  cursor: default;
-}
-
-.smart-chip.disabled
-{
-  opacity: 0.5;
-  pointer-events: none;
-}
-
-.smart-chip.disabled:hover
-{
-  cursor: not-allowed;
-}
diff --git a/src/components/smartChip/component/smartChip.style.scss b/src/components/smartChip/component/smartChip.style.scss
new file mode 100644
index 0000000000000000000000000000000000000000..ecd4832468dfe5d18a5b9337495a4388ee97d0d4
--- /dev/null
+++ b/src/components/smartChip/component/smartChip.style.scss
@@ -0,0 +1,71 @@
+:host
+{
+  margin: 1.5rem 1rem 0.5rem 1rem;
+  min-height: 32px;
+  height: 1px;
+  position: relative;
+}
+
+.smart-chip
+{
+  box-sizing: border-box;
+  height: 100%;
+
+  padding: 0.8rem 1.6rem;
+  border-radius: 1rem;
+
+  display: inline-flex;
+  flex-direction: row;
+  align-items: center;
+}
+
+.smart-chip.body
+{
+  width: 100%;
+}
+
+.smart-chip
+{
+  opacity: 1.0;
+  transition: opacity 160ms ease-in-out;
+}
+
+.smart-chip:not(.disabled):hover
+{
+  cursor: default;
+}
+
+.smart-chip.disabled
+{
+  opacity: 0.5;
+  pointer-events: none;
+}
+
+.smart-chip.disabled:hover
+{
+  cursor: not-allowed;
+}
+
+.smart-chip.header
+{
+  position: absolute;
+  scale: 0.8;
+  top: 0;
+  left: 0;
+  margin-left: 0.5rem;
+  margin-top: -1.4rem;
+}
+
+
+.smart-chip.header::before
+{
+  content: "";
+  background-color: rgba(128, 128, 128, 0.8);
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  top: 0;
+  left: 0;
+  border-radius: 1rem;
+  opacity: 0.2;
+}
diff --git a/src/components/smartChip/component/smartChip.template.html b/src/components/smartChip/component/smartChip.template.html
index c82394e1d9f2157ffb874af1d41789fb7e52c6aa..96964d1be7e8432ca7929bfceda2efb9c1fdc1aa 100644
--- a/src/components/smartChip/component/smartChip.template.html
+++ b/src/components/smartChip/component/smartChip.template.html
@@ -1,12 +1,26 @@
+
 <div [style.background-color]="color"
-  [matMenuTriggerFor]="mainMenu"
+  [matMenuTriggerFor]="noMenuFlag ? null : mainMenu"
   matRipple
+  [matRippleDisabled]="noMenuFlag"
   [ngClass]="smartChipClass"
-  class="mat-body smart-chip sxplr-custom-cmp text">
+  class="mat-body smart-chip body sxplr-custom-cmp text">
   <ng-template [ngTemplateOutlet]="contentTmpl?.templateRef || fallbackContentTmpl">
   </ng-template>
 </div>
 
+<!-- header component -->
+<ng-template [ngIf]="headerTmpl?.templateRef" let-tmpl>
+  <div class="mat-body smart-chip sxplr-custom-cmp text header mat-elevation-z2"
+    [style.background-color]="color"
+    matRipple
+    [matRippleDisabled]="noMenuFlag"
+    [matMenuTriggerFor]="noMenuFlag ? null : mainMenu">
+    <ng-template [ngTemplateOutlet]="tmpl">
+    </ng-template>
+  </div>
+</ng-template>
+
 <!-- main menu is fired from chip -->
 <mat-menu #mainMenu="matMenu">
   <ng-template ngFor [ngForOf]="items" let-item>
diff --git a/src/components/smartChip/module.ts b/src/components/smartChip/module.ts
index 00fe423cc79816bf0b9cb871e3c8392aacc09520..78c85f3a44beedae96ec1562b0e36c3941768f10 100644
--- a/src/components/smartChip/module.ts
+++ b/src/components/smartChip/module.ts
@@ -6,6 +6,7 @@ import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
 import { SmartChip } from "./component/smartChip.component";
 import { HasSubMenuPipe } from "./hasSubmenu.pipe";
 import { SmartChipContent } from "./smartChip.content.directive";
+import { SmartChipHeader } from "./smartChip.header.directive";
 import { SmartChipMenu } from "./smartChip.menu.directive";
 
 @NgModule({
@@ -18,12 +19,14 @@ import { SmartChipMenu } from "./smartChip.menu.directive";
   declarations: [
     SmartChipMenu,
     SmartChipContent,
+    SmartChipHeader,
     SmartChip,
     HasSubMenuPipe,
   ],
   exports: [
     SmartChipMenu,
     SmartChipContent,
+    SmartChipHeader,
     SmartChip,
   ]
 })
diff --git a/src/components/smartChip/smartChip.header.directive.ts b/src/components/smartChip/smartChip.header.directive.ts
new file mode 100644
index 0000000000000000000000000000000000000000..010ae077e15941483af14f2f9aba0d09ece4d29c
--- /dev/null
+++ b/src/components/smartChip/smartChip.header.directive.ts
@@ -0,0 +1,9 @@
+import { Directive, Inject, TemplateRef } from "@angular/core";
+
+@Directive({
+  selector: `ng-template[sxplrSmartChipHeader]`
+})
+
+export class SmartChipHeader {
+  constructor(@Inject(TemplateRef) public templateRef: TemplateRef<unknown>){}
+}
diff --git a/src/environments/environment.common.ts b/src/environments/environment.common.ts
index 129a0fe9e32d74a76fcc365fdc33a48e81604afc..75284adf0db83a1213cfb5f2b94293b46330e9b5 100644
--- a/src/environments/environment.common.ts
+++ b/src/environments/environment.common.ts
@@ -2,9 +2,9 @@ export const environment = {
 
   GIT_HASH: 'unknown hash',
   VERSION: 'unknown version',
-  PRODUCTION: true,
+  PRODUCTION: false,
   BACKEND_URL: null,
-  SIIBRA_API_ENDPOINTS: 'https://siibra-api-stable.apps.hbp.eu/v2_0,https://siibra-api-stable.apps.jsc.hbp.eu/v2_0,https://siibra-api-stable-ns.apps.hbp.eu/v2_0',
+  SIIBRA_API_ENDPOINTS: 'https://siibra-api-latest.apps-dev.hbp.eu/v3_0', //'https://siibra-api-stable.apps.hbp.eu/v2_0,https://siibra-api-stable.apps.jsc.hbp.eu/v2_0,https://siibra-api-stable-ns.apps.hbp.eu/v2_0',
   SPATIAL_TRANSFORM_BACKEND: 'https://hbp-spatial-backend.apps.hbp.eu',
   MATOMO_URL: null,
   MATOMO_ID: null,
diff --git a/src/extra_styles.css b/src/extra_styles.css
index be7921bd06d387cb19123c41f97c0b7834bfdadb..eda87b2bf8ac0ab8b8b2ab18a73a1383d070223c 100644
--- a/src/extra_styles.css
+++ b/src/extra_styles.css
@@ -22,16 +22,19 @@
   background: rgba(255, 255, 255, 0.5); 
 }
 
+html,body
+{
+  width: 100dvw;
+  height: 100dvh;
+  overflow: hidden;
+}
+
 html
 {
-  width:100%;
-  height:100%;
   font-size:90%;
 }
 body
 {
-  width:100%;
-  height:100%;
   margin:0;
   border:0;
 
@@ -883,3 +886,20 @@ how-to-cite img
 {
   pointer-events: none;
 }
+
+.virtual-scroll-viewport > .cdk-virtual-scroll-content-wrapper
+{
+  width: 100%;
+}
+
+.center-a-div
+{
+  display: grid;
+  width: 100%;
+  height: 100%;
+}
+
+.center-a-div > *
+{
+  place-self: center;
+}
diff --git a/src/features/base.ts b/src/features/base.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c5085aabd44abacf2c9e198703b60e0d88df088f
--- /dev/null
+++ b/src/features/base.ts
@@ -0,0 +1,62 @@
+import { Input, OnChanges, Directive, SimpleChanges } from "@angular/core";
+import { BehaviorSubject, combineLatest } from "rxjs";
+import { debounceTime, map } from "rxjs/operators";
+import { SxplrParcellation, SxplrRegion, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
+
+type BBox = [[number, number, number], [number, number, number]]
+
+@Directive()
+export class FeatureBase implements OnChanges{
+    
+  @Input()
+  template: SxplrTemplate
+
+  @Input()
+  parcellation: SxplrParcellation
+
+  @Input()
+  region: SxplrRegion
+
+  @Input()
+  bbox: BBox
+
+  @Input()
+  queryParams: Record<string, string> = {}
+  
+  #TPR$ = new BehaviorSubject<{ template?: SxplrTemplate, parcellation?: SxplrParcellation, region?: SxplrRegion }>({ template: null, parcellation: null, region: null })
+  #bbox$ = new BehaviorSubject<{ bbox?: BBox }>({ bbox: null })
+  protected TPRBbox$ = combineLatest([
+    this.#TPR$,
+    this.#bbox$.pipe(
+      debounceTime(500)
+    )
+  ]).pipe(
+    map(([ v1, v2 ]) => ({ ...v1, ...v2 }))
+  )
+
+  ngOnChanges(sc: SimpleChanges): void {
+    const { template, parcellation, region, bbox } = sc
+    if (bbox) {
+      this.#bbox$.next({ bbox: bbox.currentValue })
+    }
+    if (template || parcellation || region) {
+      const { template: t, parcellation: p, region: r } = this
+      this.#TPR$.next({
+        template: template?.currentValue || t,
+        parcellation: parcellation?.currentValue || p,
+        region: region?.currentValue || r
+      })
+    }
+  }
+}
+
+
+
+export const AllFeatures = {
+  CorticalProfile: "CorticalProfile",
+  EbrainsDataFeature: "EbrainsDataFeature",
+  RegionalConnectivity: "RegionalConnectivity",
+  Tabular: "Tabular",
+  // GeneExpressions: "GeneExpressions",
+  Image: "Image",
+} as const
\ No newline at end of file
diff --git a/src/features/category-acc.directive.spec.ts b/src/features/category-acc.directive.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2cdbb5846fc5df06a4f5ba60672f803700c78341
--- /dev/null
+++ b/src/features/category-acc.directive.spec.ts
@@ -0,0 +1,8 @@
+import { CategoryAccDirective } from './category-acc.directive';
+
+describe('CategoryAccDirective', () => {
+  it('should create an instance', () => {
+    const directive = new CategoryAccDirective();
+    expect(directive).toBeTruthy();
+  });
+});
diff --git a/src/features/category-acc.directive.ts b/src/features/category-acc.directive.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1ddb52d0c90c956c89f3ab62a0b6ee1f5518d586
--- /dev/null
+++ b/src/features/category-acc.directive.ts
@@ -0,0 +1,72 @@
+import { AfterContentInit, ContentChildren, Directive, OnDestroy, QueryList } from '@angular/core';
+import { BehaviorSubject, combineLatest, Subscription } from 'rxjs';
+import { map } from 'rxjs/operators';
+import { Feature } from "src/atlasComponents/sapi/sxplrTypes"
+import { ListDirective } from './list/list.directive';
+
+export type GroupedFeature = {
+  features: Feature[]
+  meta: {
+    displayName: string
+  }
+}
+
+@Directive({
+  selector: '[sxplrCategoryAcc]',
+  exportAs: 'categoryAcc'
+})
+export class CategoryAccDirective implements AfterContentInit, OnDestroy {
+
+  public isBusy$ = new BehaviorSubject<boolean>(false)
+  public total$ = new BehaviorSubject<number>(0)
+  public groupedFeatures$ = new BehaviorSubject<GroupedFeature[]>([])
+  public features$ = this.groupedFeatures$.pipe(
+    map(arr => arr.flatMap(val => val.features))
+  )
+
+  @ContentChildren(ListDirective, { read: ListDirective, descendants: true })
+  listCmps: QueryList<ListDirective>
+
+  #changeSub: Subscription
+  ngAfterContentInit(): void {
+    this.#registerListCmps()
+    this.#changeSub = this.listCmps.changes.subscribe(() => this.#registerListCmps())
+  }
+
+  ngOnDestroy(): void {
+    this.#cleanup()
+  }
+
+  #subscriptions: Subscription[] = []
+  #cleanup(){
+    if (this.#changeSub) this.#changeSub.unsubscribe()
+    while(this.#subscriptions.length > 0) this.#subscriptions.pop().unsubscribe()
+  }
+  #registerListCmps(){
+    this.#cleanup()
+
+    const listCmp = Array.from(this.listCmps)
+
+    this.#subscriptions.push(
+      combineLatest(
+        listCmp.map(
+          listC => listC.features$.pipe(
+            map(features => ({ features, meta: { displayName: listC.displayName } }))
+          )
+        )
+      ).subscribe(val => this.groupedFeatures$.next(val)),
+      
+      combineLatest(
+        listCmp.map(listC => listC.features$)
+      ).pipe(
+        map(features => features.reduce((acc, curr) => acc + curr.length, 0))
+      ).subscribe(total => this.total$.next(total)),
+
+      combineLatest(
+        listCmp.map(listC => listC.state$)
+      ).pipe(
+        map(states => states.some(state => state === "busy"))
+      ).subscribe(flag => this.isBusy$.next(flag))
+    )
+  }
+}
diff --git a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.spec.ts b/src/features/connectivity/connectivityBrowser/connectivityBrowser.component.spec.ts
similarity index 86%
rename from src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.spec.ts
rename to src/features/connectivity/connectivityBrowser/connectivityBrowser.component.spec.ts
index 084a7ed862896c530146930484e131b488b06470..8f67e9bc822dfc07d3a954b2ac5daf0e18ce04e0 100644
--- a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.spec.ts
+++ b/src/features/connectivity/connectivityBrowser/connectivityBrowser.component.spec.ts
@@ -7,8 +7,8 @@ import {MockStore, provideMockStore} from "@ngrx/store/testing";
 import {Observable, of} from "rxjs";
 import {SAPI} from "src/atlasComponents/sapi";
 import {AngularMaterialModule} from "src/sharedModules";
-import { SapiAtlasModel, SapiModalityModel, SapiParcellationFeatureModel, SapiParcellationModel } from "src/atlasComponents/sapi/type";
 import { HttpClientTestingModule, HttpTestingController } from "@angular/common/http/testing";
+import { SxplrAtlas, SxplrParcellation } from "src/atlasComponents/sapi/sxplrTypes";
 
 /**
  * injecting databrowser module is bad idea
@@ -41,7 +41,7 @@ describe('ConnectivityComponent', () => {
     let httpTestingController: HttpTestingController;
     let req
 
-    const types: SapiModalityModel[] = [{
+    const types: any[] = [{
         name: 'StreamlineCounts',
         types: ['siibra/features/connectivity/streamlineCounts']
     },{
@@ -52,19 +52,19 @@ describe('ConnectivityComponent', () => {
         types: ['siibra/features/connectivity/functional']
     }]
 
-    let datasetList: SapiParcellationFeatureModel[] = [
+    let datasetList: SxplrParcellation[] = [
         {
-            '@id': 'id1',
+            id: 'id1',
             name: 'id1',
             cohort: 'HCP',
             subject: '100',
             '@type': 'siibra/features/connectivity/streamlineCounts',
-        } as SapiParcellationFeatureModel, {
-            '@id': 'id2',
+        } as any, {
+            id: 'id2',
             name: 'id2',
             cohort: '1000BRAINS',
             subject: 'average',
-        } as SapiParcellationFeatureModel
+        } as any
     ]
 
     beforeEach(async () => {
@@ -113,11 +113,11 @@ describe('ConnectivityComponent', () => {
             const parcellation = 'minds/core/parcellationatlas/v1.0.0/94c1125b-b87e-45e4-901c-00daee7f2579-290'
             const endp = await SAPI.BsEndpoint$.toPromise()
 
-            component.atlas = { '@id': atlas } as SapiAtlasModel
-            component.parcellation = { '@id': parcellation } as SapiParcellationModel
+            component.atlas = { id: atlas } as SxplrAtlas
+            component.parcellation = { id: parcellation } as any
             component.types = types
 
-            const url = `${endp}/atlases/${encodeURIComponent(atlas)}/parcellations/${encodeURIComponent(parcellation)}/features?type=${component.selectedTypeId}&size=${100}&page=${1}`
+            const url = `${endp}/atlases/${encodeURIComponent(atlas)}/parcellations/${encodeURIComponent(parcellation)}/features?type=${component.selectedType.id}&size=${100}&page=${1}`
 
             req = httpTestingController.expectOne(`${url}`);
 
@@ -137,9 +137,9 @@ describe('ConnectivityComponent', () => {
             expect(datasetList).toEqual(component.fetchedItems)
         })
         
-        it('> Cohorts are set correctly', () => {
-            expect(datasetList.map(d => d.cohort)).toEqual(component.cohorts)
-        })
+        // it('> Cohorts are set correctly', () => {
+        //     expect(datasetList.map(d => d.cohort)).toEqual(component.cohorts)
+        // })
     })
 
 });
diff --git a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.ts b/src/features/connectivity/connectivityBrowser/connectivityBrowser.component.ts
similarity index 51%
rename from src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.ts
rename to src/features/connectivity/connectivityBrowser/connectivityBrowser.component.ts
index cd7f4d03202a3967519ef14527b8bd29ba110ef6..05ffb3f2c9f303055796d1a14f31653bf222db40 100644
--- a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.ts
+++ b/src/features/connectivity/connectivityBrowser/connectivityBrowser.component.ts
@@ -1,35 +1,32 @@
 import {AfterViewInit, Component, ElementRef, OnDestroy, ViewChild, Input, ChangeDetectorRef} from "@angular/core";
 import {select, Store} from "@ngrx/store";
 import {fromEvent, Subscription, BehaviorSubject, Observable} from "rxjs";
-import {catchError, take} from "rxjs/operators";
-import {
-  SAPI,
-  SapiAtlasModel,
-  SapiParcellationModel,
-  SapiRegionModel
-} from "src/atlasComponents/sapi";
-import { atlasAppearance, atlasSelection } from "src/state";
-import {PARSE_TYPEDARRAY} from "src/atlasComponents/sapi/sapi.service";
-import {SapiModalityModel, SapiParcellationFeatureMatrixModel, SapiParcellationFeatureModel, SapiSpaceModel} from "src/atlasComponents/sapi/type";
+import {catchError, take, switchMap} from "rxjs/operators";
+
+import { atlasAppearance } from "src/state";
+import {SAPI} from "src/atlasComponents/sapi/sapi.service";
 import { of } from "rxjs";
-import {CustomLayer} from "src/state/atlasAppearance";
 import { HttpClient } from "@angular/common/http";
+import { SxplrAtlas, SxplrParcellation, SxplrRegion, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
+import { actions, selectors } from "src/state/atlasSelection";
+import { translateV3Entities } from "src/atlasComponents/sapi/translateV3";
 
 @Component({
-  selector: 'sxplr-sapiviews-features-connectivity-browser',
+  selector: 'sxplr-features-connectivity-browser',
   templateUrl: './connectivityBrowser.template.html',
   styleUrls: ['./connectivityBrowser.style.scss']
 })
 export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy {
 
-    @Input('sxplr-sapiviews-features-connectivity-browser-atlas')
-    atlas: SapiAtlasModel
 
-    @Input('sxplr-sapiviews-features-connectivity-browser-space')
-    space: SapiSpaceModel
+    @Input('sxplr-features-connectivity-browser-atlas')
+    atlas: SxplrAtlas
+
+    @Input('sxplr-features-connectivity-browser-template')
+    template: SxplrTemplate
 
-    @Input('sxplr-sapiviews-features-connectivity-browser-parcellation')
-    parcellation: SapiParcellationModel
+    @Input('sxplr-features-connectivity-browser-parcellation')
+    parcellation: SxplrParcellation
 
     /**
      * accordion expansion should only toggle the clearviewqueue state
@@ -37,8 +34,6 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy {
      * setcolormaps$ is set by the presence/absence of clearviewqueue[CONNECTIVITY_NAME_PLATE]
      */
     private _isFirstUpdate = true
-    
-
     @Input()
     set accordionExpanded(flag: boolean) {
       /**
@@ -49,8 +44,10 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy {
         return
       }
 
+      if (this.types.length && !this.selectedType) this.selectType(this._types[0])
+
       if (flag) {
-        if (this.selectedSubjectDatasetIndex >= 0 && this.allRegions.length) {
+        if (this.selectedSubjectIndex >= 0 && this.allRegions.length) {
           this.setCustomLayer()
         } else {
           this.setCustomLayerOnLoad = true
@@ -60,45 +57,56 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy {
       }
 
     }
+    
+    private _region: SxplrRegion
+    @Input()
+    set region(region) {
+      this._region = region
+      this.regionName = region.name
+    }
+
+    get region() {
+      return this._region
+    }
+
+    
+    private _types: any[] = []
+    @Input()
+    set types(val) {
+      this._types = val.map(t => ({...t, shortName: t.name.split('.').pop()}))
+    }
+    get types() {
+      return this._types
+    }
+
 
-    public selectedType: string
-    public selectedTypeId: string
+    public selectedType: any
     public selectedCohort: string
-    public cohortSubjects: string[]
-    public selectedSubjectIndex: number
-    public selectedSubjectsDatasets: string[]
-    public selectedSubjectDatasetIndex: number
-    public fetchedItems: SapiParcellationFeatureModel[] = []
+
+    public cohortDatasets: any[]
+
+    public selectedSubjectIndex = null
+    public selectedCohortDatasetIndex: any
+    public selectedCohortSubjects: any
+    public fetchedItems: any[] = []
     public cohorts: string[]
     public selectedView: 'subject' | 'average' | null
     public averageDisabled: boolean = true
     public subjectsDisabled: boolean = true
 
-    @Input()
-    set region(val) {
-      const newRegionName = val && val.name
-
-      if (val.status
-          && !val.name.includes('left hemisphere')
-          && !val.name.includes('right hemisphere')) {
-        this.regionHemisphere = val.status
-      }
-
-      this.regionName = newRegionName
-    }
-
     public regionName: string
-    public regionHemisphere: string = null
-    public selectedDataset: SapiParcellationFeatureModel
+
+    public selectedDataset: any
     public connectionsString: string
     public pureConnections: { [key: string]: number }
     public connectedAreas: BehaviorSubject<ConnectedArea[]> = new BehaviorSubject([])
     public noConnectivityForRegion: boolean
     private subscriptions: Subscription[] = []
-    public allRegions: SapiRegionModel[] = []
+    public allRegions: SxplrRegion[] = []
     private regionIndexInMatrix = -1
     public defaultColorMap: Map<string, Map<number, { red: number, green: number, blue: number }>>
     public matrixString: string
+    public fetchingPreData: boolean
     public fetching: boolean
     public connectivityLayerId = 'connectivity-colormap-id'
     private setCustomLayerOnLoad = false
@@ -107,31 +115,26 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy {
     public logDisabled: boolean = true
     public logChecked: boolean = true
 
-    private _types: SapiModalityModel[] = []
-    @Input()
-    set types(val) {
-      this._types = val
-      if (val && val.length) this.selectType(val[0].name)
-    }
-    get types() {
-      return this._types
-    }
+    private endpoint: string
+
 
-    @ViewChild('connectivityComponent', {read: ElementRef}) public connectivityComponentElement: ElementRef<any>
+    @ViewChild('connectivityComponent') public connectivityComponentElement: ElementRef<any>
     @ViewChild('fullConnectivityGrid') public fullConnectivityGridElement: ElementRef<any>
 
     constructor(
         private store$: Store,
-        private sapi: SAPI,
         private http: HttpClient,
         private changeDetectionRef: ChangeDetectorRef,
-    ) {}
+        protected sapi: SAPI
+    ) {
+      SAPI.BsEndpoint$.pipe(take(1)).subscribe(en => this.endpoint = `${en}/feature/RegionalConnectivity`)
+    }
 
     public ngAfterViewInit(): void {
       this.subscriptions.push(
 
         this.store$.pipe(
-          select(atlasSelection.selectors.selectedParcAllRegions)
+          select(selectors.selectedParcAllRegions)
         ).subscribe(flattenedRegions => {
           this.defaultColorMap = null
           this.allRegions = flattenedRegions
@@ -143,7 +146,7 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy {
       )
 
       this.subscriptions.push(
-        fromEvent(this.connectivityComponentElement?.nativeElement, 'connectedRegionClicked', {capture: true})
+        fromEvent(this.connectivityComponentElement.nativeElement, 'connectedRegionClicked', {capture: true})
           .subscribe((e: CustomEvent) => {
             this.navigateToRegion(e.detail.name)
           }),
@@ -154,7 +157,7 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy {
       if (this.customLayerEnabled) {
         this.removeCustomLayer()
       }
-      const map = new Map<SapiRegionModel, number[]>()
+      const map = new Map<SxplrRegion, number[]>()
       const areas = this.connectedAreas.value
       for (const region of this.allRegions) {
         const area = areas.find(a => a.name === region.name)
@@ -165,7 +168,7 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy {
         }
       }
       this.customLayerEnabled = true
-      const customLayer: CustomLayer = {
+      const customLayer: atlasAppearance.const.CustomLayer = {
         clType: 'customlayer/colormap',
         id: this.connectivityLayerId,
         colormap: map
@@ -189,152 +192,118 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy {
       this.selectedCohort = null
       this.cohorts = []
       this.selectedCohort = null
-      this.cohortSubjects = []
+      this.selectedCohortDatasetIndex = null
+      this.selectedCohortSubjects = null
+
       this.selectedSubjectIndex = null
-      this.selectedSubjectsDatasets = null
-      this.selectedSubjectDatasetIndex = null
     }
 
-    selectType(typeName) {
+    selectType(type) {
       this.clearCohortSelection()
-      this.selectedType = typeName
-      this.selectedTypeId = this.types.find(t => t.name === typeName).types[0]
-
+      this.selectedType = type
       this.removeCustomLayer()
-
       this.getModality()
     }
 
 
-    getModality(size: number = 100, page: number = 1) {
-      this.fetching = true
-      this.fetchModality(size, page).subscribe((res: any) => {
+    getModality() {
+      this.fetchingPreData = true
+      this.fetchModality().subscribe((res: any) => {
 
         this.fetchedItems.push(...res.items)
-          
-        if (res.total > size*page) {
-          this.getModality(100, page+1)
-        } else {
-          this.cohorts = [...new Set(this.fetchedItems.map(item => item.cohort))]
-          this.fetching = false
-          this.changeDetectionRef.detectChanges()
-          this.selectCohort(this.cohorts[0])
-        }
+        
+        this.cohorts = [...new Set(this.fetchedItems.map(item => item.cohort))]
+        this.fetchingPreData = false
+        this.changeDetectionRef.detectChanges()
+        this.selectCohort(this.cohorts[0])
+      
       })
     }
 
-    public fetchModality = (size: number, page: number): Observable<any> => {
-      let endp
-      SAPI.BsEndpoint$.pipe(take(1)).subscribe(en => endp = en)
-      return this.http.get(`${endp}/atlases/${encodeURIComponent(this.atlas['@id'])}/parcellations/${encodeURIComponent(this.parcellation['@id'])}/features?type=${this.selectedTypeId}&size=${size}&page=${page}`,)
-        .pipe(take(1))
+    public fetchModality = (): Observable<any> => {
+      const url = `${this.endpoint}?parcellation_id=${encodeURIComponent(this.parcellation.id)}&type=${encodeURIComponent(this.selectedType.shortName)}`
+      return this.http.get(url)
     }
 
     selectCohort(cohort: string) {
       this.selectedCohort = cohort
-      this.averageDisabled = !this.fetchedItems.find(s => s.cohort === this.selectedCohort && s.subject === 'average')
-      this.subjectsDisabled = !this.fetchedItems.find(s => s.cohort === this.selectedCohort && s.subject !== 'average')
+      this.averageDisabled = !this.fetchedItems.find(s => s.cohort === this.selectedCohort && !s.subjects.length)
+      this.subjectsDisabled = !this.fetchedItems.find(s => s.cohort === this.selectedCohort && s.subjects.length > 0)
       this.selectedView = !this.averageDisabled? 'average' : 'subject'
-      this.cohortSubjects = [...new Set(
-        this.fetchedItems
-          .filter(i => this.selectedView === 'average'? i.subject === 'average' : i.subject !== 'average')
-          .map(item => item.subject)
-      )]
-      this.subjectSliderChanged(0)
+
+      this.cohortDatasets = this.fetchedItems.filter(i => this.selectedCohort === i.cohort)
+      
+      this.selectedCohortDatasetChanged(0)
     }
 
-    subjectSliderChanged(index: number) {
-      this.selectedSubjectIndex = index
-      this.selectedSubjectsDatasets = this.fetchedItems
-        .filter(fi => fi.cohort === this.selectedCohort && fi.subject === this.cohortSubjects[this.selectedSubjectIndex])
-        .map(i => i['@id'])
+    selectedCohortDatasetChanged(index) {
+      this.selectedCohortDatasetIndex = index
+      this.selectedCohortSubjects = this.cohortDatasets[index].subjects
 
-      this.selectedSubjectDatasetIndex = 0
-      this.loadSubjectConnectivity()
-    }
+      this.selectedDataset = this.cohortDatasets[index].datasets[0]
 
-    subjectDatasetSliderChanged(index) {
-      this.selectedSubjectDatasetIndex = index
-      this.loadSubjectConnectivity()
-    }
+      
+      const keepSubject = this.selectedSubjectIndex >= 0 && this.cohortDatasets[this.selectedCohortDatasetIndex].subjects
+        .includes(this.selectedCohortSubjects[this.selectedSubjectIndex])
 
-    loadSubjectConnectivity() {
-      this.fetching = true
-      this.fetchConnectivity(this.selectedSubjectsDatasets[this.selectedSubjectDatasetIndex])
+      this.subjectSliderChanged(keepSubject? this.selectedSubjectIndex : 0)
     }
 
-    // ToDo this temporary fix is for the bug existing on siibra api https://github.com/FZJ-INM1-BDA/siibra-api/issues/100
-    private fixDatasetFormat = (ds) =>  ds.name.includes('{')? ({
-      ...ds,
-      ...JSON.parse(ds.name.substring(ds.name.indexOf('{')).replace(/'/g, '"'))
-    }) : ds
-
-    fetchConnectivity(datasetId=null) {
-      const parcellation = this.sapi.getParcellation(this.atlas["@id"], this.parcellation["@id"])
-      if (parcellation) {
-        parcellation.getFeatureInstance(datasetId || this.selectedDataset['@id'])
-          .pipe(catchError(() => {
-            this.fetching = false
-            return of(null)
-          }))
-          .subscribe(ds => {
-            this.selectedDataset = this.fixDatasetFormat(ds)
-            this.setMatrixData(ds)
-            this.fetching = false
-          })
-      }
+    subjectSliderChanged(index: number) {
+      this.selectedSubjectIndex = index
+      this.fetchConnectivity()
     }
 
-    // ToDo need to be fixed on configuration side
-    fixHemisphereNaming(area: string) {
-      if (area.includes(' - left hemisphere')) {
-        return area.replace('- left hemisphere', 'left')
-      } else if (area.includes(' - right hemisphere')) {
-        return area.replace('- right hemisphere', 'right')
-      } else {
-        return area
-      }
-    }
+    fetchConnectivity() {
+      const subject = this.selectedCohortSubjects[this.selectedSubjectIndex]
+      const dataset = this.cohortDatasets[this.selectedCohortDatasetIndex]
 
-    setMatrixData(data) {
-      const matrixData = data as SapiParcellationFeatureMatrixModel
+      this.fetching = true
+      const url = `${this.endpoint}/${dataset.id}?parcellation_id=${this.parcellation.id}&subject=${subject}&type=${this.selectedType.shortName}`
 
-      this.regionIndexInMatrix = (matrixData.columns as Array<string>).findIndex(md => {
-        return this.fixHemisphereNaming(md) === this.regionName
+      this.http.get(url).pipe(catchError(() => {
+        this.fetching = false
+        return of(null)
+      })).subscribe(ds => {
+        this.fetching = false
+        this.setMatrixData(ds.matrices[subject])
       })
+    }
+
+    setMatrixData(data) {
+      this.regionIndexInMatrix = data.columns.findIndex(re => this.region.id === re['@id'])
 
       if (this.regionIndexInMatrix < 0) {
-        this.fetching = false
         this.noConnectivityForRegion = true
         this.changeDetectionRef.detectChanges()
         return
       } else if (this.noConnectivityForRegion) {
         this.noConnectivityForRegion = false
       }
-      this.sapi.processNpArrayData<PARSE_TYPEDARRAY.RAW_ARRAY>(matrixData.matrix, PARSE_TYPEDARRAY.RAW_ARRAY)
-        .then(matrix => {
-          const regionProfile = matrix.rawArray[this.regionIndexInMatrix]
-
-          const maxStrength = Math.max(...regionProfile)
-          this.logChecked = maxStrength > 1
-          this.logDisabled = maxStrength <= 1
-
-          const areas = regionProfile.reduce((p, c, i) => {
-            return {
-              ...p,
-              [this.fixHemisphereNaming(matrixData.columns[i])]: c
-            }
-          }, {})
-          this.pureConnections = areas
-
-          this.connectionsString = JSON.stringify(areas)
-          this.connectedAreas.next(this.formatConnections(areas))
-          this.setCustomLayer()
 
-          this.matrixString = JSON.stringify(matrixData.columns.map((mc, i) => ([mc, ...matrix.rawArray[i]])))
-          this.changeDetectionRef.detectChanges()
+      const regionProfile = data.data[this.regionIndexInMatrix]
 
-        })
+      const maxStrength = Math.max(...regionProfile)
+
+      this.logChecked = maxStrength > 1
+      this.logDisabled = maxStrength <= 1
+      const areas = regionProfile.reduce((p, c, i) => {
+        return {
+          ...p,
+          [data.columns[i].name]: c
+        }
+      }, {})
+
+      this.pureConnections = areas
+      this.connectionsString = JSON.stringify(areas)
+      this.connectedAreas.next(this.formatConnections(areas))
+
+      this.setCustomLayer()
+      this.matrixString = JSON.stringify(data.columns.map((mc, i) => ([mc.name, ...data.data[i]])))
+      this.changeDetectionRef.detectChanges()
+
+        
+      return data
     }
 
 
@@ -345,21 +314,27 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy {
       this.setCustomLayer()
     }
 
-    //ToDo bestViewPoint is null for the most cases
     navigateToRegion(regionName: string) {
-      this.sapi.getRegion(this.atlas["@id"], this.parcellation["@id"], regionName)
-        .getDetail(this.space["@id"])
-        .subscribe(r => {
-          const regionCentroid = r.hasAnnotation?.bestViewPoint?.coordinates
-          if (regionCentroid)
+        this.sapi.v3Get("/regions/{region_id}", {
+          path: {region_id: regionName},
+          query: {
+            parcellation_id: this.parcellation.id,
+            space_id: this.template.id
+          }
+        }).pipe(
+          switchMap(r => translateV3Entities.translateRegion(r))
+        ).subscribe(region => {
+          const centroid = region.centroid?.loc
+          if (centroid) {
             this.store$.dispatch(
-              atlasSelection.actions.navigateTo({
+              actions.navigateTo({
                 navigation: {
-                  position: regionCentroid.map(v => v.value*1e6),
+                  position: centroid.map(v => v*1e6),
                 },
                 animation: true
               })
             )
+          }
         })
     }
 
diff --git a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.style.scss b/src/features/connectivity/connectivityBrowser/connectivityBrowser.style.scss
similarity index 100%
rename from src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.style.scss
rename to src/features/connectivity/connectivityBrowser/connectivityBrowser.style.scss
diff --git a/src/features/connectivity/connectivityBrowser/connectivityBrowser.template.html b/src/features/connectivity/connectivityBrowser/connectivityBrowser.template.html
new file mode 100644
index 0000000000000000000000000000000000000000..87e51584a0f6b4daf50190cf72221eec4ba185d2
--- /dev/null
+++ b/src/features/connectivity/connectivityBrowser/connectivityBrowser.template.html
@@ -0,0 +1,104 @@
+<div class="w-100 h-100 d-block d-flex flex-column sxplr-pb-2">
+    <div>
+        <div *ngIf="types && types.length"
+            class="flex-grow-0 flex-shrink-0 d-flex flex-row flex-nowrap d-flex flex-column">
+            <mat-form-field class="flex-grow-1 flex-shrink-1 w-100">
+                <mat-label>
+                    Modality
+                </mat-label>
+                <mat-select [value]="selectedType" (selectionChange)="selectType($event.value)">
+                    <mat-option *ngFor="let type of types" [value]="type">
+                        {{ type.shortName }}
+                    </mat-option>
+                </mat-select>
+            </mat-form-field>
+
+            <mat-form-field *ngIf="!fetchingPreData && selectedType" class="flex-grow-1 flex-shrink-1 w-100">
+                <mat-label>
+                    Cohort
+                </mat-label>
+                <mat-select [value]="selectedCohort" (selectionChange)="selectCohort($event.value)">
+                    <mat-option *ngFor="let cohort of cohorts" [value]="cohort">
+                        {{ cohort }}
+                    </mat-option>
+                </mat-select>
+            </mat-form-field>
+        </div>
+
+        <mat-radio-group *ngIf="selectedCohort" [(ngModel)]="selectedView">
+            <mat-radio-button value="average" class="m-2" [disabled]="averageDisabled" color="primary">
+                Average
+            </mat-radio-button>
+            <mat-radio-button value="subject" class="m-2" [disabled]="subjectsDisabled" color="primary">
+                Subject
+            </mat-radio-button>
+        </mat-radio-group>
+
+        <div *ngIf="cohortDatasets && cohortDatasets.length > 1"
+            class="flex-grow-0 flex-shrink-0 d-flex flex-nowrap align-items-center">
+            <div class="flex-grow-1 flex-shrink-1 w-100">
+                <mat-label>
+                    Dataset
+                </mat-label>
+                <mat-slider [min]="0" [max]="cohortDatasets.length - 1" (change)="selectedCohortDatasetChanged($event.value)"
+                    [value]="selectedCohortDatasetIndex" thumbLabel step="1" class="w-100">
+                </mat-slider>
+            </div>
+        </div>
+
+        <div *ngIf="selectedCohortDatasetIndex >= 0 && selectedCohortSubjects"
+            class="flex-grow-0 flex-shrink-0 d-flex flex-nowrap align-items-center">
+            <div class="flex-grow-1 flex-shrink-1 w-100">
+                <mat-label>
+                    Subject
+                </mat-label>
+                <mat-slider [min]="0" [max]="selectedCohortSubjects.length - 1"
+                    (change)="subjectSliderChanged($event.value)" [value]="selectedSubjectIndex"
+                    thumbLabel step="1" class="w-100">
+                </mat-slider>
+            </div>
+        </div>
+    </div>
+
+    <div class="d-flex justify-content-center">
+        <mat-spinner *ngIf="fetching"></mat-spinner>
+    </div>
+
+    <div *ngIf="regionName && !fetching"
+        [style.visibility]="selectedCohort && (selectedSubjectIndex >= 0 || !averageDisabled)? 'visible' : 'hidden'"
+        class="d-flex align-items-center">
+        <mat-checkbox class="mr-2" [checked]="logChecked" (change)="changeLog($event.checked)"
+            [disabled]="logDisabled || noConnectivityForRegion">Log 10</mat-checkbox>
+        <button mat-button [matMenuTriggerFor]="exportMenu" [disabled]="!connectedAreas.value">
+            <i class="fas fa-download mr-2"></i>
+            <span>Export</span>
+        </button>
+        <button *ngIf="selectedDataset" iav-stop="mousedown click" class="icons" mat-icon-button sxplr-dialog
+            [sxplr-dialog-size]="null" [sxplr-dialog-data]="{
+                  title: selectedDataset?.name,
+                  descMd: selectedDataset?.description + '' + (selectedDataset?.authors && selectedDataset?.authors.join()),
+                  actions: [selectedDataset.ebrains_page]
+                }">
+            <i class="fas fa-info"></i>
+        </button>
+    </div>
+
+    <hbp-connectivity-matrix-row #connectivityComponent
+        [style.visibility]="regionName && !fetching && !noConnectivityForRegion && selectedCohort
+                             && (selectedSubjectIndex >= 0 || !averageDisabled)? 'visible' : 'hidden'"
+        [region]="regionName"
+        [connections]="connectionsString"
+        show-export="true" hide-export-view="true" theme="dark">
+    </hbp-connectivity-matrix-row>
+    <div *ngIf="noConnectivityForRegion">No connectivity for the region.</div>
+
+    <full-connectivity-grid #fullConnectivityGrid [matrix]="matrixString" [datasetName]="selectedDataset?.name"
+        [datasetDescription]="selectedDataset?.description" only-export="true">
+    </full-connectivity-grid>
+
+    <mat-menu #exportMenu="matMenu">
+        <button mat-menu-item [disabled]="noConnectivityForRegion"
+            (click)="exportConnectivityProfile()">Regional</button>
+        <button mat-menu-item (click)="exportFullConnectivity()">Dataset</button>
+    </mat-menu>
+</div>
\ No newline at end of file
diff --git a/src/atlasComponents/sapiViews/features/connectivity/index.ts b/src/features/connectivity/index.ts
similarity index 100%
rename from src/atlasComponents/sapiViews/features/connectivity/index.ts
rename to src/features/connectivity/index.ts
diff --git a/src/atlasComponents/sapiViews/features/connectivity/module.ts b/src/features/connectivity/module.ts
similarity index 63%
rename from src/atlasComponents/sapiViews/features/connectivity/module.ts
rename to src/features/connectivity/module.ts
index d796c5f22ce7b132574eadbcda22f8a4f672d949..97a7793ff41ee74247aa5de2a506d12763828dea 100644
--- a/src/atlasComponents/sapiViews/features/connectivity/module.ts
+++ b/src/features/connectivity/module.ts
@@ -1,12 +1,12 @@
 import { CommonModule } from "@angular/common";
 import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from "@angular/core";
 import { SAPI } from "src/atlasComponents/sapi";
-import {ConnectivityBrowserComponent} from "src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component";
-import {HasConnectivity} from "src/atlasComponents/sapiViews/features/connectivity/hasConnectivity.directive";
+
 import {AngularMaterialModule} from "src/sharedModules";
 import {FormsModule} from "@angular/forms";
 import { DialogModule } from "src/ui/dialogInfo";
-import { ConnectivityDoiPipe } from "./connectivityDoi.pipe";
+
+import { ConnectivityBrowserComponent } from "./connectivityBrowser/connectivityBrowser.component";
 
 @NgModule({
   imports: [
@@ -17,12 +17,9 @@ import { ConnectivityDoiPipe } from "./connectivityDoi.pipe";
   ],
   declarations: [
     ConnectivityBrowserComponent,
-    HasConnectivity,
-    ConnectivityDoiPipe
   ],
   exports: [
     ConnectivityBrowserComponent,
-    HasConnectivity
   ],
   providers: [
     SAPI,
diff --git a/src/features/entry/entry.component.html b/src/features/entry/entry.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..ad474847c41c6ccd4a3c7d3c390b2855f9f01152
--- /dev/null
+++ b/src/features/entry/entry.component.html
@@ -0,0 +1,91 @@
+<mat-accordion>
+    <mat-expansion-panel *ngFor="let keyvalue of (cateogryCollections$ | async | keyvalue | isConnectivity : false)"
+        sxplrCategoryAcc
+        #categoryAcc="categoryAcc"
+        [ngClass]="{
+            'sxplr-d-none': !(categoryAcc.isBusy$ | async) && (categoryAcc.total$ | async) === 0
+        }">
+
+        <mat-expansion-panel-header>
+
+            <mat-panel-title>
+                {{ keyvalue.key }}
+            </mat-panel-title>
+            
+            <mat-panel-description>
+                <spinner-cmp *ngIf="categoryAcc.isBusy$ | async"></spinner-cmp>
+                <ng-template [ngIf]="categoryAcc.total$ | async" let-total>
+                    <span>
+                        {{ total }}
+                    </span>
+                </ng-template>
+            </mat-panel-description>
+        </mat-expansion-panel-header>
+
+        <div class="c3-outer">
+            <div class="c3-inner">
+                
+                <mat-card class="c3 mat-elevation-z4"
+                    *ngFor="let feature of keyvalue.value"
+                    [ngClass]="{
+                        'sxplr-d-none': (list.state$ | async) === 'noresult'
+                    }">
+                    <mat-card-header>
+
+                        <mat-card-title>
+                            <span class="category-title sxplr-white-space-nowrap">
+                                {{ feature.name | featureNamePipe }}
+                            </span>
+                        </mat-card-title>
+                        
+                    </mat-card-header>
+
+
+                    <mat-card-content>
+                        <spinner-cmp *ngIf="(list.state$ | async) === 'busy'"></spinner-cmp>
+                        <sxplr-feature-list
+                            [template]="template"
+                            [parcellation]="parcellation"
+                            [region]="region"
+                            [bbox]="bbox"
+                            [queryParams]="queryParams | mergeObj : { type: (feature.name | featureNamePipe) }"
+                            [featureRoute]="feature.path"
+                            (onClickFeature)="onClickFeature($event)"
+                            #list="featureList"
+                            >
+                        </sxplr-feature-list>
+
+                        
+                    </mat-card-content>
+                </mat-card>
+            </div>
+        </div>
+    </mat-expansion-panel>
+    
+
+    <ng-template [ngIf]="cateogryCollections$ | async | keyvalue | isConnectivity : true" let-connectivity>
+        <ng-template ngFor [ngForOf]="connectivity" let-conn>
+            <mat-expansion-panel sxplr-sapiviews-features-connectivity-check
+                #connectivityAccordion
+                *ngIf="conn">
+                <mat-expansion-panel-header>
+                    <mat-panel-title>
+                        {{ conn.key }}
+                    </mat-panel-title>
+                </mat-expansion-panel-header>
+
+                <sxplr-features-connectivity-browser class="pe-all flex-shrink-1" 
+                    [region]="region"
+                    [sxplr-features-connectivity-browser-atlas]="atlas | async"
+                    [sxplr-features-connectivity-browser-template]="template"
+                    [sxplr-features-connectivity-browser-parcellation]="parcellation"
+                    [accordionExpanded]="connectivityAccordion.expanded"
+                    [types]="conn.value">
+                </sxplr-features-connectivity-browser>
+
+            </mat-expansion-panel>
+        </ng-template>
+    </ng-template>
+
+
+</mat-accordion>
diff --git a/src/features/entry/entry.component.scss b/src/features/entry/entry.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..666bfbb6d1f2abfabfb44a4d6fc2095f15693295
--- /dev/null
+++ b/src/features/entry/entry.component.scss
@@ -0,0 +1,56 @@
+mat-list-item
+{
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+// card in card container
+.c3-outer
+{
+  display: inline-block;
+  overflow-x: auto;
+  height: 15rem;
+  width: 100%;
+}
+
+.c3-inner
+{
+
+  height: 100%;
+  display: inline-flex;
+  gap: 1.5rem;
+  flex-wrap: nowrap;
+  
+  margin: 0 2rem;
+  align-items: stretch;
+}
+
+.c3-inner > mat-card
+{
+  width: 16rem;
+  overflow:hidden;
+  height: 95%;
+}
+
+.category-title:hover
+{
+  cursor: default;
+}
+
+mat-card.c3
+{
+  display: flex;
+  flex-direction: column;
+}
+
+mat-card.c3 > mat-card-header
+{
+  flex: 0 0 auto;
+}
+
+mat-card.c3 > mat-card-content
+{
+  flex: 1 1 auto;
+  height: 75%;
+  overflow: auto;
+}
\ No newline at end of file
diff --git a/src/features/entry/entry.component.spec.ts b/src/features/entry/entry.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..230e0df1421934b54f36d50e47407d90cbf04faf
--- /dev/null
+++ b/src/features/entry/entry.component.spec.ts
@@ -0,0 +1,29 @@
+import { CommonModule } from '@angular/common';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { SAPIModule } from 'src/atlasComponents/sapi';
+
+import { EntryComponent } from './entry.component';
+
+describe('EntryComponent', () => {
+  let component: EntryComponent;
+  let fixture: ComponentFixture<EntryComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [
+        SAPIModule,
+        CommonModule,
+      ],
+      declarations: [ EntryComponent ]
+    })
+    .compileComponents();
+
+    fixture = TestBed.createComponent(EntryComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/features/entry/entry.component.ts b/src/features/entry/entry.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..52ab5d22e8fe6ba057f3adadd56a7d7887686d7d
--- /dev/null
+++ b/src/features/entry/entry.component.ts
@@ -0,0 +1,144 @@
+import { AfterViewInit, Component, OnDestroy, QueryList, ViewChildren } from '@angular/core';
+import { select, Store } from '@ngrx/store';
+import { map, scan, switchMap, tap } from 'rxjs/operators';
+import { IDS, SAPI } from 'src/atlasComponents/sapi';
+import { Feature } from 'src/atlasComponents/sapi/sxplrTypes';
+import { FeatureBase } from '../base';
+import * as userInteraction from "src/state/userInteraction"
+import { atlasSelection } from 'src/state';
+import { CategoryAccDirective } from "../category-acc.directive"
+import { BehaviorSubject, combineLatest, merge, of, Subscription } from 'rxjs';
+
+const categoryAcc = <T extends Record<string, unknown>>(categories: T[]) => {
+  const returnVal: Record<string, T[]> = {}
+  for (const item of categories) {
+    const { category, ...rest } = item
+    if (!category) continue
+    if (typeof category !== "string") continue
+    if (!returnVal[category]) {
+      returnVal[category] = []
+    }
+    returnVal[category].push(item)
+  }
+  return returnVal
+}
+
+@Component({
+  selector: 'sxplr-feature-entry',
+  templateUrl: './entry.flattened.component.html',
+  styleUrls: ['./entry.flattened.component.scss'],
+  exportAs: 'featureEntryCmp'
+})
+export class EntryComponent extends FeatureBase implements AfterViewInit, OnDestroy {
+
+  @ViewChildren(CategoryAccDirective)
+  catAccDirs: QueryList<CategoryAccDirective>
+
+  public busyTallying$ = new BehaviorSubject<boolean>(false)
+  public totals$ = new BehaviorSubject<number>(null)
+  public features$ = new BehaviorSubject<Feature[]>([])
+
+  constructor(private sapi: SAPI, private store: Store) {
+    super()
+  }
+
+  #subscriptions: Subscription[] = []
+
+  ngOnDestroy(): void {
+    while (this.#subscriptions.length > 0) this.#subscriptions.pop().unsubscribe()
+  }
+  ngAfterViewInit(): void {
+    const catAccDirs$ = merge(
+      of(null),
+      this.catAccDirs.changes
+    ).pipe(
+      map(() => Array.from(this.catAccDirs))
+    )
+    this.#subscriptions.push(
+      catAccDirs$.pipe(
+        tap(() => this.busyTallying$.next(true)),
+        switchMap(catArrDirs => merge(
+          ...catArrDirs.map((dir, idx) => dir.total$.pipe(
+            map(val => ({ idx, val }))
+          ))
+        )),
+        
+        map(({ idx, val }) => ({ [idx.toString()]: val })),
+        scan((acc, curr) => ({ ...acc, ...curr })),
+        map(record => {
+          let tally = 0
+          for (const idx in record) {
+            tally += record[idx]
+          }
+          return tally
+        }),
+        tap(num => {
+          this.busyTallying$.next(false)
+          this.totals$.next(num)
+        }),
+      ).subscribe(),
+
+      catAccDirs$.pipe(
+        switchMap(catArrDirs => combineLatest(
+          catArrDirs.map(dir => dir.features$)
+        )),
+        map(features => features.flatMap(f => f))
+      ).subscribe(features => this.features$.next(features))
+    )
+  }
+
+  public selectedAtlas$ = this.store.pipe(
+    select(atlasSelection.selectors.selectedAtlas)
+  )
+
+  public showConnectivity$ = combineLatest([
+    this.selectedAtlas$.pipe(
+      map(atlas => atlas?.species === "Homo sapiens")
+    ),
+    this.TPRBbox$.pipe(
+      map(({ parcellation }) => parcellation?.id === IDS.PARCELLATION.JBA29)
+    )
+  ]).pipe(
+    map(flags => flags.every(f => f))
+  )
+
+  private featureTypes$ = this.sapi.v3Get("/feature/_types", {}).pipe(
+    switchMap(resp => 
+      this.sapi.iteratePages(
+        resp,
+        page => this.sapi.v3Get(
+          "/feature/_types",
+          { query: { page } }
+        )
+      )
+    ),
+  )
+
+  public cateogryCollections$ = this.TPRBbox$.pipe(
+    switchMap(({ template, parcellation, region }) => this.featureTypes$.pipe(
+      map(features => {
+        const filteredFeatures = features.filter(v => {
+          const params = [
+            ...(v.path_params || []),
+            ...(v.query_params || []),
+          ]
+          return [
+            params.includes("space_id") === (!!template) && !!template,
+            params.includes("parcellation_id") === (!!parcellation) && !!parcellation,
+            params.includes("region_id") === (!!region) && !!region,
+          ].some(val => val)
+        })
+        return categoryAcc(filteredFeatures)
+      }),
+    )),
+  )
+
+  onClickFeature(feature: Feature) {
+    this.store.dispatch(
+      userInteraction.actions.showFeature({
+        feature
+      })
+    )
+  }
+}
+
diff --git a/src/features/entry/entry.flattened.component.html b/src/features/entry/entry.flattened.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..92c930de8f5c9ade894d8f5054baffabd93511d8
--- /dev/null
+++ b/src/features/entry/entry.flattened.component.html
@@ -0,0 +1,160 @@
+<mat-accordion>
+
+    <!-- show everything except for connectivity and dataset -->
+    <ng-template ngFor [ngForOf]="cateogryCollections$ | async | keyvalue | filterCategory : ['connectivity', 'dataset', 'other'] : false"  let-keyvalue>
+        <ng-template [ngTemplateOutlet]="featureCategoryFeatureTmpl"
+        [ngTemplateOutletContext]="{
+            $implicit: keyvalue
+        }">
+        </ng-template>
+    </ng-template>
+    
+
+    <!-- only show connectivity in human atlas for now -->
+    <ng-template [ngIf]="showConnectivity$ | async">
+        <ng-template [ngIf]="cateogryCollections$ | async | keyvalue | filterCategory : ['connectivity']" let-connectivity>
+            <ng-template ngFor [ngForOf]="connectivity" let-conn>
+                <mat-expansion-panel sxplr-sapiviews-features-connectivity-check
+                    #connectivityAccordion
+                    *ngIf="conn">
+                    <mat-expansion-panel-header>
+                        <mat-panel-title>
+                            {{ conn.key }}
+                        </mat-panel-title>
+                    </mat-expansion-panel-header>
+    
+                    <sxplr-features-connectivity-browser class="pe-all flex-shrink-1" 
+                        [region]="region"
+                        [sxplr-features-connectivity-browser-atlas]="selectedAtlas$ | async"
+                        [sxplr-features-connectivity-browser-template]="template"
+                        [sxplr-features-connectivity-browser-parcellation]="parcellation"
+                        [accordionExpanded]="connectivityAccordion.expanded"
+                        [types]="conn.value">
+                    </sxplr-features-connectivity-browser>
+    
+                </mat-expansion-panel>
+            </ng-template>
+        </ng-template>
+    </ng-template>
+
+    <!-- show dataset/other at the very bottom -->
+    <ng-template ngFor [ngForOf]="cateogryCollections$ | async | keyvalue | filterCategory : ['dataset', 'other']"  let-keyvalue>
+        <ng-template [ngTemplateOutlet]="featureCategoryFeatureTmpl"
+        [ngTemplateOutletContext]="{
+            $implicit: keyvalue
+        }">
+        </ng-template>
+    </ng-template>
+</mat-accordion>
+
+<!-- template for collected category -->
+<ng-template #featureCategoryFeatureTmpl let-keyvalue>
+    <mat-expansion-panel
+        sxplrCategoryAcc
+        #categoryAcc="categoryAcc"
+        [ngClass]="{
+            'sxplr-d-none': !(categoryAcc.isBusy$ | async) && (categoryAcc.total$ | async) === 0
+        }">
+        <mat-expansion-panel-header>
+            <mat-panel-title>
+                {{ keyvalue.key }}
+            </mat-panel-title>
+            <mat-panel-description>
+                <spinner-cmp *ngIf="categoryAcc.isBusy$ | async"></spinner-cmp>
+                <ng-template [ngIf]="categoryAcc.total$ | async" let-total>
+                    <span>
+                        {{ total }}
+                    </span>
+                </ng-template>
+            </mat-panel-description>
+        </mat-expansion-panel-header>
+
+
+        <!-- <button mat-button>Show all</button> -->
+        <div class="mat-chip-container"
+            feature-filter-directive
+            [initValue]="true"
+            [items]="categoryAcc.groupedFeatures$ | async "
+            #filterFeatureCls="featureFilterDirective">
+
+            <div class="mat-chip-inner-container">
+
+                <button mat-icon-button matTooltip="Reset filter"
+                    (click)="filterFeatureCls.setAll(true)">
+                    <i class="fas fa-filter"></i>
+                </button>
+
+                <ng-template ngFor [ngForOf]="filterFeatureCls.items" let-grpFeat>
+                    <ng-template [ngIf]="grpFeat.features.length > 0">
+
+                        <ng-template [ngIf]="filterFeatureCls.checked$ | async | grpFeatToName | includes : grpFeat.meta.displayName"
+                            [ngIfThen]="selectedTmpl"
+                            [ngIfElse]="notSelectedTmpl">
+                        </ng-template>
+
+                        <ng-template #textTmpl>
+                            <span>
+                                {{ grpFeat.meta.displayName }}
+                            </span>
+                            <span class="text-muted1">
+                                ({{ grpFeat.features.length }})
+                            </span>
+                        </ng-template>
+                        <ng-template #selectedTmpl>
+                            <button mat-flat-button
+                                (click)="filterFeatureCls.toggle(grpFeat)"
+                                color="primary">
+                                <i class="fas fa-eye"></i>
+                                <ng-template [ngTemplateOutlet]="textTmpl">
+                                </ng-template>
+                            </button>
+                        </ng-template>
+
+                        <ng-template #notSelectedTmpl>
+                            <button mat-flat-button
+                                (click)="filterFeatureCls.toggle(grpFeat)"
+                                color="default">
+                                <i class="fas fa-eye-slash"></i>
+                                <ng-template [ngTemplateOutlet]="textTmpl">
+                                </ng-template>
+                            </button>
+                        </ng-template>
+
+                    </ng-template>
+                </ng-template>
+            </div>
+        </div>
+
+        <ng-template ngFor [ngForOf]="keyvalue.value" let-feature>
+
+            <div sxplr-feature-list-directive
+                [template]="template"
+                [parcellation]="parcellation"
+                [region]="region"
+                [bbox]="bbox"
+                [queryParams]="queryParams | mergeObj : { type: (feature.name | featureNamePipe) }"
+                [featureRoute]="feature.path"
+                [name]="feature.name"
+                [displayName]="feature.display_name"
+                #featureListDirective="featureListDirective">
+            </div>
+        </ng-template>
+        
+        <cdk-virtual-scroll-viewport itemSize="36"
+            filter-grp-feat
+            [featureDisplayName]="filterFeatureCls.checked$ | async | mapToProperty : 'meta' | mapToProperty : 'displayName'"
+            [groupFeature]="categoryAcc.groupedFeatures$ | async"
+            #filterGrpFeat="filterGrpFeat"
+            class="virtual-scroll-viewport">
+
+            <button *cdkVirtualFor="let feature of filterGrpFeat.filteredFeatures$"
+                mat-button
+                class="virtual-scroll-item sxplr-w-100"
+                [matTooltip]="feature.name"
+                matTooltipPosition="right"
+                (click)="onClickFeature(feature)">
+                {{ feature.name }}
+            </button>
+        </cdk-virtual-scroll-viewport>
+    </mat-expansion-panel>
+</ng-template>
\ No newline at end of file
diff --git a/src/features/entry/entry.flattened.component.scss b/src/features/entry/entry.flattened.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..34b69d51fd334765c690052c5676419602215c19
--- /dev/null
+++ b/src/features/entry/entry.flattened.component.scss
@@ -0,0 +1,30 @@
+cdk-virtual-scroll-viewport
+{
+    height: 10rem;
+}
+
+cdk-virtual-scroll-viewport button
+{
+    text-align: left;
+    height: 36px;
+    display: block;
+}
+
+.mat-chip-container
+{
+    width: 100%;
+    overflow-x: scroll;
+    overflow-y: hidden;
+    padding: 0.5rem;
+}
+
+.mat-chip-inner-container
+{
+    display: inline-flex;
+}
+
+.mat-chip-inner-container button
+{
+    white-space: nowrap;
+    margin: 0.2rem 0.4rem;
+}
diff --git a/src/features/entry/entry.nestedExpPanel.component.html b/src/features/entry/entry.nestedExpPanel.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..9c82b50fec7c89559079dc19fa05006547af760a
--- /dev/null
+++ b/src/features/entry/entry.nestedExpPanel.component.html
@@ -0,0 +1,144 @@
+<mat-accordion>
+    <mat-expansion-panel *ngFor="let keyvalue of (cateogryCollections$ | async | keyvalue | filterCategory : ['connectivity', 'dataset', 'other'] : false)"
+        sxplrCategoryAcc
+        #categoryAcc="categoryAcc"
+        [ngClass]="{
+            'sxplr-d-none': !(categoryAcc.isBusy$ | async) && (categoryAcc.total$ | async) === 0
+        }">
+
+        <mat-expansion-panel-header>
+
+            <mat-panel-title>
+                {{ keyvalue.key }}
+            </mat-panel-title>
+            
+            <mat-panel-description>
+                <spinner-cmp *ngIf="categoryAcc.isBusy$ | async"></spinner-cmp>
+                <ng-template [ngIf]="categoryAcc.total$ | async" let-total>
+                    <span>
+                        {{ total }}
+                    </span>
+                </ng-template>
+            </mat-panel-description>
+        </mat-expansion-panel-header>
+
+        <mat-accordion>
+            <mat-expansion-panel class="mat-elevation-z4"
+                *ngFor="let feature of keyvalue.value"
+                [ngClass]="{
+                    'sxplr-d-none': (list.state$ | async) === 'noresult'
+                }">
+
+                <mat-expansion-panel-header>
+                    <mat-panel-title>
+                        <span class="sxplr-white-space-nowrap">
+                            {{ feature.name | featureNamePipe }}
+                        </span>
+                    </mat-panel-title>
+                </mat-expansion-panel-header>
+                
+                <spinner-cmp *ngIf="(list.state$ | async) === 'busy'"></spinner-cmp>
+                <sxplr-feature-list
+                    [template]="template"
+                    [parcellation]="parcellation"
+                    [region]="region"
+                    [bbox]="bbox"
+                    [queryParams]="queryParams | mergeObj : { type: (feature.name | featureNamePipe) }"
+                    [featureRoute]="feature.path"
+                    (onClickFeature)="onClickFeature($event)"
+                    #list="featureList"
+                    >
+                </sxplr-feature-list>
+
+            </mat-expansion-panel>
+        </mat-accordion>
+
+    </mat-expansion-panel>
+    
+
+    <!-- only show connectivity in human atlas for now -->
+    <ng-template [ngIf]="(selectedAtlas$ | async)?.species === 'Homo sapiens'">
+        <ng-template [ngIf]="cateogryCollections$ | async | keyvalue | filterCategory : ['connectivity']" let-connectivity>
+            <ng-template ngFor [ngForOf]="connectivity" let-conn>
+                <mat-expansion-panel sxplr-sapiviews-features-connectivity-check
+                    #connectivityAccordion
+                    *ngIf="conn">
+                    <mat-expansion-panel-header>
+                        <mat-panel-title>
+                            {{ conn.key }}
+                        </mat-panel-title>
+                    </mat-expansion-panel-header>
+    
+                    <sxplr-features-connectivity-browser class="pe-all flex-shrink-1" 
+                        [region]="region"
+                        [sxplr-features-connectivity-browser-atlas]="selectedAtlas$ | async"
+                        [sxplr-features-connectivity-browser-template]="template"
+                        [sxplr-features-connectivity-browser-parcellation]="parcellation"
+                        [accordionExpanded]="connectivityAccordion.expanded"
+                        [types]="conn.value">
+                    </sxplr-features-connectivity-browser>
+    
+                </mat-expansion-panel>
+            </ng-template>
+        </ng-template>
+    </ng-template>
+
+    
+    <mat-expansion-panel *ngFor="let keyvalue of (cateogryCollections$ | async | keyvalue | filterCategory : ['dataset', 'other'])"
+        sxplrCategoryAcc
+        #categoryAcc="categoryAcc"
+        [ngClass]="{
+            'sxplr-d-none': !(categoryAcc.isBusy$ | async) && (categoryAcc.total$ | async) === 0
+        }">
+
+        <mat-expansion-panel-header>
+
+            <mat-panel-title>
+                {{ keyvalue.key }}
+            </mat-panel-title>
+            
+            <mat-panel-description>
+                <spinner-cmp *ngIf="categoryAcc.isBusy$ | async"></spinner-cmp>
+                <ng-template [ngIf]="categoryAcc.total$ | async" let-total>
+                    <span>
+                        {{ total }}
+                    </span>
+                </ng-template>
+            </mat-panel-description>
+        </mat-expansion-panel-header>
+
+        <mat-accordion>
+            <mat-expansion-panel class="mat-elevation-z4"
+                *ngFor="let feature of keyvalue.value"
+                [ngClass]="{
+                    'sxplr-d-none': (list.state$ | async) === 'noresult'
+                }">
+
+                <mat-expansion-panel-header>
+                    <mat-panel-title>
+                        <span class="sxplr-white-space-nowrap">
+                            {{ feature.name | featureNamePipe }}
+                        </span>
+                    </mat-panel-title>
+                </mat-expansion-panel-header>
+                
+                <spinner-cmp *ngIf="(list.state$ | async) === 'busy'"></spinner-cmp>
+                <sxplr-feature-list
+                    [template]="template"
+                    [parcellation]="parcellation"
+                    [region]="region"
+                    [bbox]="bbox"
+                    [queryParams]="queryParams | mergeObj : { type: (feature.name | featureNamePipe) }"
+                    [featureRoute]="feature.path"
+                    (onClickFeature)="onClickFeature($event)"
+                    #list="featureList"
+                    >
+                </sxplr-feature-list>
+
+            </mat-expansion-panel>
+        </mat-accordion>
+
+    </mat-expansion-panel>
+    
+
+</mat-accordion>
diff --git a/src/features/entry/entry.nestedExpPanel.component.scss b/src/features/entry/entry.nestedExpPanel.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..68a9f6d331b11a5b9723e3996f827c8240c1bae5
--- /dev/null
+++ b/src/features/entry/entry.nestedExpPanel.component.scss
@@ -0,0 +1,10 @@
+mat-list-item
+{
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+sxplr-feature-list
+{
+    height: 10rem;
+}
diff --git a/src/features/feature-view/feature-view.component.html b/src/features/feature-view/feature-view.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..f213457ecc229d9aa0db1712d3f949c3b11e4ecb
--- /dev/null
+++ b/src/features/feature-view/feature-view.component.html
@@ -0,0 +1,144 @@
+<ng-template #headerTmpl>
+  <ng-content select="[header]"></ng-content>
+</ng-template>
+
+<mat-card *ngIf="!feature">
+
+  <ng-template [ngTemplateOutlet]="headerTmpl"></ng-template>
+  <span>
+    Feature not specified.
+  </span>
+</mat-card>
+
+<mat-card *ngIf="feature"
+  class="mat-elevation-z4 sxplr-z-4">
+  <mat-card-title>
+    <ng-template [ngTemplateOutlet]="headerTmpl"></ng-template>
+    <div class="feature-title">
+      {{ feature.name }}
+    </div>
+  </mat-card-title>
+
+  <mat-card-subtitle class="sxplr-d-inline-flex sxplr-align-items-stretch">
+    <ng-template [ngIf]="feature.category">
+      <mat-icon class="sxplr-m-a" fontSet="fas" fontIcon="fa-database"></mat-icon>
+      <span class="sxplr-m-a sxplr-pr-1">
+        <ng-template [ngIf]="feature.category !== 'Unknown category'" [ngIfElse]="fallbackTmpl">
+          {{ feature.category }}
+        </ng-template>
+        <ng-template #fallbackTmpl>
+          Generic
+        </ng-template>
+      </span>
+    </ng-template>
+
+    <ng-template [ngIf]="warnings$ | async" let-warnings>
+      <mat-divider [vertical]="true"></mat-divider>  
+      <ng-template ngFor [ngForOf]="warnings" let-warning>
+        <button mat-icon-button
+          [matTooltip]="warning">
+          <i class="fas fa-exclamation-triangle"></i>
+        </button>
+      </ng-template>
+    </ng-template>
+
+    <mat-divider [vertical]="true"></mat-divider>
+
+    <ng-template [ngIf]="busy$ | async">
+      <spinner-cmp></spinner-cmp>
+    </ng-template>
+
+    <!-- template for external link -->
+    <ng-template #externalLinkTmpl let-url>
+      <a mat-icon-button sxplr-hide-when-local [href]="url" target="_blank">
+        <i class="fas fa-external-link-alt"></i>
+      </a>
+    </ng-template>
+
+    <!-- if link is prepopulated -->
+    <ng-template
+      ngFor
+      [ngForOf]="feature.link"
+      let-url>
+      <ng-template
+        [ngTemplateOutlet]="externalLinkTmpl"
+        [ngTemplateOutletContext]="{
+          $implicit: url.href
+        }">
+      </ng-template>
+    </ng-template>
+
+    <!-- if link is lazy fetched -->
+    <ng-template
+      ngFor
+      [ngForOf]="additionalLinks$ | async"
+      let-url>
+      <ng-template
+        [ngTemplateOutlet]="externalLinkTmpl"
+        [ngTemplateOutletContext]="{
+          $implicit: url
+        }">
+      </ng-template>
+    </ng-template>
+
+  </mat-card-subtitle>
+</mat-card>
+
+<mat-card *ngIf="feature" class="sxplr-z-0">
+  <mat-card-content>
+    <!-- TODO fix feature typing! with proper translate fn -->
+    <markdown-dom class="sxplr-muted" [markdown]="feature.desc">
+    </markdown-dom>
+  </mat-card-content>
+</mat-card>
+
+<!-- radar special view -->
+<ng-template [ngIf]="polar$ | async" let-polar>
+  <kg-dataset-dumb-radar
+    [radar]="polar"
+    [attr.kg-ds-prv-darkmode]="darktheme$ | async">
+  </kg-dataset-dumb-radar>
+</ng-template>
+
+<!-- line special view -->
+<ng-template [ngIf]="linear$ | async" let-linear>
+  <kg-dataset-dumb-line
+    [profileBs]="linear"
+    [attr.kg-ds-prv-darkmode]="darktheme$ | async">
+  </kg-dataset-dumb-line>
+</ng-template>
+
+<!-- tabular special view -->
+<!-- suppress tabuular view if linear or polar is visible -->
+<ng-template [ngIf]="!(linear$ | async) && !(polar$ | async)">
+
+  <ng-template [ngIf]="tabular$ | async" let-tabular>
+    <table class="feature-detail" mat-table [dataSource]="tabular | transformPdToDs">
+  
+      <ng-container *ngFor="let column of columns$ | async"
+        [matColumnDef]="column">
+        <th mat-header-cell *matHeaderCellDef>
+          {{ column }}
+        </th>
+        <td mat-cell *matCellDef="let element">
+          {{ element[column] }}
+        </td>
+      </ng-container>
+  
+      <tr mat-header-row *matHeaderRowDef="columns$ | async"></tr>
+      <tr mat-row *matRowDef="let row; columns: columns$ | async;"></tr>
+    </table>
+  </ng-template>  
+</ng-template>
+
+<!-- voi special view -->
+<ng-template [ngIf]="voi$ | async" let-voi>
+  <ng-layer-ctl
+    [ng-layer-ctl-name]="voi.ngVolume.url"
+    [ng-layer-ctl-src]="voi.ngVolume.url"
+    [ng-layer-ctl-transform]="voi.ngVolume.transform"
+    [ng-layer-ctl-info]="voi.ngVolume.info"
+    [ng-layer-ctl-opacity]="1.0"
+    [ng-layer-ctrl-show]="true">
+  </ng-layer-ctl>
+</ng-template>
diff --git a/src/features/feature-view/feature-view.component.scss b/src/features/feature-view/feature-view.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..d767661ba1a3b8ea00e948c39b8c9b8b542701b8
--- /dev/null
+++ b/src/features/feature-view/feature-view.component.scss
@@ -0,0 +1,24 @@
+.feature-title
+{
+    max-height: 8rem;
+    overflow-x: hidden;
+    overflow-y: auto;
+}
+
+.feature-detail
+{
+    width: 100%;
+}
+
+spinner-cmp
+{
+    margin: auto;
+    margin-left: 0.5rem;
+}
+
+kg-dataset-dumb-radar,
+kg-dataset-dumb-line
+{
+    display: block;
+    max-height: 24rem;
+}
diff --git a/src/features/feature-view/feature-view.component.spec.ts b/src/features/feature-view/feature-view.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9ef81ec8633c3dd5de9dbadf6bb2cd73fc8c87f3
--- /dev/null
+++ b/src/features/feature-view/feature-view.component.spec.ts
@@ -0,0 +1,35 @@
+import { CommonModule } from '@angular/common';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { EMPTY } from 'rxjs';
+import { SAPIModule } from 'src/atlasComponents/sapi';
+import { DARKTHEME } from 'src/util/injectionTokens';
+
+import { FeatureViewComponent } from './feature-view.component';
+
+describe('FeatureViewComponent', () => {
+  let component: FeatureViewComponent;
+  let fixture: ComponentFixture<FeatureViewComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [
+        SAPIModule,
+        CommonModule,
+      ],
+      declarations: [ FeatureViewComponent ],
+      providers: [{
+        provide: DARKTHEME,
+        useValue: EMPTY
+      }]
+    })
+    .compileComponents();
+
+    fixture = TestBed.createComponent(FeatureViewComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/features/feature-view/feature-view.component.ts b/src/features/feature-view/feature-view.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..400644f14c73fe60a0292c13ceb41916b96280c4
--- /dev/null
+++ b/src/features/feature-view/feature-view.component.ts
@@ -0,0 +1,115 @@
+import { ChangeDetectionStrategy, Component, Inject, Input, OnChanges } from '@angular/core';
+import { BehaviorSubject, Observable, Subject } from 'rxjs';
+import { distinctUntilChanged, filter, map } from 'rxjs/operators';
+import { SAPI } from 'src/atlasComponents/sapi/sapi.service';
+import { Feature, TabularFeature, VoiFeature } from 'src/atlasComponents/sapi/sxplrTypes';
+import { DARKTHEME } from 'src/util/injectionTokens';
+import { isTabularData, isVoiData, notQuiteRight } from "../guards"
+
+type PolarPlotData = {
+  receptor: {
+    label: string
+  }
+  density: {
+    mean: number
+    sd: number
+    unit: string
+  }
+}
+
+@Component({
+  selector: 'sxplr-feature-view',
+  templateUrl: './feature-view.component.html',
+  styleUrls: ['./feature-view.component.scss'],
+  changeDetection: ChangeDetectionStrategy.OnPush
+})
+export class FeatureViewComponent implements OnChanges {
+
+  @Input()
+  feature: Feature
+
+  #detailLinks = new Subject<string[]>()
+  additionalLinks$ = this.#detailLinks.pipe(
+    distinctUntilChanged((o, n) => o.length == n.length),
+    map(links => {
+      const set = new Set((this.feature.link || []).map(v => v.href))
+      return links.filter(l => !set.has(l))
+    })
+  )
+
+  busy$ = new BehaviorSubject<boolean>(false)
+  
+  tabular$ = new BehaviorSubject<TabularFeature<number|string|number[]>>(null)
+  voi$ = new BehaviorSubject<VoiFeature>(null)
+  columns$: Observable<string[]> = this.tabular$.pipe(
+    map(data => data
+      ? ['index', ...data.columns]
+      : []),
+  )
+
+  polar$: Observable<PolarPlotData[]> = this.tabular$.pipe(
+    filter(v => v?.name.includes("ReceptorDensityFingerprint")),
+    map(v => {
+      return v.index.map((receptor, idx) => ({
+        receptor: {
+          label: receptor
+        },
+        density: {
+          mean: v.data[idx][0] as number,
+          sd: v.data[idx][1] as number,
+          unit: 'fmol/mg'
+        }
+      }))
+    })
+  )
+
+  linear$: Observable<Record<number, number>> = this.tabular$.pipe(
+    filter(v => v && v.name.includes("ReceptorDensityProfile")),
+    map(v => {
+      const returnLbl: Record<number, number> = {}
+
+      v.index.forEach((label, idx) => {
+        const val = v.data[idx][0]
+        if (typeof val === 'number') {
+          returnLbl[Math.round(Number(label)*100)] = val
+        }
+      })
+      return returnLbl
+    })
+  )
+
+  warnings$ = new Subject<string[]>()
+
+  constructor(
+    private sapi: SAPI,
+    @Inject(DARKTHEME) public darktheme$: Observable<boolean>,  
+  ) { }
+
+  ngOnChanges(): void {
+    
+    this.voi$.next(null)
+    this.tabular$.next(null)
+    this.busy$.next(true)
+
+    this.sapi.getV3FeatureDetailWithId(this.feature.id).subscribe(
+      val => {
+        this.busy$.next(false)
+        
+        if (isTabularData(val)) {
+          this.tabular$.next(val)
+        }
+        if (isVoiData(val)) {
+          this.voi$.next(val)
+        }
+
+        this.warnings$.next(
+          notQuiteRight(val)
+        )
+
+        this.#detailLinks.next((val.link || []).map(l => l.href))
+        
+      },
+      () => this.busy$.next(false)
+    )
+  }
+}
diff --git a/src/features/feature.filter.directive.ts b/src/features/feature.filter.directive.ts
new file mode 100644
index 0000000000000000000000000000000000000000..14421065f2a2ed090a8c31dfef2c41877ddf3152
--- /dev/null
+++ b/src/features/feature.filter.directive.ts
@@ -0,0 +1,95 @@
+import { Directive, Input, OnChanges, SimpleChanges } from "@angular/core";
+import { BehaviorSubject, combineLatest, concat, merge, of, Subject } from "rxjs";
+import { map, scan, shareReplay, switchMap } from "rxjs/operators";
+
+@Directive({
+  selector: '[feature-filter-directive]',
+  exportAs: 'featureFilterDirective'
+})
+export class FeatureFilterDirective<T> implements OnChanges{
+  @Input()
+  items: T[] = []
+
+  @Input()
+  initValue = false
+
+  #items$ = new BehaviorSubject<T[]>(this.items)
+  #initValue$ = new BehaviorSubject<boolean>(this.initValue)
+  #toggle$ = new Subject<{ target: T }>()
+  #setValue$ = new Subject<{ target: T, flag: boolean}>()
+  #setAll$ = new Subject<{ flag: boolean }>()
+
+  ngOnChanges(changes: SimpleChanges): void {
+    if (changes.items) {
+      this.#items$.next(changes.items.currentValue)
+    }
+    if (changes.initValue) {
+      this.#initValue$.next(changes.initValue.currentValue)
+    }
+  }
+  #checkbox$ = combineLatest([
+    this.#items$,
+    this.#initValue$
+  ]).pipe(
+    switchMap(([items, initFlag]) => {
+      const initialCondition = items.map(item => ({ item, flag: initFlag }))
+      return merge<{ target: T, flag?: boolean, op: string }>(
+        this.#toggle$.pipe(
+          map(v => ({ ...v, op: 'toggle' }))
+        ),
+        this.#setValue$.pipe(
+          map(v => ({ ...v, op: 'set' }))
+        ),
+        this.#setAll$.pipe(
+          map(v => ({ ...v, op: 'setAll' }))
+        ),
+        of({ op: 'noop' })
+      ).pipe(
+        scan((acc, { target, op, flag }) => {
+          
+          if (op === 'noop') return acc
+          if (op === 'setAll') {
+            return acc.map(({ item }) => ({ item, flag }))
+          }
+  
+          const found = acc.find(({ item }) => item === target)
+          const other = acc.filter(({ item }) => item !== target)
+          const itemToAppend = found
+            ? [{
+              item: found.item,
+              flag: op === 'set'
+                ? flag
+                : !found.flag
+            }]
+            : []
+          return [ ...other, ...itemToAppend ]
+        }, initialCondition)
+      )
+    }),
+    shareReplay(1),
+  )
+
+  checked$ = concat(
+    of([] as T[]),
+    this.#checkbox$.pipe(
+      map(arr => arr.filter(v => v.flag).map(v => v.item)),
+    )
+  )
+  
+  unchecked$ = concat(
+    of([] as T[]),
+    this.#checkbox$.pipe(
+      map(arr => arr.filter(v => !v.flag).map(v => v.item)),
+    )
+  )
+
+  toggle(target: T){
+    this.#toggle$.next({ target })
+  }
+  setValue(target: T, flag: boolean) {
+    this.#setValue$.next({ target, flag })
+  }
+  setAll(flag: boolean){
+    this.#setAll$.next({ flag })
+  }
+}
diff --git a/src/features/featureName.pipe.ts b/src/features/featureName.pipe.ts
new file mode 100644
index 0000000000000000000000000000000000000000..004eedba3f94b147a77bd2e858d4f7962dce3998
--- /dev/null
+++ b/src/features/featureName.pipe.ts
@@ -0,0 +1,12 @@
+import { Pipe, PipeTransform } from "@angular/core";
+
+@Pipe({
+  name: 'featureNamePipe',
+  pure: true,
+})
+
+export class FeatureNamePipe implements PipeTransform{
+  public transform(name: string): string {
+    return name.split(".").slice(-1)[0]
+  }
+}
diff --git a/src/features/filterCategories.pipe.ts b/src/features/filterCategories.pipe.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8f103328732218fd6a28717eedfc6eaf87baaa30
--- /dev/null
+++ b/src/features/filterCategories.pipe.ts
@@ -0,0 +1,15 @@
+import { KeyValue } from "@angular/common"
+import { Pipe, PipeTransform } from "@angular/core"
+import { PathReturn } from "src/atlasComponents/sapi/typeV3"
+
+type DS = KeyValue<string, PathReturn<"/feature/_types">["items"]>
+
+@Pipe({
+  name: 'filterCategory',
+  pure: true
+})
+export class FilterCategoriesPipe implements PipeTransform{
+  public transform(datasets: DS[], keys: string[], inclFlag: boolean=true) {
+    return (datasets || []).filter(d => inclFlag === keys.includes(d.key) )
+  }
+}
diff --git a/src/features/filterGrpFeat.directive.ts b/src/features/filterGrpFeat.directive.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3caa9416d934aa64a43716dbad8108ee697e698f
--- /dev/null
+++ b/src/features/filterGrpFeat.directive.ts
@@ -0,0 +1,31 @@
+import { Directive, Input, OnChanges, SimpleChanges } from "@angular/core";
+import { GroupedFeature } from "./category-acc.directive";
+import { combineLatest, Subject } from "rxjs";
+import { map } from "rxjs/operators";
+
+@Directive({
+  selector: '[filter-grp-feat]',
+  exportAs: 'filterGrpFeat'
+})
+export class FilterGroupList implements OnChanges{
+
+  @Input()
+  featureDisplayName: string[] = []
+  #featureDisplayName = new Subject<string[]>()
+
+  @Input()
+  groupFeature: GroupedFeature[] = []
+  #groupFeature = new Subject<GroupedFeature[]>()
+
+  filteredFeatures$ = combineLatest([
+    this.#featureDisplayName,
+    this.#groupFeature
+  ]).pipe(
+    map(([ displaynames, grpfeats ]) => grpfeats.filter(feat => displaynames.includes(feat.meta.displayName)).flatMap(f => f.features))
+  )
+
+  ngOnChanges(): void {
+    this.#featureDisplayName.next(this.featureDisplayName)
+    this.#groupFeature.next(this.groupFeature)
+  }
+}
diff --git a/src/features/grpFeatToName.pipe.ts b/src/features/grpFeatToName.pipe.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f124a683609247864bb79b1a55d9055c7b16627d
--- /dev/null
+++ b/src/features/grpFeatToName.pipe.ts
@@ -0,0 +1,13 @@
+import { Pipe, PipeTransform } from "@angular/core";
+import { GroupedFeature } from "./category-acc.directive";
+
+@Pipe({
+  name: 'grpFeatToName',
+  pure: true
+})
+
+export class GroupFeaturesToName implements PipeTransform{
+  public transform(groupFeats: GroupedFeature[]): string[] {
+    return groupFeats.map(f => f.meta.displayName)
+  }
+}
diff --git a/src/features/guards.ts b/src/features/guards.ts
new file mode 100644
index 0000000000000000000000000000000000000000..fefbc7a0bbc14d1a5baf042ec6283de30d6516ed
--- /dev/null
+++ b/src/features/guards.ts
@@ -0,0 +1,18 @@
+import { TabularFeature, VoiFeature } from "src/atlasComponents/sapi/sxplrTypes"
+
+export function isTabularData(feature: unknown): feature is TabularFeature<number|string|number[]> {
+  return !!feature['index'] && !!feature['columns']
+}
+
+export function isVoiData(feature: unknown): feature is VoiFeature {
+  return !!feature['bbox']
+}
+
+export function notQuiteRight(feature: unknown): string[] {
+  if (feature['name'].includes("Cellular level 3D reconstructed volumes at 1µm resolution")) {
+    return [
+      "This volume is currently not displayed correctly. We are working to restore the functionality."
+    ]
+  }
+  return []
+}
diff --git a/src/features/index.ts b/src/features/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d99543461bfe83c8376f42512683005eeb8df5ac
--- /dev/null
+++ b/src/features/index.ts
@@ -0,0 +1 @@
+export { FeatureModule } from "./module"
\ No newline at end of file
diff --git a/src/features/list/list.component.html b/src/features/list/list.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..28d0b7dabbee811aecda8eda61e2ec33abf58866
--- /dev/null
+++ b/src/features/list/list.component.html
@@ -0,0 +1,11 @@
+<cdk-virtual-scroll-viewport itemSize="36"
+    class="virtual-scroll-viewport">
+    <button *cdkVirtualFor="let feature of features$ | async"
+        mat-button
+        class="virtual-scroll-item sxplr-w-100"
+        [matTooltip]="feature.name"
+        matTooltipPosition="right"
+        (click)="onClickItem(feature)">
+        {{ feature.name }}
+    </button>
+</cdk-virtual-scroll-viewport>
diff --git a/src/features/list/list.component.scss b/src/features/list/list.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..ad15ab8305026cc915bde506021c9b8c558aa2d3
--- /dev/null
+++ b/src/features/list/list.component.scss
@@ -0,0 +1,27 @@
+:host
+{
+    display: block;
+    width: 100%;
+    height:100%;
+}
+
+.feature-name
+{
+    white-space: nowrap;
+}
+
+.feature-name:hover
+{
+    cursor: default;
+}
+
+.virtual-scroll-viewport
+{
+    height: 100%;
+}
+
+.virtual-scroll-item
+{
+    height:36px;
+    display: block;
+}
diff --git a/src/features/list/list.component.spec.ts b/src/features/list/list.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..dce8f1b840eb8c341090f0620fdbe8c50c3f0965
--- /dev/null
+++ b/src/features/list/list.component.spec.ts
@@ -0,0 +1,27 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { SAPIModule } from 'src/atlasComponents/sapi';
+
+import { ListComponent } from './list.component';
+
+describe('ListComponent', () => {
+  let component: ListComponent;
+  let fixture: ComponentFixture<ListComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [
+        SAPIModule
+      ],
+      declarations: [ ListComponent ],
+    })
+    .compileComponents();
+
+    fixture = TestBed.createComponent(ListComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/features/list/list.component.ts b/src/features/list/list.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..29500aca749dc60f584165acfe66efd0a5469d66
--- /dev/null
+++ b/src/features/list/list.component.ts
@@ -0,0 +1,24 @@
+import { Component, EventEmitter, Output } from '@angular/core';
+import { SAPI } from 'src/atlasComponents/sapi';
+import { Feature } from 'src/atlasComponents/sapi/sxplrTypes';
+import { ListDirective } from './list.directive';
+
+@Component({
+  selector: 'sxplr-feature-list',
+  templateUrl: './list.component.html',
+  styleUrls: ['./list.component.scss'],
+  exportAs: "featureList"
+})
+export class ListComponent extends ListDirective {
+
+  @Output()
+  onClickFeature = new EventEmitter<Feature>()
+
+  constructor(sapi: SAPI) {
+    super(sapi)
+  }
+
+  onClickItem(feature: Feature){
+    this.onClickFeature.emit(feature)
+  }
+}
diff --git a/src/features/list/list.directive.ts b/src/features/list/list.directive.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a2a7353ec31049d15c09b42b7634b94b35110c48
--- /dev/null
+++ b/src/features/list/list.directive.ts
@@ -0,0 +1,67 @@
+import { Input, Directive, SimpleChanges } from "@angular/core";
+import { BehaviorSubject, combineLatest, Observable, of, throwError } from "rxjs";
+import { catchError, switchMap, tap } from "rxjs/operators";
+import { SAPI } from "src/atlasComponents/sapi";
+import { Feature } from "src/atlasComponents/sapi/sxplrTypes";
+import { FeatureType } from "src/atlasComponents/sapi/typeV3";
+import { AllFeatures, FeatureBase } from "../base";
+
+@Directive({
+  selector: '[sxplr-feature-list-directive]',
+  exportAs: 'featureListDirective'
+})
+export class ListDirective extends FeatureBase{
+
+  @Input()
+  name: string
+
+  @Input()
+  displayName: string
+
+  @Input()
+  featureRoute: string
+  private guardedRoute$ = new BehaviorSubject<FeatureType>(null)
+
+  public state$ = new BehaviorSubject<'busy'|'noresult'|'result'>('noresult')
+
+  constructor(private sapi: SAPI) {
+    super()
+  }
+
+  ngOnChanges(sc: SimpleChanges): void {
+    super.ngOnChanges(sc)
+    const { featureRoute } = sc
+    if (featureRoute) {
+      const featureType = (featureRoute.currentValue || '').split("/").slice(-1)[0]
+      this.guardedRoute$.next(AllFeatures[featureType])
+    }
+  }
+
+  public features$: Observable<Feature[]> = combineLatest([
+    this.guardedRoute$,
+    this.TPRBbox$,
+  ]).pipe(
+    tap(() => this.state$.next('busy')),
+    switchMap(([route, { template, parcellation, region, bbox }]) => {
+      if (!route) {
+        return throwError("noresult")
+      }
+      const query = {}
+      if (template) query['space_id'] = template.id
+      if (parcellation) query['parcellation_id'] = parcellation.id
+      if (region) query['region_id'] = region.name
+      if (bbox) query['bbox'] = JSON.stringify(bbox)
+      return this.sapi.getV3Features(route, {
+        query: {
+          ...this.queryParams,
+          ...query,
+        } as any
+      })
+    }),
+    catchError(() => {
+      this.state$.next("noresult")
+      return of([] as Feature[])
+    }),
+    tap(result => this.state$.next(result.length > 0 ? 'result' : 'noresult')),
+  )
+}
diff --git a/src/features/module.ts b/src/features/module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ba78304b9941fd6cafb9c1a85a53f2aa92be54d3
--- /dev/null
+++ b/src/features/module.ts
@@ -0,0 +1,78 @@
+import { CommonModule } from "@angular/common";
+import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core";
+import { MatCardModule } from "@angular/material/card";
+import { MatRippleModule } from "@angular/material/core";
+import { MatExpansionModule } from "@angular/material/expansion";
+import { MatListModule } from "@angular/material/list";
+import { MatTooltipModule } from "@angular/material/tooltip";
+import { SpinnerModule } from "src/components/spinner";
+import { UtilModule } from "src/util";
+import { EntryComponent } from './entry/entry.component'
+import { FeatureNamePipe } from "./featureName.pipe";
+import { ListComponent } from './list/list.component';
+import { CategoryAccDirective } from './category-acc.directive';
+import { SapiViewsFeatureConnectivityModule } from "./connectivity";
+import { ScrollingModule } from "@angular/cdk/scrolling";
+import { MatButtonModule } from "@angular/material/button"
+import { MatIconModule } from "@angular/material/icon";
+import { MatDividerModule } from "@angular/material/divider";
+import { MarkdownModule } from "src/components/markdown";
+import { MatTableModule } from "@angular/material/table";
+import { FeatureViewComponent } from "./feature-view/feature-view.component";
+import { TransformPdToDsPipe } from "./transform-pd-to-ds.pipe";
+import { NgLayerCtlModule } from "src/viewerModule/nehuba/ngLayerCtlModule/module";
+import { VoiBboxDirective } from "./voi-bbox.directive";
+import { FilterCategoriesPipe } from "./filterCategories.pipe";
+import { ListDirective } from "./list/list.directive";
+import { MatChipsModule } from "@angular/material/chips";
+import { FeatureFilterDirective } from "./feature.filter.directive";
+import { FilterGroupList } from "./filterGrpFeat.directive"
+import { GroupFeaturesToName } from "./grpFeatToName.pipe";
+
+@NgModule({
+  imports: [
+    CommonModule,
+    MatCardModule,
+    MatExpansionModule,
+    SpinnerModule,
+    MatListModule,
+    MatTooltipModule,
+    UtilModule,
+    MatRippleModule,
+    SapiViewsFeatureConnectivityModule,
+    ScrollingModule,
+    MatButtonModule,
+    MatIconModule,
+    MatDividerModule,
+    MarkdownModule,
+    MatTableModule,
+    NgLayerCtlModule,
+    MatChipsModule,
+  ],
+  declarations: [
+    EntryComponent,
+    ListComponent,
+    FeatureViewComponent,
+    FilterCategoriesPipe,
+    ListDirective,
+    FeatureFilterDirective,
+    FilterGroupList,
+
+    CategoryAccDirective,
+    VoiBboxDirective,
+
+    FeatureNamePipe,
+    TransformPdToDsPipe,
+    GroupFeaturesToName,
+  ],
+  exports: [
+    EntryComponent,
+    FeatureViewComponent,
+    VoiBboxDirective,
+    ListDirective,
+  ],
+  schemas: [
+    CUSTOM_ELEMENTS_SCHEMA,
+  ]
+})
+export class FeatureModule{}
\ No newline at end of file
diff --git a/src/features/transform-pd-to-ds.pipe.spec.ts b/src/features/transform-pd-to-ds.pipe.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..66eb0d5f6e111a63b285e8d1dcf3460759468bcc
--- /dev/null
+++ b/src/features/transform-pd-to-ds.pipe.spec.ts
@@ -0,0 +1,8 @@
+import { TransformPdToDsPipe } from './transform-pd-to-ds.pipe';
+
+describe('TransformPdToDsPipe', () => {
+  it('create an instance', () => {
+    const pipe = new TransformPdToDsPipe();
+    expect(pipe).toBeTruthy();
+  });
+});
diff --git a/src/features/transform-pd-to-ds.pipe.ts b/src/features/transform-pd-to-ds.pipe.ts
new file mode 100644
index 0000000000000000000000000000000000000000..09f598d9d6ceea05a41c7599d5ea90a45b32b5b0
--- /dev/null
+++ b/src/features/transform-pd-to-ds.pipe.ts
@@ -0,0 +1,23 @@
+import { CdkTableDataSourceInput } from '@angular/cdk/table';
+import { Pipe, PipeTransform } from '@angular/core';
+import { TabularFeature } from 'src/atlasComponents/sapi/sxplrTypes';
+
+@Pipe({
+  name: 'transformPdToDs',
+  pure: true
+})
+export class TransformPdToDsPipe implements PipeTransform {
+
+  transform(pd: TabularFeature<string|number|number[]>): CdkTableDataSourceInput<unknown> {
+    return pd.data.map((arr, idx) => {
+      const returnVal: Record<string, string|number|number[]> = {
+        index: pd.index[idx],
+      }
+      arr.forEach((val, colIdx) => {
+        returnVal[pd.columns[colIdx]] = val
+      })
+      return returnVal
+    })
+  }
+
+}
diff --git a/src/features/voi-bbox.directive.ts b/src/features/voi-bbox.directive.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d6ed2e0aac4ca11816b5f214699ed9c07cc8a47d
--- /dev/null
+++ b/src/features/voi-bbox.directive.ts
@@ -0,0 +1,155 @@
+import { Directive, Inject, Input, OnDestroy, Optional } from "@angular/core";
+import { Store } from "@ngrx/store";
+import { concat, interval, of, Subject, Subscription } from "rxjs";
+import { debounce, distinctUntilChanged, filter, pairwise, take } from "rxjs/operators";
+import { AnnotationLayer, TNgAnnotationAABBox, TNgAnnotationPoint } from "src/atlasComponents/annotations";
+import { Feature, VoiFeature } from "src/atlasComponents/sapi/sxplrTypes";
+import { userInteraction } from "src/state";
+import { ClickInterceptor, CLICK_INTERCEPTOR_INJECTOR } from "src/util";
+import { arrayEqual } from "src/util/array";
+import { isVoiData } from "./guards"
+
+@Directive({
+  selector: '[voiBbox]',
+})
+export class VoiBboxDirective implements OnDestroy {
+  
+  #onDestroyCb: (() => void)[] = []
+
+  static VOI_LAYER_NAME = 'voi-annotation-layer'
+  static VOI_ANNOTATION_COLOR = "#ffff00"
+
+  #voiSubs: Subscription[] = []
+  private _voiBBoxSvc: AnnotationLayer
+  get voiBBoxSvc(): AnnotationLayer {
+    if (this._voiBBoxSvc) return this._voiBBoxSvc
+    try {
+      const layer = AnnotationLayer.Get(
+        VoiBboxDirective.VOI_LAYER_NAME,
+        VoiBboxDirective.VOI_ANNOTATION_COLOR
+      )
+      this._voiBBoxSvc = layer
+      this.#voiSubs.push(
+        layer.onHover.subscribe(val => this.handleOnHoverFeature(val || {}))
+      )
+      this.#onDestroyCb.push(() => {
+        this._voiBBoxSvc.dispose()
+        this._voiBBoxSvc = null
+      })
+      return layer
+    } catch (e) {
+      return null
+    }
+  }
+  #annotationIdToFeature = new Map<string, VoiFeature>()
+  #features$ = new Subject<VoiFeature[]>()
+  #voiFeatures: VoiFeature[] = []
+  
+  @Input()
+  set features(feats: Feature[]){
+    this.#voiFeatures = feats.filter(isVoiData)
+    this.#features$.next(this.#voiFeatures)
+  }
+  get features(): VoiFeature[]{
+    return this.#voiFeatures
+  }
+
+  ngOnDestroy(): void {
+    while (this.#onDestroyCb.length > 0) this.#onDestroyCb.pop()()
+  }
+
+  constructor(
+    private store: Store,
+    @Optional() @Inject(CLICK_INTERCEPTOR_INJECTOR) clickInterceptor: ClickInterceptor,
+  ){
+    if (clickInterceptor) {
+      const { register, deregister } = clickInterceptor
+      const handleClick = this.handleClick.bind(this)
+      register(handleClick)
+      this.#onDestroyCb.push(() => deregister(handleClick))
+    }
+
+    const sub = concat(
+      of([] as VoiFeature[]),
+      this.#features$
+    ).pipe(
+      distinctUntilChanged(arrayEqual((o, n) => o.id === n.id)),
+      pairwise(),
+      debounce(() => 
+        interval(16).pipe(
+          filter(() => !!this.voiBBoxSvc),
+          take(1),
+        )
+      ),
+    ).subscribe(([ prev, curr ]) => {
+      for (const v of prev) {
+        const box = this.#pointsToAABB(v.bbox.maxpoint, v.bbox.minpoint)
+        const point = this.#pointToPoint(v.bbox.center)
+        this.#annotationIdToFeature.delete(box.id)
+        this.#annotationIdToFeature.delete(point.id)
+        if (!this.voiBBoxSvc) continue
+        for (const ann of [box, point]) {
+          this.voiBBoxSvc.removeAnnotation({
+            id: ann.id
+          })
+        }
+      }
+      for (const v of curr) {
+        const box = this.#pointsToAABB(v.bbox.maxpoint, v.bbox.minpoint)
+        const point = this.#pointToPoint(v.bbox.center)
+        this.#annotationIdToFeature.set(box.id, v)
+        this.#annotationIdToFeature.set(point.id, v)
+        if (!this.voiBBoxSvc) {
+          throw new Error(`annotation is expected to be added, but annotation layer cannot be instantiated.`)
+        }
+        for (const ann of [box, point]) {
+          this.voiBBoxSvc.updateAnnotation(ann)
+        }
+      }
+      if (this.voiBBoxSvc) this.voiBBoxSvc.setVisible(true)
+    })
+
+    this.#onDestroyCb.push(() => sub.unsubscribe())
+    this.#onDestroyCb.push(() => this.store.dispatch(
+      userInteraction.actions.setMouseoverVoi({ feature: null })
+    ))
+  }
+
+  handleClick(){
+    if (this.#hoveredFeat) {
+      this.store.dispatch(
+        userInteraction.actions.showFeature({
+          feature: this.#hoveredFeat
+        })
+      )
+      return false
+    }
+    return true
+  }
+
+  #hoveredFeat: VoiFeature
+  handleOnHoverFeature(ann: { id?: string }){
+    const { id } = ann || {}
+    const feature = this.#annotationIdToFeature.get(id)
+    this.#hoveredFeat = feature
+    this.store.dispatch(
+      userInteraction.actions.setMouseoverVoi({ feature })
+    )
+  }
+
+  #pointsToAABB(pointA: [number, number, number], pointB: [number, number, number]): TNgAnnotationAABBox{
+    return {
+      id: `${VoiBboxDirective.VOI_LAYER_NAME}:${JSON.stringify(pointA)}:${JSON.stringify(pointB)}`,
+      type: "aabbox",
+      pointA: pointA.map(v => v*1e6) as [number, number, number],
+      pointB: pointB.map(v => v*1e6) as [number, number, number],
+    }
+  }
+  #pointToPoint(point: [number, number, number]): TNgAnnotationPoint{
+    return {
+      id: `${VoiBboxDirective.VOI_LAYER_NAME}:${JSON.stringify(point)}`,
+      point: point.map(v => v*1e6) as [number, number, number],
+      type: "point"
+    }
+  }
+}
diff --git a/src/getFileInput/fileInputModal/fileInputModal.component.ts b/src/getFileInput/fileInputModal/fileInputModal.component.ts
index b402c272261e01cf13047a0d9c3c65776ada7850..40bfa6d8f14c922df7b2b6ce4155418c7c58de33 100644
--- a/src/getFileInput/fileInputModal/fileInputModal.component.ts
+++ b/src/getFileInput/fileInputModal/fileInputModal.component.ts
@@ -68,7 +68,7 @@ export class FileInputModal implements IFileInputConfig{
   get fileInput(){
     return this._fileInput
   }
-  handleFileInputChange(ev: InputEvent){
+  handleFileInputChange(ev: Event){
     const target = ev.target as HTMLInputElement
     this.fileInput = target.files[0]
   }
diff --git a/src/index.html b/src/index.html
index 447426b28fec52a1cbed3b759e8d5cd633f42d1a..8b04e68c01a64a496496ff53735756fd2166b36d 100644
--- a/src/index.html
+++ b/src/index.html
@@ -13,7 +13,7 @@
   <link rel="icon" type="image/png" href="assets/favicons/favicon-128-light.png"/>
   <script src="extra_js.js"></script>
   <script src="https://unpkg.com/kg-dataset-previewer@1.2.0/dist/kg-dataset-previewer/kg-dataset-previewer.js" defer></script>
-  <script src="https://unpkg.com/three-surfer@0.0.11/dist/bundle.js" defer></script>
+  <script src="https://unpkg.com/three-surfer@0.0.13/dist/bundle.js" defer></script>
   <script type="module" src="https://unpkg.com/ng-layer-tune@0.0.6/dist/ng-layer-tune/ng-layer-tune.esm.js"></script>
   <script type="module" src="https://unpkg.com/hbp-connectivity-component@0.6.5/dist/connectivity-component/connectivity-component.js" ></script>
   <script defer src="https://unpkg.com/mathjax@3.1.2/es5/tex-svg.js"></script>
diff --git a/src/layouts/layouts/pip/pip.style.css b/src/layouts/layouts/pip/pip.style.css
index 5bb8aef140d3082787c1dd336c3ab3d94eff99c5..a7b931cda13e25f994e65777f2e8ec83784f63dd 100644
--- a/src/layouts/layouts/pip/pip.style.css
+++ b/src/layouts/layouts/pip/pip.style.css
@@ -7,6 +7,7 @@
   flex: 0 0 0%;
 }
 .picture-in-picture-margin {
-  bottom: 50px;
-  right: 50px;
-}
\ No newline at end of file
+  bottom: 5rem;
+  right: 2rem;
+  max-width: calc(100dvw - 4rem);
+}
diff --git a/src/main-common.ts b/src/main-common.ts
index f927f25516b9280f7f21416551c27a338117177e..9e3b5612eb1e2597deb5ae361d6dc457cb897996 100644
--- a/src/main-common.ts
+++ b/src/main-common.ts
@@ -34,7 +34,7 @@ import { MainModule } from './main.module';
 import { environment } from 'src/environments/environment'
 const { PRODUCTION, VERSION, GIT_HASH } = environment
 if (PRODUCTION) enableProdMode()
-if (PRODUCTION) { console.log(`Siibra Explorer: ${VERSION}::${GIT_HASH}`) }
+console.log(`Siibra Explorer: ${VERSION}::${GIT_HASH}`)
 
 
 platformBrowserDynamic().bootstrapModule(MainModule)
diff --git a/src/main.module.ts b/src/main.module.ts
index b681764f400aa4f8fabea3a4544a3ca03b64dc9a..735f7f66dea3d897c4c71f9186a20e7ab2cde9f4 100644
--- a/src/main.module.ts
+++ b/src/main.module.ts
@@ -50,6 +50,7 @@ import { EffectsModule } from '@ngrx/effects';
 import { LayerCtrlEffects } from './viewerModule/nehuba/layerCtrl.service/layerCtrl.effects';
 import { NehubaNavigationEffects } from './viewerModule/nehuba/navigation.service/navigation.effects';
 import { CONST } from "common/constants"
+import { ViewerCommonEffects } from './viewerModule';
 
 @NgModule({
   imports: [
@@ -77,6 +78,7 @@ import { CONST } from "common/constants"
       ...getStoreEffects(),
       LayerCtrlEffects,
       NehubaNavigationEffects,
+      ViewerCommonEffects,
     ]),
     RootStoreModule,
     HttpClientModule,
@@ -165,7 +167,7 @@ import { CONST } from "common/constants"
       provide: DARKTHEME,
       useFactory: (store: Store) => store.pipe(
         select(atlasSelection.selectors.selectedTemplate),
-        map(tmpl => !!(tmpl && tmpl["@id"] !== 'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588')),
+        map(tmpl => !!(tmpl && tmpl.id !== 'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588')),
       ),
       deps: [ Store ]
     },
diff --git a/src/messaging/nmvSwc/index.ts b/src/messaging/nmvSwc/index.ts
index 2f4e7586970acd9450a6456fb9fe6e06ba7ddea9..6dc9abb482da80c3ffaf76c2478211587de31255 100644
--- a/src/messaging/nmvSwc/index.ts
+++ b/src/messaging/nmvSwc/index.ts
@@ -5,15 +5,6 @@ import { INmvTransform } from "./type"
 
 export const TYPE = 'bas:datasource'
 
-const waitFor = (condition: (...arg: any[]) => boolean) => new Promise<void>((rs, rj) => {
-  const intervalRef = setInterval(() => {
-    if (condition()) {
-      clearInterval(intervalRef)
-      rs()
-    }
-  }, 1000)
-})
-
 const NM_IDS = {
   AMBA_V3: 'hbp:Allen_Mouse_CCF_v3(um)',
   WAXHOLM_V1_01: 'hbp:WHS_SD_Rat_v1.01(um)',
@@ -110,16 +101,15 @@ export const processJsonLd = (json: { [key: string]: any }): Observable<IMessagi
       }
     })
 
-    await waitFor(() => !!getExportNehuba())
-
     const b64Encoded = encoding.indexOf('base64') >= 0
     const isGzipped = encoding.indexOf('gzip') >= 0
     let data = rawData
     if (b64Encoded) {
       data = atob(data)
     }
+    const { pako, mat3, vec3 } = await getExportNehuba()
     if (isGzipped) {
-      data = getExportNehuba().pako.inflate(data)
+      data = pako.inflate(data)
     }
     let output = ``
     for (let i = 0; i < data.length; i++) {
@@ -146,7 +136,6 @@ export const processJsonLd = (json: { [key: string]: any }): Observable<IMessagi
     ]
     // NG translation works on nm scale
     const scaleUmToNm = 1e3
-    const { mat3, vec3 } = getExportNehuba()
     const modA = mat3.fromValues(
       scaleUmToVoxelFixed[0], 0, 0,
       0, scaleUmToVoxelFixed[1], 0,
diff --git a/src/messagingGlue.ts b/src/messagingGlue.ts
index 724841a7d13e9255e76ba5c4b0ad94e7393e91ad..33506b4852f4774b142bb79d4e7e2916057572bd 100644
--- a/src/messagingGlue.ts
+++ b/src/messagingGlue.ts
@@ -3,6 +3,7 @@ import { Store } from "@ngrx/store";
 import { IMessagingActionTmpl, IWindowMessaging } from "./messaging/types";
 import { atlasAppearance, atlasSelection, generalActions } from "src/state"
 import { SAPI } from "./atlasComponents/sapi";
+import { translateV3Entities } from "./atlasComponents/sapi/translateV3"
 
 @Injectable()
 export class MessagingGlue implements IWindowMessaging, OnDestroy {
@@ -22,7 +23,8 @@ export class MessagingGlue implements IWindowMessaging, OnDestroy {
 
     const sub = sapi.atlases$.subscribe(atlases => {
       for (const atlas of atlases) {
-        const { ['@id']: atlasId, spaces } = atlas
+        const sapiAtlas = translateV3Entities.retrieveAtlas(atlas)
+        const { ['@id']: atlasId, spaces } = sapiAtlas
         for (const tmpl of spaces) {
           const { ['@id']: tmplId } = tmpl
           this.tmplSpIdToAtlasId.set(tmplId, atlasId)
diff --git a/src/mouseoverModule/mouseOverCvt.pipe.ts b/src/mouseoverModule/mouseOverCvt.pipe.ts
index f325feacc32b30c67e39451bac74cff846782185..410f16478ac2acd31ab24498a4a22bb6be177ad1 100644
--- a/src/mouseoverModule/mouseOverCvt.pipe.ts
+++ b/src/mouseoverModule/mouseOverCvt.pipe.ts
@@ -11,26 +11,18 @@ function render<T extends keyof TOnHoverObj>(key: T, value: TOnHoverObj[T]){
           fontSet: 'fas',
           fontIcon: 'fa-brain'
         },
-        text: seg.name
+        text: seg?.name || "Unknown"
       }
     })
   }
-  case 'landmark': {
+  case 'voi': {
+    const { name } = value as TOnHoverObj['voi']
     return [{
       icon: {
         fontSet: 'fas',
-        fontIcon: 'fa-map-marker-alt',
+        fontIcon: 'fa-database'
       },
-      text: (value as TOnHoverObj['landmark']).landmarkName
-    }]
-  }
-  case 'userLandmark': {
-    return [{
-      icon: {
-        fontSet: 'fas',
-        fontIcon: 'fa-map-marker-alt',
-      },
-      text: value as TOnHoverObj['userLandmark']
+      text: name
     }]
   }
   case 'annotation': {
diff --git a/src/mouseoverModule/mouseover.directive.ts b/src/mouseoverModule/mouseover.directive.ts
index 9e005530107e7653a559fe108c1b4891f9bc7847..fad1fbf852e3cadd9983ffdab1009fd6c6cbafde 100644
--- a/src/mouseoverModule/mouseover.directive.ts
+++ b/src/mouseoverModule/mouseover.directive.ts
@@ -1,11 +1,11 @@
 import { Directive } from "@angular/core"
 import { select, Store } from "@ngrx/store"
-import { merge, NEVER, Observable, of } from "rxjs"
-import { distinctUntilChanged, map, scan, shareReplay } from "rxjs/operators"
-import { LoggingService } from "src/logging"
+import { merge, Observable } from "rxjs"
+import { distinctUntilChanged, map, scan } from "rxjs/operators"
 import { TOnHoverObj, temporalPositveScanFn } from "./util"
 import { ModularUserAnnotationToolService } from "src/atlasComponents/userAnnotations/tools/service";
 import { userInteraction } from "src/state"
+import { arrayEqual } from "src/util/array"
 
 @Directive({
   selector: '[iav-mouse-hover]',
@@ -14,111 +14,50 @@ import { userInteraction } from "src/state"
 
 export class MouseHoverDirective {
 
-  public currentOnHoverObs$: Observable<TOnHoverObj>
-
-  constructor(
-    private store$: Store<any>,
-    private log: LoggingService,
-    private annotSvc: ModularUserAnnotationToolService,
-  ) {
-
-    // TODO consider moving these into a single obs serviced by a DI service
-    // can potentially net better performance
-
-    const onHoverUserLandmark$ = NEVER
-    // this.store$.pipe(
-    //   select(uiStateMouseoverUserLandmark)
-    // )
-
-    const onHoverLandmark$ = NEVER
-    // this.store$.pipe(
-    //   select(uiStateMouseOverLandmarkSelector)
-    // ).pipe(
-    //   map(landmark => {
-    //     if (landmark === null) { return null }
-    //     const idx = Number(landmark.replace('label=', ''))
-    //     if (isNaN(idx)) {
-    //       this.log.warn(`Landmark index could not be parsed as a number: ${landmark}`)
-    //       return {
-    //         landmarkName: idx,
-    //       }
-    //     } 
-    //   }),
-    // )
-
-    const onHoverSegments$ = this.store$.pipe(
+  public currentOnHoverObs$: Observable<TOnHoverObj> = merge(
+    this.store$.pipe(
       select(userInteraction.selectors.mousingOverRegions),
-
-      // TODO fix aux mesh filtering
-
-      // withLatestFrom(
-      //   this.store$.pipe(
-      //     select(viewerStateSelectedParcellationSelector),
-      //     startWith(null as any),
-      //   ),
-      // ),
-      // map(([ arr, parcellationSelected ]) => parcellationSelected && parcellationSelected.auxillaryMeshIndices
-      //   ? arr.filter(({ segment }) => {
-      //     // if segment is not a string (i.e., not labelIndexId) return true
-      //     if (typeof segment !== 'string') { return true }
-      //     const { label: labelIndex } = deserializeSegment(segment)
-      //     return parcellationSelected.auxillaryMeshIndices.indexOf(labelIndex) < 0
-      //   })
-      //   : arr),
-    )
-
-    const onHoverAnnotation$ = this.annotSvc.hoveringAnnotations$
-
-    const mergeObs = merge(
-      onHoverSegments$.pipe(
-        distinctUntilChanged(),
-        map(regions => {
-          return { regions }
-        }),
-      ),
-      onHoverAnnotation$.pipe(
-        distinctUntilChanged(),
-        map(annotation => {
-          return { annotation }
-        }),
-      ),
-      onHoverLandmark$.pipe(
-        distinctUntilChanged(),
-        map(landmark => {
-          return { landmark }
-        }),
-      ),
-      onHoverUserLandmark$.pipe(
-        distinctUntilChanged(),
-        map(userLandmark => {
-          return { userLandmark }
-        }),
-      ),
     ).pipe(
-      shareReplay(1),
+      distinctUntilChanged(arrayEqual((o, n) => o?.name === n?.name)),
+      map(regions => {
+        return { regions }
+      }),
+    ),
+    this.annotSvc.hoveringAnnotations$.pipe(
+      distinctUntilChanged(),
+      map(annotation => {
+        return { annotation }
+      }),
+    ),
+    this.store$.pipe(
+      select(userInteraction.selectors.mousingOverVoiFeature),
+      distinctUntilChanged((o, n) => o?.id === n?.id),
+      map(voi => ({ voi }))
     )
-
-    this.currentOnHoverObs$ = mergeObs.pipe(
-      scan(temporalPositveScanFn, []),
-      map(arr => {
-
-        let returnObj = {
-          regions: null,
-          annotation: null,
-          landmark: null,
-          userLandmark: null,
+  ).pipe(
+    scan(temporalPositveScanFn, []),
+    map(arr => {
+
+      let returnObj: TOnHoverObj = {
+        regions: null,
+        annotation: null,
+        voi: null
+      }
+
+      for (const val of arr) {
+        returnObj = {
+          ...returnObj,
+          ...val
         }
+      }
 
-        for (const val of arr) {
-          returnObj = {
-            ...returnObj,
-            ...val
-          }
-        }
+      return returnObj
+    }),
+  )
 
-        return returnObj
-      }),
-      shareReplay(1),
-    )
+  constructor(
+    private store$: Store<any>,
+    private annotSvc: ModularUserAnnotationToolService,
+  ) {
   }
 }
diff --git a/src/mouseoverModule/util.ts b/src/mouseoverModule/util.ts
index 0811db26a592492f396f27f1d61cae1b4c7e2cb6..208c01ceebea6038619ee5cb781799632c14d2d7 100644
--- a/src/mouseoverModule/util.ts
+++ b/src/mouseoverModule/util.ts
@@ -1,13 +1,10 @@
-import { SapiRegionModel } from "src/atlasComponents/sapi"
+import { SxplrRegion, VoiFeature } from "src/atlasComponents/sapi/sxplrTypes"
 import { IAnnotationGeometry } from "src/atlasComponents/userAnnotations/tools/type"
 
 export type TOnHoverObj = {
-  regions: SapiRegionModel[]
+  regions: SxplrRegion[]
   annotation: IAnnotationGeometry
-  landmark: {
-    landmarkName: number
-  }
-  userLandmark: any
+  voi: VoiFeature
 }
 
 /**
diff --git a/src/overwrite.scss b/src/overwrite.scss
index 86f98096cead1a68e768e98ebd77aa084859fdf2..9fd0bb0b88e2fc3039a03040dfa659a2ec341cf8 100644
--- a/src/overwrite.scss
+++ b/src/overwrite.scss
@@ -153,7 +153,7 @@ $transform-origin-maps: (
   margin-bottom: auto!important;
 }
 
-$display-vars: none, block, inline-block, flex, inline-flex;
+$display-vars: none, block, inline-block, flex, inline-flex, grid;
 @each $display-var in $display-vars {
   .d-#{$display-var}
   {
@@ -165,7 +165,7 @@ $display-vars: none, block, inline-block, flex, inline-flex;
   }
 }
 
-$align-items-vars: center, stretch, start;
+$align-items-vars: center, stretch, start, flex-end;
 @each $align-items-var in $align-items-vars {
   .align-items-#{$align-items-var} {
     align-items: $align-items-var;
diff --git a/src/plugin/broadcast.md b/src/plugin/broadcast.md
index bcc96cd4add3e291b62df5557c1afdc0f9a9501d..ac3d7b98487d2ecd192659463dea415537fdc166 100644
--- a/src/plugin/broadcast.md
+++ b/src/plugin/broadcast.md
@@ -18,7 +18,7 @@ Broadcasting messages never expects a response (and thus will never contain and
 - payload
 
   ```ts
-  SapiAtlasModel
+  PTAtlas
   ```
 
 
@@ -28,7 +28,7 @@ Broadcasting messages never expects a response (and thus will never contain and
 - payload
 
   ```ts
-  SapiSpaceModel
+  PTSpace
   ```
 
 
@@ -38,7 +38,7 @@ Broadcasting messages never expects a response (and thus will never contain and
 - payload
 
   ```ts
-  SapiParcellationModel
+  PTParcellation
   ```
 
 
@@ -48,7 +48,7 @@ Broadcasting messages never expects a response (and thus will never contain and
 - payload
 
   ```ts
-  SapiRegionModel[]
+  PTRegion[]
   ```
 
 
@@ -58,7 +58,17 @@ Broadcasting messages never expects a response (and thus will never contain and
 - payload
 
   ```ts
-  SapiRegionModel[]
+  PTRegion[]
+  ```
+
+
+
+### `sxplr.on.navigation`
+
+- payload
+
+  ```ts
+  MainState['[state.atlasSelection]']['navigation']
   ```
 
 
diff --git a/src/plugin/generateTypes.js b/src/plugin/generateTypes.js
index 52f69d8f99921f02bbaf4f3949fdc212a2cd4203..5b92c7e0ce2c9cefe30e3061e79e24df7c564f2f 100644
--- a/src/plugin/generateTypes.js
+++ b/src/plugin/generateTypes.js
@@ -1,3 +1,8 @@
+/**
+ * This node script generates API doc for plugins.
+ * Check npm run api-schema for usage.
+ */
+
 const ts = require('typescript')
 const fs = require('fs')
 const path = require('path')
diff --git a/src/plugin/plugin.module.ts b/src/plugin/plugin.module.ts
index ea1ec730ae3867562e47a66399e7fd5ecc531f17..998ca4056ecbb7a069133b021bc3e0aab8605fdc 100644
--- a/src/plugin/plugin.module.ts
+++ b/src/plugin/plugin.module.ts
@@ -26,17 +26,6 @@ import { PluginPortal } from "./pluginPortal/pluginPortal.component";
   exports: [
     PluginBannerUI,
   ],
-  providers: [
-    {
-      provide: APPEND_SCRIPT_TOKEN,
-      useFactory: appendScriptFactory,
-      deps: [ DOCUMENT ]
-    },
-    {
-      provide: REMOVE_SCRIPT_TOKEN,
-      useFactory: removeScriptFactory,
-      deps: [ DOCUMENT ]
-    },
-  ]
+  providers: []
 })
 export class PluginModule{}
\ No newline at end of file
diff --git a/src/plugin/pluginBanner/pluginBanner.component.ts b/src/plugin/pluginBanner/pluginBanner.component.ts
index df682e4cfd68a3cefac4a8b9952670cdcfb49bb0..ee763c40921a60ad08b665ecbad7303ae9c6be33 100644
--- a/src/plugin/pluginBanner/pluginBanner.component.ts
+++ b/src/plugin/pluginBanner/pluginBanner.component.ts
@@ -1,10 +1,11 @@
 import { Component, TemplateRef } from "@angular/core";
 import { MatDialog } from "@angular/material/dialog";
-import { environment } from 'src/environments/environment';
 import { PluginService } from "../service";
 import { PluginManifest } from "../types";
 import { combineLatest, Observable, Subject } from "rxjs";
 import { map, scan, startWith } from "rxjs/operators";
+import { select, Store } from "@ngrx/store";
+import { userPreference } from "src/state";
 
 @Component({
   selector : 'plugin-banner',
@@ -16,9 +17,13 @@ import { map, scan, startWith } from "rxjs/operators";
 
 export class PluginBannerUI {
 
-  EXPERIMENTAL_FEATURE_FLAG = environment.EXPERIMENTAL_FEATURE_FLAG
+  experimentalFlag$ = this.store.pipe(
+    select(userPreference.selectors.showExperimental)
+  )
+  
 
   constructor(
+    private store: Store,
     private svc: PluginService,
     private matDialog: MatDialog,
   ) {
diff --git a/src/plugin/pluginBanner/pluginBanner.template.html b/src/plugin/pluginBanner/pluginBanner.template.html
index 4f9ef3ae2332b37d845eddc838c5519ce787dd2d..a45098a882a6868b92dab9a212fa4a0f83b7ce3e 100644
--- a/src/plugin/pluginBanner/pluginBanner.template.html
+++ b/src/plugin/pluginBanner/pluginBanner.template.html
@@ -7,7 +7,7 @@
     </span>
   </button>
 
-  <button mat-menu-item *ngIf="EXPERIMENTAL_FEATURE_FLAG"
+  <button mat-menu-item *ngIf="experimentalFlag$ | async"
     (click)="showTmpl(thirdPartyPluginTmpl)">
     <span>
       Add third party plugin
diff --git a/src/plugin/request.md b/src/plugin/request.md
index 47daf4525b3873b10f93a87d75464e0e8cb97f13..c979339a3d9f71fcb3f7b311eb792f8b6e95feca 100644
--- a/src/plugin/request.md
+++ b/src/plugin/request.md
@@ -49,7 +49,7 @@ window.addEventListener('pagehide', () => {
 - response
 
   ```ts
-  SapiAtlasModel[]
+  PTAtlas[]
   ```
 
 
@@ -64,7 +64,7 @@ window.addEventListener('pagehide', () => {
 - response
 
   ```ts
-  SapiSpaceModel[]
+  PTSpace[]
   ```
 
 
@@ -79,7 +79,7 @@ window.addEventListener('pagehide', () => {
 - response
 
   ```ts
-  SapiParcellationModel[]
+  PTParcellation[]
   ```
 
 
@@ -154,7 +154,7 @@ window.addEventListener('pagehide', () => {
 - response
 
   ```ts
-  SapiRegionModel | OpenMINDSCoordinatePoint
+  PTRegion | Point
   ```
 
 
diff --git a/src/plugin/service.ts b/src/plugin/service.ts
index e4fe49a725535ac36d54daf87b4f79a0aae3f698..cded33fb1c981c0478e6f3cda4755286a4c96a04 100644
--- a/src/plugin/service.ts
+++ b/src/plugin/service.ts
@@ -6,7 +6,8 @@ import { WidgetPortal } from "src/widget/widgetPortal/widgetPortal.component";
 import { setPluginSrc, SET_PLUGIN_NAME } from "./const";
 import { PluginPortal } from "./pluginPortal/pluginPortal.component";
 import { environment } from "src/environments/environment"
-import { startWith } from "rxjs/operators";
+import { catchError, startWith } from "rxjs/operators";
+import { of } from "rxjs";
 
 @Injectable({
   providedIn: 'root'
@@ -27,7 +28,8 @@ export class PluginService {
     name: string
     iframeUrl: string
   }[]>(`${environment.BACKEND_URL || ''}plugins/manifests`).pipe(
-    startWith([])
+    startWith([]),
+    catchError(() =>  of([]))
   )
 
   async launchPlugin(htmlSrc: string){
diff --git a/src/routerModule/routeStateTransform.service.spec.ts b/src/routerModule/routeStateTransform.service.spec.ts
index 590619e9e2f428f4ebd07591e14d6e911862701c..9ee1c84534e53e4ad6bab92b6c49c813806bdb1f 100644
--- a/src/routerModule/routeStateTransform.service.spec.ts
+++ b/src/routerModule/routeStateTransform.service.spec.ts
@@ -105,7 +105,6 @@ describe("> routeStateTransform.service.ts", () => {
     describe("> cvtStateToRoute", () => {
 
       describe('> should be able encode region properly', () => {
-        let getRegionLabelIndexSpy: jasmine.Spy = jasmine.createSpy('getRegionLabelIndex')
         let getParcNgId: jasmine.Spy = jasmine.createSpy('getParcNgId')
         let atlasSelectionSpy: Record<string, jasmine.Spy> = {
           selectedAtlas: jasmine.createSpy('selectedAtlas'),
@@ -128,7 +127,6 @@ describe("> routeStateTransform.service.ts", () => {
         const navigation = null
 
         beforeEach(() => {
-          spyOnProperty(nehubaConfigService, 'getRegionLabelIndex').and.returnValue(getRegionLabelIndexSpy)
           spyOnProperty(nehubaConfigService, 'getParcNgId').and.returnValue(getParcNgId)
           spyOnProperty(atlasSelection, 'selectors').and.returnValue(atlasSelectionSpy)
           spyOnProperty(userInteraction, 'selectors').and.returnValue(userInteractionSpy)
@@ -144,7 +142,6 @@ describe("> routeStateTransform.service.ts", () => {
         })
 
         afterEach(() => {
-          getRegionLabelIndexSpy.calls.reset()
           getParcNgId.calls.reset()
           for (const spyRecord of [atlasSelectionSpy, userInteractionSpy]) {
             for (const key in spyRecord) {
@@ -153,45 +150,36 @@ describe("> routeStateTransform.service.ts", () => {
           }
         })
 
-        it('> calls correct functions', () => {
+        it('> calls correct functions', async () => {
 
-          getRegionLabelIndexSpy.and.returnValue(11)
           getParcNgId.and.returnValue('foo-bar')
 
           const state = {}
           const svc = TestBed.inject(RouteStateTransformSvc)
-          const s = svc.cvtStateToRoute(state as any)
+          const s = await svc.cvtStateToRoute(state as any)
 
           for (const key in atlasSelectionSpy) {
             expect(atlasSelectionSpy[key]).toHaveBeenCalledTimes(1)
           }
         })
 
-        it('> regular ngId', () => {
+        it('> regular ngId', async () => {
           const ngId = 'foobar'
           const labelIndex = 124
           
-          getRegionLabelIndexSpy.and.returnValue(labelIndex)
           getParcNgId.and.returnValue(ngId)
 
           const state = {}
           const svc = TestBed.inject(RouteStateTransformSvc)
-          const s = svc.cvtStateToRoute(state as any)
+          const s = await svc.cvtStateToRoute(state as any)
 
           expect(s).toContain(`r:${ngId}::${encodeNumber(labelIndex, { float: false })}`)
         })
   
-        it('> ngId containing ()', () => {
-          const ngId = 'foobar(1)'
-          const labelIndex = 124
-
-          getRegionLabelIndexSpy.and.returnValue(labelIndex)
-          getParcNgId.and.returnValue(ngId)
-          
-          const state = {}
-          const svc = TestBed.inject(RouteStateTransformSvc)
-          const s = svc.cvtStateToRoute(state as any)
-          expect(s).toContain(`r:foobar%25281%2529::${encodeNumber(labelIndex, { float: false })}`)
+        it('> ngId containing expected value', async () => {
+          /**
+           * TODO add new test
+           */
         })
       })
     })
diff --git a/src/routerModule/routeStateTransform.service.ts b/src/routerModule/routeStateTransform.service.ts
index d464b6eeaf5b90f400be66b1f100ee292b94d8ac..bbc9c3ab99f3cb27af71e07c49ceb4aa3ca225b4 100644
--- a/src/routerModule/routeStateTransform.service.ts
+++ b/src/routerModule/routeStateTransform.service.ts
@@ -1,12 +1,14 @@
 import { Injectable } from "@angular/core";
 import { UrlSegment, UrlTree } from "@angular/router";
 import { map } from "rxjs/operators";
-import { SAPI, SapiRegionModel } from "src/atlasComponents/sapi";
+import { SAPI } from "src/atlasComponents/sapi";
+import { translateV3Entities } from "src/atlasComponents/sapi/translateV3";
+import { SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes"
 import { atlasSelection, defaultState, MainState, plugins, userInteraction } from "src/state";
-import { getParcNgId, getRegionLabelIndex } from "src/viewerModule/nehuba/config.service";
+import { getParcNgId } from "src/viewerModule/nehuba/config.service";
 import { decodeToNumber, encodeNumber, encodeURIFull, separator } from "./cipher";
 import { TUrlAtlas, TUrlPathObj, TUrlStandaloneVolume } from "./type";
-import { decodePath, encodeId, decodeId, endcodePath } from "./util";
+import { decodePath, encodeId, decodeId, encodePath } from "./util";
 
 @Injectable()
 export class RouteStateTransformSvc {
@@ -36,47 +38,63 @@ export class RouteStateTransformSvc {
       allParcellationRegions = []
     ] = await Promise.all([
       this.sapi.atlases$.pipe(
-        map(atlases => atlases.find(atlas => atlas["@id"] === selectedAtlasId))
+        map(atlases => atlases.find(atlas => atlas.id === selectedAtlasId))
       ).toPromise(),
-      this.sapi.getSpaceDetail(selectedAtlasId, selectedTemplateId, { priority: 10 }).toPromise(),
-      this.sapi.getParcDetail(selectedAtlasId, selectedParcellationId, { priority: 10 }).toPromise(),
-      this.sapi.getParcRegions(selectedAtlasId, selectedParcellationId, selectedTemplateId, { priority: 10 }).toPromise(),
+      this.sapi.v3Get("/spaces/{space_id}", {
+        path: {
+          space_id: selectedTemplateId
+        }
+      }).pipe(
+        map(val => translateV3Entities.translateTemplate(val))
+      ).toPromise(),
+      this.sapi.v3Get("/parcellations/{parcellation_id}", {
+        path: {
+          parcellation_id: selectedParcellationId
+        }
+      }).pipe(
+        map(val => translateV3Entities.translateParcellation(val))
+      ).toPromise(),
+      this.sapi.getParcRegions(selectedParcellationId).toPromise(),
     ])
 
-    const ngIdToRegionMap: Map<string, Map<number, SapiRegionModel[]>> = new Map()
-
-    for (const region of allParcellationRegions) {
-      const ngId = getParcNgId(selectedAtlas, selectedTemplate, selectedParcellation, region)
-      if (!ngIdToRegionMap.has(ngId)) {
-        ngIdToRegionMap.set(ngId, new Map())
-      }
-      const map = ngIdToRegionMap.get(ngId)
-
-      const idx = getRegionLabelIndex(selectedAtlas, selectedTemplate, selectedParcellation, region)
-      if (!map.has(idx)) {
-        map.set(idx, [])
-      }
-      map.get(idx).push(region)
-    }
+    const userViewer = await this.sapi.useViewer(selectedTemplate).toPromise()
     
-    const selectedRegions = (() => {
+    const selectedRegions = await (async () => {
       if (!selectedRegionIds) return []
+
       /**
-       * assuming only 1 selected region
-       * if this assumption changes, iterate over array of selectedRegionIds
+       * should account for 
        */
-      const json = { [selectedRegionIds[0]]: selectedRegionIds[1] }
+      const json = {}
 
-      for (const ngId in json) {
-        if (!ngIdToRegionMap.has(ngId)) {
-          console.error(`could not find matching map for ${ngId}`)
+      for (let idx = 0; idx < selectedAtlasId.length; idx += 2) {
+        const stateNgId = selectedRegionIds[idx]
+        if (json[stateNgId]) {
+          console.warn(`ngId '${stateNgId}' appeared multiple times. Skipping. Are the label indicies been stored inefficiently?`)
           continue
         }
+        json[selectedRegionIds[idx]] = selectedRegionIds[idx + 1]
+      }
+      
+      const regionMap = new Map<string, SxplrRegion>(allParcellationRegions.map(region => [region.name, region]))
+      const ngIdToRegionMap: Map<string, Map<number, SxplrRegion[]>> = new Map()
+
+      const [ ngMap, threeMap ] = await Promise.all([
+        this.sapi.getTranslatedLabelledNgMap(selectedParcellation, selectedTemplate),
+        this.sapi.getTranslatedLabelledThreeMap(selectedParcellation, selectedTemplate)
+      ])
+
+      const _selectedRegions: SxplrRegion[] = []
+
+      for (const { region } of [...Object.values(ngMap), ...Object.values(threeMap)]) {
+        const actualRegion = regionMap.get(region[0].name)
+        const ngId = getParcNgId(selectedAtlas, selectedTemplate, selectedParcellation, actualRegion)
 
-        const map = ngIdToRegionMap.get(ngId)
+        if (!json[ngId]) {
+          continue
+        }
         
-        const val = json[ngId]
-        const labelIndicies = val.split(separator).map(n => {
+        const labelIndicies: number[] = json[ngId].split(separator).map((n: string) => {
           try {
             return decodeToNumber(n)
           } catch (e) {
@@ -87,9 +105,22 @@ export class RouteStateTransformSvc {
           }
         }).filter(v => !!v)
 
-        return labelIndicies.map(idx => map.get(idx) || []).flatMap(v => v)
+        _selectedRegions.push(
+          ...region.
+            filter(({ label }) => labelIndicies.includes(label))
+            .map(({ name }) => {
+              
+              const actualRegion = regionMap.get(name)
+              if (!actualRegion) {
+                console.warn(`region name '${name}' cannot be deciphered. Skipping`)
+              }
+              return actualRegion
+            })
+            .filter(v => !!v)
+        )
       }
-      return []
+      return _selectedRegions
+
     })()
 
     return {
@@ -97,13 +128,13 @@ export class RouteStateTransformSvc {
       selectedTemplate,
       selectedParcellation,
       selectedRegions,
-      allParcellationRegions
+      allParcellationRegions, 
+      userViewer
     }
   }
 
   async cvtRouteToState(fullPath: UrlTree) {
-
-    const returnState: MainState = defaultState
+    const returnState: MainState = structuredClone(defaultState)
     const pathFragments: UrlSegment[] = fullPath.root.hasChildren()
       ? fullPath.root.children['primary'].segments
       : []
@@ -179,7 +210,9 @@ export class RouteStateTransformSvc {
     try {
       if (returnObj.f && returnObj.f.length === 1) {
         const decodedFeatId = decodeId(returnObj.f[0])
-        const feature = await this.sapi.getFeature(decodedFeatId).detail$.toPromise()
+          .replace(/~ptc~/g, '://')
+          .replace(/~/g, ':')
+        const feature = await this.sapi.getV3FeatureDetailWithId(decodedFeatId).toPromise()
         returnState["[state.userInteraction]"].selectedFeature = feature
       }
     } catch (e) {
@@ -187,13 +220,15 @@ export class RouteStateTransformSvc {
     }
 
     try {
-      const { selectedAtlas, selectedParcellation, selectedRegions = [], selectedTemplate, allParcellationRegions } = await this.getATPR(returnObj as TUrlPathObj<string[], TUrlAtlas<string[]>>)
+      const { selectedAtlas, selectedParcellation, selectedRegions = [], selectedTemplate, allParcellationRegions, userViewer } = await this.getATPR(returnObj as TUrlPathObj<string[], TUrlAtlas<string[]>>)
       returnState["[state.atlasSelection]"].selectedAtlas = selectedAtlas
       returnState["[state.atlasSelection]"].selectedParcellation = selectedParcellation
       returnState["[state.atlasSelection]"].selectedTemplate = selectedTemplate
+
       returnState["[state.atlasSelection]"].selectedRegions = selectedRegions || []
       returnState["[state.atlasSelection]"].selectedParcellationAllRegions = allParcellationRegions || []
       returnState["[state.atlasSelection]"].navigation = parsedNavObj
+      returnState["[state.atlasAppearance]"].useViewer = userViewer
     } catch (e) {
       // if error, show error on UI?
       console.error(`parse template, parc, region error`, e)
@@ -201,7 +236,7 @@ export class RouteStateTransformSvc {
     return returnState
   }
 
-  cvtStateToRoute(_state: MainState) {
+  async cvtStateToRoute(_state: MainState) {
     
     /**
      * need to create new references here
@@ -238,7 +273,7 @@ export class RouteStateTransformSvc {
     let selectedRegionsString: string
     if (selectedRegions.length === 1) {
       const region = selectedRegions[0]
-      const labelIndex = getRegionLabelIndex(selectedAtlas, selectedTemplate, selectedParcellation, region)
+      const labelIndex = await this.sapi.getRegionLabelIndices(selectedTemplate, selectedParcellation, region)
       
       const ngId = getParcNgId(selectedAtlas, selectedTemplate, selectedParcellation, region)
       selectedRegionsString = `${ngId}::${encodeNumber(labelIndex, { float: false })}`
@@ -247,17 +282,25 @@ export class RouteStateTransformSvc {
     
     routes = {
       // for atlas
-      a: selectedAtlas && encodeId(selectedAtlas['@id']),
+      a: selectedAtlas && encodeId(selectedAtlas.id),
       // for template
-      t: selectedTemplate && encodeId(selectedTemplate['@id']),
+      t: selectedTemplate && encodeId(selectedTemplate.id),
       // for parcellation
-      p: selectedParcellation && encodeId(selectedParcellation['@id']),
+      p: selectedParcellation && encodeId(selectedParcellation.id),
       // for regions
       r: selectedRegionsString && encodeURIFull(selectedRegionsString),
       // nav
       ['@']: cNavString,
       // showing dataset
-      f: selectedFeature && encodeId(selectedFeature["@id"])
+      f: (() => {
+        return selectedFeature && encodeId(
+          encodeURIFull(
+            selectedFeature.id
+              .replace(/:\/\//, '~ptc~')
+              .replace(/:/g, '~')
+          )
+        )
+      })()
     }
   
     /**
@@ -274,7 +317,7 @@ export class RouteStateTransformSvc {
     const routesArr: string[] = []
     for (const key in routes) {
       if (!!routes[key]) {
-        const segStr = endcodePath(key, routes[key])
+        const segStr = encodePath(key, routes[key])
         routesArr.push(segStr)
       }
     }
diff --git a/src/routerModule/router.service.ts b/src/routerModule/router.service.ts
index 3a060971d4f2d51a4223f16c86cb218362e75095..dc8edb2c6158b6b3b24a13f0386e39547a298512 100644
--- a/src/routerModule/router.service.ts
+++ b/src/routerModule/router.service.ts
@@ -1,11 +1,11 @@
-import { Injectable } from "@angular/core";
+import { Injectable, NgZone } from "@angular/core";
 import { APP_BASE_HREF } from "@angular/common";
 import { Inject } from "@angular/core";
 import { NavigationEnd, Router } from '@angular/router'
 import { Store } from "@ngrx/store";
-import { debounceTime, distinctUntilChanged, filter, map, mapTo, shareReplay, startWith, switchMap, switchMapTo, take, withLatestFrom } from "rxjs/operators";
+import { catchError, debounceTime, distinctUntilChanged, filter, map, mapTo, shareReplay, startWith, switchMap, switchMapTo, take, withLatestFrom } from "rxjs/operators";
 import { encodeCustomState, decodeCustomState, verifyCustomState } from "./util";
-import { BehaviorSubject, combineLatest, concat, merge, Observable, timer } from 'rxjs'
+import { BehaviorSubject, combineLatest, concat, forkJoin, from, merge, Observable, of, timer } from 'rxjs'
 import { scan } from 'rxjs/operators'
 import { RouteStateTransformSvc } from "./routeStateTransform.service";
 import { SAPI } from "src/atlasComponents/sapi";
@@ -40,6 +40,7 @@ export class RouterService {
     routeToStateTransformSvc: RouteStateTransformSvc,
     sapi: SAPI,
     store$: Store<any>,
+    private zone: NgZone,
     @Inject(APP_BASE_HREF) baseHref: string
   ){
 
@@ -133,34 +134,35 @@ export class RouterService {
       switchMap(() => navEnd$),
       map(navEv => navEv.urlAfterRedirects),
       switchMap(url =>
-        routeToStateTransformSvc.cvtRouteToState(
-          router.parseUrl(
-            url
-          )
-        ).then(stateFromRoute => {
-          return {
-            url,
-            stateFromRoute
-          }
-        })
+        forkJoin([
+          routeToStateTransformSvc.cvtRouteToState(
+            router.parseUrl(
+              url
+            )
+          ).then(stateFromRoute => {
+            return {
+              url,
+              stateFromRoute
+            }
+          }),
+          store$.pipe(
+            switchMap(state => 
+              from(routeToStateTransformSvc.cvtStateToRoute(state)).pipe(
+                catchError(() => of(``))
+              )
+            )
+          ),
+        ]),
       ),
       withLatestFrom(
-        store$,
         this.customRoute$.pipe(
           startWith({})
         )
       )
     ).subscribe(arg => {
-      const [{ stateFromRoute, url }, currentState, customRoutes] = arg
+      const [[{ stateFromRoute, url }, _routeFromState ], customRoutes] = arg
       const fullPath = url
-      
-      let routeFromState: string
-      try {
-        routeFromState = routeToStateTransformSvc.cvtStateToRoute(currentState)
-      } catch (_e) {
-        routeFromState = ``
-      }
-
+      let routeFromState = _routeFromState
       for (const key in customRoutes) {
         const customStatePath = encodeCustomState(key, customRoutes[key])
         if (!customStatePath) continue
@@ -203,14 +205,14 @@ export class RouterService {
         combineLatest([
           store$.pipe(
             debounceTime(160),
-            map(state => {
-              try {
-                return routeToStateTransformSvc.cvtStateToRoute(state)
-              } catch (e) {
-                this.logError(e)
-                return ``
-              }
-            })
+            switchMap(state =>
+              from(routeToStateTransformSvc.cvtStateToRoute(state)).pipe(
+                catchError(err => {
+                  this.logError(err)
+                  return of(``)
+                })
+              )
+            ),
           ),
           this.customRoute$,
         ]).pipe(
@@ -244,7 +246,9 @@ export class RouterService {
         const newUrlUrlTree = router.parseUrl(joinedRoutes)
         
         if (currUrlUrlTree.toString() !== newUrlUrlTree.toString()) {
-          router.navigateByUrl(joinedRoutes)
+          this.zone.run(() => {
+            router.navigateByUrl(joinedRoutes)
+          })
         }
       }
     })
diff --git a/src/routerModule/util.ts b/src/routerModule/util.ts
index cd0709ea8fc1a30e4d11eab738db77af0ebd4ad2..0552eb3c882a1bc8e58b151155e5423cba7106e0 100644
--- a/src/routerModule/util.ts
+++ b/src/routerModule/util.ts
@@ -4,7 +4,7 @@ import { Component } from "@angular/core"
 export const encodeId = (id: string) => id && id.replace(/\//g, ':')
 export const decodeId = (codedId: string) => codedId && codedId.replace(/:/g, '/')
 
-export const endcodePath = (key: string, val: string|string[]) =>
+export const encodePath = (key: string, val: string|string[]) =>
   key[0] === '?'
     ? `?${key}=${val}`
     : `${key}:${Array.isArray(val)
@@ -56,7 +56,7 @@ export const encodeCustomState = (key: string, value: string|string[]) => {
     throw new Error(`custom state must start with x-`)
   }
   if (!value) return null
-  return endcodePath(key, value).replace(/\//g, '%2F')
+  return encodePath(key, value).replace(/\//g, '%2F')
 }
 
 @Component({
diff --git a/src/share/saneUrl/saneUrl.service.ts b/src/share/saneUrl/saneUrl.service.ts
index c5d9849f760ed90b7197ef8206b53db55ab1025d..d78a8ac903089062ba3cc86ca009e627947f70c6 100644
--- a/src/share/saneUrl/saneUrl.service.ts
+++ b/src/share/saneUrl/saneUrl.service.ts
@@ -4,7 +4,6 @@ import { throwError } from "rxjs";
 import { catchError, mapTo } from "rxjs/operators";
 import { BACKENDURL } from 'src/util/constants'
 import { IKeyValStore, NotFoundError } from '../type'
-import { DISABLE_PRIORITY_HEADER } from "src/util/priority"
 
 @Injectable({
   providedIn: 'root'
@@ -24,7 +23,7 @@ export class SaneUrlSvc implements IKeyValStore{
   getKeyVal(key: string) {
     return this.http.get<Record<string, any>>(
       `${this.saneUrlRoot}${key}`,
-      { responseType: 'json', headers: { [DISABLE_PRIORITY_HEADER]: '1' } }
+      { responseType: 'json' }
     ).pipe(
       catchError((err, obs) => {
         const { status } = err
@@ -40,7 +39,6 @@ export class SaneUrlSvc implements IKeyValStore{
     return this.http.post(
       `${this.saneUrlRoot}${key}`,
       value,
-      { headers: { [DISABLE_PRIORITY_HEADER]: '1' } }
     ).pipe(
       mapTo(`${this.saneUrlRoot}${key}`)
     )
diff --git a/src/state/annotations/store.ts b/src/state/annotations/store.ts
index 21198ff816f5315721746a0cbeba8d8f55c90d47..2dbda5d566a053ad3ac8e38cfaca313a5a8352ef 100644
--- a/src/state/annotations/store.ts
+++ b/src/state/annotations/store.ts
@@ -1,5 +1,5 @@
 import { createReducer, on } from "@ngrx/store"
-import { OpenMINDSCoordinatePoint } from "src/atlasComponents/sapi"
+import { OpenMINDSCoordinatePoint } from "src/atlasComponents/sapi/typeV3"
 import * as actions from "./actions"
 
 type Line = {
diff --git a/src/state/atlasAppearance/action.ts b/src/state/atlasAppearance/action.ts
index 6a4ce26e148d801c726ba23c3eee906e736aa510..9cdf1fcf4888766f314fd1a411435741d473c1f6 100644
--- a/src/state/atlasAppearance/action.ts
+++ b/src/state/atlasAppearance/action.ts
@@ -1,5 +1,5 @@
 import { createAction, props } from "@ngrx/store";
-import { CustomLayer, nameSpace } from "./const"
+import { CustomLayer, nameSpace, UseViewer } from "./const"
 
 export const setOctantRemoval = createAction(
   `${nameSpace} setOctantRemoval`,
@@ -28,3 +28,10 @@ export const removeCustomLayer = createAction(
     id: string
   }>()
 )
+
+export const setUseViewer = createAction(
+  `${nameSpace} useViewer`,
+  props<{
+    viewer: UseViewer
+  }>()
+)
diff --git a/src/state/atlasAppearance/const.ts b/src/state/atlasAppearance/const.ts
index c6c24f31b6ffc7e8bebf9647f9b0b4f538c0f710..41c9ebd7216465719aab792025b8ad2b5b268f6d 100644
--- a/src/state/atlasAppearance/const.ts
+++ b/src/state/atlasAppearance/const.ts
@@ -1,4 +1,4 @@
-import { SapiRegionModel } from "src/atlasComponents/sapi"
+import { SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes"
 export const nameSpace = `[state.atlasAppearance]`
 
 type CustomLayerBase = {
@@ -7,7 +7,7 @@ type CustomLayerBase = {
 
 export type ColorMapCustomLayer = {
   clType: 'customlayer/colormap' | 'baselayer/colormap'
-  colormap: WeakMap<SapiRegionModel, number[]>
+  colormap: WeakMap<SxplrRegion, number[]>
 } & CustomLayerBase
 
 export type ThreeSurferCustomLayer = {
@@ -50,3 +50,11 @@ export type NgLayerCustomLayer = {
  * - id allows custom layer to be removed, if necessary
  */
 export type CustomLayer = ColorMapCustomLayer | NgLayerCustomLayer | ThreeSurferCustomLayer | ThreeSurferCustomLabelLayer
+
+export const useViewer = {
+  THREESURFER: "THREESURFER",
+  NEHUBA: "NEHUBA",
+  NOT_SUPPORTED: "NOT_SUPPORTED" 
+} as const
+
+export type UseViewer = keyof typeof useViewer
diff --git a/src/state/atlasAppearance/index.ts b/src/state/atlasAppearance/index.ts
index 739f036f65baf71930eff7ae9fd37067cfb4e012..5a133c488c65470459968c71d918e1bce322a0a0 100644
--- a/src/state/atlasAppearance/index.ts
+++ b/src/state/atlasAppearance/index.ts
@@ -1,4 +1,5 @@
 export * as actions from "./action"
 export * as selectors from "./selector"
-export { nameSpace, ColorMapCustomLayer, CustomLayer, NgLayerCustomLayer } from "./const"
+export * as const from "./const"
+export { nameSpace } from "./const"
 export { reducer, AtlasAppearanceStore, defaultState } from "./store"
diff --git a/src/state/atlasAppearance/selector.ts b/src/state/atlasAppearance/selector.ts
index b7eac7bc1701c6e490a6a72ccd9cf8412d4e7aeb..05b5aface33998d9477e0cc88d851fffe24c716a 100644
--- a/src/state/atlasAppearance/selector.ts
+++ b/src/state/atlasAppearance/selector.ts
@@ -18,3 +18,8 @@ export const customLayers = createSelector(
   selectStore,
   state => state.customLayers
 )
+
+export const useViewer = createSelector(
+  selectStore,
+  state => state.useViewer
+)
diff --git a/src/state/atlasAppearance/store.ts b/src/state/atlasAppearance/store.ts
index 6c060da26b4696af0865d0f5c545fdc0d42cffd4..384655c0e3ba44d774926182ad7cc09eb05719ec 100644
--- a/src/state/atlasAppearance/store.ts
+++ b/src/state/atlasAppearance/store.ts
@@ -1,15 +1,16 @@
 import { createReducer, on } from "@ngrx/store"
 import * as actions from "./action"
-import { CustomLayer } from "./const"
+import { UseViewer, CustomLayer } from "./const"
 
 export type AtlasAppearanceStore = {
-
+  useViewer: UseViewer
   octantRemoval: boolean
   showDelineation: boolean
   customLayers: CustomLayer[]
 }
 
 export const defaultState: AtlasAppearanceStore = {
+  useViewer: null,
   octantRemoval: true,
   showDelineation: true,
   customLayers: []
@@ -58,5 +59,14 @@ export const reducer = createReducer(
         customLayers: customLayers.filter(l => l.id !== id)
       }
     }
+  ),
+  on(
+    actions.setUseViewer,
+    (state, { viewer }) => {
+      return {
+        ...state,
+        useViewer: viewer
+      }
+    }
   )
 )
diff --git a/src/state/atlasSelection/actions.ts b/src/state/atlasSelection/actions.ts
index 7cf6d778a8549575c94b8244266ad5cc213cb0a8..a175464262a0b08da1039bac1d9a46e188194c30 100644
--- a/src/state/atlasSelection/actions.ts
+++ b/src/state/atlasSelection/actions.ts
@@ -1,25 +1,37 @@
 import { createAction, props } from "@ngrx/store";
-import { SapiAtlasModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi";
+import { SxplrAtlas, SxplrParcellation, SxplrRegion, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
 import { BreadCrumb, nameSpace, ViewerMode, AtlasSelectionState } from "./const"
 
 export const selectAtlas = createAction(
   `${nameSpace} selectAtlas`,
   props<{
-    atlas: SapiAtlasModel
+    atlas: SxplrAtlas
+    requested?: {
+      template?: SxplrTemplate
+      parcellation?: SxplrParcellation
+    }
   }>()
 )
 
 export const selectTemplate = createAction(
   `${nameSpace} selectTemplate`,
   props<{
-    template: SapiSpaceModel
+    template: SxplrTemplate
+    requested?: {
+      template?: SxplrTemplate
+      parcellation?: SxplrParcellation
+    }
   }>()
 )
 
 export const selectParcellation = createAction(
   `${nameSpace} selectParcellation`,
   props<{
-    parcellation: SapiParcellationModel
+    parcellation: SxplrParcellation
+    requested?: {
+      parcellation?: SxplrParcellation
+      template?: SxplrTemplate
+    }
   }>()
 )
 
@@ -44,21 +56,21 @@ export const setAtlasSelectionState = createAction(
 export const setSelectedParcellationAllRegions = createAction(
   `${nameSpace} setSelectedParcellationAllRegions`,
   props<{
-    regions: SapiRegionModel[]
+    regions: SxplrRegion[]
   }>()
 )
 
 export const selectRegion = createAction(
   `${nameSpace} selectRegion`,
   props<{
-    region: SapiRegionModel
+    region: SxplrRegion
   }>()
 )
 
 export const setSelectedRegions = createAction(
   `${nameSpace} setSelectedRegions`,
   props<{
-    regions: SapiRegionModel[]
+    regions: SxplrRegion[]
   }>()
 )
 
@@ -146,7 +158,7 @@ export const navigateTo = createAction(
 export const navigateToRegion = createAction(
   `${nameSpace} navigateToRegion`,
   props<{
-    region: SapiRegionModel
+    region: SxplrRegion
   }>()
 )
 
@@ -154,13 +166,6 @@ export const clearViewerMode = createAction(
   `${nameSpace} clearViewerMode`,
 )
 
-export const toggleRegionSelect = createAction(
-  `${nameSpace} toggleRegionSelect`,
-  props<{
-    region: SapiRegionModel
-  }>()
-)
-
 export const toggleRegionSelectById = createAction(
   `${nameSpace} toggleRegionSelectById`,
   props<{
@@ -171,7 +176,7 @@ export const toggleRegionSelectById = createAction(
 export const viewSelRegionInNewSpace = createAction(
   `${nameSpace} viewSelRegionInNewSpace`,
   props<{
-    region: SapiRegionModel
-    template: SapiSpaceModel
+    region: SxplrRegion
+    template: SxplrTemplate
   }>()
 )
diff --git a/src/state/atlasSelection/const.ts b/src/state/atlasSelection/const.ts
index 1499e2472a896352406389a50a6eacaa14752539..9eacc31e232b91fd79c5df84e70c15b08a5ecbe4 100644
--- a/src/state/atlasSelection/const.ts
+++ b/src/state/atlasSelection/const.ts
@@ -1,4 +1,4 @@
-import { SapiAtlasModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi"
+import { SxplrAtlas, SxplrTemplate, SxplrParcellation, SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes"
 
 export const nameSpace = `[state.atlasSelection]`
 export type ViewerMode = 'annotating' | 'key frame'
@@ -8,12 +8,12 @@ export type BreadCrumb = {
 }
 
 export type AtlasSelectionState = {
-  selectedAtlas: SapiAtlasModel
-  selectedTemplate: SapiSpaceModel
-  selectedParcellation: SapiParcellationModel
-  selectedParcellationAllRegions: SapiRegionModel[]
+  selectedAtlas: SxplrAtlas
+  selectedTemplate: SxplrTemplate
+  selectedParcellation: SxplrParcellation
+  selectedParcellationAllRegions: SxplrRegion[]
 
-  selectedRegions: SapiRegionModel[]
+  selectedRegions: SxplrRegion[]
   standAloneVolumes: string[]
 
   /**
diff --git a/src/state/atlasSelection/effects.spec.ts b/src/state/atlasSelection/effects.spec.ts
index 2c854293c847d64f5df71156b04d84ee63b67605..a1a820f677b1449d1ce4a3ebaa1a5d44e2e89c51 100644
--- a/src/state/atlasSelection/effects.spec.ts
+++ b/src/state/atlasSelection/effects.spec.ts
@@ -4,7 +4,8 @@ import { Action } from "@ngrx/store"
 import { MockStore, provideMockStore } from "@ngrx/store/testing"
 import { hot } from "jasmine-marbles"
 import { Observable, of, throwError } from "rxjs"
-import { SAPI, SAPIModule, SapiRegionModel, SapiAtlasModel, SapiSpaceModel, SapiParcellationModel } from "src/atlasComponents/sapi"
+import { SAPI, SAPIModule } from "src/atlasComponents/sapi"
+import { SxplrRegion, SxplrAtlas, SxplrParcellation, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes"
 import { IDS } from "src/atlasComponents/sapi/constants"
 import { actions, selectors } from "."
 import { Effect } from "./effects"
@@ -16,9 +17,9 @@ describe("> effects.ts", () => {
   describe("> Effect", () => {
 
     let actions$ = new Observable<Action>()
-    let hoc1left: SapiRegionModel
-    let hoc1leftCentroid: SapiRegionModel
-    let hoc1leftCentroidWrongSpc: SapiRegionModel
+    let hoc1left: SxplrRegion
+    let hoc1leftCentroid: SxplrRegion
+    let hoc1leftCentroidWrongSpc: SxplrRegion
 
     beforeEach(async () => {
       TestBed.configureTestingModule({
@@ -40,24 +41,18 @@ describe("> effects.ts", () => {
       if (!hoc1left) {
 
         const sapisvc = TestBed.inject(SAPI)
-        const regions = await sapisvc.getParcRegions(IDS.ATLAES.HUMAN, IDS.PARCELLATION.JBA29, IDS.TEMPLATES.MNI152).toPromise()
+        const regions = await sapisvc.getParcRegions(IDS.PARCELLATION.JBA29).toPromise()
         hoc1left = regions.find(r => /hoc1/i.test(r.name) && /left/i.test(r.name))
         if (!hoc1left) throw new Error(`cannot find hoc1 left`)
         hoc1leftCentroid = JSON.parse(JSON.stringify(hoc1left)) 
-        hoc1leftCentroid.hasAnnotation.bestViewPoint = {
-          coordinateSpace: {
-            '@id': IDS.TEMPLATES.BIG_BRAIN
-          },
-          coordinates: [{
-            value: 1
-          }, {
-            value: 2
-          }, {
-            value: 3
-          }]
+        hoc1leftCentroid.centroid = {
+          space: {
+            id: IDS.TEMPLATES.BIG_BRAIN
+          } as SxplrTemplate,
+          loc: [1, 2, 3]
         }
         hoc1leftCentroidWrongSpc = JSON.parse(JSON.stringify(hoc1leftCentroid))
-        hoc1leftCentroidWrongSpc.hasAnnotation.bestViewPoint.coordinateSpace['@id'] = IDS.TEMPLATES.COLIN27
+        hoc1leftCentroidWrongSpc.centroid.space.id = IDS.TEMPLATES.COLIN27
       }
     })
 
@@ -242,14 +237,14 @@ describe("> effects.ts", () => {
         })
         const mockStore = TestBed.inject(MockStore)
         mockStore.overrideSelector(selectors.selectedAtlas, {
-          "@id": IDS.ATLAES.HUMAN
-        } as SapiAtlasModel)
+          id: IDS.ATLAES.HUMAN
+        } as SxplrAtlas)
         mockStore.overrideSelector(selectors.selectedTemplate, {
-          "@id": IDS.TEMPLATES.MNI152
-        } as SapiSpaceModel)
+          id: IDS.TEMPLATES.MNI152
+        } as SxplrTemplate)
         mockStore.overrideSelector(selectors.selectedParcellation, {
-          "@id": IDS.PARCELLATION.JBA29
-        } as SapiParcellationModel)
+          id: IDS.PARCELLATION.JBA29
+        } as SxplrParcellation)
       })
 
       describe('> if atlas, template, parc is not set', () => {
@@ -307,20 +302,14 @@ describe("> effects.ts", () => {
       })
 
       describe('> if inputs are fine', () => {
-        let getRegionSpy: jasmine.Spy
         let regionGetDetailSpy: jasmine.Spy = jasmine.createSpy()
         beforeEach(() => {
           const sapi = TestBed.inject(SAPI)
-          getRegionSpy = spyOn(sapi, 'getRegion')
-          getRegionSpy.and.returnValue({
-            getDetail: regionGetDetailSpy
-          })
           regionGetDetailSpy.and.returnValue(
             of(hoc1leftCentroid)
           )
         })
         afterEach(() => {
-          if (getRegionSpy) getRegionSpy.calls.reset()
           if (regionGetDetailSpy) regionGetDetailSpy.calls.reset()
         })
         it('> getRegionDetailSpy is called, and calls navigateTo', () => {
@@ -335,8 +324,6 @@ describe("> effects.ts", () => {
               })
             })
           )
-          expect(getRegionSpy).toHaveBeenCalledTimes(1)
-          expect(getRegionSpy).toHaveBeenCalledWith(IDS.ATLAES.HUMAN, IDS.PARCELLATION.JBA29, hoc1left["@id"])
         })
 
         describe('> mal formed return', () => {
diff --git a/src/state/atlasSelection/effects.ts b/src/state/atlasSelection/effects.ts
index a84da1c3dfaa44031c79b46a04dfe5334522e434..673a54d0fdfc6fefa2fce02bf5571bb6ee2492d8 100644
--- a/src/state/atlasSelection/effects.ts
+++ b/src/state/atlasSelection/effects.ts
@@ -1,29 +1,38 @@
 import { Injectable } from "@angular/core";
 import { Actions, createEffect, ofType } from "@ngrx/effects";
-import { concat, forkJoin, merge, Observable, of } from "rxjs";
-import { catchError, filter, map, mapTo, switchMap, switchMapTo, take, withLatestFrom } from "rxjs/operators";
-import { SAPI, SapiAtlasModel, SapiParcellationModel, SAPIRegion, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi";
+import { forkJoin, merge, NEVER, Observable, of } from "rxjs";
+import { filter, map, mapTo, switchMap, switchMapTo, take, withLatestFrom } from "rxjs/operators";
+import { SAPI, SAPIRegion } from "src/atlasComponents/sapi";
 import * as mainActions from "../actions"
 import { select, Store } from "@ngrx/store";
 import { selectors, actions } from '.'
 import { AtlasSelectionState } from "./const"
 import { atlasAppearance, atlasSelection } from "..";
-import { ParcellationSupportedInSpacePipe } from "src/atlasComponents/sapiViews/util/parcellationSupportedInSpace.pipe";
+
 import { InterSpaceCoordXformSvc } from "src/atlasComponents/sapi/core/space/interSpaceCoordXform.service";
+import { translateV3Entities } from "src/atlasComponents/sapi/translateV3"
+import { SxplrAtlas, SxplrParcellation, SxplrRegion, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
 
 type OnTmplParcHookArg = {
   previous: {
-    atlas: SapiAtlasModel
-    template: SapiSpaceModel
-    parcellation: SapiParcellationModel
+    atlas: SxplrAtlas
+    template: SxplrTemplate
+    parcellation: SxplrParcellation
   }
   current: {
-    atlas: SapiAtlasModel
-    template: SapiSpaceModel
-    parcellation: SapiParcellationModel
+    atlas: SxplrAtlas
+    template: SxplrTemplate
+    parcellation: SxplrParcellation
   }
 }
 
+const prefParcId = [
+  "minds/core/parcellationatlas/v1.0.0/94c1125b-b87e-45e4-901c-00daee7f2579-300",
+  "minds/core/parcellationatlas/v1.0.0/94c1125b-b87e-45e4-901c-00daee7f2579-290",
+]
+
+const prefSpcId = []
+
 @Injectable()
 export class Effect {
 
@@ -33,27 +42,23 @@ export class Effect {
      * and then set selectedParcellationAllRegions to it
      */
     ({ current }) => {
-      const { atlas, parcellation, template } = current
-      return (
-        !!atlas && !!parcellation && !!template
-          ? this.sapiSvc.getParcRegions(atlas["@id"], parcellation["@id"], template["@id"])
-          : of([])
-      ).pipe(
+      const { parcellation } = current
+      if (!parcellation) return NEVER
+      return this.sapiSvc.getParcRegions(parcellation.id).pipe(
         map(regions => {
           return {
             selectedParcellationAllRegions: regions
           }
-        })
-      )
+        }))
     },
     ({ current, previous }) => {
-      const prevSpcName = InterSpaceCoordXformSvc.TmplIdToValidSpaceName(previous?.template?.["@id"])
-      const currSpcName = InterSpaceCoordXformSvc.TmplIdToValidSpaceName(current?.template?.["@id"])
+      const prevSpcName = InterSpaceCoordXformSvc.TmplIdToValidSpaceName(previous?.template?.id)
+      const currSpcName = InterSpaceCoordXformSvc.TmplIdToValidSpaceName(current?.template?.id)
 
       /**
        * if trans-species, return default state for navigation
        */
-      if (previous?.atlas?.["@id"] !== current?.atlas?.["@id"]) {
+      if (previous?.atlas?.id !== current?.atlas?.id) {
         return of({
           navigation: null
         })
@@ -89,83 +94,84 @@ export class Effect {
     }
   ]
 
-  parcSupportedInSpacePipe = new ParcellationSupportedInSpacePipe(this.sapiSvc)
-  onTemplateParcSelection = createEffect(() => merge<{ template: SapiSpaceModel, parcellation: SapiParcellationModel }>(
+  onTemplateParcSelection = createEffect(() => merge(
     this.action.pipe(
       ofType(actions.selectTemplate),
-      map(({ template }) => {
+      map(({ template, requested }) => {
         return {
           template,
-          parcellation: null
+          parcellation: null as SxplrParcellation,
+          requested,
         }
       })
     ),
     this.action.pipe(
       ofType(actions.selectParcellation),
-      map(({ parcellation }) => {
+      map(({ parcellation, requested }) => {
         return {
-          template: null,
-          parcellation
+          template: null as SxplrTemplate,
+          parcellation,
+          requested,
         }
       })
     )
   ).pipe(
     withLatestFrom(this.store),
-    switchMap(([ { template, parcellation }, store ]) => {
+    switchMap(([ { template, parcellation, requested }, store ]) => {
+
       const currTmpl = selectors.selectedTemplate(store)
       const currParc = selectors.selectedParcellation(store)
       const currAtlas = selectors.selectedAtlas(store)
-      return this.parcSupportedInSpacePipe.transform(
-        parcellation || currParc,
-        template || currTmpl
-      ).pipe(
-        switchMap(flag => {
-          /**
-           * if desired parc is supported in tmpl, emit them
-           */
+
+      const requestedTmpl = requested?.template
+      const requestedParc = requested?.parcellation
+
+      const resolvedTmpl = template || requestedTmpl || currTmpl
+      const resolvedParc = parcellation || requestedParc || currParc
+
+      return this.sapiSvc.getSupportedTemplates(currAtlas, resolvedParc).pipe(
+        switchMap(tmpls => {
+          const flag = tmpls.some(tmpl => tmpl.id === resolvedTmpl.id)
           if (flag) {
             return of({
               atlas: currAtlas,
-              template: template || currTmpl,
-              parcellation: parcellation || currParc,
+              template: resolvedTmpl,
+              parcellation: resolvedParc,
             })
           }
+
+          /**
+           * TODO code below should not be reached
+           */
           /**
            * if template is defined, find the first parcellation that is supported
            */
           if (!!template) {
-            return concat(
-              ...currAtlas.parcellations.map(
-                p => this.parcSupportedInSpacePipe.transform(p["@id"], template).pipe(
-                  filter(flag => flag),
-                  switchMap(() => this.sapiSvc.getParcDetail(currAtlas["@id"], p['@id'])),
-                )
-              )
-            ).pipe(
-              take(1),
-              map(parcellation => {
+            return this.sapiSvc.getSupportedParcellations(currAtlas, template).pipe(
+              map(parcs => {
+                if (parcs.length === 0) {
+                  throw new Error(`Cannot find any supported parcellations for template ${template.name}`)
+                }
+                const sortedByPref = parcs.sort((a, b) => prefParcId.indexOf(a.id) - prefParcId.indexOf(b.id))
+                const selectParc = sortedByPref.find(p => requestedParc?.id === p.id) || sortedByPref[0]
                 return {
                   atlas: currAtlas,
                   template,
-                  parcellation
+                  parcellation: selectParc
                 }
               })
             )
           }
           if (!!parcellation) {
-            return concat(
-              ...currAtlas.spaces.map(
-                sp => this.parcSupportedInSpacePipe.transform(parcellation["@id"], sp["@id"]).pipe(
-                  filter(flag => flag),
-                  switchMap(() => this.sapiSvc.getSpaceDetail(currAtlas["@id"], sp['@id'])),
-                )
-              )
-            ).pipe(
-              take(1),
-              map(template => {
+            return this.sapiSvc.getSupportedTemplates(currAtlas, parcellation).pipe(
+              map(templates => {
+                if (templates.length === 0) {
+                  throw new Error(`Cannot find any supported templates for parcellation ${parcellation.name}`)
+                }
+                const selectTmpl = templates.find(tmp => requestedTmpl?.id === tmp.id || prefSpcId.includes(tmp.id)) || templates[0]
                 return {
                   atlas: currAtlas,
-                  template,
+                  template: selectTmpl,
                   parcellation
                 }
               })
@@ -197,31 +203,35 @@ export class Effect {
     })
   ))
 
+  onAtlasSelClearTmplParc = createEffect(() => this.action.pipe(
+    ofType(actions.selectAtlas),
+    map(() => actions.setAtlasSelectionState({
+      selectedTemplate: null,
+      selectedParcellation: null,
+    })),
+  ))
+
   onAtlasSelectionSelectTmplParc = createEffect(() => this.action.pipe(
     ofType(actions.selectAtlas),
     filter(action => !!action.atlas),
-    switchMap(({ atlas }) => {
-      const selectedParc = atlas.parcellations.find(p => /290/.test(p["@id"])) || atlas.parcellations[0]
-      return this.sapiSvc.getParcDetail(atlas["@id"], selectedParc["@id"], { priority: 10 }).pipe(
-        map(parcellation => {
+    switchMap(({ atlas }) => 
+      this.sapiSvc.getAllParcellations(atlas).pipe(
+        map(parcellations => {
+          const parcPrevIds = parcellations.map(p => p.prevId)
+          const latestParcs = parcellations.filter(p => !parcPrevIds.includes(p.id))
+          const prefParc = parcellations.filter(p => prefParcId.includes(p.id)).sort((a, b) => prefParcId.indexOf(a.id) - prefParcId.indexOf(b.id))
+          const selectedParc = prefParc[0] || latestParcs[0] || parcellations[0]
           return {
-            parcellation,
+            parcellation: selectedParc,
             atlas
           }
         })
       )
-    }),
+    ),
     switchMap(({ atlas, parcellation }) => {
-      const spacdIds = parcellation.brainAtlasVersions.map(bas => bas.coordinateSpace) as { "@id": string }[]
-      return forkJoin(
-        spacdIds.filter(
-          spaceId => atlas.spaces.map(spc => spc["@id"]).indexOf(spaceId["@id"]) >= 0
-        ).map(spaceId =>
-          this.sapiSvc.getSpaceDetail(atlas["@id"], spaceId["@id"])
-        )
-      ).pipe(
+      return this.sapiSvc.getSupportedTemplates(atlas, parcellation).pipe(
         switchMap(spaces => {
-          const selectedSpace = spaces.find(s => /152/.test(s.fullName)) || spaces[0]
+          const selectedSpace = spaces.find(s => s.name.includes("152")) || spaces[0]
           return forkJoin(
             this.onTemplateParcSelectionPostHook.map(fn => fn({ previous: null, current: { atlas, parcellation, template: selectedSpace } }))
           ).pipe(
@@ -255,7 +265,7 @@ export class Effect {
       )
     ),
     switchMap(([regions, layers]) => {
-      const map = new Map<SapiRegionModel, number[]>()
+      const map = new Map<SxplrRegion, number[]>()
       for (const region of regions) {
         map.set(region, SAPIRegion.GetDisplayColor(region))
       }
@@ -336,46 +346,27 @@ export class Effect {
         select(selectors.selectedParcellation)
       )
     ),
-    switchMap(([{ region }, selectedTemplate, selectedAtlas, selectedParcellation]) => {
-      if (!selectedAtlas || !selectedTemplate || !selectedParcellation || !region)  {
-        return of(
-          mainActions.generalActionError({
-            message: `atlas, template, parcellation or region not set`
-          })
-        )
+    map(([{ region: _region }, selectedTemplate, selectedAtlas, selectedParcellation]) => {
+      if (!selectedAtlas || !selectedTemplate || !selectedParcellation || !_region)  {
+        return mainActions.generalActionError({
+          message: `atlas, template, parcellation or region not set`
+        })
       }
 
+      const region = translateV3Entities.retrieveRegion(_region)
+
       if (region.hasAnnotation?.bestViewPoint && region.hasAnnotation.bestViewPoint.coordinateSpace['@id'] === selectedTemplate["@id"]) {
-        return of(
-          actions.navigateTo({
-            animation: true,
-            navigation: {
-              position: region.hasAnnotation.bestViewPoint.coordinates.map(v => v.value * 1e6)
-            }
-          })
-        )
+        return actions.navigateTo({
+          animation: true,
+          navigation: {
+            position: region.hasAnnotation.bestViewPoint.coordinates.map(v => v.value * 1e6)
+          }
+        })
       }
       
-      return this.sapiSvc.getRegion(selectedAtlas['@id'], selectedParcellation['@id'], region["@id"]).getDetail(selectedTemplate["@id"]).pipe(
-        map(detailedRegion => {
-          if (!detailedRegion?.hasAnnotation?.bestViewPoint?.coordinates) {
-            return mainActions.generalActionError({
-              message: `getting region detail error! cannot get coordinates`
-            })
-          }
-          return actions.navigateTo({
-            animation: true,
-            navigation: {
-              position: detailedRegion.hasAnnotation.bestViewPoint.coordinates.map(v => v.value * 1e6)
-            }
-          })
-        }),
-        catchError((_err, _obs) => of(
-          mainActions.generalActionError({
-            message: `Error getting region centroid`
-          })
-        ))
-      )
+      return mainActions.generalActionError({
+        message: `getting region detail error! cannot get coordinates`
+      })
     })
   ))
 
@@ -399,24 +390,6 @@ export class Effect {
     )
   ))
 
-  onRegionToggleSelect = createEffect(() => this.action.pipe(
-    ofType(actions.toggleRegionSelect),
-    withLatestFrom(
-      this.store.pipe(
-        select(selectors.selectedRegions)
-      )
-    ),
-    map(([ { region }, regions ]) => {
-      const selectedRegionsIndicies = regions.map(r => r["@id"])
-      const roiIndex = selectedRegionsIndicies.indexOf(region["@id"])
-      return actions.setSelectedRegions({
-        regions: roiIndex >= 0
-          ? [...regions.slice(0, roiIndex), ...regions.slice(roiIndex + 1)]
-          : [...regions, region]
-      })
-    })
-  ))
-
   constructor(
     private action: Actions,
     private sapiSvc: SAPI,
diff --git a/src/state/atlasSelection/store.ts b/src/state/atlasSelection/store.ts
index ebea8a78dd3015d9b0b050c3902e40fb8ab2a0c8..1138c493706646809b09753841a10ec9c6a9095b 100644
--- a/src/state/atlasSelection/store.ts
+++ b/src/state/atlasSelection/store.ts
@@ -1,14 +1,7 @@
 import { createReducer, on } from "@ngrx/store";
-import { SapiAtlasModel, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi";
 import * as actions from "./actions"
 import { AtlasSelectionState } from "./const"
 
-function getRegionLabelIndex(atlas: SapiAtlasModel, tmpl: SapiSpaceModel, parc: SapiParcellationModel, region: SapiRegionModel) {
-  const lblIdx = Number(region?.hasAnnotation?.internalIdentifier)
-  if (isNaN(lblIdx)) return null
-  return lblIdx
-}
-
 export const defaultState: AtlasSelectionState = {
   selectedAtlas: null,
   selectedParcellation: null,
@@ -50,13 +43,6 @@ const reducer = createReducer(
        * 
        * ignore
        */
-      const { selectedAtlas, selectedParcellation, selectedTemplate } = state
-      if (
-        !region.hasAnnotation?.visualizedIn
-        && !getRegionLabelIndex(selectedAtlas, selectedTemplate, selectedParcellation, region)
-      ) {
-        return { ...state }
-      }
       const selected = state.selectedRegions.includes(region)
       return {
         ...state,
@@ -117,14 +103,12 @@ const reducer = createReducer(
   on(
     actions.selectAtlas,
     (state, { atlas }) => {
-      if (atlas?.["@id"] === state?.selectedAtlas?.["@id"]) {
-        return state
+      if (atlas?.id === state?.selectedAtlas?.id) {
+        return { ...state }
       }
       return {
         ...state,
         selectedAtlas: atlas,
-        selectedTemplate: null,
-        selectedParcellation: null,
       }
     }
   ),
diff --git a/src/state/atlasSelection/util.ts b/src/state/atlasSelection/util.ts
index 2ee06893cafa819dc5a13784f74a9425f6645804..a76fd1f9f2e8fc45335a5b3695c65bb68322dfef 100644
--- a/src/state/atlasSelection/util.ts
+++ b/src/state/atlasSelection/util.ts
@@ -1,45 +1,12 @@
 import { createSelector, select } from "@ngrx/store";
 import { forkJoin, of, pipe } from "rxjs";
 import { distinctUntilChanged, map, switchMap } from "rxjs/operators";
-import { SAPI, SapiAtlasModel, SapiParcellationModel, SapiSpaceModel } from "src/atlasComponents/sapi";
+import { SAPI } from "src/atlasComponents/sapi";
+import { translateV3Entities } from "src/atlasComponents/sapi/translateV3"
+import { SxplrAtlas, SxplrParcellation, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
 import { jsonEqual } from "src/util/json";
 import * as selectors from "./selectors"
 
-const allAvailSpaces = (sapi: SAPI) => {
-  return pipe(
-    select(selectors.selectedAtlas),
-    switchMap(atlas => atlas
-      ? forkJoin(
-        atlas.spaces.map(spcWId => sapi.getSpaceDetail(atlas["@id"], spcWId["@id"]))
-      )
-      : of([])
-    )
-  )
-}
-
-const allAvailParcs = (sapi: SAPI) => pipe(
-  select(selectors.selectedAtlas),
-  switchMap(atlas => atlas
-    ? forkJoin(
-      atlas.parcellations.map(parcWId => sapi.getParcDetail(atlas["@id"], parcWId["@id"]))
-    )
-    : of([])
-  )
-)
-const allAvailSpacesParcs = (sapi: SAPI) => pipe(
-  select(selectors.selectedAtlas),
-  switchMap(atlas => atlas
-    ? forkJoin({
-      spaces: atlas.spaces.map(spcWId => sapi.getSpaceDetail(atlas["@id"], spcWId["@id"])),
-      parcellation: atlas.parcellations.map(parcWId => sapi.getParcDetail(atlas["@id"], parcWId["@id"])),
-    })
-    : of({
-      spaces: [],
-      parcellation: []
-    })
-  )
-)
-
 const nonDistinctATP = createSelector(
   selectors.selectedAtlas,
   selectors.selectedTemplate,
@@ -50,14 +17,11 @@ const nonDistinctATP = createSelector(
 const distinctATP = () => pipe(
   select(nonDistinctATP),
   distinctUntilChanged(
-    jsonEqual((o, n) => o?.["@id"] === n?.["@id"])
+    jsonEqual((o, n) => o?.id === n?.id)
   ),
-  map(val => val as { atlas: SapiAtlasModel, parcellation: SapiParcellationModel, template: SapiSpaceModel })
+  map(val => val as { atlas: SxplrAtlas, parcellation: SxplrParcellation, template: SxplrTemplate })
 )
 
 export const fromRootStore = {
-  allAvailSpaces,
-  allAvailParcs,
-  allAvailSpacesParcs,
   distinctATP,
 }
diff --git a/src/state/index.ts b/src/state/index.ts
index 4d63d64e5d893fae4008bc9bad0f906471385f65..40e84c234c4bca8d7eb7fece2c2c999ab249629f 100644
--- a/src/state/index.ts
+++ b/src/state/index.ts
@@ -26,7 +26,6 @@ function debug(reducer: ActionReducer<MainState>): ActionReducer<MainState> {
   return function(state, action) {
     console.log('state', state);
     console.log('action', action);
- 
     return reducer(state, action);
   };
 }
diff --git a/src/state/userInteraction/actions.ts b/src/state/userInteraction/actions.ts
index 3df6c1b9780d6d0f9fde7e14e205a0d179445093..dfdaa14298ccad2e8804460d434a4b3caf960591 100644
--- a/src/state/userInteraction/actions.ts
+++ b/src/state/userInteraction/actions.ts
@@ -1,6 +1,6 @@
 import { createAction, props } from "@ngrx/store"
 import { nameSpace } from "./const"
-import { SapiRegionModel, SapiFeatureModel, OpenMINDSCoordinatePoint } from "src/atlasComponents/sapi"
+import { SxplrRegion, Feature, Point, VoiFeature } from "src/atlasComponents/sapi/sxplrTypes"
 
 export const mouseOverAnnotations = createAction(
   `${nameSpace} mouseOverAnnotations`,
@@ -14,24 +14,31 @@ export const mouseOverAnnotations = createAction(
 export const mouseoverRegions = createAction(
   `${nameSpace} mouseoverRegions`,
   props<{
-    regions: SapiRegionModel[]
+    regions: SxplrRegion[]
   }>()
 )
 
 export const mouseoverPosition = createAction(
   `${nameSpace} mouseoverPosition`,
   props<{
-    position: OpenMINDSCoordinatePoint
+    position: Point
   }>()
 )
 
 export const showFeature = createAction(
   `${nameSpace} showFeature`,
   props<{
-    feature: SapiFeatureModel
+    feature: Feature
   }>()
 )
 
 export const clearShownFeature = createAction(
   `${nameSpace} clearShownFeature`,
 )
+
+export const setMouseoverVoi = createAction(
+  `${nameSpace} setMouseoverVoi`,
+  props<{
+    feature: VoiFeature
+  }>()
+)
diff --git a/src/state/userInteraction/selectors.ts b/src/state/userInteraction/selectors.ts
index 0f43a1a4c56fd0188d90c4fa4fb37f491daa35f3..8596e5d25827c8aceb5636a0d55a12ba54121c5b 100644
--- a/src/state/userInteraction/selectors.ts
+++ b/src/state/userInteraction/selectors.ts
@@ -18,3 +18,8 @@ export const mousingOverPosition = createSelector(
   selectStore,
   state => state.mouseoverPosition
 )
+
+export const mousingOverVoiFeature = createSelector(
+  selectStore,
+  state => state.mousedOverVoiFeature
+)
diff --git a/src/state/userInteraction/store.ts b/src/state/userInteraction/store.ts
index ab75700289c279969ac2bba0eaafe3a6da3286e4..7c562249392e2cab90c2ceca65005169c1249a9b 100644
--- a/src/state/userInteraction/store.ts
+++ b/src/state/userInteraction/store.ts
@@ -1,17 +1,19 @@
 import { createReducer, on } from "@ngrx/store";
-import { SapiRegionModel, SapiFeatureModel, OpenMINDSCoordinatePoint } from "src/atlasComponents/sapi";
+import { SxplrRegion, Feature, Point, VoiFeature } from "src/atlasComponents/sapi/sxplrTypes";
 import * as actions from "./actions"
 
 export type UserInteraction = {
-  mouseoverRegions: SapiRegionModel[]
-  selectedFeature: SapiFeatureModel
-  mouseoverPosition: OpenMINDSCoordinatePoint
+  mouseoverRegions: SxplrRegion[]
+  selectedFeature: Feature
+  mouseoverPosition: Point
+  mousedOverVoiFeature: VoiFeature
 }
 
 export const defaultState: UserInteraction = {
   selectedFeature: null,
   mouseoverRegions: [],
-  mouseoverPosition: null
+  mouseoverPosition: null,
+  mousedOverVoiFeature: null,
 }
 
 export const reducer = createReducer(
@@ -51,5 +53,12 @@ export const reducer = createReducer(
         mouseoverPosition: position
       }
     }
+  ),
+  on(
+    actions.setMouseoverVoi,
+    (state, { feature }) => ({
+      ...state,
+      mousedOverVoiFeature: feature
+    })
   )
 )
diff --git a/src/state/userPreference/actions.ts b/src/state/userPreference/actions.ts
index ee6f8f3062bde7c4c1e3648db385d55859134f2c..05d96e5caabe5e4067ce8903358cf78c2ac5a836 100644
--- a/src/state/userPreference/actions.ts
+++ b/src/state/userPreference/actions.ts
@@ -36,4 +36,11 @@ export const updateCsp = createAction(
     name: string
     csp: CSP
   }>()
-)
\ No newline at end of file
+)
+
+export const setShowExperimental = createAction(
+  `${nameSpace} setShowExp`,
+  props<{
+    flag: boolean
+  }>()
+)
diff --git a/src/state/userPreference/selectors.ts b/src/state/userPreference/selectors.ts
index 608264fc6ce5d007e81b53fd1fadd25ae4a16dfb..00856d0160f0af6fd391bf1c1e3b68288a981dbb 100644
--- a/src/state/userPreference/selectors.ts
+++ b/src/state/userPreference/selectors.ts
@@ -33,3 +33,8 @@ export const userCsp = createSelector(
   storeSelector,
   store => store.pluginCSP
 )
+
+export const showExperimental = createSelector(
+  storeSelector,
+  store => store.showExperimental
+)
diff --git a/src/state/userPreference/store.ts b/src/state/userPreference/store.ts
index dbf0be95561efd8992d77a54e6c33db4f6f2c7a8..2a4fa314a1999dbacca0513bea5eaf3efe877c8e 100644
--- a/src/state/userPreference/store.ts
+++ b/src/state/userPreference/store.ts
@@ -1,4 +1,5 @@
 import { createReducer, on } from "@ngrx/store"
+import { environment } from "src/environments/environment"
 import { COOKIE_VERSION, KG_TOS_VERSION, LOCAL_STORAGE_CONST } from "src/util/constants"
 import * as actions from "./actions"
 import { maxGpuLimit, CSP } from "./const"
@@ -13,6 +14,8 @@ export type UserPreference = {
 
   agreeCookie: boolean
   agreeKgTos: boolean
+
+  showExperimental: boolean
 }
 
 export const defaultState: UserPreference = {
@@ -23,6 +26,7 @@ export const defaultState: UserPreference = {
 
   agreeCookie: localStorage.getItem(LOCAL_STORAGE_CONST.AGREE_COOKIE) === COOKIE_VERSION,
   agreeKgTos: localStorage.getItem(LOCAL_STORAGE_CONST.AGREE_KG_TOS) === KG_TOS_VERSION,
+  showExperimental: environment.EXPERIMENTAL_FEATURE_FLAG
 }
 
 export const reducer = createReducer(
@@ -89,5 +93,12 @@ export const reducer = createReducer(
         }
       }
     }
+  ),
+  on(
+    actions.setShowExperimental,
+    (state, { flag }) => ({
+      ...state,
+      showExperimental: flag
+    })
   )
 )
diff --git a/src/strictLocal/strictLocal.directive.ts b/src/strictLocal/strictLocal.directive.ts
index b5f0c83ad82310ec40b64906c3f6d5c266fb7a2f..a3141e7019a50b48a12962423c0f658624e073f1 100644
--- a/src/strictLocal/strictLocal.directive.ts
+++ b/src/strictLocal/strictLocal.directive.ts
@@ -1,4 +1,4 @@
-import { ComponentFactoryResolver, Directive, HostBinding, ViewContainerRef } from "@angular/core";
+import { Directive, HostBinding, ViewContainerRef } from "@angular/core";
 import { environment } from "src/environments/environment"
 import { StrictLocalInfo } from "./strictLocalCmp/strictLocalCmp.component";
 
@@ -12,11 +12,9 @@ export class HideWhenLocal {
   hideWhenLocal = environment.STRICT_LOCAL ? 'none!important' : null
   constructor(
     private vc: ViewContainerRef,
-    private cfr: ComponentFactoryResolver,
   ){
     if (environment.STRICT_LOCAL) {
-      const cf = this.cfr.resolveComponentFactory(StrictLocalInfo)
-      this.vc.createComponent(cf)
+      this.vc.createComponent(StrictLocalInfo)
     }
   }
 }
diff --git a/src/ui/config/configCmp/config.component.ts b/src/ui/config/configCmp/config.component.ts
index 3d1dfdce600504a6fb92b684560e61adb749d26e..b3d556c87fa882ef0029e362bcab45cd552f564c 100644
--- a/src/ui/config/configCmp/config.component.ts
+++ b/src/ui/config/configCmp/config.component.ts
@@ -28,7 +28,14 @@ export class ConfigComponent implements OnInit, OnDestroy {
   public ANIMATION_TOOLTIP = ANIMATION_TOOLTIP
   public MOBILE_UI_TOOLTIP = MOBILE_UI_TOOLTIP
 
-  public experimentalFlag = environment.EXPERIMENTAL_FEATURE_FLAG
+  /**
+   * n.b. do not use store to set experimental flag here, since this also shows the control to toggle exp control on and off
+   */
+  public environment = environment
+
+  public experimentalFlag$ = this.store.pipe(
+    select(userPreference.selectors.showExperimental)
+  )
 
   public panelModes: Record<string, userInterface.PanelMode> = {
     FOUR_PANEL: "FOUR_PANEL",
@@ -181,5 +188,13 @@ export class ConfigComponent implements OnInit, OnDestroy {
     target.classList.remove('onDragOver')
   }
 
+  public updateExperimentalFlag(event: MatSlideToggleChange) {
+    this.store.dispatch(
+      userPreference.actions.setShowExperimental({
+        flag: event.checked
+      })
+    )
+  }
+
   public stepSize: number = 10
 }
diff --git a/src/ui/config/configCmp/config.template.html b/src/ui/config/configCmp/config.template.html
index 85bbb90d53f68e253e52e99407245283417d4945..4982158f5bb83596ed47eeaf5425f17981666cc8 100644
--- a/src/ui/config/configCmp/config.template.html
+++ b/src/ui/config/configCmp/config.template.html
@@ -52,9 +52,16 @@
   </mat-tab>
 
   <!-- viewer preference -->
-  <mat-tab *ngIf="experimentalFlag" label="Viewer Preference">
+  <mat-tab *ngIf="environment.EXPERIMENTAL_FEATURE_FLAG" label="Viewer Preference">
 
     <div class="sxplr-custom-cmp text sxplr-m-2">
+      
+      <mat-slide-toggle
+        [checked]="experimentalFlag$ | async"
+        (change)="updateExperimentalFlag($event)">
+        Experimental Flag
+      </mat-slide-toggle>
+
       <div class="mat-h2">
         Rearrange Viewports
       </div>
@@ -180,7 +187,7 @@
       <!-- temporarily disabling 1-3 layout -->
 
       <!-- horizontal 1 3 card -->
-      <!-- <button
+      <button
         class="sxplr-m-2 sxplr-p-2"
         mat-flat-button
         (click)="usePanelMode(panelModes.H_ONE_THREE)"
@@ -191,10 +198,10 @@
           <div class="border chunky" cell-iii></div>
           <div class="border chunky" cell-iv></div>
         </layout-horizontal-one-three>
-      </button> -->
+      </button>
 
       <!-- vertical 1 3 card -->
-      <!-- <button
+      <button
         class="sxplr-m-2 sxplr-p-2"
         mat-flat-button
         (click)="usePanelMode(panelModes.V_ONE_THREE)"
@@ -205,7 +212,7 @@
           <div class="border chunky" cell-iii></div>
           <div class="border chunky" cell-iv></div>
         </layout-vertical-one-three>
-      </button> -->
+      </button>
 
       <!-- single -->
       <ng-template #singlePanelTmpl>
diff --git a/src/ui/dialogInfo/dialog.directive.ts b/src/ui/dialogInfo/dialog.directive.ts
index eccb689f25f5e35c65375e3d5ebe32124f16c2b9..3b24370b99282a6b8386e4c81b35c8b7286f552f 100644
--- a/src/ui/dialogInfo/dialog.directive.ts
+++ b/src/ui/dialogInfo/dialog.directive.ts
@@ -31,7 +31,7 @@ const sizeDict: Record<DialogSize, Partial<MatDialogConfig>> = {
 export class DialogDirective{
 
   @Input('sxplr-dialog')
-  templateRef: TemplateRef<unknown>
+  templateRef: TemplateRef<unknown>|string
 
   @Input('sxplr-dialog-size')
   size: DialogSize = 'm'
@@ -43,7 +43,11 @@ export class DialogDirective{
 
   @HostListener('click')
   onClick(){
-    this.matDialog.open(this.templateRef || DialogFallbackCmp, {
+    const tmpl = this.templateRef instanceof TemplateRef
+      ? this.templateRef
+      : DialogFallbackCmp
+
+    this.matDialog.open(tmpl, {
       data: this.data,
       ...(sizeDict[this.size] || {})
     })
diff --git a/src/ui/quickTour/constrants.ts b/src/ui/quickTour/constrants.ts
index 375ecc3f933a7e1d653e1c311148653a78d6dcf5..0cac96e3b651ff805f8e3c516a8bc9ed214f316d 100644
--- a/src/ui/quickTour/constrants.ts
+++ b/src/ui/quickTour/constrants.ts
@@ -3,8 +3,8 @@ import { InjectionToken, TemplateRef } from "@angular/core"
 type TPosition = 'top' | 'top-right' | 'right' | 'bottom-right' | 'bottom' | 'bottom-left' | 'left' | 'top-left' | 'center'
 
 type TCustomPosition = {
-    left: number
-    top: number
+    left: string
+    top: string
 }
 
 export interface IQuickTourData {
@@ -31,6 +31,12 @@ export enum EnumQuickTourSeverity {
     HIGH = 'hight',
 }
 
+export const QuickTourSeverity = {
+    "low": EnumQuickTourSeverity.LOW,
+    "medium": EnumQuickTourSeverity.MEDIUM,
+    "high": EnumQuickTourSeverity.HIGH,
+} as const
+
 export const PERMISSION_DIALOG_ACTIONS = {
   START: `start`,
   CANCEL: `cancel`,
diff --git a/src/ui/quickTour/quickTour.service.ts b/src/ui/quickTour/quickTour.service.ts
index 3aed96edf8d1cde0ff32642954be57f735a634a5..e593328e8ecf45e6e351c3460aab66934a4ba8e7 100644
--- a/src/ui/quickTour/quickTour.service.ts
+++ b/src/ui/quickTour/quickTour.service.ts
@@ -4,11 +4,18 @@ import { Overlay, OverlayRef } from "@angular/cdk/overlay";
 import { ComponentPortal } from "@angular/cdk/portal";
 import { QuickTourThis } from "./quickTourThis.directive";
 import { DoublyLinkedList, IDoublyLinkedItem } from 'src/util'
-import { EnumQuickTourSeverity, PERMISSION_DIALOG_ACTIONS, QUICK_TOUR_CMP_INJTKN } from "./constrants";
+import { EnumQuickTourSeverity, PERMISSION_DIALOG_ACTIONS, QuickTourSeverity, QUICK_TOUR_CMP_INJTKN } from "./constrants";
 import { LOCAL_STORAGE_CONST } from "src/util/constants";
 import { MatDialog, MatDialogRef } from "@angular/material/dialog";
 import { StartTourDialogDialog } from "src/ui/quickTour/startTourDialog/startTourDialog.component";
 
+const autoPlayPriority: Set<EnumQuickTourSeverity | keyof typeof QuickTourSeverity> = new Set([
+  EnumQuickTourSeverity.HIGH,
+  EnumQuickTourSeverity.MEDIUM,
+  "medium",
+  "high"
+])
+
 @Injectable()
 export class QuickTourService {
 
@@ -51,7 +58,7 @@ export class QuickTourService {
     )
 
     
-    if (dir.quickTourSeverity === EnumQuickTourSeverity.MEDIUM || dir.quickTourSeverity === EnumQuickTourSeverity.HIGH) {
+    if (autoPlayPriority.has(dir.quickTourSeverity)) {
       this.autoStart()
     }
   }
diff --git a/src/ui/quickTour/quickTourThis.directive.ts b/src/ui/quickTour/quickTourThis.directive.ts
index 1908166452147779e29c35e08d9838f60e1479bc..9dc6a2bd34b8c085d3e2b5461e48a042849a2d49 100644
--- a/src/ui/quickTour/quickTourThis.directive.ts
+++ b/src/ui/quickTour/quickTourThis.directive.ts
@@ -1,7 +1,6 @@
 import { Directive, ElementRef, Input, OnChanges, OnDestroy, OnInit, TemplateRef } from "@angular/core";
 import { QuickTourService } from "src/ui/quickTour/quickTour.service";
-import { EnumQuickTourSeverity, IQuickTourOverwritePosition, TQuickTourPosition } from "src/ui/quickTour/constrants";
-import {LOCAL_STORAGE_CONST} from "src/util/constants";
+import { EnumQuickTourSeverity, IQuickTourOverwritePosition, TQuickTourPosition, QuickTourSeverity } from "src/ui/quickTour/constrants";
 
 @Directive({
   selector: '[quick-tour]',
@@ -15,7 +14,7 @@ export class QuickTourThis implements OnInit, OnChanges, OnDestroy {
   @Input('quick-tour-position') position: TQuickTourPosition
   @Input('quick-tour-overwrite-position') overwritePosition: IQuickTourOverwritePosition
   @Input('quick-tour-overwrite-arrow') overWriteArrow: TemplateRef<any> | string
-  @Input('quick-tour-severity') quickTourSeverity: EnumQuickTourSeverity = EnumQuickTourSeverity.MEDIUM
+  @Input('quick-tour-severity') quickTourSeverity: EnumQuickTourSeverity | keyof typeof QuickTourSeverity = EnumQuickTourSeverity.MEDIUM
 
   private attachedTmpl: ElementRef
 
diff --git a/src/ui/topMenu/topMenuCmp/topMenu.components.ts b/src/ui/topMenu/topMenuCmp/topMenu.components.ts
index 0d464d59a1fe19491977f384eb0a3cb83f61788c..5933480bb7cf1c047d79d99557cc1853576ded52 100644
--- a/src/ui/topMenu/topMenuCmp/topMenu.components.ts
+++ b/src/ui/topMenu/topMenuCmp/topMenu.components.ts
@@ -12,7 +12,9 @@ import { MatDialog, MatDialogConfig, MatDialogRef } from "@angular/material/dial
 import { MatBottomSheet } from "@angular/material/bottom-sheet";
 import { CONST, QUICKTOUR_DESC, ARIA_LABELS } from 'common/constants'
 import { IQuickTourData } from "src/ui/quickTour/constrants";
-import { environment } from 'src/environments/environment'
+import { TypeMatBtnColor, TypeMatBtnStyle } from "src/components/dynamicMaterialBtn/dynamicMaterialBtn.component";
+import { select, Store } from "@ngrx/store";
+import { userPreference } from "src/state";
 
 @Component({
   selector: 'top-menu-cmp',
@@ -25,13 +27,15 @@ import { environment } from 'src/environments/environment'
 
 export class TopMenuCmp {
 
-  public EXPERIMENTAL_FEATURE_FLAG = environment.EXPERIMENTAL_FEATURE_FLAG
+  public experimentalFlag$ = this.store.pipe(
+    select(userPreference.selectors.showExperimental)
+  )
 
   public ARIA_LABELS = ARIA_LABELS
   public PINNED_DATASETS_BADGE_DESC = CONST.PINNED_DATASETS_BADGE_DESC
 
-  public matBtnStyle = 'mat-icon-button'
-  public matBtnColor = 'primary'
+  public matBtnStyle: TypeMatBtnStyle = 'mat-icon-button'
+  public matBtnColor: TypeMatBtnColor = 'primary'
 
   private _ismobile = false
   @Input()
@@ -70,6 +74,7 @@ export class TopMenuCmp {
   }
 
   constructor(
+    private store: Store,
     private authService: AuthService,
     private dialog: MatDialog,
     public bottomSheet: MatBottomSheet,
@@ -103,9 +108,9 @@ export class TopMenuCmp {
   }
 
   private keyListenerConfigBase = {
-    type: 'keydown',
+    type: 'keydown' as const,
     stop: true,
-    target: 'document',
+    target: 'document' as const,
   }
 
   public keyListenerConfig = [{
diff --git a/src/ui/topMenu/topMenuCmp/topMenu.template.html b/src/ui/topMenu/topMenuCmp/topMenu.template.html
index f652afdd663843230c4b712d3f28a35739751dfd..319528dc8c3dae585c36cef03ab3a908c2b1a720 100644
--- a/src/ui/topMenu/topMenuCmp/topMenu.template.html
+++ b/src/ui/topMenu/topMenuCmp/topMenu.template.html
@@ -168,7 +168,7 @@
   </button>
 
   <button mat-menu-item
-    *ngIf="EXPERIMENTAL_FEATURE_FLAG"
+    *ngIf="experimentalFlag$ | async"
     [disabled]="!viewerLoaded"
     key-frame-play-now
     [matTooltip]="keyFrameText">
diff --git a/src/util/constants.ts b/src/util/constants.ts
index 7879151a46014b4576f159e55d118cce75aa748c..0d59813ab8108fca1a349f86045c5f70930dd58e 100644
--- a/src/util/constants.ts
+++ b/src/util/constants.ts
@@ -111,12 +111,6 @@ export const PMAP_DEFAULT_CONFIG = {
   removeBg: true
 }
 
-export const compareLandmarksChanged: (prevLandmarks: any[], newLandmarks: any[]) => boolean = (prevLandmarks: any[], newLandmarks: any[]) => {
-  return prevLandmarks.every(lm => typeof lm.name !== 'undefined') &&
-    newLandmarks.every(lm => typeof lm.name !== 'undefined') &&
-    prevLandmarks.length === newLandmarks.length
-}
-
 export const CYCLE_PANEL_MESSAGE = `[spacebar] to cycle through views`
 
 export const UNSUPPORTED_PREVIEW = [{
@@ -131,3 +125,18 @@ export const UNSUPPORTED_PREVIEW = [{
 }]
 
 export const UNSUPPORTED_INTERVAL = 7000
+
+/**
+ * atlas should follow the following order
+ */
+export const speciesOrder = [
+  "Homo sapiens",
+  "Macaca fascicularis",
+  "Rattus norvegicus",
+  "Mus musculus"
+]
+
+export const parcBanList: string[] = [
+  "https://identifiers.org/neurovault.image:23262",
+  "https://doi.org/10.1016/j.jneumeth.2020.108983/mni152",
+]
diff --git a/src/util/fn.ts b/src/util/fn.ts
index b74bf3b0ede872912da6a3bd4ac78a0708ccb1e6..9a4ec27a97da209ee274edd562c01672ee11d1df 100644
--- a/src/util/fn.ts
+++ b/src/util/fn.ts
@@ -17,17 +17,13 @@ export function getDebug() {
   return (window as any).__DEBUG__
 }
 
-export function getExportNehuba() {
-  return (window as any).export_nehuba
-}
-
-export function getNgIds(regions: any[]): string[] {
-  return regions && regions.map
-    ? regions
-      .map(r => [r.ngId, ...getNgIds(r.children)])
-      .reduce((acc, item) => acc.concat(item), [])
-      .filter(ngId => !!ngId)
-    : []
+export async function getExportNehuba() {
+  // eslint-disable-next-line no-constant-condition
+  while (true) {
+    const nehuba = (window as any).export_nehuba
+    if (!!nehuba) return nehuba
+    await new Promise((rs) => setTimeout(rs, 160))
+  }
 }
 
 const recursiveFlatten = (region, {ngId}) => {
@@ -376,3 +372,15 @@ export function bufferUntil<T>(opts: ISwitchMapWaitFor) {
     )
   })
 }
+
+export function defaultdict<T>(fn: () => T): Record<string, T> {
+  const obj = {}
+  return new Proxy(obj, {
+    get(target, prop, rec) {
+      if (!(prop in target)){
+        target[prop] = fn()
+      }
+      return obj[prop]
+    },
+  })
+}
diff --git a/src/atlasComponents/sapiViews/util/includes.pipe.ts b/src/util/includes.pipe.ts
similarity index 100%
rename from src/atlasComponents/sapiViews/util/includes.pipe.ts
rename to src/util/includes.pipe.ts
diff --git a/src/util/injectionTokens.ts b/src/util/injectionTokens.ts
index feb547176fb2e37b7fe5222e716d1cf8c257a5ce..250a8cce50b1279b6c4d63fbb3e8bcd517b96a33 100644
--- a/src/util/injectionTokens.ts
+++ b/src/util/injectionTokens.ts
@@ -1,12 +1,19 @@
 import { InjectionToken } from "@angular/core";
 import { Observable } from "rxjs";
 
+/**
+ * Inject click interceptor
+ */
 export const CLICK_INTERCEPTOR_INJECTOR = new InjectionToken<ClickInterceptor>('CLICK_INTERCEPTOR_INJECTOR')
 
 export type TClickInterceptorConfig = {
   last?: boolean
 }
 
+/**
+ * Register callbacks
+ * interceptorFunction may return a truthy value. If so, no futher click interceptors will be called.
+ */
 export interface ClickInterceptor{
   register: (interceptorFunction: (ev: any) => boolean, config?: TClickInterceptorConfig) => void
   deregister: (interceptorFunction: (ev: any) => any) => void
diff --git a/src/util/pipes/filterArray.pipe.ts b/src/util/pipes/filterArray.pipe.ts
index 5e7c9653d73430b7631b78cd7a739a2a2ca13c75..3a4f76192591964ce667a568bce41c24635df7fd 100644
--- a/src/util/pipes/filterArray.pipe.ts
+++ b/src/util/pipes/filterArray.pipe.ts
@@ -6,7 +6,7 @@ import { Pipe, PipeTransform } from "@angular/core";
 })
 
 export class FilterArrayPipe implements PipeTransform{
-  public transform<T>(arr: T[], filterFn: (item: T, index: number, array: T[]) => boolean){
+  public transform<T>(arr: T[], filterFn: (item: T, index?: number, array?: T[]) => boolean){
     return (arr || []).filter(filterFn)
   }
 }
diff --git a/src/util/priority.ts b/src/util/priority.ts
index 79ef1b043e4d5bb13a99e157995315e05e94b8d5..6b290b83d1c4c0453f51bc5eefcf4971b48e26fc 100644
--- a/src/util/priority.ts
+++ b/src/util/priority.ts
@@ -1,10 +1,8 @@
 import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from "@angular/common/http"
 import { Injectable } from "@angular/core"
-import { interval, merge, Observable, of, Subject, timer } from "rxjs"
+import { interval, merge, Observable, of, Subject, throwError, timer } from "rxjs"
 import { catchError, filter, finalize, map, switchMapTo, take, takeWhile } from "rxjs/operators"
 
-export const PRIORITY_HEADER = 'x-sxplr-http-priority'
-
 type ResultBase = {
   urlWithParams: string
 }
@@ -19,25 +17,21 @@ type ErrorResult = {
 
 type Queue = {
   urlWithParams: string
-  priority: number
   req: HttpRequest<unknown>
   next: HttpHandler
 }
 
-export const DISABLE_PRIORITY_HEADER = 'x-sxplr-disable-priority'
-
 @Injectable({
   providedIn: 'root'
 })
 export class PriorityHttpInterceptor implements HttpInterceptor{
 
-  private retry = 5
-  private disablePriority = false
+  private retry = 0
 
   private priorityQueue: Queue[] = []
 
   private currentJob: Set<string> = new Set()
-  private archive: Map<string, HttpResponse<unknown>> = new Map()
+  private archive: Map<string, (HttpResponse<unknown>|Error)> = new Map()
   private queue$: Subject<Queue> = new Subject()
   private result$: Subject<Result<unknown>> = new Subject()
   private error$: Subject<ErrorResult> = new Subject()
@@ -73,14 +67,14 @@ export class PriorityHttpInterceptor implements HttpInterceptor{
           this.counter --
         }),
         catchError((err, obs) => {
-          if (retry >= 0) {
-            retry --
+          if (--retry >= 0) {
             return obs
           }
           return of(new Error(err))
         }),
       ).subscribe(val => {
         if (val instanceof Error) {
+          this.archive.set(urlWithParams, val)
           this.error$.next({
             urlWithParams,
             error: val
@@ -97,40 +91,19 @@ export class PriorityHttpInterceptor implements HttpInterceptor{
     })
   }
 
-  updatePriority(urlWithParams: string, newPriority: number) {
-    
-    if (this.currentJob.has(urlWithParams)) return
-
-    const foundIdx = this.priorityQueue.findIndex(v => v.urlWithParams === urlWithParams)
-    if (foundIdx < 0) return false
-    const [ item ] = this.priorityQueue.splice(foundIdx, 1)
-    item.priority = newPriority
-
-    this.insert(item)
-    this.forceCheck$.next(true)
-    return true
-  }
-
   private insert(obj: Queue) {
-    const { priority, urlWithParams, req } = obj
+    const { urlWithParams, req } = obj
     
     if (this.archive.has(urlWithParams)) return
     if (this.currentJob.has(urlWithParams)) return
 
-    obj.req = req.clone({
-      headers: req.headers.delete(PRIORITY_HEADER)
-    })
+    obj.req = req.clone()
 
     const existing = this.priorityQueue.find(q => q.urlWithParams === urlWithParams)
     if (existing) {
-      if (existing.priority < priority) {
-        this.updatePriority(urlWithParams, priority)
-      }
       return
     }
-    const foundIdx = this.priorityQueue.findIndex(q => q.priority <= priority)
-    const useIndex = foundIdx >= 0 ? foundIdx : this.priorityQueue.length
-    this.priorityQueue.splice(useIndex, 0, obj)
+    this.priorityQueue.push(obj)
   }
 
   intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
@@ -139,23 +112,22 @@ export class PriorityHttpInterceptor implements HttpInterceptor{
      * Since the way in which serialization occurs is via path and query param...
      * body is not used.
      */
-    if (this.disablePriority || req.method !== 'GET' || !!req.headers.get(DISABLE_PRIORITY_HEADER)) {
-      const newReq = req.clone({
-        headers: req.headers.delete(DISABLE_PRIORITY_HEADER)
-      })
-      return next.handle(newReq)
+    if (req.method !== 'GET') {
+      return next.handle(req)
     }
 
     const { urlWithParams } = req
-    if (this.archive.has(urlWithParams)) {
-      return of(
-        this.archive.get(urlWithParams).clone()
-      )
+    const archive = this.archive.get(urlWithParams)
+    if (archive) {
+      if (archive instanceof Error) {
+        return throwError(archive)
+      }
+      if (archive instanceof HttpResponse) {
+        return of( archive.clone() )
+      }
     }
     
-    const priority = Number(req.headers.get(PRIORITY_HEADER) || 0)
     const objToInsert: Queue = {
-      priority,
       req,
       next,
       urlWithParams
@@ -171,7 +143,7 @@ export class PriorityHttpInterceptor implements HttpInterceptor{
       filter(v => v.urlWithParams === urlWithParams),
       take(1),
       map(v => {
-        if (v instanceof Error) {
+        if (v['error'] instanceof Error) {
           throw v
         }
         return (v as Result<unknown>).result
diff --git a/src/util/util.module.ts b/src/util/util.module.ts
index b1007281e3c037b4766b301c0189e15dca21a878..de0d23cb14d309d82c2126ebe8b4f2b0421ea9d1 100644
--- a/src/util/util.module.ts
+++ b/src/util/util.module.ts
@@ -1,6 +1,5 @@
 import { NgModule } from "@angular/core";
 import { KeyListner } from "./directives/keyDownListener.directive";
-
 import { StopPropagationDirective } from "./directives/stopPropagation.directive";
 import { SafeResourcePipe } from "./pipes/safeResource.pipe";
 import { CaptureClickListenerDirective } from "./directives/captureClickListener.directive";
@@ -19,6 +18,7 @@ import { DoiParserPipe } from "./pipes/doiPipe.pipe";
 import { GetFilenamePipe } from "./pipes/getFilename.pipe";
 import { CombineFnPipe } from "./pipes/combineFn.pipe";
 import { MergeObjPipe } from "./mergeObj.pipe";
+import { IncludesPipe } from "./includes.pipe";
 
 @NgModule({
   imports:[
@@ -43,6 +43,7 @@ import { MergeObjPipe } from "./mergeObj.pipe";
     GetFilenamePipe,
     CombineFnPipe,
     MergeObjPipe,
+    IncludesPipe,
   ],
   exports: [
     StopPropagationDirective,
@@ -63,6 +64,7 @@ import { MergeObjPipe } from "./mergeObj.pipe";
     GetFilenamePipe,
     CombineFnPipe,
     MergeObjPipe,
+    IncludesPipe,
   ]
 })
 
diff --git a/src/viewerModule/index.ts b/src/viewerModule/index.ts
index 6e5c74fbe55be040c17b54d98c7b6f29cd66a513..adcd5938e479a67360e364f7740984d0c40384cd 100644
--- a/src/viewerModule/index.ts
+++ b/src/viewerModule/index.ts
@@ -1 +1,2 @@
-export { ViewerModule } from "./module"
\ No newline at end of file
+export { ViewerModule } from "./module"
+export { ViewerCommonEffects } from "./viewer.common.effects"
diff --git a/src/viewerModule/module.ts b/src/viewerModule/module.ts
index 597e574ea77d5f1d1a350e9ae236663d09e25f2a..22a5950b8af7a1132d9ce4ddaf835b39bd1eceb7 100644
--- a/src/viewerModule/module.ts
+++ b/src/viewerModule/module.ts
@@ -30,6 +30,9 @@ import { LeapModule } from "./leap/module";
 
 import { environment } from "src/environments/environment"
 import { ATPSelectorModule } from "src/atlasComponents/sapiViews/core/rich/ATPSelector";
+import { FeatureModule } from "src/features";
+import { NgLayerCtlModule } from "./nehuba/ngLayerCtlModule/module";
+import { SmartChipModule } from "src/components/smartChip";
 
 @NgModule({
   imports: [
@@ -52,6 +55,9 @@ import { ATPSelectorModule } from "src/atlasComponents/sapiViews/core/rich/ATPSe
     MouseoverModule,
     ShareModule,
     ATPSelectorModule,
+    FeatureModule,
+    NgLayerCtlModule,
+    SmartChipModule,
     ...(environment.ENABLE_LEAP_MOTION ? [LeapModule] : [])
   ],
   declarations: [
diff --git a/src/viewerModule/nehuba/base.service/base.service.ts b/src/viewerModule/nehuba/base.service/base.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..bb42ed31f608691ce4b91084927b9a44d0a8a558
--- /dev/null
+++ b/src/viewerModule/nehuba/base.service/base.service.ts
@@ -0,0 +1,85 @@
+import { Injectable } from "@angular/core";
+import { select, Store } from "@ngrx/store";
+import { from, Observable } from "rxjs";
+import { map, switchMap } from "rxjs/operators";
+import { SAPI } from "src/atlasComponents/sapi";
+import { NgSegLayerSpec, SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes";
+import { atlasSelection } from "src/state";
+import { getParcNgId } from "../config.service";
+
+type NgMapReturnType = {
+  region: SxplrRegion
+  layer: NgSegLayerSpec
+}
+
+@Injectable({
+  providedIn: 'root'
+})
+export class BaseService {
+
+  constructor(private sapi: SAPI, private store$: Store){}
+  
+  public selectedATP$ = this.store$.pipe(
+    atlasSelection.fromRootStore.distinctATP(),
+  )
+
+  public selectedATPR$ = this.selectedATP$.pipe(
+    switchMap(({ atlas, template, parcellation }) => 
+      this.store$.pipe(
+        select(atlasSelection.selectors.selectedParcAllRegions),
+        map(regions => ({
+          atlas, template, parcellation, regions
+        })),
+      )
+    )
+  )
+
+  #translatedNgMap = this.selectedATPR$.pipe(
+    switchMap(({ atlas, parcellation, regions, template }) =>
+      from(this.sapi.getTranslatedLabelledNgMap(parcellation, template)).pipe(
+        map(record => {
+          
+          const regionmap = new Map<string, SxplrRegion>()
+          for (const r of regions) {
+            regionmap.set(r.name, r)
+          }
+          const returnVal: Record<string, Record<number, NgMapReturnType>> = {}
+          for (const [url, { layer, region }] of Object.entries(record)) {
+            
+            
+            for (const { name, label } of region) {
+              const actualRegion = regionmap.get(name) || (() => {
+                console.log(`region with name ${name} cannot be found. Viewer may not behave properly`)
+                return { name, id: '', parentIds: [], type: 'SxplrRegion' }
+              })()
+              const ngId = getParcNgId(atlas, template, parcellation, actualRegion)
+              if (!returnVal[ngId]) {
+                returnVal[ngId] = {}
+              }
+              returnVal[ngId][label] = {
+                region: actualRegion,
+                layer
+              }
+            }
+          }
+          return returnVal
+        })
+      )
+    )
+  )
+
+  public completeNgIdLabelRegionMap$: Observable<Record<string, Record<number, SxplrRegion>>> = this.#translatedNgMap.pipe(
+    map(val => {
+      const returnObj: Record<string, Record<number, SxplrRegion>> = {}
+      for (const [ ngId, obj ] of Object.entries(val)) {
+        for (const [label, layer] of Object.entries(obj)) {
+          if (!returnObj[ngId]) {
+            returnObj[ngId] = {}
+          }
+          returnObj[ngId][label] = layer.region
+        }
+      }
+      return returnObj
+    })
+  )
+}
diff --git a/src/viewerModule/nehuba/config.service/index.ts b/src/viewerModule/nehuba/config.service/index.ts
index 1d0fd090589abf2a94209c68e8da7eff87c9b630..ab727ea26f32afb1cb337a21ba275c8cffcec305 100644
--- a/src/viewerModule/nehuba/config.service/index.ts
+++ b/src/viewerModule/nehuba/config.service/index.ts
@@ -7,12 +7,8 @@ export {
   NgSegLayerSpec,
 } from "./type"
 export {
-  getParcNgLayers,
-  getTmplAuxNgLayer,
-  getTmplNgLayer,
-  getNgLayersFromVolumesATP,
+  
   getParcNgId,
-  getRegionLabelIndex,
   getNehubaConfig,
   defaultNehubaConfig,
 } from "./util"
diff --git a/src/viewerModule/nehuba/config.service/type.ts b/src/viewerModule/nehuba/config.service/type.ts
index c8154dd44432e6efe3d7920977f5dd287c557726..ea17a3b69d8668beab9aab95152396671cb0c5a8 100644
--- a/src/viewerModule/nehuba/config.service/type.ts
+++ b/src/viewerModule/nehuba/config.service/type.ts
@@ -96,13 +96,23 @@ interface _NehubaConfig {
 
 export type NehubaConfig = RecursivePartial<_NehubaConfig>
 
+/**
+ * source MUST contain format, e.g. precomputed://
+ */
 export type NgLayerSpec = {
   source: string
   transform: number[][]
+  info?: {
+    voxel: [number, number, number]
+    real: [number, number, number]
+  }
   opacity?: number
   visible?: boolean
 }
 
+/**
+ * source MUST contain format, e.g. precomputed://
+ */
 export type NgPrecompMeshSpec = {
   auxMeshes: {
     name: string
@@ -110,6 +120,9 @@ export type NgPrecompMeshSpec = {
   }[]
 } & NgLayerSpec
 
+/**
+ * source MUST contain format, e.g. precomputed://
+ */
 export type NgSegLayerSpec = {
   labelIndicies: number[]
 } & NgLayerSpec
diff --git a/src/viewerModule/nehuba/config.service/util.ts b/src/viewerModule/nehuba/config.service/util.ts
index 8f2b0de2dc144f287815a503dd95e35c741e82fb..fa76f139af7aed4ffb7b21b97e87f7c39caf4633 100644
--- a/src/viewerModule/nehuba/config.service/util.ts
+++ b/src/viewerModule/nehuba/config.service/util.ts
@@ -1,17 +1,13 @@
-import { SapiParcellationModel, SapiSpaceModel, SapiAtlasModel, SapiRegionModel } from 'src/atlasComponents/sapi'
-import { SapiVolumeModel, IDS } from 'src/atlasComponents/sapi'
+import { SxplrAtlas, SxplrTemplate, SxplrParcellation, SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes"
+import { IDS } from 'src/atlasComponents/sapi/constants'
 import { atlasSelection } from 'src/state'
 import { MultiDimMap } from 'src/util/fn'
-import { ParcVolumeSpec } from "../store/util"
 import {
   NehubaConfig,
   NgConfig,
   RecursivePartial,
-  NgLayerSpec,
-  NgPrecompMeshSpec,
-  NgSegLayerSpec,
 } from "./type"
-
+import { translateV3Entities } from "src/atlasComponents/sapi/translateV3"
 // fsaverage uses threesurfer, which, whilst do not use ngId, uses 'left' and 'right' as keys 
 const fsAverageKeyVal = {
   [IDS.PARCELLATION.JBA29]: {
@@ -160,34 +156,10 @@ const BACKCOMAP_KEY_DICT = {
 }
 
 
-export function getTmplNgLayer(atlas: SapiAtlasModel, tmpl: SapiSpaceModel, spaceVolumes: SapiVolumeModel[]): Record<string, NgLayerSpec>{
-  if (!atlas || !tmpl) return {}
-  const ngId = `_${MultiDimMap.GetKey(atlas["@id"], tmpl["@id"], "tmplImage")}`
-  const tmplImage = spaceVolumes.find(v => "neuroglancer/precomputed" in v.data.detail)
-  if (!tmplImage) return {}
-  return {
-    [ngId]: {
-      source: `precomputed://${tmplImage.data.url.replace(/^precomputed:\/\//, '')}`,
-      ...tmplImage.data.detail["neuroglancer/precomputed"] as NgLayerSpec
-    }
-  }
-}
-
-export function getTmplAuxNgLayer(atlas: SapiAtlasModel, tmpl: SapiSpaceModel, spaceVolumes: SapiVolumeModel[]): Record<string, NgPrecompMeshSpec>{
-  if (!atlas || !tmpl) return {}
-  const ngId = `_${MultiDimMap.GetKey(atlas["@id"], tmpl["@id"], "auxLayer")}`
-  const tmplImage = spaceVolumes.find(v => "neuroglancer/precompmesh" in v.data.detail)
-  if (!tmplImage) return {}
-  return {
-    [ngId]: {
-      source: `precompmesh://${tmplImage.data.url.replace(/^precompmesh:\/\//, '')}`,
-      ...tmplImage.data.detail["neuroglancer/precompmesh"] as NgPrecompMeshSpec
-    }
+export function getParcNgId(atlas: SxplrAtlas, tmpl: SxplrTemplate, parc: SxplrParcellation, region: SxplrRegion): string {
+  if (!region) {
+    return null
   }
-}
-
-export function getParcNgId(atlas: SapiAtlasModel, tmpl: SapiSpaceModel, parc: SapiParcellationModel, region: SapiRegionModel): string {
-
   let laterality: string = "whole brain"
   if (region.name.indexOf("left") >= 0) laterality = "left hemisphere"
   if (region.name.indexOf("right") >= 0) laterality = "right hemisphere"
@@ -195,79 +167,28 @@ export function getParcNgId(atlas: SapiAtlasModel, tmpl: SapiSpaceModel, parc: S
   /**
    * for JBA29 in big brain, there exist several volumes. (e.g. v1, v2, v5, interpolated, etc)
    */
-  if (tmpl['@id'] === IDS.TEMPLATES.BIG_BRAIN && parc['@id'] === IDS.PARCELLATION.JBA29) {
-    laterality = region.hasAnnotation.visualizedIn?.['@id']
+  if (tmpl.id === IDS.TEMPLATES.BIG_BRAIN && parc.id === IDS.PARCELLATION.JBA29) {
+    const frag = translateV3Entities.mapTPRToFrag[tmpl.id][parc.id][region.name]
+    return frag
+      ? `_${MultiDimMap.GetKey(frag)}`
+      : null
+  }
+
+  if (parc.id === IDS.PARCELLATION.JBA30) {
+    return `_${MultiDimMap.GetKey(atlas.id, tmpl.id, parc.id, "whole brain")}`
   }
 
   if (!laterality) {
     return null
   }
 
-  let ngId = BACKCOMAP_KEY_DICT[atlas["@id"]]?.[tmpl["@id"]]?.[parc["@id"]]?.[laterality]
+  let ngId = BACKCOMAP_KEY_DICT[atlas.id]?.[tmpl.id]?.[parc.id]?.[laterality]
   if (!ngId) {
-    ngId = `_${MultiDimMap.GetKey(atlas["@id"], tmpl["@id"], parc["@id"], laterality)}`
+    ngId = `_${MultiDimMap.GetKey(atlas.id, tmpl.id, parc.id, laterality)}`
   }
   return ngId
 }
 
-const labelIdxRegex = /siibra_python_ng_precomputed_labelindex:\/\/(.*?)#([0-9]+)$/
-
-export function getRegionLabelIndex(_atlas: SapiAtlasModel, _tmpl: SapiSpaceModel, _parc: SapiParcellationModel, region: SapiRegionModel): number {
-  const overwriteLabelIndex = region.hasAnnotation.inspiredBy.map(({ "@id": id }) => labelIdxRegex.exec(id)).filter(v => !!v)
-  if (overwriteLabelIndex.length > 0) {
-    const match = overwriteLabelIndex[0]
-    const volumeId = match[1]
-    const labelIndex = match[2]
-    const _labelIndex = Number(labelIndex)
-    if (!isNaN(_labelIndex)) return _labelIndex
-  }
-  const lblIdx = Number(region?.hasAnnotation?.internalIdentifier)
-  if (isNaN(lblIdx)) return null
-  return lblIdx
-}
-
-export function getParcNgLayers(atlas: SapiAtlasModel, tmpl: SapiSpaceModel, parc: SapiParcellationModel, parcVolumes: { volume: SapiVolumeModel, volumeMetadata: ParcVolumeSpec }[]): Record<string, NgSegLayerSpec>{
-  const returnVal: Record<string, NgSegLayerSpec> = {}
-  for (const parcVol of parcVolumes) {
-    if ("spy/volume/neuroglancer/precomputed" !== parcVol.volume['@type']) continue
-    const { volume, volumeMetadata } = parcVol
-    const { regions } = volumeMetadata
-    if (regions.length === 0) {
-      console.warn(`parc volume with no associated region`)
-      continue
-    }
-    const ngId = getParcNgId(atlas, tmpl, parc, regions[0].region)
-
-    returnVal[ngId] = {
-      source: `precomputed://${volume.data.url.replace(/^precomputed:\/\//, '')}`,
-      transform: (volume.data.detail["neuroglancer/precomputed"] as any).transform,
-      labelIndicies: regions.map(v => v.labelIndex)
-    }
-  }
-  return returnVal
-}
-
-type CongregatedVolume = {
-  tmplVolumes: SapiVolumeModel[]
-  tmplAuxMeshVolumes: SapiVolumeModel[]
-  parcVolumes: { volume: SapiVolumeModel, volumeMetadata: ParcVolumeSpec}[]
-}
-
-export const getNgLayersFromVolumesATP = (volumes: CongregatedVolume, ATP: { atlas: SapiAtlasModel, template: SapiSpaceModel, parcellation: SapiParcellationModel }): {
-  tmplNgLayers: Record<string, NgLayerSpec>
-  tmplAuxNgLayers: Record<string, NgPrecompMeshSpec>
-  parcNgLayers: Record<string, NgSegLayerSpec>
-} => {
-  
-  const { tmplVolumes, tmplAuxMeshVolumes, parcVolumes } = volumes
-  const { atlas, template, parcellation } = ATP
-  return {
-    tmplNgLayers: getTmplNgLayer(atlas, template, tmplVolumes),
-    tmplAuxNgLayers: getTmplAuxNgLayer(atlas, template, tmplAuxMeshVolumes),
-    parcNgLayers: getParcNgLayers(atlas, template, parcellation, parcVolumes)
-  }
-}
-
 export const defaultNehubaConfig: NehubaConfig = {
   "configName": "",
   "globals": {
@@ -348,6 +269,14 @@ export const spaceMiscInfoMap = new Map([
     name: 'icbm2009c',
     scale: 1,
   }],
+  [IDS.TEMPLATES.MNI152, {
+    name: 'icbm2009c',
+    scale: 1,
+  }],
+  [IDS.TEMPLATES.MEBRAINS, {
+    name: 'mebrains',
+    scale: 0.5
+  }],
   ['minds/core/referencespace/v1.0.0/7f39f7be-445b-47c0-9791-e971c0b6d992', {
     name: 'colin27',
     scale: 1,
@@ -362,10 +291,10 @@ export const spaceMiscInfoMap = new Map([
   }],
 ])
 
-export function getNehubaConfig(space: SapiSpaceModel): NehubaConfig {
+export function getNehubaConfig(space: SxplrTemplate): NehubaConfig {
 
-  const darkTheme = space["@id"] !== "minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588"
-  const { scale } = spaceMiscInfoMap.get(space["@id"]) || { scale: 1 }
+  const darkTheme = space.id !== "minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588"
+  const { scale } = spaceMiscInfoMap.get(space.id) || { scale: 1 }
   const backgrd = darkTheme
     ? [0,0,0,1]
     : [1,1,1,1]
@@ -382,7 +311,7 @@ export function getNehubaConfig(space: SapiSpaceModel): NehubaConfig {
 
   // enable surface parcellation
   // otherwise, on segmentation selection, the unselected meshes will also be invisible
-  const surfaceParcellation = space["@id"] === 'minds/core/referencespace/v1.0.0/7f39f7be-445b-47c0-9791-e971c0b6d992'
+  const surfaceParcellation = space.id === 'minds/core/referencespace/v1.0.0/7f39f7be-445b-47c0-9791-e971c0b6d992'
   return {
     "configName": "",
     "globals": {
diff --git a/src/viewerModule/nehuba/constants.ts b/src/viewerModule/nehuba/constants.ts
index ca5ae4be810af998f93318a6348f751555fabff3..667c5b7147246a276e3a02f59cd436851db83932 100644
--- a/src/viewerModule/nehuba/constants.ts
+++ b/src/viewerModule/nehuba/constants.ts
@@ -1,7 +1,6 @@
 import { InjectionToken } from '@angular/core'
 import { Observable } from 'rxjs'
 
-export { getNgIds } from 'src/util/fn'
 export const NEHUBA_VIEWER_FEATURE_KEY = 'ngViewerFeature'
 
 export interface IRegion {
@@ -10,52 +9,6 @@ export interface IRegion {
   rgb?: [number, number, number]
 }
 
-export function getMultiNgIdsRegionsLabelIndexMap(parcellation: any = {}, inheritAttrsOpt: any = { ngId: 'root' }): Map<string, Map<number, IRegion>> {
-  const map: Map<string, Map<number, any>> = new Map()
-  
-  const inheritAttrs = Object.keys(inheritAttrsOpt)
-  if (inheritAttrs.indexOf('children') >=0 ) throw new Error(`children attr cannot be inherited`)
-
-  const processRegion = (region: any) => {
-    const { ngId: rNgId } = region
-    const labelIndex = Number(region.labelIndex)
-    if (labelIndex && rNgId) {
-      const existingMap = map.get(rNgId)
-      if (!existingMap) {
-        const newMap = new Map()
-        newMap.set(labelIndex, region)
-        map.set(rNgId, newMap)
-      } else {
-        existingMap.set(labelIndex, region)
-      }
-    }
-
-    if (region.children && Array.isArray(region.children)) {
-      for (const r of region.children) {
-        const copiedRegion = { ...r }
-        for (const attr of inheritAttrs){
-          copiedRegion[attr] = copiedRegion[attr] || region[attr] || parcellation[attr]
-        }
-        processRegion(copiedRegion)
-      }
-    }
-  }
-
-  if (!parcellation) throw new Error(`parcellation needs to be defined`)
-  if (!parcellation.regions) throw new Error(`parcellation.regions needs to be defined`)
-  if (!Array.isArray(parcellation.regions)) throw new Error(`parcellation.regions needs to be an array`)
-
-  for (const region of parcellation.regions){
-    const copiedregion = { ...region }
-    for (const attr of inheritAttrs){
-      copiedregion[attr] = copiedregion[attr] || parcellation[attr]
-    }
-    processRegion(copiedregion)
-  }
-
-  return map
-}
-
 export interface IMeshesToLoad {
   labelIndicies: number[]
   layer: {
@@ -63,6 +16,22 @@ export interface IMeshesToLoad {
   }
 }
 
+export type TVec4 = number[]
+export type TVec3 = number[]
+
+export interface INavObj {
+  position: TVec3
+  orientation: TVec4
+  perspectiveOrientation: TVec4
+  perspectiveZoom: number
+  zoom: number
+}
+
+export type TNehubaViewerUnit = {
+  viewerPositionChange: Observable<INavObj>
+  setNavigationState(nav: Partial<INavObj> & { positionReal?: boolean }): void
+}
+
 export const SET_MESHES_TO_LOAD = new InjectionToken<Observable<IMeshesToLoad>>('SET_MESHES_TO_LOAD')
 
 export const PMAP_LAYER_NAME = 'regional-pmap'
diff --git a/src/viewerModule/nehuba/index.ts b/src/viewerModule/nehuba/index.ts
index 65cb900d6d7293034929898b2515f02082d04b37..7ea67235487ac5d9209ca9bceccc27e9517807e7 100644
--- a/src/viewerModule/nehuba/index.ts
+++ b/src/viewerModule/nehuba/index.ts
@@ -2,3 +2,4 @@ export { NehubaGlueCmp } from "./nehubaViewerGlue/nehubaViewerGlue.component"
 export { NehubaViewerTouchDirective } from "./nehubaViewerInterface/nehubaViewerTouch.directive"
 export { NehubaModule } from "./module"
 export { NehubaViewerUnit } from "./nehubaViewer/nehubaViewer.component"
+export { NEHUBA_INSTANCE_INJTKN } from "./util"
diff --git a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.effects.ts b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.effects.ts
index c052d1109674137db6e5fa941167c6af2283f21e..68f181a8654696b4c3c080bc8f079f694dce4591 100644
--- a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.effects.ts
+++ b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.effects.ts
@@ -1,110 +1,114 @@
 import { Injectable } from "@angular/core";
 import { createEffect } from "@ngrx/effects";
 import { select, Store } from "@ngrx/store";
-import { forkJoin, of } from "rxjs";
-import { mapTo, switchMap, withLatestFrom, filter, catchError, map, debounceTime, shareReplay, distinctUntilChanged, startWith, pairwise, tap } from "rxjs/operators";
-import { SAPI, SapiAtlasModel, SapiFeatureModel, SapiParcellationModel, SapiSpaceModel, SapiRegionModel } from "src/atlasComponents/sapi";
-import { SapiVOIDataResponse, SapiVolumeModel } from "src/atlasComponents/sapi/type";
+import { forkJoin, from, of } from "rxjs";
+import { switchMap, withLatestFrom, filter, catchError, map, debounceTime, shareReplay, distinctUntilChanged, startWith, pairwise, tap } from "rxjs/operators";
+import { Feature, NgLayerSpec, NgPrecompMeshSpec, NgSegLayerSpec, SxplrAtlas, SxplrParcellation, SxplrTemplate, VoiFeature } from "src/atlasComponents/sapi/sxplrTypes";
+import { SAPI } from "src/atlasComponents/sapi"
 import { atlasAppearance, atlasSelection, userInteraction } from "src/state";
 import { arrayEqual } from "src/util/array";
 import { EnumColorMapName } from "src/util/colorMaps";
 import { getShader } from "src/util/constants";
-import { getNgLayersFromVolumesATP, getRegionLabelIndex } from "../config.service";
-import { ParcVolumeSpec } from "../store/util";
 import { PMAP_LAYER_NAME } from "../constants";
+import { QuickHash } from "src/util/fn";
+import { getParcNgId } from "../config.service";
 
 @Injectable()
 export class LayerCtrlEffects {
-  onRegionSelectClearPmapLayer = createEffect(() => this.store.pipe(
-    select(atlasSelection.selectors.selectedRegions),
-    distinctUntilChanged(
-      arrayEqual((o, n) => o["@id"] === n["@id"])
-    ),
-    mapTo(
-      atlasAppearance.actions.removeCustomLayer({
+  static TransformVolumeModel(volumeModel: VoiFeature['ngVolume']): atlasAppearance.const.NgLayerCustomLayer[] {    
+    return [{
+      clType: "customlayer/nglayer",
+      id: volumeModel.url,
+      source: `precomputed://${volumeModel.url}`,
+      transform: volumeModel.transform,
+    }]
+  }
+
+  #onATP$ = this.store.pipe(
+    atlasSelection.fromRootStore.distinctATP(),
+    map(val => val as { atlas: SxplrAtlas, parcellation: SxplrParcellation, template: SxplrTemplate }),
+  )
+
+
+  #pmapUrl: string
+  #cleanupUrl(){
+    if (!!this.#pmapUrl) {
+      URL.revokeObjectURL(this.#pmapUrl)
+      this.#pmapUrl = null
+    }
+  }
+
+  onRegionSelect = createEffect(() => this.store.pipe(
+    select(atlasAppearance.selectors.useViewer),
+    switchMap(viewer => {
+      const rmPmapAction = atlasAppearance.actions.removeCustomLayer({
         id: PMAP_LAYER_NAME
       })
-    )
-  ))
-
-  onRegionSelectShowNewPmapLayer = createEffect(() => this.store.pipe(
-    select(atlasSelection.selectors.selectedRegions),
-    filter(regions => regions.length > 0),
-    withLatestFrom(
-      this.store.pipe(
-        atlasSelection.fromRootStore.distinctATP()
-      )
-    ),
-    switchMap(([ regions, { atlas, parcellation, template } ]) => {
-      const sapiRegion = this.sapi.getRegion(atlas["@id"], parcellation["@id"], regions[0].name)
-      return forkJoin([
-        sapiRegion.getMapInfo(template["@id"]),
-        sapiRegion.getMapUrl(template["@id"])
-      ]).pipe(
-        map(([mapInfo, mapUrl]) => 
-          atlasAppearance.actions.addCustomLayer({
-            customLayer: {
-              clType: "customlayer/nglayer",
-              id: PMAP_LAYER_NAME,
-              source: `nifti://${mapUrl}`,
-              shader: getShader({
-                colormap: EnumColorMapName.VIRIDIS,
-                highThreshold: mapInfo.max,
-                lowThreshold: mapInfo.min,
-                removeBg: true,
-              })
-            }
-          })
+      if (viewer !== "NEHUBA") {
+        this.#cleanupUrl()
+        return of(rmPmapAction)
+      }
+      return this.store.pipe(
+        select(atlasSelection.selectors.selectedRegions),
+        distinctUntilChanged(
+          arrayEqual((o, n) => o.name === n.name)
         ),
-        catchError(() => of(
-          atlasAppearance.actions.removeCustomLayer({
-            id: PMAP_LAYER_NAME
-          })
-        ))
+        withLatestFrom(this.#onATP$),
+        // since region selection changed, pmap will definitely be removed. revoke the url resource.
+        tap(() => this.#cleanupUrl()),
+        switchMap(([ regions, { parcellation, template } ]) => {
+          if (regions.length !== 1) {
+            return of(rmPmapAction)
+          }
+          return this.sapi.getStatisticalMap(parcellation, template, regions[0]).pipe(
+            switchMap(({ buffer, meta }) => {
+              this.#pmapUrl = URL.createObjectURL(new Blob([buffer], {type: "application/octet-stream"}))
+              return of(
+                rmPmapAction,
+                atlasAppearance.actions.addCustomLayer({
+                  customLayer: {
+                    clType: "customlayer/nglayer",
+                    id: PMAP_LAYER_NAME,
+                    source: `nifti://${this.#pmapUrl}`,
+                    shader: getShader({
+                      colormap: EnumColorMapName.VIRIDIS,
+                      highThreshold: meta.max,
+                      lowThreshold: meta.min,
+                      removeBg: true,
+                    })
+                  }
+                })
+              )
+            }),
+            catchError(() => of(rmPmapAction)),
+          )
+        })
       )
-    }),
+    })
   ))
 
-  onATP$ = this.store.pipe(
-    atlasSelection.fromRootStore.distinctATP(),
-    map(val => val as { atlas: SapiAtlasModel, parcellation: SapiParcellationModel, template: SapiSpaceModel }),
-  )
-
   onShownFeature = createEffect(() => this.store.pipe(
     select(userInteraction.selectors.selectedFeature),
-    startWith(null as SapiFeatureModel),
+    startWith(null as Feature),
     pairwise(),
     map(([ prev, curr ]) => {
-      const removeLayers: atlasAppearance.NgLayerCustomLayer[] = []
-      const addLayers: atlasAppearance.NgLayerCustomLayer[] = []
-      if (prev?.["@type"] === "siibra/features/voi") {
+      const removeLayers: atlasAppearance.const.NgLayerCustomLayer[] = []
+      const addLayers: atlasAppearance.const.NgLayerCustomLayer[] = []
+      
+      /**
+       * TODO: use proper guard functions
+       */
+      if (!!prev?.['bbox']) {
+        const prevVoi = prev as VoiFeature
+        prevVoi.bbox
         removeLayers.push(
-          ...(prev as SapiVOIDataResponse).volumes.map(v => {
-            return {
-              id: v.metadata.fullName,
-              clType: "customlayer/nglayer",
-              source: v.data.url,
-              transform: v.data.detail['neuroglancer/precomputed']['transform'],
-              opacity: 1.0,
-              visible: true,
-              shader: v.data.detail['neuroglancer/precomputed']['shader'] || getShader()
-            } as atlasAppearance.NgLayerCustomLayer
-          })
+          ...LayerCtrlEffects.TransformVolumeModel(prevVoi.ngVolume)
         )
       }
-      if (curr?.["@type"] === "siibra/features/voi") {
+      if (!!curr?.['bbox']) {
+        const currVoi = curr as VoiFeature
         addLayers.push(
-          ...(curr as SapiVOIDataResponse).volumes.map(v => {
-            return {
-              id: v.metadata.fullName,
-              clType: "customlayer/nglayer",
-              source: `precomputed://${v.data.url}`,
-              transform: v.data.detail['neuroglancer/precomputed']['transform'],
-              opacity: v.data.detail['neuroglancer/precomputed']['opacity'] || 1.0,
-              visible: true,
-              shader: v.data.detail['neuroglancer/precomputed']['shader'] || getShader()
-            } as atlasAppearance.NgLayerCustomLayer
-          })
+          ...LayerCtrlEffects.TransformVolumeModel(currVoi.ngVolume)
         )
       }
       return { removeLayers, addLayers }
@@ -120,7 +124,7 @@ export class LayerCtrlEffects {
     ]))
   ))
 
-  onATPClearBaseLayers = createEffect(() => this.onATP$.pipe(
+  onATPClearBaseLayers = createEffect(() => this.#onATP$.pipe(
     withLatestFrom(
       this.store.pipe(
         select(atlasAppearance.selectors.customLayers),
@@ -143,162 +147,55 @@ export class LayerCtrlEffects {
     )
   ))
 
-  private getNgLayers(atlas: SapiAtlasModel, parcellation: SapiParcellationModel, template: SapiSpaceModel){
-
-    if (!!parcellation && !template) {
-      throw new Error(`parcellation defined, but template not defined!`)
-    }
-    
-    /**
-     * some labelled maps (such as julich brain in big brain) do not have the volumes defined on the parcellation level.
-     * While we have the URLs of these volumes (the method we use is also kind of hacky), and in theory, we could construct a volume object directly
-     * It is probably better to fetch the correct volume object to begin with
-     */
-    const parcVolumes$ = !parcellation
-      ? of([] as {volume: SapiVolumeModel, volumeMetadata: ParcVolumeSpec}[])
-      : forkJoin([
-        this.sapi.getParcellation(atlas["@id"], parcellation["@id"]).getRegions(template["@id"]).pipe(
-          map(regions => {
-
-            const volumeIdToRegionMap = new Map<string, {
-              labelIndex: number
-              region: SapiRegionModel
-            }[]>()
-
-            for (const r of regions) {
-              const volumeId = r?.hasAnnotation?.visualizedIn?.["@id"]
-              if (!volumeId) continue
-
-              const labelIndex = getRegionLabelIndex(atlas, template, parcellation, r)
-              if (!labelIndex) continue
-
-              if (!volumeIdToRegionMap.has(volumeId)) {
-                volumeIdToRegionMap.set(volumeId, [])
-              }
-              volumeIdToRegionMap.get(volumeId).push({
-                labelIndex,
-                region: r
-              })
+  onATPDebounceNgLayers$ = this.#onATP$.pipe(
+    debounceTime(16),
+    switchMap(({ atlas, template, parcellation }) => 
+      forkJoin({
+        tmplNgLayers: this.sapi.getVoxelTemplateImage(template).pipe(
+          map(templateImages => {
+            const returnObj: Record<string, NgLayerSpec> = {}
+            for (const img of templateImages) {
+              returnObj[QuickHash.GetHash(img.source)] = img
             }
-            return volumeIdToRegionMap
+            return returnObj
           })
         ),
-        this.sapi.getParcellation(atlas["@id"], parcellation["@id"]).getVolumes()
-      ]).pipe(
-        switchMap(([ volumeIdToRegionMap, volumes ]) => {
-          const missingVolumeIds = Array.from(volumeIdToRegionMap.keys()).filter(id => volumes.map(v => v["@id"]).indexOf(id) < 0)
-
-          const volumesFromParc: {volume: SapiVolumeModel, volumeMetadata: ParcVolumeSpec}[] = volumes.map(
-            volume => {
-              const found = volumeIdToRegionMap.get(volume["@id"])
-              if (!found) return null
-
-              try {
-
-                const volumeMetadata: ParcVolumeSpec = {
-                  regions: found,
-                  parcellation,
-                  volumeSrc: volume.data.url
-                }
-                return {
-                  volume,
-                  volumeMetadata,
-                }
-              } catch (e) {
-                console.error(e)
-                return null
-              }
+        tmplAuxNgLayers: this.sapi.getVoxelAuxMesh(template).pipe(
+          map(auxMeshes => {
+            const returnObj: Record<string, NgPrecompMeshSpec> = {}
+            for (const img of auxMeshes) {
+              returnObj[QuickHash.GetHash(`${img.source}_auxMesh`)] = img
             }
-          ).filter(v => v?.volumeMetadata?.regions)
-
-          if (missingVolumeIds.length === 0) return of([...volumesFromParc])
-          return forkJoin(
-            missingVolumeIds.map(missingId => {
-              if (!volumeIdToRegionMap.has(missingId)) {
-                console.warn(`volumeIdToRegionMap does not have volume with id ${missingId}`)
-                return of(null as SapiVolumeModel)
-              }
-              const { region } = volumeIdToRegionMap.get(missingId)[0]
-              return this.sapi.getRegion(atlas["@id"], parcellation["@id"], region.name).getVolumeInstance(missingId).pipe(
-                catchError((err, obs) => of(null as SapiVolumeModel))
-              )
-            })
-          ).pipe(
-            map((missingVolumes: SapiVolumeModel[]) => {
-
-              const volumesFromRegion: { volume: SapiVolumeModel, volumeMetadata: ParcVolumeSpec }[] = missingVolumes.map(
-                volume => {
-                  if (!volume || !volumeIdToRegionMap.has(volume['@id'])) {
-                    return null
-                  }
-
-                  try {
-
-                    const found = volumeIdToRegionMap.get(volume['@id'])
-                    const volumeMetadata: ParcVolumeSpec = {
-                      regions: found,
-                      parcellation,
-                      volumeSrc: volume.data.url
-                    }
-                    return {
-                      volume,
-                      volumeMetadata
-                    }
-                  } catch (e) {
-                    console.error(`volume from region error`, e)
-                    return null
-                  }
-                }
-              ).filter(
-                v => !!v
-              )
-
-              return [
-                ...volumesFromParc,
-                ...volumesFromRegion
-              ]
-            })
-          )
-        })
-      )
-    
-    const spaceVols$ = !!template
-      ? this.sapi.getSpace(atlas["@id"], template["@id"]).getVolumes().pipe(
-        shareReplay(1),
-      )
-      : of([] as SapiVolumeModel[])
-    
-    return forkJoin({
-      tmplVolumes: spaceVols$.pipe(
-        map(
-          volumes => volumes.filter(vol => "neuroglancer/precomputed" in vol.data.detail)
-        ),
-      ),
-      tmplAuxMeshVolumes: spaceVols$.pipe(
-        map(
-          volumes => volumes.filter(vol => "neuroglancer/precompmesh" in vol.data.detail)
+            return returnObj
+          })
         ),
-      ),
-      parcVolumes: parcVolumes$.pipe(
-      )
-    })
-  }
-
-  onATPDebounceNgLayers$ = this.onATP$.pipe(
-    debounceTime(16),
-    switchMap(({ atlas, parcellation, template }) => {
-      return this.getNgLayers(atlas, parcellation, template).pipe(
-        map(volumes => getNgLayersFromVolumesATP(volumes, { atlas, parcellation, template }))
-      )
-    }),
-    shareReplay(1)
+        parcNgLayers: from(this.sapi.getTranslatedLabelledNgMap(parcellation, template)).pipe(
+          map(val => {
+            const returnVal: Record<string, NgSegLayerSpec> = {}
+            for (const [ url, { layer, region } ] of Object.entries(val)) {
+              const { name } = region[0]
+              const ngId = getParcNgId(atlas, template, parcellation, {
+                id: '',
+                name,
+                parentIds: [],
+                type: "SxplrRegion"
+              })
+              returnVal[ngId] = layer
+              continue
+            }
+            return returnVal
+          })
+        )
+      })
+    ),
+    shareReplay(1),
   )
 
   onATPDebounceAddBaseLayers$ = createEffect(() => this.onATPDebounceNgLayers$.pipe(
     switchMap(ngLayers => {
       const { parcNgLayers, tmplAuxNgLayers, tmplNgLayers } = ngLayers
       
-      const customBaseLayers: atlasAppearance.NgLayerCustomLayer[] = []
+      const customBaseLayers: atlasAppearance.const.NgLayerCustomLayer[] = []
       for (const layers of [parcNgLayers, tmplAuxNgLayers, tmplNgLayers]) {
         for (const key in layers) {
           const { source, transform, opacity, visible } = layers[key]
@@ -322,5 +219,8 @@ export class LayerCtrlEffects {
     })
   ))
 
-  constructor(private store: Store<any>,private sapi: SAPI){}
+  constructor(
+    private store: Store<any>,
+    private sapi: SAPI,
+  ){}
 }
\ No newline at end of file
diff --git a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.spec.ts b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.spec.ts
index 23ad93defa44bb856c658d5b5e850acf9961895d..45a5aee2d56784a90c6d75c72d4d1b0e3ab2cd83 100644
--- a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.spec.ts
+++ b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.spec.ts
@@ -14,8 +14,6 @@ import { RouterService } from "src/routerModule/router.service"
 describe('> layerctrl.service.ts', () => {
   describe('> NehubaLayerControlService', () => {
     let mockStore: MockStore
-    let getMultiNgIdsRegionsLabelIndexMapSpy: jasmine.Spy
-    let getMultiNgIdsRegionsLabelIndexMapReturnVal: Map<string, Map<number, layerCtrlUtil.IRegion>>
     beforeEach(() => {
       TestBed.configureTestingModule({
         providers: [
@@ -37,11 +35,6 @@ describe('> layerctrl.service.ts', () => {
       })
 
       mockStore = TestBed.inject(MockStore)
-      getMultiNgIdsRegionsLabelIndexMapReturnVal = new Map()
-      getMultiNgIdsRegionsLabelIndexMapSpy = spyOnProperty(
-        layerCtrlUtil,
-        'getMultiNgIdsRegionsLabelIndexMap'
-      ).and.returnValue(() => getMultiNgIdsRegionsLabelIndexMapReturnVal)
       mockStore.overrideSelector(atlasAppearance.selectors.customLayers, [])
       mockStore.overrideSelector(atlasAppearance.selectors.showDelineation, true)
       mockStore.overrideSelector(annotation.selectors.annotations, [])
diff --git a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts
index da9855ecb93b0344c2239776590f0625dd20117a..971f599b69ece635aab52fc9290c3ae4b954703d 100644
--- a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts
+++ b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts
@@ -3,19 +3,15 @@ import { select, Store } from "@ngrx/store";
 import { combineLatest, merge, Observable, Subject, Subscription } from "rxjs";
 import { debounceTime, distinctUntilChanged, filter, map, pairwise, shareReplay, startWith, switchMap, withLatestFrom } from "rxjs/operators";
 import { IColorMap, INgLayerCtrl, TNgLayerCtrl } from "./layerCtrl.util";
-import { SAPIRegion } from "src/atlasComponents/sapi/core";
-import { getParcNgId } from "../config.service"
-import { getRegionLabelIndex } from "../config.service/util";
 import { annotation, atlasAppearance, atlasSelection } from "src/state";
 import { serializeSegment } from "../util";
 import { LayerCtrlEffects } from "./layerCtrl.effects";
 import { arrayEqual } from "src/util/array";
-import { ColorMapCustomLayer } from "src/state/atlasAppearance";
-import { SapiRegionModel } from "src/atlasComponents/sapi";
+import { SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes";
 import { AnnotationLayer } from "src/atlasComponents/annotations";
 import { PMAP_LAYER_NAME } from "../constants"
-import { EnumColorMapName, mapKeyColorMap } from "src/util/colorMaps";
 import { getShader } from "src/util/constants";
+import { BaseService } from "../base.service/base.service";
 
 export const BACKUP_COLOR = {
   red: 255,
@@ -36,38 +32,28 @@ export class NehubaLayerControlService implements OnDestroy{
 
   private defaultNgLayers$ = this.layerEffects.onATPDebounceNgLayers$
 
-  private selectedATP$ = this.store$.pipe(
-    atlasSelection.fromRootStore.distinctATP(),
-    shareReplay(1),
-  )
+  private selectedATP$ = this.baseService.selectedATP$
 
-  public selectedATPR$ = this.selectedATP$.pipe(
-    switchMap(({ atlas, template, parcellation }) => 
-      this.store$.pipe(
-        select(atlasSelection.selectors.selectedParcAllRegions),
-        map(regions => ({
-          atlas, template, parcellation, regions
-        })),
-        shareReplay(1)
-      )
-    )
-  )
+  public selectedATPR$ = this.baseService.selectedATPR$
 
   private customLayers$ = this.store$.pipe(
     select(atlasAppearance.selectors.customLayers),
     distinctUntilChanged(arrayEqual((o, n) => o.id === n.id)),
     shareReplay(1)
   )
+  
+  public completeNgIdLabelRegionMap$ = this.baseService.completeNgIdLabelRegionMap$
+
   private activeColorMap$ = combineLatest([
     combineLatest([
-      this.selectedATPR$,
+      this.completeNgIdLabelRegionMap$,
       this.customLayers$,
     ]).pipe(
-      map(([{ atlas, parcellation, regions, template }, layers]) => {
+      map(([record, layers]) => {
         const returnVal: IColorMap = {}
 
-        const cmCustomLayers = layers.filter(l => l.clType === "customlayer/colormap") as ColorMapCustomLayer[]
-        const cmBaseLayers = layers.filter(l => l.clType === "baselayer/colormap") as ColorMapCustomLayer[]
+        const cmCustomLayers = layers.filter(l => l.clType === "customlayer/colormap") as atlasAppearance.const.ColorMapCustomLayer[]
+        const cmBaseLayers = layers.filter(l => l.clType === "baselayer/colormap") as atlasAppearance.const.ColorMapCustomLayer[]
         
         const useCm = (() => {
           /**
@@ -85,25 +71,19 @@ export class NehubaLayerControlService implements OnDestroy{
             set: () => {
               throw new Error(`cannot set`)
             },
-            get: (r: SapiRegionModel) => SAPIRegion.GetDisplayColor(r)
+            get: (r: SxplrRegion) => r.color
           }
         })()
         
-        for (const r of regions) {
-
-          if (!r.hasAnnotation) continue
-          if (!r.hasAnnotation.visualizedIn) continue
-
-          const ngId = getParcNgId(atlas, template, parcellation, r)
-          const labelIndex = getRegionLabelIndex(atlas, template, parcellation, r)
-          if (!labelIndex) continue
-
-          const [ red, green, blue ] = useCm.get(r)
-
-          if (!returnVal[ngId]) {
-            returnVal[ngId] = {}
+        for (const [ngId, labelRecord] of Object.entries(record)) {
+          for (const [label, region] of Object.entries(labelRecord)) {
+            if (!region.color) continue
+            const [ red, green, blue ] = useCm.get(region) || [200, 200, 200]
+            if (!returnVal[ngId]) {
+              returnVal[ngId] = {}
+            }
+            returnVal[ngId][label] = { red, green, blue }
           }
-          returnVal[ngId][labelIndex] = { red, green, blue }
         }
         return returnVal
       })
@@ -140,6 +120,7 @@ export class NehubaLayerControlService implements OnDestroy{
   constructor(
     private store$: Store<any>,
     private layerEffects: LayerCtrlEffects,
+    private baseService: BaseService,
   ){
 
     this.sub.push(
@@ -226,13 +207,6 @@ export class NehubaLayerControlService implements OnDestroy{
   /**
    * define when shown segments should be updated
    */
-  public _segmentVis$: Observable<string[]> = combineLatest([
-    this.selectedATP$,
-    this.selectedRegion$
-  ]).pipe(
-    map(() => [''])
-  )
-
   public segmentVis$: Observable<string[]> = combineLatest([
     /**
      * selectedRegions
@@ -248,9 +222,9 @@ export class NehubaLayerControlService implements OnDestroy{
       map(layers => layers.filter(l => l.clType === "customlayer/nglayer").length > 0),
     ),
   ]).pipe(
-    withLatestFrom(this.selectedATPR$),
-    map(([[ selectedRegions, customMapExists, nonmixableLayerExists ], { atlas, parcellation, template, regions }]) => {
-      /**
+    switchMap(( [ selectedRegions, customMapExists, nonmixableLayerExists ] ) => this.completeNgIdLabelRegionMap$.pipe(
+      map(completeNgIdLabelRegion => {
+        /**
        * if non mixable layer exist (e.g. pmap)
        * and no custom color map exist
        * hide all segmentations
@@ -263,33 +237,36 @@ export class NehubaLayerControlService implements OnDestroy{
        * if custom map exists, roi is all regions
        * otherwise, roi is only selectedRegions
        */
-      const roi = customMapExists ? regions : selectedRegions
-
-      const roiIndexSet = new Set<string>(
-        roi.map(r => {
-          const ngId = getParcNgId(atlas, template, parcellation, r)
-          const label = getRegionLabelIndex(atlas, template, parcellation, r)
-          return ngId && label && serializeSegment(ngId, label)
-        }).filter(v => !!v)
-      )
+      const selectedRegionNameSet = new Set(selectedRegions.map(r => r.name))
+      const roiIndexSet = new Set<string>()
+      for (const ngId in completeNgIdLabelRegion) {
+        for (const label in completeNgIdLabelRegion[ngId]) {
+          const val = completeNgIdLabelRegion[ngId][label]
+          if (!customMapExists && !selectedRegionNameSet.has(val.name)) {
+            continue
+          }
+          roiIndexSet.add(serializeSegment(ngId, label))
+        } 
+      }
       if (roiIndexSet.size > 0) {
         return [...roiIndexSet]
       } else {
         return []
       }
-    })
+      }),
+    )),
   )
 
   /**
    * ngLayers controller
    */
 
-  private ngLayersRegister: atlasAppearance.NgLayerCustomLayer[] = []
+  private ngLayersRegister: atlasAppearance.const.NgLayerCustomLayer[] = []
 
-  private getUpdatedCustomLayer(isSameLayer: (o: atlasAppearance.NgLayerCustomLayer, n: atlasAppearance.NgLayerCustomLayer) => boolean){
+  private getUpdatedCustomLayer(isSameLayer: (o: atlasAppearance.const.NgLayerCustomLayer, n: atlasAppearance.const.NgLayerCustomLayer) => boolean){
     return this.store$.pipe(
       select(atlasAppearance.selectors.customLayers),
-      map(customLayers => customLayers.filter(l => l.clType === "customlayer/nglayer") as atlasAppearance.NgLayerCustomLayer[]),
+      map(customLayers => customLayers.filter(l => l.clType === "customlayer/nglayer") as atlasAppearance.const.NgLayerCustomLayer[]),
       pairwise(),
       map(([ oldCustomLayers, newCustomLayers ]) => {
         return newCustomLayers.filter(n => oldCustomLayers.some(o => o.id === n.id && !isSameLayer(o, n)))
@@ -302,7 +279,7 @@ export class NehubaLayerControlService implements OnDestroy{
   private updateCustomLayerColorMap$ = this.getUpdatedCustomLayer((o, n) => o.shader === n.shader)
 
   private ngLayers$ = this.customLayers$.pipe(
-    map(customLayers => customLayers.filter(l => l.clType === "customlayer/nglayer") as atlasAppearance.NgLayerCustomLayer[]),
+    map(customLayers => customLayers.filter(l => l.clType === "customlayer/nglayer") as atlasAppearance.const.NgLayerCustomLayer[]),
     distinctUntilChanged(
       arrayEqual((o, n) => o.id === n.id)
     ),
@@ -388,7 +365,7 @@ export class NehubaLayerControlService implements OnDestroy{
     ),
     this.ngLayers$.pipe(
       map(({ customLayers }) => customLayers),
-      startWith([] as atlasAppearance.NgLayerCustomLayer[]),
+      startWith([] as atlasAppearance.const.NgLayerCustomLayer[]),
       map(customLayers => {
         /**
          * pmap control has its own visibility controller
@@ -401,14 +378,11 @@ export class NehubaLayerControlService implements OnDestroy{
     this.customLayers$.pipe(
       map(cl => {
         const otherColormapExist = cl.filter(l => l.clType === "customlayer/colormap").length > 0
-        const pmapExist = cl.filter(l => l.clType === "customlayer/nglayer").length > 0
-        return pmapExist && !otherColormapExist
+        const otherLayerNames = cl.filter(l => l.clType === "customlayer/nglayer").map(l => l.id)
+        return otherColormapExist
+          ? []
+          : otherLayerNames
       }),
-      distinctUntilChanged(),
-      map(flag => flag
-        ? [ PMAP_LAYER_NAME ]
-        : []
-      )
     )
   ]).pipe(
     map(([ expectedLayerNames, customLayerNames, pmapName ]) => [...expectedLayerNames, ...customLayerNames, ...pmapName, ...AnnotationLayer.Map.keys()])
diff --git a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.util.ts b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.util.ts
index 1fa9f52ff34373fdb76dd62ddeb7acffc71ff091..6c7c7cd24d389a426f6b17ef134a495dedf11061 100644
--- a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.util.ts
+++ b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.util.ts
@@ -43,10 +43,10 @@ export interface INgLayerCtrl {
     names: string[]
   }
   add: {
-    [key: string]: atlasAppearance.NgLayerCustomLayer
+    [key: string]: atlasAppearance.const.NgLayerCustomLayer
   }
   update: {
-    [key: string]: Partial<atlasAppearance.NgLayerCustomLayer>
+    [key: string]: Partial<atlasAppearance.const.NgLayerCustomLayer>
   }
   setLayerTransparency: {
     [key: string]: number
diff --git a/src/viewerModule/nehuba/mesh.service/mesh.service.spec.ts b/src/viewerModule/nehuba/mesh.service/mesh.service.spec.ts
index ef3ac53320fbfa6ee86ec80ac140c105a2534af8..0b7d702369e87a97b70b8bfa1057a83e274d08f1 100644
--- a/src/viewerModule/nehuba/mesh.service/mesh.service.spec.ts
+++ b/src/viewerModule/nehuba/mesh.service/mesh.service.spec.ts
@@ -3,7 +3,7 @@ import { MockStore, provideMockStore } from "@ngrx/store/testing"
 import { hot } from "jasmine-marbles"
 import { NehubaMeshService } from "./mesh.service"
 import { atlasSelection } from "src/state"
-import { SapiRegionModel } from "src/atlasComponents/sapi"
+import { SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes"
 import * as configSvc from "../config.service"
 import { LayerCtrlEffects } from "../layerCtrl.service/layerCtrl.effects"
 import { NEVER, of, pipe } from "rxjs"
@@ -11,7 +11,7 @@ import { mapTo, take } from "rxjs/operators"
 import { selectorAuxMeshes } from "../store"
 
 
-const fits1 = {} as SapiRegionModel
+const fits1 = {} as SxplrRegion
 const auxMesh = {
   "@id": 'bla',
   labelIndicies: [1,2,3],
@@ -24,7 +24,7 @@ const auxMesh = {
 
 describe('> mesh.service.ts', () => {
   let getParcNgIdSpy: jasmine.Spy = jasmine.createSpy('getParcNgId')
-  let getRegionLabelIndexSpy: jasmine.Spy = jasmine.createSpy('getRegionLabelIndexSpy')
+  
   let getATPSpy: jasmine.Spy = jasmine.createSpy('distinctATP')
 
   const mockAtlas = {
@@ -39,7 +39,6 @@ describe('> mesh.service.ts', () => {
 
   beforeEach(() => {
     spyOnProperty(configSvc, 'getParcNgId').and.returnValue(getParcNgIdSpy)
-    spyOnProperty(configSvc, 'getRegionLabelIndex').and.returnValue(getRegionLabelIndexSpy)
     getATPSpy = spyOn(atlasSelection.fromRootStore, 'distinctATP')
     getATPSpy.and.returnValue(
       pipe(
@@ -54,7 +53,7 @@ describe('> mesh.service.ts', () => {
 
   afterEach(() => {
     getParcNgIdSpy.calls.reset()
-    getRegionLabelIndexSpy.calls.reset()
+    
     getATPSpy.calls.reset()
   })
   describe('> NehubaMeshService', () => {
@@ -93,7 +92,6 @@ describe('> mesh.service.ts', () => {
           mockStore.overrideSelector(selectorAuxMeshes, [auxMesh])
     
           getParcNgIdSpy.and.returnValue(ngId)
-          getRegionLabelIndexSpy.and.returnValue(labelIndex)
 
         })
 
@@ -137,7 +135,6 @@ describe('> mesh.service.ts', () => {
           mockStore.overrideSelector(selectorAuxMeshes, [])
     
           getParcNgIdSpy.and.returnValues(ngId1, ngId2, ngId2)
-          getRegionLabelIndexSpy.and.returnValues(labelIndex1, labelIndex2, labelIndex2)
         })
 
         it('> should call getParcNgIdSpy and getRegionLabelIndexSpy thrice', () => {
@@ -147,7 +144,6 @@ describe('> mesh.service.ts', () => {
           ).subscribe(() => {
 
             expect(getParcNgIdSpy).toHaveBeenCalledTimes(3)
-            expect(getRegionLabelIndexSpy).toHaveBeenCalledTimes(3)
           })
         })
 
diff --git a/src/viewerModule/nehuba/mesh.service/mesh.service.ts b/src/viewerModule/nehuba/mesh.service/mesh.service.ts
index d372ce460746d01c5cf560518e1532f38616b882..29a40e94c6882b6022033b2d55103627d3d9b8cf 100644
--- a/src/viewerModule/nehuba/mesh.service/mesh.service.ts
+++ b/src/viewerModule/nehuba/mesh.service/mesh.service.ts
@@ -1,13 +1,12 @@
 import { Injectable, OnDestroy } from "@angular/core";
 import { select, Store } from "@ngrx/store";
-import { combineLatest, merge, Observable, of } from "rxjs";
+import { combineLatest, Observable, of } from "rxjs";
 import { map, switchMap } from "rxjs/operators";
 import { IMeshesToLoad } from '../constants'
 import { selectorAuxMeshes } from "../store";
 import { LayerCtrlEffects } from "../layerCtrl.service/layerCtrl.effects";
 import { atlasSelection } from "src/state";
-import { Tree } from "src/components/flatHierarchy/treeView/treeControl"
-import { getParcNgId, getRegionLabelIndex } from "../config.service";
+import { BaseService } from "../base.service/base.service";
 
 /**
  * control mesh loading etc
@@ -21,6 +20,7 @@ export class NehubaMeshService implements OnDestroy {
   constructor(
     private store$: Store<any>,
     private effect: LayerCtrlEffects,
+    private baseService: BaseService,
   ){
   }
 
@@ -30,102 +30,116 @@ export class NehubaMeshService implements OnDestroy {
 
 
   public auxMeshes$ = this.effect.onATPDebounceNgLayers$.pipe(
-    map(({ tmplAuxNgLayers }) => tmplAuxNgLayers)
+    map(({ tmplAuxNgLayers }) => tmplAuxNgLayers),
   )
 
-  public loadMeshes$: Observable<IMeshesToLoad> = merge(
-    combineLatest([
-      this.store$.pipe(
-        atlasSelection.fromRootStore.distinctATP(),
-      ),
-      this.store$.pipe(
-        select(atlasSelection.selectors.selectedParcAllRegions),
-      ),
-      this.store$.pipe(
-        select(atlasSelection.selectors.selectedRegions),
-      )
-    ]).pipe(
-      switchMap(([{ atlas, template, parcellation }, regions, selectedRegions]) => {
-        const ngIdRecord: Record<string, number[]> = {}
-        
-        const tree = new Tree(
-          regions,
-          (c, p) => (c.hasParent || []).some(_p => _p["@id"] === p["@id"])
-        )
+  #allSegmentMeshes$ = this.baseService.completeNgIdLabelRegionMap$.pipe(
+    map(record => {
+      const ngIdRecord: Record<string, number[]> = {}
 
-        for (const r of regions) {
-          const regionLabelIndex = getRegionLabelIndex( atlas, template, parcellation, r )
-          if (!regionLabelIndex) {
-            continue
-          }
-          if (
-            tree.someAncestor(r, anc => !!getRegionLabelIndex(atlas, template, parcellation, anc))
-          ) {
-            continue
-          }
-          const ngId = getParcNgId(atlas, template, parcellation, r)
+      for (const [ngId, labelToRegion] of Object.entries(record)) {
+        for (const [label, _region] of Object.entries(labelToRegion)) {
           if (!ngIdRecord[ngId]) {
             ngIdRecord[ngId] = []
           }
-          ngIdRecord[ngId].push(regionLabelIndex)
+          ngIdRecord[ngId].push(Number(label))
         }
+      }
 
-        if (selectedRegions.length > 0) {
-          /**
-           * If regions are selected, reset the meshes
-           */
-          for (const key in ngIdRecord) {
-            ngIdRecord[key] = []
-          }
+      const arr: IMeshesToLoad[] = []
 
-          /**
-           * only show selected region
-           */
-          for (const r of selectedRegions) {
-            const ngId = getParcNgId(atlas, template, parcellation, r)
-            const regionLabelIndex = getRegionLabelIndex( atlas, template, parcellation, r )
-            if (!ngIdRecord[ngId]) {
-              ngIdRecord[ngId] = []
-            }
-            ngIdRecord[ngId].push(regionLabelIndex)
-          }
-        }
-        const arr: IMeshesToLoad[] = []
-
-        for (const ngId in ngIdRecord) {
-          const labelIndicies = ngIdRecord[ngId]
-          arr.push({
-            labelIndicies,
-            layer: { name: ngId }
-          })
-        }
-  
-        return of(...arr)
-      })
-    ),
+      for (const ngId in ngIdRecord) {
+        const labelIndicies = ngIdRecord[ngId]
+        arr.push({
+          labelIndicies,
+          layer: { name: ngId }
+        })
+      }
+
+      return arr
+    })
+  )
+
+  #selectedSegmentMeshes$ = combineLatest([
+    this.baseService.completeNgIdLabelRegionMap$,
     this.store$.pipe(
-      select(selectorAuxMeshes),
-      switchMap(auxMeshes => {
-        const obj: Record<string, number[]> = {}
-        const arr: IMeshesToLoad[] = []
-        for (const mesh of auxMeshes) {
-          if (!obj[mesh.ngId]) {
-            obj[mesh.ngId] = []
+      select(atlasSelection.selectors.selectedRegions),
+    ),
+  ]).pipe(
+    switchMap(([record, selectedRegions]) => {
+      const ngIdRecord: Record<string, number[]> = {}
+      
+      const selectedRegionNameSet = new Set(selectedRegions.map(r => r.name))
+
+      for (const [ngId, labelToRegion] of Object.entries(record)) {
+        for (const [label, region] of Object.entries(labelToRegion)) {
+          if (!ngIdRecord[ngId]) {
+            ngIdRecord[ngId] = []
           }
-          if (mesh.visible) {
-            obj[mesh.ngId].push(...mesh.labelIndicies)
+          if (!selectedRegionNameSet.has(region.name)) {
+            continue
           }
+          ngIdRecord[ngId].push(Number(label))
         }
-        for (const key in obj) {
-          arr.push({
-            layer: {
-              name: key
-            },
-            labelIndicies: obj[key]
-          })
+      }
+
+      const arr: IMeshesToLoad[] = []
+
+      for (const ngId in ngIdRecord) {
+        const labelIndicies = ngIdRecord[ngId]
+        arr.push({
+          labelIndicies,
+          layer: { name: ngId }
+        })
+      }
+
+      return of(arr)
+    })
+  )
+
+  #auxMesh$ = this.store$.pipe(
+    select(selectorAuxMeshes),
+    switchMap(auxMeshes => {
+      const obj: Record<string, number[]> = {}
+      const arr: IMeshesToLoad[] = []
+      for (const mesh of auxMeshes) {
+        if (!obj[mesh.ngId]) {
+          obj[mesh.ngId] = []
+        }
+        if (mesh.visible) {
+          obj[mesh.ngId].push(...mesh.labelIndicies)
         }
-        return of(...arr)
-      })
-    )
+      }
+      for (const key in obj) {
+        arr.push({
+          layer: {
+            name: key
+          },
+          labelIndicies: obj[key]
+        })
+      }
+      return of(arr)
+    })
+  )
+
+  public loadMeshes$: Observable<IMeshesToLoad> = combineLatest([
+    this.#allSegmentMeshes$,
+    this.#selectedSegmentMeshes$,
+    this.#auxMesh$,
+  ]).pipe(
+    switchMap(([ allSegMesh, selectedSegMesh, auxmesh ]) => {
+      const hasSegSelected = selectedSegMesh.some(v => v.labelIndicies.length !== 0)
+      const hasAuxMesh = auxmesh.length > 0
+      const meshesToLoad: IMeshesToLoad[] = []
+      if (!hasSegSelected) {
+        meshesToLoad.push(
+          ...(hasAuxMesh ? selectedSegMesh : allSegMesh),
+          ...auxmesh,
+        )
+      } else {
+        meshesToLoad.push(...selectedSegMesh, ...auxmesh)
+      }
+      return of(...meshesToLoad)
+    })
   )
 }
diff --git a/src/viewerModule/nehuba/module.ts b/src/viewerModule/nehuba/module.ts
index e3cc3aeb2bdead46e359b35d21ad773849411301..8243707dae27438a851e0ccd38cf39fa428519ff 100644
--- a/src/viewerModule/nehuba/module.ts
+++ b/src/viewerModule/nehuba/module.ts
@@ -21,7 +21,6 @@ import { StateModule } from "src/state";
 import { AuthModule } from "src/auth";
 import {QuickTourModule} from "src/ui/quickTour/module";
 import { WindowResizeModule } from "src/util/windowResize";
-import { NgLayerCtrlCmp } from "./ngLayerCtl/ngLayerCtrl.component";
 import { EffectsModule } from "@ngrx/effects";
 import { MeshEffects } from "./mesh.effects/mesh.effects";
 import { NehubaLayoutOverlayModule } from "./layoutOverlay";
@@ -66,7 +65,6 @@ import { NehubaUserLayerModule } from "./userLayers";
     NehubaViewerTouchDirective,
     NehubaGlueCmp,
     StatusCardComponent,
-    NgLayerCtrlCmp,
     NehubaViewerContainer,
   ],
   exports: [
@@ -74,7 +72,6 @@ import { NehubaUserLayerModule } from "./userLayers";
     NehubaViewerTouchDirective,
     NehubaGlueCmp,
     StatusCardComponent,
-    NgLayerCtrlCmp,
   ],
   providers: [
     
@@ -94,9 +91,6 @@ import { NehubaUserLayerModule } from "./userLayers";
       deps: [ NgAnnotationService ]
     },
     NgAnnotationService
-  ],
-  schemas: [
-    CUSTOM_ELEMENTS_SCHEMA
   ]
 })
 
diff --git a/src/viewerModule/nehuba/navigation.service/index.ts b/src/viewerModule/nehuba/navigation.service/index.ts
index ac47740ee69a641d7ef23ed05e27eeb80a945824..8b137891791fe96927ad78e64b0aad7bded08bdc 100644
--- a/src/viewerModule/nehuba/navigation.service/index.ts
+++ b/src/viewerModule/nehuba/navigation.service/index.ts
@@ -1,7 +1 @@
-export {
-  NehubaNavigationService
-} from './navigation.service'
 
-export {
-  INavObj
-} from './navigation.util'
diff --git a/src/viewerModule/nehuba/navigation.service/navigation.base.service.ts b/src/viewerModule/nehuba/navigation.service/navigation.base.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..dd82454761ad41d4ccb18f8a37ea3abbabe3c6f5
--- /dev/null
+++ b/src/viewerModule/nehuba/navigation.service/navigation.base.service.ts
@@ -0,0 +1,46 @@
+import { Inject, Injectable, Optional } from "@angular/core";
+import { concat, EMPTY, NEVER, Observable, of } from "rxjs";
+import { delay, exhaustMap, shareReplay, switchMap, take, tap } from "rxjs/operators";
+import { TNehubaViewerUnit } from "../constants";
+import { NEHUBA_INSTANCE_INJTKN } from "../util";
+
+@Injectable({
+  providedIn: 'root'
+})
+export class NavigationBaseSvc{
+  
+  public nehubaViewerUnit$ = this.nehubaInst$
+    ? this.nehubaInst$.pipe(
+      switchMap(val => val ? of(val): EMPTY)
+    )
+    : NEVER
+
+  public viewerNavLock$: Observable<boolean> = this.nehubaViewerUnit$.pipe(
+    switchMap(nvUnit => 
+      nvUnit.viewerPositionChange.pipe(
+        exhaustMap(() => concat(
+          of(true),
+          concat(
+            /**
+             * in the event that viewerPositionChange only emits once (such is the case on init)
+             */
+            of(false),
+            nvUnit.viewerPositionChange,
+          ).pipe(
+            switchMap(() => 
+              of(false).pipe(
+                delay(160)
+              )
+            ),
+            take(1)
+          ),
+        ))
+      )
+    ),
+    shareReplay(1),
+  )
+  constructor(
+    @Optional() @Inject(NEHUBA_INSTANCE_INJTKN) private nehubaInst$: Observable<TNehubaViewerUnit>,
+  ){
+  }
+}
diff --git a/src/viewerModule/nehuba/navigation.service/navigation.effects.ts b/src/viewerModule/nehuba/navigation.service/navigation.effects.ts
index fd615fb7e25ba2141e534a71b836b2d923ff9753..a303c4526490b224cc80c5215b06a1fdaa27ea08 100644
--- a/src/viewerModule/nehuba/navigation.service/navigation.effects.ts
+++ b/src/viewerModule/nehuba/navigation.service/navigation.effects.ts
@@ -1,21 +1,18 @@
-import { Inject, Injectable, OnDestroy } from "@angular/core";
+import { Injectable, OnDestroy } from "@angular/core";
 import { Actions, createEffect, ofType } from "@ngrx/effects";
 import { select, Store } from "@ngrx/store";
-import { combineLatest, Observable, Subscription } from "rxjs";
-import { filter, map, mapTo, tap, withLatestFrom } from "rxjs/operators";
+import { combineLatest, NEVER, of, Subscription } from "rxjs";
+import { debounce, distinctUntilChanged, filter, map, mapTo, skipWhile, switchMap, tap, withLatestFrom } from "rxjs/operators";
 import { atlasSelection, MainState, userInterface, userPreference } from "src/state"
 import { CYCLE_PANEL_MESSAGE } from "src/util/constants";
 import { timedValues } from "src/util/generator";
-import { NehubaViewerUnit } from "../nehubaViewer/nehubaViewer.component";
-import { NEHUBA_INSTANCE_INJTKN } from "../util";
-import { navAdd, navMul } from "./navigation.util";
+import { NavigationBaseSvc } from "./navigation.base.service";
+import { navAdd, navMul, navObjEqual } from "./navigation.util";
 
 @Injectable()
 export class NehubaNavigationEffects implements OnDestroy{
 
   private subscription: Subscription[] = []
-  private nehubaInst: NehubaViewerUnit
-  private rafRef: number
 
   /**
    * This is an implementation which reconciles local state with the global navigation state.
@@ -27,64 +24,56 @@ export class NehubaNavigationEffects implements OnDestroy{
    *   and update global state accordingly.
    * - This effect updates the internal navigation state. It should leave reporting any diff to the local viewer's native implementation.
    */
-  onNavigateTo = createEffect(() => this.action.pipe(
-    ofType(atlasSelection.actions.navigateTo),
-    filter(() => !!this.nehubaInst),
-    withLatestFrom(
-      this.store.pipe(
-        select(userPreference.selectors.useAnimation)
+  onNavigateTo = createEffect(() => this.baseSvc.nehubaViewerUnit$.pipe(
+    switchMap(nehubaInst => this.action.pipe(
+      ofType(atlasSelection.actions.navigateTo),
+      withLatestFrom(
+        this.store.pipe(
+          select(userPreference.selectors.useAnimation)
+        ),
+        this.store.pipe(
+          select(atlasSelection.selectors.navigation)
+        )
       ),
-      this.store.pipe(
-        select(atlasSelection.selectors.navigation)
-      )
-    ),
-    tap(([{ navigation, animation, physical }, globalAnimationFlag, currentNavigation]) => {
-      if (!animation || !globalAnimationFlag) {
-        this.nehubaInst.setNavigationState({
-          ...navigation,
-          positionReal: physical
-        })
-        return
-      }
-
-      const gen = timedValues()
-      const src = currentNavigation
-
-      const dest = {
-        ...src,
-        ...navigation
-      }
-
-      const delta = navAdd(dest, navMul(src, -1))
-
-      const animate = () => {
-        
-        /**
-         * if nehubaInst becomes nullish whilst animation is running
-         */  
-        if (!this.nehubaInst) {
-          this.rafRef = null
+      tap(([{ navigation, animation, physical }, globalAnimationFlag, currentNavigation]) => {
+        if (!animation || !globalAnimationFlag) {
+          nehubaInst.setNavigationState({
+            ...navigation,
+            positionReal: physical
+          })
           return
         }
-
-        const next = gen.next()
-        const d =  next.value
-
-        const n = navAdd(src, navMul(delta, d))
-        this.nehubaInst.setNavigationState({
-          ...n,
-          positionReal: physical
-        })
-
-        if ( !next.done ) {
-          this.rafRef = requestAnimationFrame(() => animate())
-        } else {
-          this.rafRef = null
+  
+        const gen = timedValues()
+        const src = currentNavigation
+  
+        const dest = {
+          ...src,
+          ...navigation
         }
-      }
-      this.rafRef = requestAnimationFrame(() => animate())
-
-    })
+  
+        const delta = navAdd(dest, navMul(src, -1))
+  
+        const animate = () => {
+          
+  
+          const next = gen.next()
+          const d =  next.value
+  
+          const n = navAdd(src, navMul(delta, d))
+          nehubaInst.setNavigationState({
+            ...n,
+            positionReal: physical
+          })
+  
+          if ( !next.done ) {
+            requestAnimationFrame(() => animate())
+          }
+        }
+        requestAnimationFrame(() => animate())
+  
+      })
+    )),
   ), { dispatch: false })
 
   onMaximise = createEffect(() => combineLatest([
@@ -104,14 +93,66 @@ export class NehubaNavigationEffects implements OnDestroy{
     )
   ))
 
+  onStoreNavigationUpdate = createEffect(() => this.store.pipe(
+    select(atlasSelection.selectors.navigation),
+    distinctUntilChanged((o, n) => navObjEqual(o, n)),
+    withLatestFrom(
+      this.baseSvc.viewerNavLock$,
+      /**
+       * n.b. if NEHUBA_INSTANCE_INJTKN is not provided, this obs will never emit
+       * which, semantically is the correct behaviour
+       */
+      this.baseSvc.nehubaViewerUnit$,
+      this.baseSvc.nehubaViewerUnit$.pipe(
+        switchMap(nvUnit => nvUnit.viewerPositionChange)
+      )
+    ),
+    skipWhile(([nav, lock, _nvUnit, viewerNav]) => lock || navObjEqual(nav, viewerNav)),
+    tap(([nav, _lock, nvUnit, _viewerNav]) => {
+      nvUnit.setNavigationState(nav)
+    })
+  ), { dispatch: false })
+
+  onViewerNavigationUpdate = createEffect(() => this.baseSvc.nehubaViewerUnit$.pipe(
+    switchMap(nvUnit => 
+      nvUnit.viewerPositionChange.pipe(
+        debounce(() => this.baseSvc.viewerNavLock$.pipe(
+          filter(lock => !lock),
+        )),
+        withLatestFrom(
+          this.store.pipe(
+            select(atlasSelection.selectors.navigation)
+          )
+        ),
+        switchMap(([ val, storedNav ]) => {
+          const { zoom, perspectiveZoom, position } = val
+          const roundedZoom = Math.round(zoom)
+          const roundedPz = Math.round(perspectiveZoom)
+          const roundedPosition = position.map(v => Math.round(v)) as [number, number, number]
+          const roundedNav = {
+            ...val,
+            zoom: roundedZoom,
+            perspectiveZoom: roundedPz,
+            position: roundedPosition,
+          }
+          if (navObjEqual(roundedNav, storedNav)) {
+            return NEVER
+          }
+          return of(
+            atlasSelection.actions.setNavigation({
+              navigation:roundedNav
+            })
+          )
+        })
+      )
+    )
+  ))
+
   constructor(
     private action: Actions,
     private store: Store<MainState>,
-    @Inject(NEHUBA_INSTANCE_INJTKN) nehubaInst$: Observable<NehubaViewerUnit>,
+    private baseSvc: NavigationBaseSvc,
   ){
-    this.subscription.push(
-      nehubaInst$.subscribe(val => this.nehubaInst = val),
-    )
   }
 
   ngOnDestroy(): void {
diff --git a/src/viewerModule/nehuba/navigation.service/navigation.service.spec.ts b/src/viewerModule/nehuba/navigation.service/navigation.service.spec.ts
deleted file mode 100644
index 9180048b03a28473737f81fa49eb4d1800fcb87b..0000000000000000000000000000000000000000
--- a/src/viewerModule/nehuba/navigation.service/navigation.service.spec.ts
+++ /dev/null
@@ -1,170 +0,0 @@
-import { discardPeriodicTasks, fakeAsync, TestBed, tick } from '@angular/core/testing'
-import { MockStore, provideMockStore } from '@ngrx/store/testing'
-import { BehaviorSubject, of, Subject } from 'rxjs'
-import * as NavUtil from './navigation.util'
-import { NehubaViewerUnit } from '../nehubaViewer/nehubaViewer.component'
-import { NEHUBA_INSTANCE_INJTKN } from '../util'
-import { NehubaNavigationService } from './navigation.service'
-import { userPreference, atlasSelection } from "src/state"
-
-const nav1 = {
-  position: [1,2,3],
-  orientation: [0, 0, 0, 1],
-  perspectiveOrientation: [1, 0, 0, 0],
-  perspectiveZoom: 100,
-  zoom: -12
-}
-
-const nav1x2 = {
-  position: [2,4,6],
-  orientation: [0, 0, 0, 2],
-  perspectiveOrientation: [2, 0, 0, 0],
-  perspectiveZoom: 200,
-  zoom: -24
-}
-
-const nav2 = {
-  position: [5, 1, -3],
-  orientation: [0, 0, 1, 0],
-  perspectiveOrientation: [-3, 0, 0, 0],
-  perspectiveZoom: 150,
-  zoom: -60
-}
-
-const nav1p2 = {
-  position: [6, 3, 0],
-  orientation: [0, 0, 1, 1],
-  perspectiveOrientation: [-2, 0, 0, 0],
-  perspectiveZoom: 250,
-  zoom: -72
-}
-describe('> navigation.service.ts', () => {
-
-  describe('> NehubaNavigationService', () => {
-    let nehubaInst$: BehaviorSubject<NehubaViewerUnit>
-    let nehubaInst: Partial<NehubaViewerUnit>
-    let service: NehubaNavigationService
-    beforeEach(() => {
-      nehubaInst$ = new BehaviorSubject(null)
-      TestBed.configureTestingModule({
-        imports: [
-
-        ],
-        providers: [
-          provideMockStore(),
-          {
-            provide: NEHUBA_INSTANCE_INJTKN,
-            useValue: nehubaInst$
-          },
-          NehubaNavigationService
-        ]
-      })
-
-      const mockStore = TestBed.inject(MockStore)
-      mockStore.overrideSelector(
-        atlasSelection.selectors.navigation,
-        nav1
-      )
-      mockStore.overrideSelector(
-        userPreference.selectors.useAnimation,
-        true
-      )
-    })
-  
-    it('> on new emit null on nehubaInst, clearViewSub is called, but setupviewersub is not called', () => {
-
-      service = TestBed.inject(NehubaNavigationService)
-      const clearviewSpy = spyOn(service, 'clearViewerSub').and.callThrough()
-      const setupViewSpy = spyOn(service, 'setupViewerSub').and.callThrough()
-      nehubaInst$.next(null)
-      expect(clearviewSpy).toHaveBeenCalled()
-      expect(setupViewSpy).not.toHaveBeenCalled()
-    })
-
-    it('> on new emit with viewer, clear view sub and setupviewers are both called', () => {
-
-      service = TestBed.inject(NehubaNavigationService)
-      const clearviewSpy = spyOn(service, 'clearViewerSub').and.callThrough()
-      const setupViewSpy = spyOn(service, 'setupViewerSub').and.callThrough()
-      nehubaInst = {
-        viewerPositionChange: of(nav1) as any,
-        setNavigationState: jasmine.createSpy()
-      }
-      nehubaInst$.next(nehubaInst as NehubaViewerUnit)
-      expect(clearviewSpy).toHaveBeenCalled()
-      expect(setupViewSpy).toHaveBeenCalled()
-    })
-
-    describe('> #setupViewerSub', () => {
-      let dispatchSpy: jasmine.Spy
-      beforeEach(() => {
-        nehubaInst = {
-          viewerPositionChange: new Subject() as any,
-          setNavigationState: jasmine.createSpy(),
-        }
-
-        service = TestBed.inject(NehubaNavigationService)
-        service['nehubaViewerInstance'] = nehubaInst as NehubaViewerUnit
-
-        const mockStore = TestBed.inject(MockStore)
-        mockStore.overrideSelector(atlasSelection.selectors.navigation, nav1)
-        dispatchSpy = spyOn(mockStore, 'dispatch').and.callFake(() => {})
-      })
-
-      describe('> on viewerPosition change multiple times', () => {
-        beforeEach(() => {
-          service.setupViewerSub()
-        })
-        it('> viewerNav set to last value', fakeAsync(() => {
-
-          nehubaInst.viewerPositionChange.next(nav2)
-          nehubaInst.viewerPositionChange.next(nav1x2)
-          expect(
-            service.viewerNav
-          ).toEqual(nav1x2 as any)
-          discardPeriodicTasks()
-        }))
-
-        it('> dispatch does not get called immediately', fakeAsync(() => {
-
-          nehubaInst.viewerPositionChange.next(nav2)
-          nehubaInst.viewerPositionChange.next(nav1x2)
-          expect(dispatchSpy).not.toHaveBeenCalled()
-          discardPeriodicTasks()
-        }))
-
-        it('> dispatch called after 160 debounce', fakeAsync(() => {
-          
-          // next/'ing cannot be done in beforeEach
-          // or this test will fail
-          nehubaInst.viewerPositionChange.next(nav2)
-          nehubaInst.viewerPositionChange.next(nav1x2)
-          tick(160)
-          expect(dispatchSpy).toHaveBeenCalled()
-        }))
-      })
-    })
-  
-    describe('> on storeNavigation update', () => {
-      let navEqlSpy: jasmine.Spy
-      beforeEach(() => {
-        nehubaInst = {
-          setNavigationState: jasmine.createSpy(),
-          viewerPositionChange: new Subject() as any,
-        }
-        nehubaInst$.next(nehubaInst as NehubaViewerUnit)
-        navEqlSpy = spyOnProperty(NavUtil, 'navObjEqual')
-      })
-      it('> if navEq returnt true, do not setNav', () => {
-        navEqlSpy.and.returnValue(() => true)
-        service = TestBed.inject(NehubaNavigationService)
-        expect(nehubaInst.setNavigationState).not.toHaveBeenCalled()
-      })
-      it('> if navEq return false, call setNav', () => {
-        navEqlSpy.and.returnValue(() => false)
-        service = TestBed.inject(NehubaNavigationService)
-        expect(nehubaInst.setNavigationState).toHaveBeenCalled()
-      })
-    })
-  })
-})
diff --git a/src/viewerModule/nehuba/navigation.service/navigation.service.ts b/src/viewerModule/nehuba/navigation.service/navigation.service.ts
deleted file mode 100644
index e06ddd27fe488f686aec8dcd9c803491df1fad60..0000000000000000000000000000000000000000
--- a/src/viewerModule/nehuba/navigation.service/navigation.service.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-import { Inject, Injectable, OnDestroy, Optional } from "@angular/core";
-import { select, Store } from "@ngrx/store";
-import { Observable, ReplaySubject, Subscription } from "rxjs";
-import { debounceTime } from "rxjs/operators";
-import { NehubaViewerUnit } from "../nehubaViewer/nehubaViewer.component";
-import { NEHUBA_INSTANCE_INJTKN } from "../util";
-import { INavObj, navObjEqual } from './navigation.util'
-import { actions } from "src/state/atlasSelection";
-import { atlasSelection, userPreference } from "src/state";
-
-@Injectable()
-export class NehubaNavigationService implements OnDestroy{
-
-  private subscriptions: Subscription[] = []
-  private viewerInstanceSubscriptions: Subscription[] = []
-
-  private nehubaViewerInstance: NehubaViewerUnit
-  public storeNav: INavObj
-  public viewerNav: INavObj
-  public viewerNav$ = new ReplaySubject<INavObj>(1)
-
-  // if set, ignores store attempt to update nav
-  private viewerNavLock: boolean = false
-
-  private globalAnimationFlag = true
-  private rafRef: number
-
-  constructor(
-    private store$: Store<any>,
-    @Optional() @Inject(NEHUBA_INSTANCE_INJTKN) nehubaInst$: Observable<NehubaViewerUnit>,
-  ){
-    this.subscriptions.push(
-      this.store$.pipe(
-        select(userPreference.selectors.useAnimation)
-      ).subscribe(flag => this.globalAnimationFlag = flag)
-    )
-
-    if (nehubaInst$) {
-      this.subscriptions.push(
-        nehubaInst$.subscribe(val => {
-          this.clearViewerSub()
-          this.nehubaViewerInstance = val
-          if (this.nehubaViewerInstance) {
-            this.setupViewerSub()
-          }
-        })
-      )
-    }
-
-    this.subscriptions.push(
-      // realtime state nav state
-      this.store$.pipe(
-        select(atlasSelection.selectors.navigation)
-      ).subscribe(v => {
-        this.storeNav = v
-        // if stored nav differs from viewerNav
-        if (!this.viewerNavLock && this.nehubaViewerInstance) {
-          const navEql = navObjEqual(this.storeNav, this.viewerNav)
-          if (!navEql) {
-            this.navigateViewer(this.storeNav)
-          }
-        }
-      })
-    )
-  }
-
-  navigateViewer(navigation: INavObj): void {
-    if (!navigation) return
-    // TODO
-    // readd consider how to do animation
-    this.nehubaViewerInstance.setNavigationState(navigation)
-  }
-
-  setupViewerSub(): void {
-    this.viewerInstanceSubscriptions.push(
-      // realtime viewer nav state
-      this.nehubaViewerInstance.viewerPositionChange.subscribe(
-        (val: INavObj) => {
-          this.viewerNav = val
-          this.viewerNav$.next(val)
-          this.viewerNavLock = true
-        }
-      ),
-      // debounced viewer nav state
-      this.nehubaViewerInstance.viewerPositionChange.pipe(
-        debounceTime(160)
-      ).subscribe((val: INavObj) => {
-        this.viewerNavLock = false
-
-        const { zoom, perspectiveZoom, position } = val
-        const roundedZoom = Math.round(zoom)
-        const roundedPz = Math.round(perspectiveZoom)
-        const roundedPosition = position.map(v => Math.round(v)) as [number, number, number]
-        const roundedNav = {
-          ...val,
-          zoom: roundedZoom,
-          perspectiveZoom: roundedPz,
-          position: roundedPosition,
-        }
-        const navEql = navObjEqual(roundedNav, this.storeNav)
-        
-        if (!navEql) {
-          this.store$.dispatch(
-            actions.setNavigation({
-              navigation: roundedNav
-            })
-          )
-        }
-      })
-    )
-  }
-
-  clearViewerSub(): void {
-    while (this.viewerInstanceSubscriptions.length > 0) this.viewerInstanceSubscriptions.pop().unsubscribe()
-  }
-
-  ngOnDestroy(): void {
-    this.clearViewerSub()
-    while (this.subscriptions.length > 0) this.subscriptions.pop().unsubscribe()
-  }
-}
diff --git a/src/viewerModule/nehuba/navigation.service/navigation.util.spec.ts b/src/viewerModule/nehuba/navigation.service/navigation.util.spec.ts
index 8cd54f17460859f88ff71ce7d2f7c0c1d779be2a..4e967e38b683f1761eed6d7c464888f6f4753171 100644
--- a/src/viewerModule/nehuba/navigation.service/navigation.util.spec.ts
+++ b/src/viewerModule/nehuba/navigation.service/navigation.util.spec.ts
@@ -2,8 +2,8 @@ import {
   navAdd,
   navMul,
   navObjEqual,
-  INavObj
 } from './navigation.util'
+import { INavObj } from "../constants"
 
 const nav1: INavObj = {
   position: [1,2,3],
diff --git a/src/viewerModule/nehuba/navigation.service/navigation.util.ts b/src/viewerModule/nehuba/navigation.service/navigation.util.ts
index 9ae2df4760f4216b0e9f98e4958750882b791c21..835e6ed94d852d7120019e3cc3a190accf38b81c 100644
--- a/src/viewerModule/nehuba/navigation.service/navigation.util.ts
+++ b/src/viewerModule/nehuba/navigation.service/navigation.util.ts
@@ -1,13 +1,6 @@
-import { TVec3, TVec4 } from "src/messaging/types";
+import { TVec3, TVec4, INavObj } from "../constants";
 import { arrayOfPrimitiveEqual } from "src/util/fn";
 
-export interface INavObj {
-  position: TVec3
-  orientation: TVec4
-  perspectiveOrientation: TVec4
-  perspectiveZoom: number
-  zoom: number
-}
 
 export function navMul(nav: INavObj, scalar: number): INavObj {
   return {
diff --git a/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts b/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts
index 465d3144979c3e6997e4dbefcb12f6009ab9ea21..e1806ae87856ee7dd6756f15e122ce54e3bc1409 100644
--- a/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts
+++ b/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts
@@ -149,9 +149,10 @@ export class NehubaViewerUnit implements OnDestroy {
     }
 
     getImportNehubaPr()
-      .then(() => {
+      .then(() => getExportNehuba())
+      .then(exportNehuba => {
         this.nehubaLoaded = true
-        this.exportNehuba = getExportNehuba()
+        this.exportNehuba = exportNehuba
         const fixedZoomPerspectiveSlices = this.config && this.config.layout && this.config.layout.useNehubaPerspective && this.config.layout.useNehubaPerspective.fixedZoomPerspectiveSlices
         if (fixedZoomPerspectiveSlices) {
           const { sliceZoom, sliceViewportWidth, sliceViewportHeight } = fixedZoomPerspectiveSlices
@@ -644,7 +645,7 @@ export class NehubaViewerUnit implements OnDestroy {
       position,
       positionReal,
       zoom,
-    } = newViewerState
+    } = newViewerState || {}
 
     if ( perspectiveZoom ) {
       this.nehubaViewer.ngviewer.perspectiveNavigationState.zoomFactor.restoreState(perspectiveZoom)
@@ -696,7 +697,7 @@ export class NehubaViewerUnit implements OnDestroy {
 
   private setLayerTransparency(layerName: string, alpha: number) {
     const layer = this.nehubaViewer.ngviewer.layerManager.getLayerByName(layerName)
-    if (!layer) return
+    if (!(layer?.layer)) return
 
     /**
      * for segmentation layer
diff --git a/src/viewerModule/nehuba/nehubaViewerGlue/nehubaViewerGlue.component.spec.ts b/src/viewerModule/nehuba/nehubaViewerGlue/nehubaViewerGlue.component.spec.ts
index 703da432248b444f26edcdc15c3bb0a511db27ad..10d189784c311b6de0c8557e212e86a05774a2ea 100644
--- a/src/viewerModule/nehuba/nehubaViewerGlue/nehubaViewerGlue.component.spec.ts
+++ b/src/viewerModule/nehuba/nehubaViewerGlue/nehubaViewerGlue.component.spec.ts
@@ -18,7 +18,8 @@ import { selectorAuxMeshes } from "../store"
 import { NehubaGlueCmp } from "./nehubaViewerGlue.component"
 import { AtlasWorkerService } from "src/atlasViewer/atlasViewer.workerService.service"
 import { userInterface, atlasSelection, atlasAppearance, annotation, userInteraction } from "src/state"
-import { SapiAtlasModel, SAPIModule, SapiParcellationModel, SapiRegionModel, SapiSpaceModel } from "src/atlasComponents/sapi"
+import { SAPIModule } from "src/atlasComponents/sapi"
+import { SxplrParcellation, SxplrAtlas, SxplrRegion, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes"
 import { LayerCtrlEffects } from "../layerCtrl.service/layerCtrl.effects"
 import { NEHUBA_INSTANCE_INJTKN } from "../util"
 import { RouterService } from "src/routerModule/router.service"
@@ -51,10 +52,10 @@ describe('> nehubaViewerGlue.component.ts', () => {
   let mockStore: MockStore
   let fixture: ComponentFixture<NehubaGlueCmp>
   const selectedATPR$ = new Subject<{
-    atlas: SapiAtlasModel,
-    parcellation: SapiParcellationModel,
-    template: SapiSpaceModel,
-    regions: SapiRegionModel[],
+    atlas: SxplrAtlas,
+    parcellation: SxplrParcellation,
+    template: SxplrTemplate,
+    regions: SxplrRegion[],
   }>()
   beforeEach( async () => {
     await TestBed.configureTestingModule({
diff --git a/src/viewerModule/nehuba/nehubaViewerGlue/nehubaViewerGlue.component.ts b/src/viewerModule/nehuba/nehubaViewerGlue/nehubaViewerGlue.component.ts
index e570bcd5f01ea7b0ef4d19556773aa11285c4e4d..8bcb8567114a8989b98fca2355c0a33864f5a2e7 100644
--- a/src/viewerModule/nehuba/nehubaViewerGlue/nehubaViewerGlue.component.ts
+++ b/src/viewerModule/nehuba/nehubaViewerGlue/nehubaViewerGlue.component.ts
@@ -6,7 +6,7 @@ import { IViewer, TViewerEvent } from "../../viewer.interface";
 import { NehubaMeshService } from "../mesh.service";
 import { NehubaLayerControlService, SET_COLORMAP_OBS, SET_LAYER_VISIBILITY } from "../layerCtrl.service";
 import { NG_LAYER_CONTROL, SET_SEGMENT_VISIBILITY } from "../layerCtrl.service/layerCtrl.util";
-import { SapiRegionModel } from "src/atlasComponents/sapi";
+import { SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes";
 import { NehubaConfig } from "../config.service";
 import { SET_MESHES_TO_LOAD } from "../constants";
 import { atlasSelection, userInteraction } from "src/state";
@@ -54,7 +54,7 @@ import { atlasSelection, userInteraction } from "src/state";
 
 export class NehubaGlueCmp implements IViewer<'nehuba'>, OnDestroy {
 
-  private onhoverSegments: SapiRegionModel[] = []
+  private onhoverSegments: SxplrRegion[] = []
   private onDestroyCb: (() => void)[] = []
 
   public nehubaConfig: NehubaConfig
diff --git a/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerContainer.component.ts b/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerContainer.component.ts
index f4ad7e41191010356daec181ad362ce655cc661c..2c0184e79b7304b440473addb8e3e0f71c9814f5 100644
--- a/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerContainer.component.ts
+++ b/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerContainer.component.ts
@@ -1,11 +1,9 @@
 import { AfterViewInit, Component, EventEmitter, OnDestroy, Output, ViewChild } from "@angular/core";
-import { concat, Observable, of, Subscription } from "rxjs";
-import { map, withLatestFrom } from "rxjs/operators";
-import { SapiRegionModel } from "src/atlasComponents/sapi";
+import { concat, of, Subscription } from "rxjs";
+import { withLatestFrom } from "rxjs/operators";
 import { EnumViewerEvt, TViewerEvent } from "../../viewer.interface";
 import { NehubaLayerControlService } from "../layerCtrl.service";
 import { NehubaViewerContainerDirective } from "./nehubaViewerInterface.directive";
-import { getParcNgId, getRegionLabelIndex } from "../config.service";
 import { Store } from "@ngrx/store";
 import { atlasSelection } from "src/state";
 
@@ -47,26 +45,29 @@ export class NehubaViewerContainer implements AfterViewInit, OnDestroy {
       }),
 
       concat(
-        of(null),
+        of('start' as const),
         mouseOverSegments
       ).pipe(
         withLatestFrom(
-          this.multiNgIdsRegionsLabelMap$
+          this.layerCtrlService.completeNgIdLabelRegionMap$
         )
       ).subscribe(([seg, multiNgIdsRegionsLabelIndexMap]) => {
+        const isStart = seg === "start"
         this.viewerEvent.emit({
           type: EnumViewerEvt.VIEWER_CTX,
           data: {
             viewerType: 'nehuba',
             payload: {
-              nehuba: seg && seg.map(v => {
+              nehuba: isStart
+              ? []
+              : seg.map(v => {
                 return {
                   layerName: v.layer.name,
                   labelIndices: [ Number(v.segmentId) ],
                   regions: (() => {
-                    const map = multiNgIdsRegionsLabelIndexMap.get(v.layer.name)
-                    if (!map) return []
-                    return [map.get(Number(v.segmentId))]
+                    const record = multiNgIdsRegionsLabelIndexMap[v.layer.name] || {}
+                    if (!record) return []
+                    return [record[Number(v.segmentId)]]
                   })()
                 }
               })
@@ -117,23 +118,6 @@ export class NehubaViewerContainer implements AfterViewInit, OnDestroy {
   @ViewChild(NehubaViewerContainerDirective, { static: true })
   private nehubaContainerDirective: NehubaViewerContainerDirective
 
-  private multiNgIdsRegionsLabelMap$: Observable<Map<string, Map<number, SapiRegionModel>>> = this.layerCtrlService.selectedATPR$.pipe(
-    map(( { atlas, parcellation, template, regions } ) => {
-      
-      const retMap = new Map<string, Map<number, SapiRegionModel>>()
-      for (const r of regions) {
-        const ngId = getParcNgId(atlas, template, parcellation, r)
-        if (!ngId) continue
-        if (!retMap.has(ngId)) {
-          retMap.set(ngId, new Map())
-        }
-        const labelIndex = getRegionLabelIndex(atlas, template, parcellation, r)
-        if (!labelIndex) continue
-        retMap.get(ngId).set(labelIndex, r)
-      }
-      return retMap
-    })
-  )
 
   private subscriptions: Subscription[] = []
 }
diff --git a/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerInterface.directive.spec.ts b/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerInterface.directive.spec.ts
index 9b7a7b09d88e0ad801477b90e13f1c4a5f6e60bb..19314d6737ebfd0c3229b41f3fb62055d9b0bcb6 100644
--- a/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerInterface.directive.spec.ts
+++ b/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerInterface.directive.spec.ts
@@ -6,7 +6,6 @@ import { NehubaViewerUnit } from "../nehubaViewer/nehubaViewer.component"
 import { NehubaViewerContainerDirective } from "./nehubaViewerInterface.directive"
 import { NEVER, of, pipe, Subject } from "rxjs"
 import { userPreference, atlasSelection, atlasAppearance } from "src/state"
-import { NehubaNavigationService } from "../navigation.service"
 import { LayerCtrlEffects } from "../layerCtrl.service/layerCtrl.effects"
 import { mapTo } from "rxjs/operators"
 
@@ -31,13 +30,6 @@ describe('> nehubaViewerInterface.directive.ts', () => {
         ],
         providers: [
           provideMockStore(),
-          {
-            provide: NehubaNavigationService,
-            useValue: {
-              viewerNav$: NEVER,
-              storeNav: null
-            }
-          },
           {
             provide: LayerCtrlEffects,
             useValue: {
diff --git a/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerInterface.directive.ts b/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerInterface.directive.ts
index 0b7f185aa8d4530a561d779f45274a9a3b13cff7..aee39e6f48641ebdb9b5b8051f23c6c023a91545 100644
--- a/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerInterface.directive.ts
+++ b/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerInterface.directive.ts
@@ -2,18 +2,18 @@ import { Directive, ViewContainerRef, ComponentRef, OnDestroy, Output, EventEmit
 import { NehubaViewerUnit } from "../nehubaViewer/nehubaViewer.component";
 import { Store, select } from "@ngrx/store";
 import { Subscription, Observable, asyncScheduler, combineLatest } from "rxjs";
-import { distinctUntilChanged, filter, debounceTime, scan, map, throttleTime, switchMap, take } from "rxjs/operators";
+import { distinctUntilChanged, filter, debounceTime, scan, map, throttleTime, switchMap, take, tap } from "rxjs/operators";
 import { serializeSegment } from "../util";
 import { LoggingService } from "src/logging";
 import { arrayOfPrimitiveEqual } from 'src/util/fn'
-import { INavObj, NehubaNavigationService } from "../navigation.service";
+import { INavObj } from "../constants"
 import { NehubaConfig, defaultNehubaConfig, getNehubaConfig } from "../config.service";
 import { atlasAppearance, atlasSelection, userPreference } from "src/state";
-import { SapiAtlasModel, SapiParcellationModel, SapiSpaceModel } from "src/atlasComponents/sapi";
-import { NgLayerCustomLayer } from "src/state/atlasAppearance";
+import { SxplrAtlas, SxplrParcellation, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
 import { arrayEqual } from "src/util/array";
 import { cvtNavigationObjToNehubaConfig } from "../config.service/util";
 import { LayerCtrlEffects } from "../layerCtrl.service/layerCtrl.effects";
+import { NavigationBaseSvc } from "../navigation.service/navigation.base.service";
 
 
 const determineProtocol = (url: string) => {
@@ -135,7 +135,6 @@ const accumulatorFn: (
 @Directive({
   selector: '[iav-nehuba-viewer-container]',
   exportAs: 'iavNehubaViewerContainer',
-  providers: [ NehubaNavigationService ]
 })
 export class NehubaViewerContainerDirective implements OnDestroy{
 
@@ -151,19 +150,16 @@ export class NehubaViewerContainerDirective implements OnDestroy{
   @Output()
   public iavNehubaViewerContainerViewerLoading: EventEmitter<boolean> = new EventEmitter()
   
-  private componentFactory: ComponentFactory<NehubaViewerUnit>
   private cr: ComponentRef<NehubaViewerUnit>
   private navigation: atlasSelection.AtlasSelectionState['navigation']
   constructor(
     private el: ViewContainerRef,
     private store$: Store<any>,
-    private navService: NehubaNavigationService,
+    private navBaseSvc: NavigationBaseSvc,
     private effect: LayerCtrlEffects,
     private cdr: ChangeDetectorRef,
-    cfr: ComponentFactoryResolver,
     @Optional() private log: LoggingService,
   ){
-    this.componentFactory = cfr.resolveComponentFactory(NehubaViewerUnit)
     this.cdr.detach()
 
     this.subscriptions.push(
@@ -175,10 +171,10 @@ export class NehubaViewerContainerDirective implements OnDestroy{
       this.store$.pipe(
         atlasSelection.fromRootStore.distinctATP(),
         debounceTime(16),
-        switchMap((ATP: { atlas: SapiAtlasModel, parcellation: SapiParcellationModel, template: SapiSpaceModel }) => this.store$.pipe(
+        switchMap((ATP: { atlas: SxplrAtlas, parcellation: SxplrParcellation, template: SxplrTemplate }) => this.store$.pipe(
           select(atlasAppearance.selectors.customLayers),
           debounceTime(16),
-          map(cl => cl.filter(l => l.clType === "baselayer/nglayer") as NgLayerCustomLayer[]),
+          map(cl => cl.filter(l => l.clType === "baselayer/nglayer") as atlasAppearance.const.NgLayerCustomLayer[]),
           distinctUntilChanged(arrayEqual((oi, ni) => oi.id === ni.id)),
           filter(layers => layers.length > 0),
           map(ngBaseLayers => {
@@ -248,9 +244,9 @@ export class NehubaViewerContainerDirective implements OnDestroy{
           this.nehubaViewerInstance.applyGpuLimit(limit)
         }
       }),
-      this.navService.viewerNav$.subscribe(v => {
-        this.navigationEmitter.emit(v)
-      }),
+      this.navBaseSvc.nehubaViewerUnit$.pipe(
+        switchMap(nvUnit => nvUnit.viewerPositionChange)
+      ).subscribe(v => this.navigationEmitter.emit(v)),
       this.store$.pipe(
         select(atlasSelection.selectors.navigation)
       ).subscribe(nav => this.navigation = nav)
@@ -296,14 +292,8 @@ export class NehubaViewerContainerDirective implements OnDestroy{
     await new Promise(rs => setTimeout(rs, 0))
 
     this.iavNehubaViewerContainerViewerLoading.emit(true)
-    this.cr = this.el.createComponent(this.componentFactory)
+    this.cr = this.el.createComponent(NehubaViewerUnit)
 
-    if (this.navService.storeNav) {
-      this.nehubaViewerInstance.initNav = {
-        ...this.navService.storeNav,
-        positionReal: true
-      }
-    }
 
     if (this.gpuLimit) {
       const initialNgState = nehubaConfig && nehubaConfig.dataset && nehubaConfig.dataset.initialNgState
diff --git a/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerTouch.directive.ts b/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerTouch.directive.ts
index 0fbd2562a1d4f50bc39e6157aefe322747afe475..6223e187fe07f0bd19f2f5774c793594ff17851f 100644
--- a/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerTouch.directive.ts
+++ b/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerTouch.directive.ts
@@ -43,13 +43,7 @@ export class NehubaViewerTouchDirective implements OnDestroy{
     return this.htmlElementIndexMap.get(panel)
   }
 
-  private _exportNehuba: any
-  private get exportNehuba(){
-    if (!this._exportNehuba) {
-      this._exportNehuba = getExportNehuba()
-    }
-    return this._exportNehuba
-  }
+  private exportNehuba: any
 
   private s: Subscription[] = []
   private nehubaSub: Subscription[] = []
@@ -67,6 +61,7 @@ export class NehubaViewerTouchDirective implements OnDestroy{
         })
       )
     }
+    getExportNehuba().then(exportNehuba => this.exportNehuba = exportNehuba)
     /**
      * Touchend also needs to be listened to, as user could start
      * with multitouch, and end up as single touch
@@ -262,8 +257,9 @@ export class NehubaViewerTouchDirective implements OnDestroy{
         if (isNaN(deltaX) || isNaN(deltaX)) return
         const { position } = this.ngViewer.navigationState
         const pos = position.spatialCoordinates
-        this.exportNehuba.vec3.set(pos, deltaX, deltaY, 0)
-        this.exportNehuba.vec3.transformMat4(pos, pos, this.viewportToData[panelIndex])
+        const { vec3 } = this.exportNehuba
+        vec3.set(pos, deltaX, deltaY, 0)
+        vec3.transformMat4(pos, pos, this.viewportToData[panelIndex])
 
         position.changed.dispatch()
       })
diff --git a/src/viewerModule/nehuba/ngLayerCtl/ngLayerCtrl.style.css b/src/viewerModule/nehuba/ngLayerCtl/ngLayerCtrl.style.css
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/atlasComponents/sapiViews/core/datasets/dataset/dataset.style.css b/src/viewerModule/nehuba/ngLayerCtlModule/index.ts
similarity index 100%
rename from src/atlasComponents/sapiViews/core/datasets/dataset/dataset.style.css
rename to src/viewerModule/nehuba/ngLayerCtlModule/index.ts
diff --git a/src/viewerModule/nehuba/ngLayerCtlModule/module.ts b/src/viewerModule/nehuba/ngLayerCtlModule/module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..dbdea746c6423bfe23b7f8114a66aac3c2795fc9
--- /dev/null
+++ b/src/viewerModule/nehuba/ngLayerCtlModule/module.ts
@@ -0,0 +1,27 @@
+import { CommonModule } from "@angular/common";
+import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core";
+import { MatButtonModule } from "@angular/material/button";
+import { MatTooltipModule } from "@angular/material/tooltip";
+import { SpinnerModule } from "src/components/spinner";
+import { NgLayerCtrlCmp } from "./ngLayerCtl/ngLayerCtrl.component";
+
+@NgModule({
+  imports: [
+    CommonModule,
+    MatTooltipModule,
+    MatButtonModule,
+    SpinnerModule,
+  ],
+  declarations: [
+    NgLayerCtrlCmp
+  ],
+  exports: [
+    NgLayerCtrlCmp
+  ],
+  schemas: [
+    CUSTOM_ELEMENTS_SCHEMA
+  ]
+})
+export class NgLayerCtlModule{
+
+}
\ No newline at end of file
diff --git a/src/viewerModule/nehuba/ngLayerCtl/ngLayerCtrl.component.ts b/src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.component.ts
similarity index 78%
rename from src/viewerModule/nehuba/ngLayerCtl/ngLayerCtrl.component.ts
rename to src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.component.ts
index ea321e012cccbbe69e27f0e8467b14b945876e00..0b553f586b42b8b91a2624448a499df2c3e57680 100644
--- a/src/viewerModule/nehuba/ngLayerCtl/ngLayerCtrl.component.ts
+++ b/src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.component.ts
@@ -4,8 +4,7 @@ import { isMat4 } from "common/util"
 import { CONST } from "common/constants"
 import { Observable } from "rxjs";
 import { atlasAppearance, atlasSelection } from "src/state";
-import { NehubaViewerUnit } from "..";
-import { NEHUBA_INSTANCE_INJTKN } from "../util";
+import { NehubaViewerUnit, NEHUBA_INSTANCE_INJTKN } from "src/viewerModule/nehuba";
 import { getExportNehuba } from "src/util/fn";
 
 type Vec4 = [number, number, number, number]
@@ -34,10 +33,12 @@ export class NgLayerCtrlCmp implements OnChanges, OnDestroy{
   private onDestroyCb: (() => void)[] = []
   private removeLayer: () => void
 
-  public showOpacityCtrl = false
   public hideNgTuneCtrl = 'lower_threshold,higher_threshold,brightness,contrast,colormap,hide-threshold-checkbox'
   public defaultOpacity = 1
 
+  @Input('ng-layer-ctrl-show')
+  public showOpacityCtrl = false
+
   @Input('ng-layer-ctl-name')
   name: string
 
@@ -60,7 +61,7 @@ export class NgLayerCtrlCmp implements OnChanges, OnDestroy{
   transform: Mat4 = idMat4
 
   @Input('ng-layer-ctl-transform')
-  set _transform(xform: string | Mat4) {
+  set _transform(xform: string | Mat4 | number[][]) {
     const parsedResult = typeof xform === "string"
       ? JSON.parse(xform)
       : xform
@@ -70,9 +71,14 @@ export class NgLayerCtrlCmp implements OnChanges, OnDestroy{
     this.transform = parsedResult as Mat4
   }
 
+  @Input('ng-layer-ctl-info')
+  info: Record<string, any>
+
   visible: boolean = true
   private viewer: NehubaViewerUnit
 
+  private exportNehuba: any
+
   constructor(
     private store: Store<any>,
     @Inject(NEHUBA_INSTANCE_INJTKN) nehubaViewer$: Observable<NehubaViewerUnit>
@@ -81,6 +87,11 @@ export class NgLayerCtrlCmp implements OnChanges, OnDestroy{
     this.onDestroyCb.push(
       () => sub.unsubscribe()
     )
+
+    getExportNehuba().then(exportNehuba => {
+      this.exportNehuba = exportNehuba
+      this.setOrientation()
+    })
   }
 
   ngOnDestroy(): void {
@@ -121,7 +132,7 @@ export class NgLayerCtrlCmp implements OnChanges, OnDestroy{
   }
 
   setOrientation(): void {
-    const { mat4, quat, vec3 } = getExportNehuba()
+    const { mat4, quat, vec3 } = this.exportNehuba
 
     /**
      * glMatrix seems to store the matrix in transposed format
@@ -132,10 +143,23 @@ export class NgLayerCtrlCmp implements OnChanges, OnDestroy{
     const scaledM = mat4.scale(mat4.create(), incM, vec3.inverse(vec3.create(), scale))
     const q = mat4.getRotation(quat.create(0), scaledM)
 
+    let position: number[]
+    if (this.info) {
+      const { scales } = this.info
+      const sizeInNm = [0, 1, 2].map(idx => scales[0].size[idx] * scales[0].resolution[idx])
+      const start = vec3.transformMat4(vec3.create(), vec3.fromValues(0, 0, 0), incM)
+      const end = vec3.transformMat4(vec3.create(), vec3.fromValues(...sizeInNm), incM)
+      const final = vec3.add(vec3.create(), start, end)
+      vec3.scale(final, final, 0.5)
+      position = Array.from(final)
+    }
+    
+    
     this.store.dispatch(
       atlasSelection.actions.navigateTo({
         navigation: {
-          orientation: Array.from(q)
+          orientation: Array.from(q),
+          position,
         },
         animation: true
       })
diff --git a/src/viewerModule/nehuba/ngLayerCtl/ngLayerCtrl.stories.ts b/src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.stories.ts
similarity index 95%
rename from src/viewerModule/nehuba/ngLayerCtl/ngLayerCtrl.stories.ts
rename to src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.stories.ts
index b716f7d93824fd1e223450fde56655398aa91d0b..ff1fb3cd5f97eaf74b17751d28b5bd245707f9ba 100644
--- a/src/viewerModule/nehuba/ngLayerCtl/ngLayerCtrl.stories.ts
+++ b/src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.stories.ts
@@ -2,7 +2,7 @@ import { idMat4, NgLayerCtrlCmp } from "./ngLayerCtrl.component"
 import { Meta, moduleMetadata, Story } from "@storybook/angular"
 import { CommonModule } from "@angular/common"
 import { MatButtonModule } from "@angular/material/button"
-import { NEHUBA_INSTANCE_INJTKN } from "../util"
+import { NEHUBA_INSTANCE_INJTKN } from "src/viewerModule/nehuba/util"
 import { NEVER } from "rxjs"
 import { action } from "@storybook/addon-actions"
 import { MatTooltipModule } from "@angular/material/tooltip"
diff --git a/src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.style.css b/src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.style.css
new file mode 100644
index 0000000000000000000000000000000000000000..f2fe15fbc12c4dd49e16beae173aaa011bd6bd49
--- /dev/null
+++ b/src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.style.css
@@ -0,0 +1,27 @@
+:host
+{
+    padding: 0.5rem 0;
+}
+
+.container
+{
+    display: flex;
+    width: 100%;
+    align-items: center;
+}
+
+button
+{
+    flex: 0 0 auto;
+}
+
+.layer-name
+{
+    flex: 1 1 0px;
+    overflow: hidden;
+}
+
+spinner-cmp:has(+ .hydrated)
+{
+    display: none;
+}
diff --git a/src/viewerModule/nehuba/ngLayerCtl/ngLayerCtrl.template.html b/src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.template.html
similarity index 71%
rename from src/viewerModule/nehuba/ngLayerCtl/ngLayerCtrl.template.html
rename to src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.template.html
index b53ec540ad7fd2bcf7df004327d9cc3f2b3ba51b..cb90abf4dff38ab1448b31dc0e2427bcc769e523 100644
--- a/src/viewerModule/nehuba/ngLayerCtl/ngLayerCtrl.template.html
+++ b/src/viewerModule/nehuba/ngLayerCtlModule/ngLayerCtl/ngLayerCtrl.template.html
@@ -1,4 +1,4 @@
-<div [ngClass]="{ 'text-muted': !visible }">
+<div class="container" [ngClass]="{ 'text-muted': !visible }">
 
   <button mat-icon-button
     [matTooltip]="CONST.TOGGLE_LAYER_VISILITY"
@@ -6,7 +6,7 @@
     <i [ngClass]="visible ? 'fa-eye' : 'fa-eye-slash'" class="far"></i>
   </button>
   
-  <span>
+  <span class="layer-name">
     {{ name }}
   </span>
 
@@ -24,11 +24,15 @@
     <i class="fas fa-cog"></i>
   </button>
 
-  <ng-template [ngIf]="showOpacityCtrl">
+</div>
+
+<ng-template [ngIf]="showOpacityCtrl">
+  <div class="sxplr-d-flex sxplr-justify-content-center sxplr-align-items-center">
+    <spinner-cmp></spinner-cmp>
     <ng-layer-tune
       [ngLayerName]="name"
       [hideCtrl]="hideNgTuneCtrl"
       [opacity]="defaultOpacity">
     </ng-layer-tune>
-  </ng-template>
-</div>
+  </div>
+</ng-template>
\ No newline at end of file
diff --git a/src/viewerModule/nehuba/statusCard/statusCard.component.spec.ts b/src/viewerModule/nehuba/statusCard/statusCard.component.spec.ts
index ab6ac511153553a1bc50365bd2b85c4a239c94f4..cb1521df965c03df54e60779c280074377dc3f01 100644
--- a/src/viewerModule/nehuba/statusCard/statusCard.component.spec.ts
+++ b/src/viewerModule/nehuba/statusCard/statusCard.component.spec.ts
@@ -15,7 +15,7 @@ import { UtilModule } from "src/util"
 import * as configSvc from '../config.service'
 import {QuickTourModule} from "src/ui/quickTour/module";
 import { atlasSelection } from "src/state"
-import { SapiSpaceModel } from "src/atlasComponents/sapi"
+import { SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes"
 
 @Directive({
   selector: '[iav-auth-auth-state]',
@@ -70,8 +70,9 @@ describe('> statusCard.component.ts', () => {
       const mockStore = TestBed.inject(MockStore)
 
       mockStore.overrideSelector(atlasSelection.selectors.selectedTemplate, {
-        '@id': 'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588'
-      } as SapiSpaceModel)
+        id: 'minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588',
+        name: 'foo'
+      } as SxplrTemplate)
 
     })
 
diff --git a/src/viewerModule/nehuba/statusCard/statusCard.component.ts b/src/viewerModule/nehuba/statusCard/statusCard.component.ts
index c658f2c65368d9b8c7187f4742d5a4805880206e..5ca64921a0a7aae9e2bdfd227fe6003bf299ccc3 100644
--- a/src/viewerModule/nehuba/statusCard/statusCard.component.ts
+++ b/src/viewerModule/nehuba/statusCard/statusCard.component.ts
@@ -21,7 +21,7 @@ import { NEHUBA_INSTANCE_INJTKN } from '../util'
 import { IQuickTourData } from "src/ui/quickTour/constrants";
 import { actions } from "src/state/atlasSelection";
 import { atlasSelection } from "src/state";
-import { SapiSpaceModel } from "src/atlasComponents/sapi";
+import { SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
 import { getNehubaConfig } from "../config.service";
 
 @Component({
@@ -45,7 +45,7 @@ export class StatusCardComponent implements OnInit, OnChanges{
   public arialabel = ARIA_LABELS.STATUS_PANEL
   public showFull = false
 
-  private selectedTemplate: SapiSpaceModel
+  private selectedTemplate: SxplrTemplate
   private currentNavigation: any
   private subscriptions: Subscription[] = []
 
diff --git a/src/viewerModule/nehuba/store/type.ts b/src/viewerModule/nehuba/store/type.ts
index d45347a166b1630d9ecc47cebbfaa48a3a95985b..a55be8ced700fb825deb317904573577a0c8c7fb 100644
--- a/src/viewerModule/nehuba/store/type.ts
+++ b/src/viewerModule/nehuba/store/type.ts
@@ -12,7 +12,7 @@ export interface IAuxMesh {
 
 
 export interface INehubaFeature {
-  layers: atlasAppearance.NgLayerCustomLayer[]
+  layers: atlasAppearance.const.NgLayerCustomLayer[]
   panelMode: string
   panelOrder: string
   octantRemoval: boolean
diff --git a/src/viewerModule/nehuba/store/util.ts b/src/viewerModule/nehuba/store/util.ts
deleted file mode 100644
index 14a59dc1d78250caf449c252eacd8acd80e9524a..0000000000000000000000000000000000000000
--- a/src/viewerModule/nehuba/store/util.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { SapiParcellationModel, SapiRegionModel } from "src/atlasComponents/sapi";
-
-export type ParcVolumeSpec = {
-  volumeSrc: string
-  parcellation: SapiParcellationModel
-  regions: {
-    labelIndex: number
-    region: SapiRegionModel
-  }[]
-}
diff --git a/src/viewerModule/nehuba/types.ts b/src/viewerModule/nehuba/types.ts
index 6fd0dddab5fce72039cd81a92ac3b377c294f8fe..c7684e637dd9a156c722db3ca806b7f381171bab 100644
--- a/src/viewerModule/nehuba/types.ts
+++ b/src/viewerModule/nehuba/types.ts
@@ -1,5 +1,5 @@
-import { SapiRegionModel } from "src/atlasComponents/sapi";
-import { INavObj } from "./navigation.service";
+import { SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes";
+import { INavObj } from "./constants";
 
 export type TNehubaContextInfo = {
   nav: INavObj
@@ -10,6 +10,6 @@ export type TNehubaContextInfo = {
   nehuba: {
     layerName: string
     labelIndices: number[]
-    regions: SapiRegionModel[]
+    regions: SxplrRegion[]
   }[]
 }
diff --git a/src/viewerModule/nehuba/userLayers/service.ts b/src/viewerModule/nehuba/userLayers/service.ts
index 607f01558d663ad9c5502ad4a25b7d926b40cc32..042cc54851be1e31cf457926d81768dfcbc2a5a8 100644
--- a/src/viewerModule/nehuba/userLayers/service.ts
+++ b/src/viewerModule/nehuba/userLayers/service.ts
@@ -10,8 +10,7 @@ import {
 } from "src/atlasComponents/sapi/core/space/interspaceLinearXform"
 import { AtlasWorkerService } from "src/atlasViewer/atlasViewer.workerService.service"
 import { RouterService } from "src/routerModule/router.service"
-import { atlasAppearance } from "src/state"
-import { NgLayerCustomLayer } from "src/state/atlasAppearance"
+import * as atlasAppearance from "src/state/atlasAppearance"
 import { EnumColorMapName } from "src/util/colorMaps"
 import { getShader } from "src/util/constants"
 import { getExportNehuba, getUuid } from "src/util/fn"
@@ -46,7 +45,7 @@ export class UserLayerService implements OnDestroy {
   async getCvtFileToUrl(file: File): Promise<{
     url: string
     meta: Meta
-    options?: Omit<NgLayerCustomLayer, OmitKeys>
+    options?: Omit<atlasAppearance.const.NgLayerCustomLayer, OmitKeys>
   }> {
     /**
      * if extension is .swc, process as if swc
@@ -90,7 +89,8 @@ export class UserLayerService implements OnDestroy {
     const buf = await file.arrayBuffer()
     let outbuf
     try {
-      outbuf = getExportNehuba().pako.inflate(buf).buffer
+      const { pako } = await getExportNehuba()
+      outbuf = pako.inflate(buf).buffer
     } catch (e) {
       console.log("unpack error", e)
       outbuf = buf
@@ -128,14 +128,14 @@ export class UserLayerService implements OnDestroy {
   addUserLayer(
     url: string,
     meta: Meta,
-    options: Omit<NgLayerCustomLayer, OmitKeys> = {}
+    options: Omit<atlasAppearance.const.NgLayerCustomLayer, OmitKeys> = {}
   ) {
     this.verifyUrl(url)
     if (this.userLayerUrlToIdMap.has(url)) {
       throw new Error(`url ${url} already added`)
     }
     const id = getUuid()
-    const layer: NgLayerCustomLayer = {
+    const layer: atlasAppearance.const.NgLayerCustomLayer = {
       id,
       clType: "customlayer/nglayer",
       source: url,
diff --git a/src/viewerModule/nehuba/util.ts b/src/viewerModule/nehuba/util.ts
index 1073c1bde8e78db2c490b44ab6bc17c65b8aab92..81aed3560abe6fe1f41b9faf13211d1002702591 100644
--- a/src/viewerModule/nehuba/util.ts
+++ b/src/viewerModule/nehuba/util.ts
@@ -181,8 +181,8 @@ export const isIdentityQuat = (ori: number[]): boolean => Math.abs(ori[0]) < 1e-
 
 export const importNehubaFactory = (appendSrc: (src: string) => Promise<void>): () => Promise<void> => {
   let pr: Promise<void>
-  return () => {
-    if (getExportNehuba()) return Promise.resolve()
+  return async () => {
+    if (!!(window as any).export_nehuba) return 
 
     if (pr) return pr
     pr = appendSrc('main.bundle.js')
diff --git a/src/viewerModule/nehuba/viewerCtrl/effects.ts b/src/viewerModule/nehuba/viewerCtrl/effects.ts
index 1e62acc8e260133181cff0412135ccdf2a7846f6..fd10b9db4dabeadb61bd8f75683b3492081d7a74 100644
--- a/src/viewerModule/nehuba/viewerCtrl/effects.ts
+++ b/src/viewerModule/nehuba/viewerCtrl/effects.ts
@@ -1,16 +1,22 @@
 import { Injectable } from "@angular/core";
 import { createEffect } from "@ngrx/effects";
 import { Store } from "@ngrx/store";
-import { mapTo } from "rxjs/operators";
+import { of } from "rxjs";
+import { mapTo, switchMap } from "rxjs/operators";
 import { atlasSelection, userInterface } from "src/state";
 
 @Injectable()
 export class ViewerCtrlEffects {
   onTemplateChangeResetLayout$ = createEffect(() => this.store$.pipe(
     atlasSelection.fromRootStore.distinctATP(),
-    mapTo(userInterface.actions.setPanelMode({
-      panelMode: "FOUR_PANEL"
-    }))
+    switchMap(() => of(
+      userInterface.actions.setPanelMode({
+        panelMode: "FOUR_PANEL"
+      }),
+      userInterface.actions.setPanelOrder({
+        order: '0123'
+      }),
+    ))
   ))
 
   constructor(private store$: Store){}
diff --git a/src/viewerModule/nehuba/viewerCtrl/perspectiveViewSlider/perspectiveViewSlider.component.ts b/src/viewerModule/nehuba/viewerCtrl/perspectiveViewSlider/perspectiveViewSlider.component.ts
index 56a3621904da2da3743b66e6b415cca5c2d70724..67706f44a39f0b2600e75574dcfe8e25f41a18ac 100644
--- a/src/viewerModule/nehuba/viewerCtrl/perspectiveViewSlider/perspectiveViewSlider.component.ts
+++ b/src/viewerModule/nehuba/viewerCtrl/perspectiveViewSlider/perspectiveViewSlider.component.ts
@@ -1,9 +1,10 @@
 import { Component, OnDestroy, Inject, ViewChild, ChangeDetectionStrategy } from "@angular/core";
 import { FormControl } from "@angular/forms";
 import { select, Store } from "@ngrx/store";
-import { combineLatest, concat, NEVER, Observable, of, Subject, Subscription } from "rxjs";
+import { combineLatest, concat, forkJoin, NEVER, Observable, of, Subject, Subscription, throwError } from "rxjs";
 import { switchMap, distinctUntilChanged, map, debounceTime, shareReplay, take, withLatestFrom } from "rxjs/operators";
-import { SAPI, SapiSpaceModel } from "src/atlasComponents/sapi";
+import { SAPI } from "src/atlasComponents/sapi";
+import { SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes"
 import { fromRootStore } from "src/state/atlasSelection";
 import { selectedTemplate } from "src/state/atlasSelection/selectors";
 import { panelMode, panelOrder } from "src/state/userInterface/selectors";
@@ -54,7 +55,7 @@ export class PerspectiveViewSlider implements OnDestroy {
 
     private selectedTemplate$ = this.store$.pipe(
       select(selectedTemplate),
-      distinctUntilChanged((o, n) => o?.["@id"] === n?.["@id"]),
+      distinctUntilChanged((o, n) => o?.id === n?.id),
     )
     private subscriptions: Subscription[] = []
     private maximisedPanelIndex$ = combineLatest([
@@ -147,9 +148,21 @@ export class PerspectiveViewSlider implements OnDestroy {
 
     private currentTemplateSize$ = this.store$.pipe(
       fromRootStore.distinctATP(),
-      switchMap(({ atlas, template }) => 
-        atlas && template
-          ? this.sapi.getSpace(atlas['@id'], template['@id']).getTemplateSize()
+      switchMap(({ template }) => 
+        template
+          ? this.sapi.getVoxelTemplateImage(template).pipe(
+            switchMap(defaultImage => {
+              if (defaultImage.length == 0) {
+                // template hs no ng volume, which is the case for threesurfer
+                return NEVER
+              }
+              const img = defaultImage[0]
+              return of({
+                ...img.info || {},
+                transform: img.transform
+              })
+            })
+          )
           : NEVER),
     )
 
@@ -394,8 +407,8 @@ const viewToSuffix = {
   [EnumClassicalView.CORONAL]: 'coronal',
 }
 
-function getScreenshotUrl(space: SapiSpaceModel, requestedView: EnumClassicalView): string {
-  const prefix = spaceIdToPrefix[space?.['@id']]
+function getScreenshotUrl(space: SxplrTemplate, requestedView: EnumClassicalView): string {
+  const prefix = spaceIdToPrefix[space?.id]
   if (!prefix) return null
   const suffix = viewToSuffix[requestedView]
   if (!suffix) return null
diff --git a/src/viewerModule/nehuba/viewerCtrl/viewerCtrlCmp/viewerCtrlCmp.template.html b/src/viewerModule/nehuba/viewerCtrl/viewerCtrlCmp/viewerCtrlCmp.template.html
index e723b4cd9d7a4d84dd430f0987f8b9f76560fcc4..3145dbb6413f40d4db827001dd59f887c346d09d 100644
--- a/src/viewerModule/nehuba/viewerCtrl/viewerCtrlCmp/viewerCtrlCmp.template.html
+++ b/src/viewerModule/nehuba/viewerCtrl/viewerCtrlCmp/viewerCtrlCmp.template.html
@@ -17,7 +17,10 @@
     <mat-divider class="mt-1 mb-1"></mat-divider>
 
     <h3 class="text mat-h3">
-      Toggle auxiliary meshes
+      <span>
+        Toggle auxiliary meshes
+      </span>
+      <i [matTooltip]="CONST.AUXMESH_DESC" class="fas fa-question"></i>
     </h3>
     
     <form [formGroup]="auxMeshFormGroup">
diff --git a/src/viewerModule/threeSurfer/lifecycle/lifecycle.component.ts b/src/viewerModule/threeSurfer/lifecycle/lifecycle.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0130b932c85f5b4ec38c77e3a62299d90e1b4e5c
--- /dev/null
+++ b/src/viewerModule/threeSurfer/lifecycle/lifecycle.component.ts
@@ -0,0 +1,47 @@
+import { Component, EventEmitter, Output } from "@angular/core";
+import { Store } from "@ngrx/store";
+import { merge } from "rxjs";
+import { debounceTime, mapTo } from "rxjs/operators";
+import { atlasSelection } from "src/state";
+import { TViewerEvent } from "src/viewerModule/viewer.interface";
+
+/**
+ * TODO this compnent destroys and recreates thresurfer on parc change
+ * ideally, this should be handlable in three surfer component
+ * need to refactor threesurfer glu cmp to be more declarative
+ */
+
+@Component({
+  selector: 'tmp-threesurfer-lifecycle',
+  template: `
+    <three-surfer-glue-cmp
+      *ngIf="showThreeSurfer$ | async"
+      (viewerEvent)="handleViewerEvent($event)">
+    </three-surfer-glue-cmp>
+    `
+})
+
+export class TmpThreeSurferLifeCycle{
+  @Output()
+  viewerEvent = new EventEmitter<TViewerEvent<"threeSurfer">>()
+  handleViewerEvent(ev: TViewerEvent<"threeSurfer">){
+    this.viewerEvent.emit(ev)
+  }
+
+  constructor(private store: Store){
+
+  }
+
+  #onATP = this.store.pipe(
+    atlasSelection.fromRootStore.distinctATP()
+  )
+  showThreeSurfer$ = merge(
+    this.#onATP.pipe(
+      mapTo(false)
+    ),
+    this.#onATP.pipe(
+      debounceTime(160),
+      mapTo(true)
+    )
+  )
+}
diff --git a/src/viewerModule/threeSurfer/module.ts b/src/viewerModule/threeSurfer/module.ts
index 7a1f1c3e3c908f64451cebc7db7e513d7a1f9e40..dd12519158ad53646ab038c74c8a82672bcec1b9 100644
--- a/src/viewerModule/threeSurfer/module.ts
+++ b/src/viewerModule/threeSurfer/module.ts
@@ -9,6 +9,7 @@ import { ThreeSurferGlueCmp } from "./threeSurferGlue/threeSurfer.component";
 import { ThreeSurferViewerConfig } from "./tsViewerConfig/tsViewerConfig.component";
 import { nameSpace, reducer, ThreeSurferEffects } from "./store"
 import { EffectsModule } from "@ngrx/effects";
+import { TmpThreeSurferLifeCycle } from "./lifecycle/lifecycle.component";
 
 @NgModule({
   imports: [
@@ -28,9 +29,10 @@ import { EffectsModule } from "@ngrx/effects";
   declarations: [
     ThreeSurferGlueCmp,
     ThreeSurferViewerConfig,
+    TmpThreeSurferLifeCycle,
   ],
   exports: [
-    ThreeSurferGlueCmp,
+    TmpThreeSurferLifeCycle,
   ]
 })
 
diff --git a/src/viewerModule/threeSurfer/store/actions.ts b/src/viewerModule/threeSurfer/store/actions.ts
index 613fcbbfc7b943dfc412717987314a2b34fb5fb6..90d736a27f282918ed629ea59be789301f91f6c2 100644
--- a/src/viewerModule/threeSurfer/store/actions.ts
+++ b/src/viewerModule/threeSurfer/store/actions.ts
@@ -1,9 +1,9 @@
 import { createAction, props } from "@ngrx/store";
 import { nameSpace } from "./const"
 
-export const selectVolumeById = createAction(
-  `${nameSpace} selectVolumeById`,
+export const selectSurfaceVariant = createAction(
+  `${nameSpace} selectSurfaceVariant`,
   props<{
-    id: string
+    variant: string
   }>()
 )
diff --git a/src/viewerModule/threeSurfer/store/effects.ts b/src/viewerModule/threeSurfer/store/effects.ts
index 4fa4c9f190783d18fac844ec69019352bfb6c855..501107552338fc19658b5757c13610b3fae15782 100644
--- a/src/viewerModule/threeSurfer/store/effects.ts
+++ b/src/viewerModule/threeSurfer/store/effects.ts
@@ -3,7 +3,8 @@ import { createEffect } from "@ngrx/effects";
 import { select, Store } from "@ngrx/store";
 import { EMPTY, forkJoin, merge, Observable, of, pipe, throwError } from "rxjs";
 import { debounceTime, map, switchMap, withLatestFrom, filter, shareReplay, distinctUntilChanged } from "rxjs/operators";
-import { SAPI, SapiAtlasModel, SapiParcellationModel, SapiSpaceModel } from "src/atlasComponents/sapi";
+import { SAPI } from "src/atlasComponents/sapi";
+import { SxplrAtlas, SxplrParcellation, SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes"
 import { atlasAppearance, atlasSelection } from "src/state";
 import { ThreeSurferCustomLabelLayer, ThreeSurferCustomLayer } from "src/state/atlasAppearance/const";
 import * as selectors from "./selectors"
@@ -13,25 +14,14 @@ export const fromATP = {
   getThreeSurfaces: (sapi: SAPI) => {
     return pipe(
       filter(
-        ({ atlas, template, parcellation }: {atlas: SapiAtlasModel, template: SapiSpaceModel, parcellation: SapiParcellationModel}) => !!atlas && !!template && !!parcellation
+        ({ atlas, template, parcellation }: {atlas: SxplrAtlas, template: SxplrTemplate, parcellation: SxplrParcellation}) => !!atlas && !!template && !!parcellation
       ),
-      switchMap(({ atlas, template, parcellation }: {atlas: SapiAtlasModel, template: SapiSpaceModel, parcellation: SapiParcellationModel}) => 
-        forkJoin({
-          surfaces: sapi.getSpace(atlas["@id"], template["@id"]).getVolumes().pipe(
-            map(
-              volumes => volumes.filter(vol => vol.data.type === "gii")
-            )
-          ),
-          labels: sapi.getParcellation(atlas["@id"], parcellation["@id"]).getVolumes().pipe(
-            map(
-              volumes => volumes.filter(vol =>
-                vol.data.type === "gii-label" &&
-                vol.data.space["@id"] === template["@id"]
-              )
-            )
-          )
+      switchMap(({ template, parcellation }: {atlas: SxplrAtlas, template: SxplrTemplate, parcellation: SxplrParcellation}) => {
+        return forkJoin({
+          surfaces: sapi.getSurfaceTemplateImage(template),
+          labels: sapi.getTranslatedLabelledThreeMap(parcellation, template),
         })
-      )
+      })
     )
   }
 }
@@ -44,14 +34,17 @@ export class ThreeSurferEffects {
   )
 
   private selectedSurfaceId$ = this.store.pipe(
-    select(selectors.getSelectedVolumeId),
+    select(selectors.getSelectedSurfaceVariant),
     distinctUntilChanged()
   )
 
   private threeSurferBaseCustomLayers$: Observable<ThreeSurferCustomLayer[]> = this.store.pipe(
     select(atlasAppearance.selectors.customLayers),
     map(
-      cl => cl.filter(layer => layer.clType === "baselayer/threesurfer") as ThreeSurferCustomLayer[]
+      cl => cl.filter(layer => 
+        layer.clType === "baselayer/threesurfer" ||
+        layer.clType === "baselayer/threesurfer-label"
+      ) as ThreeSurferCustomLayer[]
     )
   )
 
@@ -81,18 +74,19 @@ export class ThreeSurferEffects {
 
   onATPDebounceHasSurfaceVolumes = createEffect(() => this.onATPDebounceThreeSurferLayers$.pipe(
     switchMap(({ surfaces }) => {
-      const defaultSurface = surfaces.find(s => s.metadata.shortName === "pial") || surfaces[0]
+      
+      const defaultSurface = surfaces.find(s => s.variant === "pial") || surfaces[0]
       if (!defaultSurface) return EMPTY
       return of(
-        actions.selectVolumeById({
-          id: defaultSurface["@id"]
+        actions.selectSurfaceVariant({
+          variant: defaultSurface.variant
         })
       )
     })
   ))
 
   onSurfaceSelected = createEffect(() => this.selectedSurfaceId$.pipe(
-    switchMap(id => this.onATPDebounceThreeSurferLayers$.pipe(
+    switchMap(variant => this.onATPDebounceThreeSurferLayers$.pipe(
       switchMap(({ surfaces }) => {
         if (surfaces.length === 0) return EMPTY
   
@@ -100,19 +94,16 @@ export class ThreeSurferEffects {
         /**
          * select the pial or first one by default
          */
-        const selectedSrc = surfaces.find(s => s["@id"] === id)
-  
-        if (!(selectedSrc.data?.url_map)) {
-          return throwError(`Expecting surfaces[0].data.url_map to be defined, but is not.`)
-        }
+        const selectedSrc = surfaces.filter(surface => surface.variant === variant)
   
-        for (const key in selectedSrc.data.url_map) {
+        for (const src of selectedSrc) {
           layers.push({
+            
             clType: 'baselayer/threesurfer',
-            id: `${selectedSrc["@id"]}-${key}`,
-            name: `${selectedSrc["@id"]}-${key}`,
-            laterality: key as 'left' | 'right',
-            source: selectedSrc.data.url_map[key]
+            id: src.id,
+            name: src.id,
+            laterality: src.laterality,
+            source: src.url
           })
         }
         return of(...[
@@ -127,14 +118,15 @@ export class ThreeSurferEffects {
   ))
 
   onATPDebounceAddBaseLayers$ = createEffect(() => this.onATPDebounceThreeSurferLayers$.pipe(
-    switchMap(({ labels }) => {
+    switchMap(({ labels, surfaces }) => {
       const labelMaps: ThreeSurferCustomLabelLayer[] = []
-      for (const label of labels) {
+      for (const key in labels) {
+        const { laterality, url } = labels[key]
         labelMaps.push({
           clType: 'baselayer/threesurfer-label',
-          id: `${label["@id"]}-${label.metadata.shortName}`,
-          laterality: label.metadata.shortName as 'left' | 'right',
-          source: label.data.url
+          id: `${url}-${laterality}`,
+          laterality,
+          source: url
         })
       }
       return of(
diff --git a/src/viewerModule/threeSurfer/store/selectors.ts b/src/viewerModule/threeSurfer/store/selectors.ts
index 82c32604a57a26efac7881f9345fdb6c38cf9c2c..017d9aa8916e2024c4f21696b5fdb8eb8d9b7709 100644
--- a/src/viewerModule/threeSurfer/store/selectors.ts
+++ b/src/viewerModule/threeSurfer/store/selectors.ts
@@ -4,7 +4,7 @@ import { Store } from "./store"
 
 const selectStore = state => state[nameSpace] as Store
 
-export const getSelectedVolumeId = createSelector(
+export const getSelectedSurfaceVariant = createSelector(
   selectStore,
-  ({ selectedVolumeId }) => selectedVolumeId
+  ({ selectedSurfaceVariant }) => selectedSurfaceVariant
 )
diff --git a/src/viewerModule/threeSurfer/store/store.ts b/src/viewerModule/threeSurfer/store/store.ts
index b830d4278e88bfea95ca9a5f0697fb68f7db2171..713003dce599a80508661f9c672d2d3763cbc5ad 100644
--- a/src/viewerModule/threeSurfer/store/store.ts
+++ b/src/viewerModule/threeSurfer/store/store.ts
@@ -2,22 +2,22 @@ import { createReducer, on } from "@ngrx/store";
 import * as actions from "./actions"
 
 export type Store = {
-  selectedVolumeId: string
+  selectedSurfaceVariant: string
 }
 
 
 export const defaultStore: Store = {
-  selectedVolumeId: null
+  selectedSurfaceVariant: null
 }
 
 export const reducer = createReducer(
   defaultStore,
   on(
-    actions.selectVolumeById,
-    (state, { id }) => {
+    actions.selectSurfaceVariant,
+    (state, { variant }) => {
       return {
         ...state,
-        selectedVolumeId: id
+        selectedSurfaceVariant: variant
       }
     }
   )
diff --git a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
index f04ad6cc1b0a5b85875c6bc247150b737eb5605c..7d6634342b3daf28b948e97a7d6fcca9d6b9310f 100644
--- a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
+++ b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
@@ -1,7 +1,7 @@
 import { Component, Output, EventEmitter, ElementRef, OnDestroy, AfterViewInit, Inject, Optional, ChangeDetectionStrategy } from "@angular/core";
 import { EnumViewerEvt, IViewer, TViewerEvent } from "src/viewerModule/viewer.interface";
-import { combineLatest, Observable, Subject } from "rxjs";
-import { debounceTime, distinctUntilChanged, filter, map, shareReplay } from "rxjs/operators";
+import { combineLatest, from, merge, NEVER, Observable, Subject } from "rxjs";
+import { catchError, debounceTime, distinctUntilChanged, filter, map, scan, shareReplay, switchMap } from "rxjs/operators";
 import { ComponentStore } from "src/viewerModule/componentStore";
 import { select, Store } from "@ngrx/store";
 import { ClickInterceptor, CLICK_INTERCEPTOR_INJECTOR } from "src/util";
@@ -11,11 +11,11 @@ import { getUuid } from "src/util/fn";
 import { AUTO_ROTATE, TInteralStatePayload, ViewerInternalStateSvc } from "src/viewerModule/viewerInternalState.service";
 import { atlasAppearance, atlasSelection } from "src/state";
 import { ThreeSurferCustomLabelLayer, ThreeSurferCustomLayer, ColorMapCustomLayer } from "src/state/atlasAppearance/const";
-import { SapiRegionModel, SapiVolumeModel } from "src/atlasComponents/sapi";
-import { getRegionLabelIndex } from "src/viewerModule/nehuba/config.service";
+import { SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes"
 import { arrayEqual } from "src/util/array";
 import { ThreeSurferEffects } from "../store/effects";
 import { selectors, actions  } from "../store"
+import { SAPI } from "src/atlasComponents/sapi";
 
 const viewerType = 'ThreeSurfer'
 type TInternalState = {
@@ -30,7 +30,7 @@ type TInternalState = {
 const pZoomFactor = 5e3
 
 type THandlingCustomEv = {
-  regions: SapiRegionModel[]
+  regions: SxplrRegion[]
   error?: string
   evMesh?: {
     faceIndex: number
@@ -112,7 +112,7 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, AfterViewInit
   }> = {}
   private internalStateNext: (arg: TInteralStatePayload<TInternalState>) => void
 
-  private mouseoverRegions: SapiRegionModel[] = []
+  private mouseoverRegions: SxplrRegion[] = []
   
   private selectedRegions$ = this.store$.pipe(
     select(atlasSelection.selectors.selectedRegions)
@@ -136,8 +136,8 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, AfterViewInit
   /**
    * maps laterality to label index to sapi region
    */
-  private latLblIdxToRegionRecord: LateralityRecord<Record<number, SapiRegionModel>> = {}
-  private latLblIdxToRegionRecord$: Observable<LateralityRecord<Record<number, SapiRegionModel>>> = combineLatest([
+  private latLblIdxToRegionRecord: LateralityRecord<Record<number, SxplrRegion>> = {}
+  private latLblIdxToRegionRecord$: Observable<LateralityRecord<Record<number, SxplrRegion>>> = combineLatest([
     this.store$.pipe(
       atlasSelection.fromRootStore.distinctATP()
     ),
@@ -145,15 +145,18 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, AfterViewInit
       select(atlasSelection.selectors.selectedParcAllRegions),
     )
   ]).pipe(
-    map(([ { atlas, parcellation, template },  regions]) => {
-      const returnObj = {
-        'left': {} as Record<number, SapiRegionModel>,
-        'right': {} as Record<number, SapiRegionModel>
-      }
-      
-      for (const region of regions) {
-        const idx = getRegionLabelIndex(atlas, template, parcellation, region)
-        if (idx) {
+    switchMap(([ { parcellation, template },  regions]) => {
+      return merge(
+        ...regions.map(region => 
+          from(this.sapi.getRegionLabelIndices(template, parcellation, region)).pipe(
+            map(label => ({ region, label })),
+            catchError(() => NEVER)
+          )
+        )
+      ).pipe(
+        scan((acc, curr) => {
+          const { label, region } = curr
+          
           let key : 'left' | 'right'
           if ( /left/i.test(region.name) ) key = 'left'
           if ( /right/i.test(region.name) ) key = 'right'
@@ -162,12 +165,17 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, AfterViewInit
              * TODO
              * there are ... more regions than expected, which has label index without laterality
              */
-            continue
+            return { ...acc }
           }
-          returnObj[key][idx] = region
-        }
-      }
-      return returnObj
+          return {
+            ...acc,
+            [key]: {
+              ...acc[key],
+              [label]: region
+            }
+          }
+        }, {'left': {}, 'right': {}})
+      )
     })
   )
 
@@ -185,11 +193,11 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, AfterViewInit
    */
   private showDelineation: boolean = true
 
-  public threeSurferSurfaceLayers$ = this.effect.onATPDebounceThreeSurferLayers$.pipe(
-    map(({ surfaces }) => surfaces)
+  public threeSurferSurfaceVariants$ = this.effect.onATPDebounceThreeSurferLayers$.pipe(
+    map(({ surfaces }) => surfaces.reduce((acc, val) => acc.includes(val.variant) ? acc : [...acc, val.variant] ,[] as string[]))
   )
   public selectedSurfaceLayerId$ = this.store$.pipe(
-    select(selectors.getSelectedVolumeId)
+    select(selectors.getSelectedSurfaceVariant)
   )
 
   constructor(
@@ -197,6 +205,7 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, AfterViewInit
     private el: ElementRef,
     private store$: Store,
     private navStateStoreRelay: ComponentStore<{ perspectiveOrientation: [number, number, number, number], perspectiveZoom: number }>,
+    private sapi: SAPI,
     private snackbar: MatSnackBar,
     @Optional() intViewerStateSvc: ViewerInternalStateSvc,
     @Optional() @Inject(CLICK_INTERCEPTOR_INJECTOR) clickInterceptor: ClickInterceptor,
@@ -369,7 +378,7 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, AfterViewInit
   }
 
   private tsRef: TThreeSurfer
-  private selectedRegions: SapiRegionModel[] = []
+  private selectedRegions: SxplrRegion[] = []
 
   private relayStoreLock: () => void = null
   private tsRefInitCb: ((tsRef: any) => void)[] = []
@@ -673,10 +682,10 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, AfterViewInit
     }
   }
 
-  switchSurfaceLayer(layer: SapiVolumeModel): void{
+  switchSurfaceLayer(variant: string): void{
     this.store$.dispatch(
-      actions.selectVolumeById({
-        id: layer["@id"]
+      actions.selectSurfaceVariant({
+        variant
       })
     )
   }
diff --git a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html
index 2a9703618ce87100f39bbd6470f88d4cd5bd5a57..fcef001a1ff56073a379a11d82573f85b109f069 100644
--- a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html
+++ b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html
@@ -29,16 +29,16 @@
   </div>
   <mat-divider></mat-divider>
 
-  <button *ngFor="let surfaceLayer of threeSurferSurfaceLayers$ | async"
+  <button *ngFor="let surfaceLayer of (threeSurferSurfaceVariants$ | async)"
     mat-menu-item
     (click)="switchSurfaceLayer(surfaceLayer)"
     color="primary">
     <mat-icon
       fontSet="fas"
-      [fontIcon]="surfaceLayer['@id'] === (selectedSurfaceLayerId$ | async) ? 'fa-circle' : 'fa-none'">
+      [fontIcon]="surfaceLayer === (selectedSurfaceLayerId$ | async) ? 'fa-circle' : 'fa-none'">
     </mat-icon>
     <span>
-      {{ surfaceLayer.metadata.shortName }}
+      {{ surfaceLayer }}
     </span>
   </button>
 </mat-menu>
diff --git a/src/viewerModule/threeSurfer/types.ts b/src/viewerModule/threeSurfer/types.ts
index 9a15c5642d7c04e5c5057a412532eaabe51be8fe..023d307206298a371545b78dac886a46d93d18bc 100644
--- a/src/viewerModule/threeSurfer/types.ts
+++ b/src/viewerModule/threeSurfer/types.ts
@@ -1,4 +1,4 @@
-import { SapiRegionModel } from 'src/atlasComponents/sapi'
+import { SxplrRegion } from 'src/atlasComponents/sapi/sxplrTypes'
 
 export type TThreeSurferMesh = {
   colormap: string
@@ -6,11 +6,25 @@ export type TThreeSurferMesh = {
   hemisphere: 'left' | 'right'
 }
 
+export type TThreeMesh = {
+  id: string
+  variant: string
+  space: string
+  url: string
+  laterality: 'left' | 'right'
+}
+
+export type TThreeMeshLabel = {
+  url: string
+  space: string
+  laterality: 'left' | 'right'
+}
+
 export type TThreeSurferContextInfo = {
   position: number[]
   faceIndex: number
   vertexIndices: number[]
   fsversion: string
-  regions: SapiRegionModel[]
+  regions: SxplrRegion[]
   error?: string
 }
diff --git a/src/viewerModule/viewer.common.effects.ts b/src/viewerModule/viewer.common.effects.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4aa169bb256ca4f14c8d2cd28a0ba971575f0d44
--- /dev/null
+++ b/src/viewerModule/viewer.common.effects.ts
@@ -0,0 +1,29 @@
+import { Injectable } from "@angular/core";
+import { createEffect } from "@ngrx/effects";
+import { select, Store } from "@ngrx/store";
+import { of } from "rxjs";
+import { distinctUntilChanged, map, switchMap } from "rxjs/operators";
+import * as atlasSelection from "src/state/atlasSelection";
+import * as atlasAppearance from "src/state/atlasAppearance"
+import { SAPI } from "src/atlasComponents/sapi";
+
+@Injectable()
+export class ViewerCommonEffects {
+  onATPSetUseViewer$ = createEffect(() => this.store.pipe(
+    select(atlasSelection.selectors.standaloneVolumes),
+    distinctUntilChanged((o, n) => o?.length === n?.length),
+    switchMap(volumes => volumes?.length > 0
+      ? of( atlasAppearance.const.useViewer.NEHUBA )
+      : this.store.pipe(
+        select(atlasSelection.selectors.selectedTemplate),
+        distinctUntilChanged((o, n) => o?.id === n?.id),
+        switchMap(template => this.sapi.useViewer(template))
+      )
+    ),
+    map(viewer => atlasAppearance.actions.setUseViewer({ viewer }))
+  ))
+
+  constructor(private store: Store, private sapi: SAPI){
+
+  }
+}
diff --git a/src/viewerModule/viewerCmp/viewerCmp.component.ts b/src/viewerModule/viewerCmp/viewerCmp.component.ts
index cef42ef50ec244b4f503d545935bc9548d167d4d..b19b8224e9b8ea1117baacc101101e233564b184 100644
--- a/src/viewerModule/viewerCmp/viewerCmp.component.ts
+++ b/src/viewerModule/viewerCmp/viewerCmp.component.ts
@@ -1,20 +1,17 @@
 import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, TemplateRef, ViewChild, ViewContainerRef } from "@angular/core";
 import { select, Store } from "@ngrx/store";
-import { combineLatest, Observable, of, Subscription } from "rxjs";
-import { debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap } from "rxjs/operators";
+import { combineLatest, Observable, Subscription } from "rxjs";
+import { debounceTime, map, shareReplay, startWith } from "rxjs/operators";
 import { CONST, ARIA_LABELS, QUICKTOUR_DESC } from 'common/constants'
 import { animate, state, style, transition, trigger } from "@angular/animations";
 import { IQuickTourData } from "src/ui/quickTour";
 import { EnumViewerEvt, TContextArg, TSupportedViewers, TViewerEvent } from "../viewer.interface";
 import { ContextMenuService, TContextMenuReg } from "src/contextMenuModule";
 import { DialogService } from "src/services/dialogService.service";
-import {SAPI, SapiAtlasModel, SapiRegionModel} from "src/atlasComponents/sapi";
-import { atlasSelection, userInteraction, } from "src/state";
-import { SapiSpatialFeatureModel, SapiFeatureModel, SapiParcellationModel, SapiSpaceModel } from "src/atlasComponents/sapi/type";
-import { getUuid } from "src/util/fn";
-import { environment } from "src/environments/environment"
-import { SapiViewsFeaturesVoiQuery } from "src/atlasComponents/sapiViews/features";
-import { SapiViewsCoreSpaceBoundingBox } from "src/atlasComponents/sapiViews/core";
+import { SAPI } from "src/atlasComponents/sapi";
+import { Feature, SxplrAtlas, SxplrRegion } from "src/atlasComponents/sapi/sxplrTypes"
+import { atlasAppearance, atlasSelection, userInteraction } from "src/state";
+import { SxplrTemplate } from "src/atlasComponents/sapi/sxplrTypes";
 
 @Component({
   selector: 'iav-cmp-viewer-container',
@@ -65,17 +62,7 @@ export class ViewerCmp implements OnDestroy {
 
   public CONST = CONST
   public ARIA_LABELS = ARIA_LABELS
-  public VOI_QUERY_FLAG = environment.EXPERIMENTAL_FEATURE_FLAG
-
-  @ViewChild('genericInfoVCR', { read: ViewContainerRef })
-  genericInfoVCR: ViewContainerRef
-
-  @ViewChild('voiFeatures', { read: SapiViewsFeaturesVoiQuery })
-  voiQueryDirective: SapiViewsFeaturesVoiQuery
-
-  @ViewChild('bbox', { read: SapiViewsCoreSpaceBoundingBox })
-  boundingBoxDirective: SapiViewsCoreSpaceBoundingBox
-
+  
   public quickTourRegionSearch: IQuickTourData = {
     order: 7,
     description: QUICKTOUR_DESC.REGION_SEARCH,
@@ -94,7 +81,7 @@ export class ViewerCmp implements OnDestroy {
     shareReplay(1)
   )
 
-  public fetchedAtlases$: Observable<SapiAtlasModel[]> = this.sapi.atlases$
+  public fetchedAtlases$: Observable<SxplrAtlas[]> = this.sapi.atlases$
 
   public selectedAtlas$ = this.selectedATP.pipe(
     map(({ atlas }) => atlas)
@@ -114,59 +101,24 @@ export class ViewerCmp implements OnDestroy {
     select(atlasSelection.selectors.selectedParcAllRegions)
   )
 
-  public isStandaloneVolumes$ = this.store$.pipe(
-    select(atlasSelection.selectors.standaloneVolumes),
-    map(v => v.length > 0)
-  )
-
   public viewerMode$: Observable<string> = this.store$.pipe(
     select(atlasSelection.selectors.viewerMode),
     shareReplay(1),
   )
 
-  public useViewer$: Observable<TSupportedViewers | 'notsupported'> = combineLatest([
-    this.store$.pipe(
-      atlasSelection.fromRootStore.distinctATP(),
-      switchMap(({ atlas, template }) => atlas && template
-        ? this.sapi.getSpace(atlas["@id"], template["@id"]).getVolumes()
-        : of(null)),
-      map(vols => {
-        if (!vols) return null
-        const flags = {
-          isNehuba: false,
-          isThreeSurfer: false
-        }
-        if (vols.find(vol => vol.data.volume_type === "neuroglancer/precomputed")) {
-          flags.isNehuba = true
-        }
-
-        if (vols.find(vol => vol.data.volume_type === "gii")) {
-          flags.isThreeSurfer = true
-        }
-        return flags
-      })
-    ),
-    this.isStandaloneVolumes$,
-  ]).pipe(
-    distinctUntilChanged(([ prevFlags, prevIsSv ], [  currFlags, currIsSv ]) => {
-      const same = prevIsSv === currIsSv
-      && prevFlags?.isNehuba === currFlags?.isNehuba
-      && prevFlags?.isThreeSurfer === currFlags?.isThreeSurfer
-      return same
-    }),
-    map<unknown, TSupportedViewers | 'notsupported'>(([flags, isSv]) => {
-      if (isSv) return 'nehuba'
-      if (!flags) return null
-      if (flags.isNehuba) return 'nehuba'
-      if (flags.isThreeSurfer) return 'threeSurfer'
-      return 'notsupported'
-    }),
-    shareReplay(1),
+  public useViewer$: Observable<TSupportedViewers | 'notsupported'> = this.store$.pipe(
+    select(atlasAppearance.selectors.useViewer),
+    map(useviewer => {
+      if (useviewer === "NEHUBA") return "nehuba"
+      if (useviewer === "THREESURFER") return "threeSurfer"
+      if (useviewer === "NOT_SUPPORTED") return "notsupported"
+      return null
+    })
   )
 
   public viewerCtx$ = this.ctxMenuSvc.context$
 
-  public selectedFeature$: Observable<SapiFeatureModel> = this.store$.pipe(
+  public selectedFeature$: Observable<Feature> = this.store$.pipe(
     select(userInteraction.selectors.selectedFeature)
   )
 
@@ -193,7 +145,7 @@ export class ViewerCmp implements OnDestroy {
   private viewerStatusRegionCtxMenu: TemplateRef<any>
 
   public context: TContextArg<TSupportedViewers>
-  private templateSelected: SapiSpaceModel
+  private templateSelected: SxplrTemplate
 
   constructor(
     private store$: Store<any>,
@@ -227,7 +179,7 @@ export class ViewerCmp implements OnDestroy {
           message.push(`- _${atlas.name}_`)
         }
         if (checkPrerelease(tmpl)) {
-          message.push(`- _${tmpl.fullName}_`)
+          message.push(`- _${tmpl.name}_`)
         }
         if (checkPrerelease(parc)) {
           message.push(`- _${parc.name}_`)
@@ -311,7 +263,7 @@ export class ViewerCmp implements OnDestroy {
     )
   }
 
-  public selectRoi(roi: SapiRegionModel): void {
+  public selectRoi(roi: SxplrRegion): void {
     this.store$.dispatch(
       atlasSelection.actions.selectRegion({
         region: roi
@@ -347,16 +299,8 @@ export class ViewerCmp implements OnDestroy {
           this.store$.dispatch(
             userInteraction.actions.mouseoverPosition({
               position: {
-                "@id": getUuid(),
-                "@type": "https://openminds.ebrains.eu/sands/CoordinatePoint",
-                coordinates: nav.position.map(p => {
-                  return {
-                    value: p,
-                  }
-                }),
-                coordinateSpace: {
-                  '@id': this.templateSelected["@id"]
-                }
+                loc: nav.position as [number, number, number],
+                space: this.templateSelected
               }
             })
           )
@@ -371,19 +315,7 @@ export class ViewerCmp implements OnDestroy {
     this.ctxMenuSvc.dismissCtxMenu()
   }
 
-  showDataset(feat: SapiFeatureModel): void {
-    if ((feat as SapiSpatialFeatureModel).location) {
-      const feature = feat as SapiSpatialFeatureModel
-      this.store$.dispatch(
-        atlasSelection.actions.navigateTo({
-          navigation: {
-            orientation: [0, 0, 0, 1],
-            position: feature.location.center.coordinates.map(v => v.value * 1e6)
-          },
-          animation: true
-        })
-      )
-    }
+  showDataset(feat: Feature): void {
     
     this.store$.dispatch(
       userInteraction.actions.showFeature({
diff --git a/src/viewerModule/viewerCmp/viewerCmp.style.css b/src/viewerModule/viewerCmp/viewerCmp.style.css
index ce7549bda645ca175e0c23c25f204291e3847db9..8de1bd29729348a03b589d77bc98514f95eeb78f 100644
--- a/src/viewerModule/viewerCmp/viewerCmp.style.css
+++ b/src/viewerModule/viewerCmp/viewerCmp.style.css
@@ -55,16 +55,6 @@ mat-drawer
   padding-top: 5rem;
 }
 
-sxplr-sapiviews-core-region-region-chip
-{
-  margin-left:-5rem;
-}
-
-sxplr-sapiviews-core-region-region-chip [prefix]
-{
-  padding-left:5rem;
-}
-
 .auto-complete-container
 {
   display: flex;
@@ -140,3 +130,26 @@ mat-list[dense].contextual-block
   align-items: flex-end;
   justify-content: flex-end;
 }
+
+.loading-atlas-text-container
+{
+  display: inline-flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+}
+
+sxplr-smart-chip
+{
+  margin-left: -2.5rem;
+}
+
+sxplr-smart-chip .regionname
+{
+  margin-left: 0.5rem;
+}
+
+sxplr-smart-chip [mat-icon-button]
+{
+  margin-right: -1.5rem;
+}
diff --git a/src/viewerModule/viewerCmp/viewerCmp.template.html b/src/viewerModule/viewerCmp/viewerCmp.template.html
index 6774d54ae5b2d38cf04d0eecf13412f0ca98092e..f71a92fe0c1012d5811c9b9fa13d691fa4e1ffb0 100644
--- a/src/viewerModule/viewerCmp/viewerCmp.template.html
+++ b/src/viewerModule/viewerCmp/viewerCmp.template.html
@@ -5,7 +5,7 @@
   <div class="floating-ui">
 
     <div *ngIf="(media.mediaBreakPoint$ | async) < 2"
-      class="fixed-bottom sxplr-pe-none mb-2 d-flex justify-content-center">
+      class="fixed-bottom sxplr-pe-none sxplr-mb-10 d-flex justify-content-center">
       <logo-container></logo-container>
     </div>
 
@@ -29,16 +29,6 @@
 
         </mat-list-item>
 
-        <ng-template [ngIf]="voiQueryDirective && (voiQueryDirective.onhover | async)" let-feat>
-          <mat-list-item>
-            <mat-icon
-              fontSet="fas"
-              fontIcon="fa-database"
-              mat-list-icon>
-            </mat-icon>
-            <div matLine>{{ feat?.metadata?.fullName || 'Feature' }}</div>
-          </mat-list-item>
-        </ng-template>
       </mat-list>
       <!-- TODO Potentially implementing plugin contextual info -->
     </div>
@@ -230,11 +220,9 @@
       <ng-container *ngTemplateOutlet="autocompleteTmpl; context: { showTour: true }">
       </ng-container>
       
-      <ng-template [ngIf]="VOI_QUERY_FLAG">
-        <div *ngIf="!((selectedRegions$ | async)[0])" class="sxplr-p-2 w-100">
-          <ng-container *ngTemplateOutlet="spatialFeatureListViewTmpl"></ng-container>
-        </div>
-      </ng-template>
+      <div *ngIf="!((selectedRegions$ | async)[0])" class="sxplr-p-1 w-100">
+        <ng-container *ngTemplateOutlet="spatialFeatureListTmpl"></ng-container>
+      </div>
     </div>
 
     <!-- such a gross implementation -->
@@ -267,17 +255,6 @@
   
   </div>
 
-  <!-- tab toggling hide/show of min search tray -->
-  <div class="tab-toggle-container d-inline-block v-align-top">
-    <ng-container *ngTemplateOutlet="tabTmpl; context: {
-      isOpen: minTrayVisSwitch.switchState$ | async,
-      regionSelected: selectedRegions$ | async,
-      click: minTrayVisSwitch.toggle.bind(minTrayVisSwitch),
-      badge: voiQueryDirective && (voiQueryDirective.features$ | async).length || null
-    }">
-    </ng-container>
-  </div>
-
 </ng-template>
 
 
@@ -403,31 +380,37 @@
     sxplr-pe-all
     sxplr-of-x-auto
     sxplr-of-y-hidden
-    sxplr-align-items-center">
+    sxplr-align-items-stretch">
     
     <sxplr-wrapper-atp-selector class="sxplr-z-2">
     </sxplr-wrapper-atp-selector>
 
     <!-- selected region chip -->
-    <sxplr-sapiviews-core-region-region-chip
-      *ngFor="let region of selectedRegions$ | async"
-      class="sxplr-pe-all sxplr-z-1 sxplr-mr-1"
-      (sxplr-sapiviews-core-region-region-chip-clicked)="showFullSideNav()"
-      [sxplr-sapiviews-core-region-atlas]="selectedAtlas$ | async"
-      [sxplr-sapiviews-core-region-template]="templateSelected$ | async"
-      [sxplr-sapiviews-core-region-parcellation]="parcellationSelected$ | async"
-      [sxplr-sapiviews-core-region-region]="region">
-
-      <div prefix>
-      </div>
+    <ng-template ngFor [ngForOf]="selectedRegions$ | async" let-region>
+      <sxplr-smart-chip
+        [noMenu]="true"
+        [color]="sapiViewsCoreRegion.regionRgbString"
+        (click)="showFullSideNav()"
+        sxplr-sapiviews-core-region
+        [sxplr-sapiviews-core-region-atlas]="selectedAtlas$ | async"
+        [sxplr-sapiviews-core-region-template]="templateSelected$ | async"
+        [sxplr-sapiviews-core-region-parcellation]="parcellationSelected$ | async"
+        [sxplr-sapiviews-core-region-region]="region"
+        [sxplr-sapiviews-core-region-detail-flag]="true"
+        #sapiViewsCoreRegion="sapiViewsCoreRegion">
+        <ng-template sxplrSmartChipContent>
+          <span class="regionname">
+            {{ region.name }}
+          </span>
+          <button class="sxplr-mr-n3"
+            mat-icon-button
+            (click)="clearRoi()">
+            <i class="fas fa-times"></i>
+          </button>
+        </ng-template>
+      </sxplr-smart-chip>
 
-      <div suffix class="region-chip-suffix">
-        <button mat-icon-button iav-stop="mousedown click"
-          (click)="clearRoi()">
-          <i class="fas fa-times"></i>
-        </button>
-      </div>
-    </sxplr-sapiviews-core-region-region-chip>
+    </ng-template>
   </div>
 
 </ng-template>
@@ -447,18 +430,31 @@
       </iav-cmp-viewer-nehuba-glue>
 
       <!-- three surfer (free surfer viewer) -->
-      <three-surfer-glue-cmp class="d-block w-100 h-100 position-absolute left-0 tosxplr-p-0"
+      <tmp-threesurfer-lifecycle class="d-block w-100 h-100 position-absolute left-0 tosxplr-p-0"
         *ngSwitchCase="'threeSurfer'"
         (viewerEvent)="handleViewerEvent($event)">
-      </three-surfer-glue-cmp>
+      </tmp-threesurfer-lifecycle>
 
       <!-- if not supported, show not supported message -->
       <div *ngSwitchCase="'notsupported'">Template not supported by any of the viewers</div>
 
       <!-- by default, show splash screen -->
-      <div *ngSwitchDefault>
-        <ui-splashscreen class="position-absolute left-0 tosxplr-p-0">
-        </ui-splashscreen>
+      <div class="sxplr-h-100" *ngSwitchDefault>
+        <ng-template [ngIf]="(selectedAtlas$ | async)" [ngIfElse]="splashScreenTmpl">
+          <div class="center-a-div">
+            <div class="loading-atlas-text-container">
+              <spinner-cmp class="fs-200"></spinner-cmp>
+              <span>
+                Loading 
+                {{ (selectedAtlas$ | async).name }}
+              </span>
+            </div>
+          </div>
+        </ng-template>
+        <ng-template #splashScreenTmpl>
+          <ui-splashscreen class="position-absolute left-0 tosxplr-p-0">
+          </ui-splashscreen>
+        </ng-template>
       </div>
     </ng-container>
 
@@ -796,7 +792,7 @@
 <!-- context menu template -->
 <ng-template #viewerCtxMenuTmpl let-tmplRefs="tmplRefs">
   <mat-card class="sxplr-p-0 d-flex flex-column"
-    [iav-key-listener]="[{type: 'keydown', target: 'document', capture: true}]"
+    [iav-key-listener]="[{type: 'keydown', target: 'document', capture: true, key: 'Esc'}]"
     (iav-key-event)="disposeCtxMenu()"
     (iav-outsideClick)="disposeCtxMenu()">
     <mat-card-content *ngFor="let tmplRef of tmplRefs"
@@ -910,8 +906,8 @@
   let-backCb="backCb"
   let-feature="feature">
 
-  <sxplr-sapiviews-core-datasets-dataset class="sxplr-z-2 mat-elevation-z2"
-    [sxplr-sapiviews-core-datasets-dataset-input]="feature">
+  <sxplr-feature-view class="sxplr-z-2 mat-elevation-z2"
+    [feature]="feature">
 
     <div header>
       <!-- back btn -->
@@ -928,15 +924,8 @@
       </button>
     </div>
 
-  </sxplr-sapiviews-core-datasets-dataset>
+  </sxplr-feature-view>
   
-  <sxplr-sapiviews-features-entry
-    [sxplr-sapiviews-features-entry-atlas]="selectedAtlas$ | async"
-    [sxplr-sapiviews-features-entry-space]="templateSelected$ | async"
-    [sxplr-sapiviews-features-entry-parcellation]="parcellationSelected$ | async"
-    [sxplr-sapiviews-features-entry-region]="(selectedRegions$ | async)[0]"
-    [sxplr-sapiviews-features-entry-feature]="feature">
-  </sxplr-sapiviews-features-entry>
 </ng-template>
 
 <!-- general feature tmpl -->
@@ -962,54 +951,77 @@
 
 </ng-template>
 
-<ng-template #spatialFeatureListViewTmpl>
-  <div *ngIf="voiQueryDirective && (voiQueryDirective.busy$ | async); else notBusyTmpl" class="fs-200">
-    <spinner-cmp></spinner-cmp>
-  </div>
-
-  <ng-template #notBusyTmpl>
-    <mat-card *ngIf="voiQueryDirective && (voiQueryDirective.features$ | async).length > 0" class="pe-all mat-elevation-z4">
+<!-- spatial search tmpls -->
+<ng-template #spatialFeatureListTmpl>
+  <mat-card class="sxplr-pe-all"
+    [ngClass]="{
+      'sxplr-d-none': !(voiSwitch.switchState$ | async) || (voiFeatureEntryCmp.totals$ | async) === 0
+    }">
+    <mat-card-header>
       <mat-card-title>
-        Volumes of interest
+        Anchored to current view
       </mat-card-title>
-      <mat-card-subtitle class="overflow-hidden">
-        <!-- TODO in future, perhaps encapsulate this as a component? seems like a nature fit in sapiView/space/boundingbox -->
-        <ng-template let-bbox [ngIf]="boundingBoxDirective && (boundingBoxDirective.bbox$ | async | getProperty : 'bbox')" [ngIfElse]="bboxFallbackTmpl">
-          Bounding box: {{ bbox[0] | numbers | json }} - {{ bbox[1] | numbers | json }} mm
-        </ng-template>
-        <ng-template #bboxFallbackTmpl>
-          Found nearby
+      <mat-card-subtitle>
+        <div>
+          {{ templateSelected$ | async | getProperty : 'name' }}
+        </div>
+        <ng-template [ngIf]="bbox.bbox$ | async | getProperty : 'bbox'" let-bbox>
+          <div>
+            from {{ bbox[0] | numbers | addUnitAndJoin : '' }}
+          </div>
+          <div>
+            to {{ bbox[1] | numbers | addUnitAndJoin : '' }}
+          </div>
         </ng-template>
-        
       </mat-card-subtitle>
+    </mat-card-header>
+  </mat-card>
 
-      <mat-divider></mat-divider>
+  <sxplr-feature-entry
+    [ngClass]="(voiSwitch.switchState$ | async) ? 'sxplr-d-block' : 'sxplr-d-none'"
+    class="sxplr-pe-all mat-elevation-z8"
+    [template]="templateSelected$ | async"
+    [bbox]="bbox.bbox$ | async | getProperty : 'bbox'"
+    #voiFeatureEntryCmp="featureEntryCmp">
+  </sxplr-feature-entry>
 
-      <ng-template [ngIf]="voiQueryDirective">
+  <button mat-raised-button
+    [ngClass]="{
+      'sxplr-d-none': (voiFeatureEntryCmp.totals$ | async) === 0
+    }"
+    class="sxplr-pe-all sxplr-w-100"
+    iav-switch
+    [iav-switch-state]="false"
+    #voiSwitch="iavSwitch"
+    (click)="voiSwitch.toggle()">
 
-        <div *ngFor="let feature of voiQueryDirective.features$ | async"
-          mat-ripple
-          (click)="showDataset(feature)"
-          class="sxplr-custom-cmp hoverable w-100 overflow-hidden text-overflow-ellipses">
-          {{ feature.metadata.fullName }}
-        </div>
-      </ng-template>
-    </mat-card>
-  </ng-template>
+    <ng-template [ngIf]="voiSwitch.switchState$ | async" [ngIfElse]="chevronCollapseTmpl">
+      <i class="fas fa-chevron-up"></i>
+      <span>
+        Collapse
+      </span>
+    </ng-template>
+
+    <ng-template #chevronCollapseTmpl>
+      <i class="fas fa-chevron-down"></i>
+      <span>
+        Explore {{ voiFeatureEntryCmp.totals$ | async }} spatial features
+      </span>
+    </ng-template>
+  </button>
+  <div
+    *ngIf="voiSwitch.switchState$ | async"
+    voiBbox
+    [features]="voiFeatureEntryCmp.features$ | async">
+
+  </div>
 </ng-template>
 
-<div class="d-none"
-  *ngIf="VOI_QUERY_FLAG"
+<div
   sxplr-sapiviews-core-space-boundingbox
   [sxplr-sapiviews-core-space-boundingbox-atlas]="selectedAtlas$ | async"
   [sxplr-sapiviews-core-space-boundingbox-space]="templateSelected$ | async"
   [sxplr-sapiviews-core-space-boundingbox-spec]="viewerCtx$ | async | nehubaVCtxToBbox"
-  #bbox="sxplrSapiViewsCoreSpaceBoundingBox"
-  sxplr-sapiviews-features-voi-query
-  [sxplr-sapiviews-features-voi-query-atlas]="selectedAtlas$ | async"
-  [sxplr-sapiviews-features-voi-query-space]="templateSelected$ | async"
-  [sxplr-sapiviews-features-voi-query-bbox]="bbox.bbox$ | async | getProperty : 'bbox'"
-  (sxplr-sapiviews-features-voi-query-onclick)="showDataset($event)"
-  #voiFeatures="sxplrSapiViewsFeaturesVoiQuery">
-
+  #bbox="sxplrSapiViewsCoreSpaceBoundingBox">
 </div>
+
diff --git a/tsconfig.json b/tsconfig.json
index 7e2716b1f639eb80fe50f7ac5f3842c1a0ccbe18..bfd3effbebe1bbe4804212fd1188169c72d3937e 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -22,6 +22,7 @@
   "angularCompilerOptions":{
     "fullTemplateTypeCheck": true,
     "strictInjectionParameters": true,
-    "annotateForClosureCompiler" : true
+    "annotateForClosureCompiler" : true,
+    "strictTemplates": true
   }
 }
\ No newline at end of file