diff --git a/client/src/app/admin/admin-routing.module.ts b/client/src/app/admin/admin-routing.module.ts
index 6fa41e51897b04d580ea504f2da972238d9eed53..5f27ff073e640de6a10a36a910933b7ebf8038db 100644
--- a/client/src/app/admin/admin-routing.module.ts
+++ b/client/src/app/admin/admin-routing.module.ts
@@ -31,7 +31,7 @@ import { SettingsComponent } from './containers/settings/settings.component';
 
 const routes: Routes = [
     { 
-        path: 'admin', component: AdminComponent, children: [
+        path: '', component: AdminComponent, children: [
             { path: '', redirectTo: 'instance-list', pathMatch: 'full' },
             { path: 'instance-list', component: InstanceListComponent },
             { path: 'new-instance', component: NewInstanceComponent },
@@ -56,7 +56,7 @@ const routes: Routes = [
 ];
 
 @NgModule({
-    imports: [RouterModule.forRoot(routes)],
+    imports: [RouterModule.forChild(routes)],
     exports: [RouterModule]
 })
 export class AdminRoutingModule { }
diff --git a/client/src/app/admin/admin.component.ts b/client/src/app/admin/admin.component.ts
index a66e4f324e6afb0e123c825b0e06dd1ec73d195d..18364e145b246373d137a3a0d84bcfa84ec667d7 100644
--- a/client/src/app/admin/admin.component.ts
+++ b/client/src/app/admin/admin.component.ts
@@ -27,7 +27,7 @@ import * as authSelector from 'src/app/auth/auth.selector';
  */
 export class AdminComponent {
     public links = [
-        { label: 'Back to portal', icon: 'fas fa-level-up-alt', routerLink: '/portal-home' },
+        { label: 'Back to portal', icon: 'fas fa-level-up-alt', routerLink: '/portal' },
         { label: 'Instances', icon: 'fas fa-object-group', routerLink: 'instance-list' },
         { label: 'Surveys', icon: 'fas fa-table', routerLink: 'survey-list'},
         { label: 'Databases', icon: 'fas fa-database', routerLink: 'database-list'},
diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts
index 8c1885fa65c4ae6e4b4f783cb4081092fb62f45d..6f6b263717ef8d2a6ab099250dd03c48035ed9ea 100644
--- a/client/src/app/app-routing.module.ts
+++ b/client/src/app/app-routing.module.ts
@@ -13,7 +13,10 @@ import { RouterModule, Routes } from '@angular/router';
 import { NotFoundPageComponent } from './core/containers/not-found-page.component';
 
 const routes: Routes = [
-    { path: '', redirectTo: 'portal-home', pathMatch: 'full' },
+    { path: '', redirectTo: 'portal', pathMatch: 'full' },
+    { path: 'portal', loadChildren: () => import('./portal/portal.module').then(m => m.PortalModule) },
+    { path: 'admin', loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule) },
+    { path: 'instance', loadChildren: () => import('./instance/instance.module').then(m => m.InstanceModule) },
     { path: '**', component: NotFoundPageComponent }
 ];
 
diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts
index 8914bdcb34ef2a4201d8378d55841bd2d75e3966..981c03d269210f348d0572550d13dc939092073a 100644
--- a/client/src/app/app.module.ts
+++ b/client/src/app/app.module.ts
@@ -24,9 +24,6 @@ import { CustomSerializer } from './custom-route-serializer';
 import { CoreModule } from './core/core.module';
 import { AuthModule } from './auth/auth.module';
 import { MetamodelModule } from './metamodel/metamodel.module';
-import { PortalModule } from './portal/portal.module';
-import { AdminModule } from './admin/admin.module';
-import { InstanceModule } from './instance/instance.module';
 import { AppComponent } from './core/containers/app.component';
 
 @NgModule({
@@ -37,9 +34,6 @@ import { AppComponent } from './core/containers/app.component';
         CoreModule,
         AuthModule,
         MetamodelModule,
-        PortalModule,
-        AdminModule,
-        InstanceModule,
         AppRoutingModule,
         StoreModule.forRoot(reducers, {
             metaReducers,
diff --git a/client/src/app/core/core.module.ts b/client/src/app/core/core.module.ts
index 76f5e2493172efaca784d12955e136c857ca7b82..45581a8c53bd35ba20747f1e8fe72d2bfdacb1df 100644
--- a/client/src/app/core/core.module.ts
+++ b/client/src/app/core/core.module.ts
@@ -13,6 +13,7 @@ import { RouterModule } from '@angular/router';
 
 import { AppComponent } from './containers/app.component';
 import { NotFoundPageComponent } from './containers/not-found-page.component';
+import { ToastrModule } from 'ngx-toastr';
 
 export const COMPONENTS = [
     AppComponent,
@@ -22,7 +23,8 @@ export const COMPONENTS = [
 @NgModule({
     imports: [
         CommonModule,
-        RouterModule
+        RouterModule,
+        ToastrModule.forRoot()
     ],
     declarations: COMPONENTS,
     exports: COMPONENTS
diff --git a/client/src/app/instance/instance-routing.module.ts b/client/src/app/instance/instance-routing.module.ts
index 37baa1075d4b111e51c541b0cad73beb09937cb2..8c101fef366704fc4b7e7581bc37eb56fd8a4e01 100644
--- a/client/src/app/instance/instance-routing.module.ts
+++ b/client/src/app/instance/instance-routing.module.ts
@@ -14,7 +14,7 @@ import { InstanceComponent } from './instance.component';
 
 const routes: Routes = [
     { 
-        path: 'instance/:iname', component: InstanceComponent, children: [
+        path: ':iname', component: InstanceComponent, children: [
             { path: '', redirectTo: 'home', pathMatch: 'full' },
             { path: 'home', loadChildren: () => import('./home/home.module').then(m => m.HomeModule) },
             { path: 'documentation', loadChildren: () => import('./documentation/documentation.module').then(m => m.DocumentationModule) },
@@ -24,7 +24,7 @@ const routes: Routes = [
 ];
 
 @NgModule({
-    imports: [RouterModule.forRoot(routes)],
+    imports: [RouterModule.forChild(routes)],
     exports: [RouterModule]
 })
 export class InstanceRoutingModule { }
diff --git a/client/src/app/portal/containers/portal-home.component.ts b/client/src/app/portal/containers/portal-home.component.ts
index 78b1b7908034b394c7921731a610dbea31e8ac31..9de018cd70a9f43741ea2a21a90c231869b38f26 100644
--- a/client/src/app/portal/containers/portal-home.component.ts
+++ b/client/src/app/portal/containers/portal-home.component.ts
@@ -30,7 +30,7 @@ import * as instanceSelector from 'src/app/metamodel/selectors/instance.selector
  */
 export class PortalHomeComponent implements OnInit {
     public links = [
-        { label: 'Home', icon: 'fas fa-home', routerLink: '/portal-home' },
+        { label: 'Home', icon: 'fas fa-home', routerLink: '/portal' },
         { label: 'Admin', icon: 'fas fa-tools', routerLink: '/admin' }
     ];
     public isAuthenticated: Observable<boolean>;
diff --git a/client/src/app/portal/portal-routing.module.ts b/client/src/app/portal/portal-routing.module.ts
index ae68f942c0b7732c57bbb5e7b68096cd16c1032b..3874af69e7b07bd30358857ec40196b68681f2f5 100644
--- a/client/src/app/portal/portal-routing.module.ts
+++ b/client/src/app/portal/portal-routing.module.ts
@@ -13,11 +13,12 @@ import { RouterModule, Routes } from '@angular/router';
 import { PortalHomeComponent } from './containers/portal-home.component';
 
 const routes: Routes = [
-    { path: 'portal-home', component: PortalHomeComponent }
+    { path: '', redirectTo: 'home', pathMatch: 'full' },
+    { path: 'home', component: PortalHomeComponent }
 ];
 
 @NgModule({
-    imports: [RouterModule.forRoot(routes)],
+    imports: [RouterModule.forChild(routes)],
     exports: [RouterModule]
 })
 export class PortalRoutingModule { }
diff --git a/client/src/app/shared/shared.module.ts b/client/src/app/shared/shared.module.ts
index b402511e14ee743e933a76b564ed0d8110bf17d4..4a68bd0d8d84a6118dfd4b7f0b13a6059ba385b9 100644
--- a/client/src/app/shared/shared.module.ts
+++ b/client/src/app/shared/shared.module.ts
@@ -12,7 +12,6 @@ import { CommonModule } from '@angular/common';
 import { RouterModule } from '@angular/router';
 import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 
-import { ToastrModule } from 'ngx-toastr';
 import { CollapseModule } from 'ngx-bootstrap/collapse';
 import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
 import { ModalModule } from 'ngx-bootstrap/modal';
@@ -38,7 +37,6 @@ import { sharedPipes } from './pipes';
         RouterModule,
         FormsModule,
         ReactiveFormsModule,
-        ToastrModule.forRoot(),
         CollapseModule.forRoot(),
         BsDropdownModule.forRoot(),
         ModalModule.forRoot(),
@@ -55,7 +53,6 @@ import { sharedPipes } from './pipes';
         CommonModule,
         FormsModule,
         ReactiveFormsModule,
-        ToastrModule,
         CollapseModule,
         BsDropdownModule,
         ModalModule,