diff --git a/src/routerModule/router.service.spec.ts b/src/routerModule/router.service.spec.ts
index ef6505f89bef4d10355fe8c817c61fdd9ec3c17f..f389f56d2c428eacf7549a3af4ffcd75956fa179 100644
--- a/src/routerModule/router.service.spec.ts
+++ b/src/routerModule/router.service.spec.ts
@@ -137,23 +137,29 @@ describe('> router.service.ts', () => {
           router = TestBed.inject(Router)
           router.navigate(['foo', 'bar'])
   
-          TestBed.inject(RouterService)
+          const service = TestBed.inject(RouterService)
   
           tick()
   
           expect(cvtFullRouteToStateSpy).toHaveBeenCalledWith(
-            router.parseUrl('/foo/bar'), {}
+            router.parseUrl('/foo/bar'), {}, service['logError']
           )
   
           discardPeriodicTasks()
   
         }))
 
-        it('> calls cvtStateToHashedRoutes with returned states', fakeAsync(() => {
+        it('> calls cvtStateToHashedRoutes with current state', fakeAsync(() => {
           const fakeParsedState = {
             bizz: 'buzz'
           }
+          const fakeState = {
+            foo: 'bar'
+          }
           cvtFullRouteToStateSpy.and.callFake(() => fakeParsedState)
+          const store = TestBed.inject(MockStore)
+          store.setState(fakeState)
+
           cvtStateToHashedRoutesSpy.and.callFake(() => {
             return ['bizz', 'buzz']
           })
@@ -164,7 +170,7 @@ describe('> router.service.ts', () => {
   
           tick()
   
-          expect(cvtStateToHashedRoutesSpy).toHaveBeenCalledWith(fakeParsedState)
+          expect(cvtStateToHashedRoutesSpy).toHaveBeenCalledWith(fakeState)
 
           discardPeriodicTasks()
         }))
@@ -214,29 +220,7 @@ describe('> router.service.ts', () => {
             discardPeriodicTasks()
           }))
 
-          it('> ... returns same value, but firstRenderFlag is true, dispatches', fakeAsync(() => {
-            const fakeParsedState = {
-              bizz: 'buzz'
-            }
-            cvtFullRouteToStateSpy.and.callFake(() => fakeParsedState)
-            cvtStateToHashedRoutesSpy.and.callFake(() => {
-              return ['foo', 'bar']
-            })
-            router = TestBed.inject(Router)
-            router.navigate(['foo', 'bar'])
-    
-            TestBed.inject(RouterService)
-            const store = TestBed.inject(MockStore)
-            const dispatchSpy = spyOn(store, 'dispatch')
-            
-            tick()
-
-            expect(dispatchSpy).toHaveBeenCalled()
-    
-            discardPeriodicTasks()
-          }))
-
-          it('> ... returns same value, but firstRenderFlag is false, does not dispatches', fakeAsync(() => {
+          it('> ... returns same value, does not dispatches', fakeAsync(() => {
             const fakeParsedState = {
               bizz: 'buzz'
             }
diff --git a/src/routerModule/router.service.ts b/src/routerModule/router.service.ts
index 30f4b25358f4206494b8769f06d6bb6a641f73aa..b4084a922c7405587b472f5400559503e8c8024c 100644
--- a/src/routerModule/router.service.ts
+++ b/src/routerModule/router.service.ts
@@ -19,6 +19,10 @@ export class RouterService {
 
   private allFetchingReady$: Observable<boolean>
 
+  private logError(...e: any[]) {
+    console.log(...e)
+  }
+
   constructor(
     router: Router,
     pureConstantService: PureContantService,
@@ -67,8 +71,13 @@ export class RouterService {
       )
     ).subscribe(([ev, state]: [NavigationEnd, any]) => {
       const fullPath = ev.urlAfterRedirects
-      const stateFromRoute = cvtFullRouteToState(router.parseUrl(fullPath), state, (...e: any[]) => console.log(...e))
-      const routeFromState = cvtStateToHashedRoutes(state)
+      const stateFromRoute = cvtFullRouteToState(router.parseUrl(fullPath), state, this.logError)
+      let routeFromState: string[]
+      try {
+        routeFromState = cvtStateToHashedRoutes(state)
+      } catch (_e) {
+        routeFromState = []
+      }
 
       if ( fullPath !== `/${routeFromState.join('/')}`) {
         store$.dispatch(
diff --git a/src/routerModule/util.ts b/src/routerModule/util.ts
index 9c3cd4412311860a6af5cd13c34d0df5d2d35083..319fdbcf0ca44d89f63e0b99396a2ab26c393ca7 100644
--- a/src/routerModule/util.ts
+++ b/src/routerModule/util.ts
@@ -152,7 +152,7 @@ function parseSearchParamForTemplateParcellationRegion(obj: TUrlPathObj, state:
 
 export const cvtFullRouteToState = (fullPath: UrlTree, state: any, _warnCb?: Function) => {
 
-  let warnCb = _warnCb || ((...e: any[]) => console.warn(...e))
+  const warnCb = _warnCb || ((...e: any[]) => console.warn(...e))
   const pathFragments: UrlSegment[] = fullPath.root.hasChildren()
     ? fullPath.root.children['primary'].segments
     : []
@@ -291,11 +291,11 @@ export const cvtFullRouteToState = (fullPath: UrlTree, state: any, _warnCb?: Fun
    */
   (() => {
 
-    const viewreHelperState = returnState[viewerStateHelperStoreName]
+    const viewreHelperState = returnState[viewerStateHelperStoreName] || {}
     const { templateSelected, parcellationSelected } = returnState['viewerState']
     const { fetchedAtlases, ...rest } = viewreHelperState
     
-    const selectedAtlas = fetchedAtlases.find(a => a['templateSpaces'].find(t => t['@id'] === (templateSelected && templateSelected['@id'])))
+    const selectedAtlas = (fetchedAtlases || []).find(a => a['templateSpaces'].find(t => t['@id'] === (templateSelected && templateSelected['@id'])))
     
     const overlayLayer = selectedAtlas && selectedAtlas['parcellations'].find(p => p['@id'] === (parcellationSelected && parcellationSelected['@id']))