diff --git a/package-lock.json b/package-lock.json
index 6e3087732e76d2d096657309fa3763cd63855f91..39968bba3cfff64c3bdff2b2f6e219961564223f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3996,11 +3996,13 @@
         },
         "balanced-match": {
           "version": "1.0.0",
-          "bundled": true
+          "bundled": true,
+          "optional": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
+          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -4013,15 +4015,18 @@
         },
         "code-point-at": {
           "version": "1.1.0",
-          "bundled": true
+          "bundled": true,
+          "optional": true
         },
         "concat-map": {
           "version": "0.0.1",
-          "bundled": true
+          "bundled": true,
+          "optional": true
         },
         "console-control-strings": {
           "version": "1.1.0",
-          "bundled": true
+          "bundled": true,
+          "optional": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -4124,7 +4129,8 @@
         },
         "inherits": {
           "version": "2.0.3",
-          "bundled": true
+          "bundled": true,
+          "optional": true
         },
         "ini": {
           "version": "1.3.5",
@@ -4134,6 +4140,7 @@
         "is-fullwidth-code-point": {
           "version": "1.0.0",
           "bundled": true,
+          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -4146,17 +4153,20 @@
         "minimatch": {
           "version": "3.0.4",
           "bundled": true,
+          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
         },
         "minimist": {
           "version": "0.0.8",
-          "bundled": true
+          "bundled": true,
+          "optional": true
         },
         "minipass": {
           "version": "2.2.4",
           "bundled": true,
+          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.1",
             "yallist": "^3.0.0"
@@ -4173,6 +4183,7 @@
         "mkdirp": {
           "version": "0.5.1",
           "bundled": true,
+          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -4245,7 +4256,8 @@
         },
         "number-is-nan": {
           "version": "1.0.1",
-          "bundled": true
+          "bundled": true,
+          "optional": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -4255,6 +4267,7 @@
         "once": {
           "version": "1.4.0",
           "bundled": true,
+          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -4360,6 +4373,7 @@
         "string-width": {
           "version": "1.0.2",
           "bundled": true,
+          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
diff --git a/src/app/app.component.css b/src/app/app.component.css
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fc2b98b5d8a2ff2a62b4af4667905278e9d2bd7f 100644
--- a/src/app/app.component.css
+++ b/src/app/app.component.css
@@ -0,0 +1,6 @@
+#progress {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100vw;
+}
diff --git a/src/app/app.component.html b/src/app/app.component.html
index b6776580b2eda973de87abed0bf7b424058a2ae3..eb3746107bd5a455352e9a681d346d1efef75728 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -1,2 +1,2 @@
-<app-splash *ngIf="!active"></app-splash>
+<mat-progress-bar id="progress" mode="indeterminate" color="primary" *ngIf="loading"></mat-progress-bar>
 <router-outlet></router-outlet>
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index a2789ff7d0d0769af3d65704c90a47576513bb23..4e340b53cdc5bc0196b33a40cb12608cd7886de0 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,6 +1,6 @@
 import { Component, OnInit, OnDestroy } from '@angular/core';
 import { Title } from '@angular/platform-browser';
-import { Router, ActivatedRoute, NavigationStart, NavigationEnd } from '@angular/router';
+import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';
 import { Observable, Subscription } from 'rxjs';
 import { filter, map, mergeMap } from 'rxjs/operators';
 import { LoaderService } from './core';
@@ -12,7 +12,7 @@ import { LoaderService } from './core';
 })
 export class AppComponent implements OnInit, OnDestroy {
 
-  active = false;
+  loading = false;
   sub = new Subscription();
 
   constructor(
@@ -28,18 +28,11 @@ export class AppComponent implements OnInit, OnDestroy {
     );
     this.sub.add(
       this.loaderService.loading().subscribe(loading => {
-        this.active = !loading;
+        this.loading = loading;
       })
     );
   }
 
-  private active$(): Observable<boolean> {
-    return this.router.events.pipe(
-      filter(event => event instanceof NavigationStart || event instanceof NavigationEnd),
-      map(event => event instanceof NavigationEnd),
-    );
-  }
-
   private title$(): Observable<string> {
     return this.router.events.pipe(
       // When a navigation finishes
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index ae7dc1bfbcf803c0a3d094710e6dca6548586564..0a79000a449f1af148df3ee14ff6526719bb1653 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -34,14 +34,12 @@ import { LoginComponent } from './login/login.component';
 
 // Services
 import { MessageService } from './core';
-import { SplashComponent } from './splash/splash.component';
 
 registerLocaleData(localeFR);
 
 @NgModule({
   declarations: [
     AppComponent,
-    SplashComponent,
     LoginComponent,
   ],
   imports: [
diff --git a/src/app/core/api.ts b/src/app/core/api.ts
index 0721be230d3a98be74945cb0f67d4698f512fdaa..792acf9b518cc71868afd67c5940b98b1202b8b0 100644
--- a/src/app/core/api.ts
+++ b/src/app/core/api.ts
@@ -4,17 +4,14 @@ import { Observable } from 'rxjs';
 import { map } from 'rxjs/operators';
 import { environment } from 'environments/environment';
 
-
 export class ShowcaseApiService {
   apiUrl = environment.showcaseApiUrl;
 }
 
-
 export class ApiService {
   apiUrl = environment.apiUrl;
 }
 
-
 export abstract class ModelApiService<T> extends ApiService {
 
   abstract baseUrl: string;
diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts
index be67d8586e257685732ede189e921f30bce29b39..1788ec7f8895f2ed40eb3df2805daa2da635988d 100644
--- a/src/app/core/core.module.ts
+++ b/src/app/core/core.module.ts
@@ -6,7 +6,6 @@ import { HTTP_INTERCEPTORS } from '@angular/common/http';
 import { MarkdownModule, MarkdownComponent, MarkdownPipe } from 'ngx-markdown';
 import { TokenInterceptor } from './auth';
 import { LoaderService } from './loader.service';
-import { LoaderInterceptor } from  './loader.interceptor';
 import { MessageModule } from './messages';
 import { FuzzyPipe, LineBreaksPipe } from './pipes';
 import { NotFoundComponent } from './not-found';
@@ -33,7 +32,6 @@ import { ErrorPageComponent } from './error-page';
   providers: [
     LoaderService,
     { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true },
-    { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true },
   ],
   exports: [
     MessageModule,
diff --git a/src/app/core/document.service.ts b/src/app/core/document.service.ts
index df836032f68c52e688c8785bae4f3584a602a08f..463c31e3684712b6480e7756a1698f2e64fc869b 100644
--- a/src/app/core/document.service.ts
+++ b/src/app/core/document.service.ts
@@ -1,7 +1,7 @@
 import { Injectable } from '@angular/core';
 import { HttpClient } from '@angular/common/http';
 import { Observable, of } from 'rxjs';
-import { map, tap, catchError } from 'rxjs/operators';
+import { map, catchError } from 'rxjs/operators';
 import { environment } from 'environments/environment';
 import { ActivatedRouteSnapshot, RouterStateSnapshot, Resolve } from '@angular/router';
 
diff --git a/src/app/core/geocoding.service.ts b/src/app/core/geocoding.service.ts
index e215afd123aa192219c8bfe5be882030cedd68ed..ed6bcb866ed2a51e1b961f4090f55f06000b4b93 100644
--- a/src/app/core/geocoding.service.ts
+++ b/src/app/core/geocoding.service.ts
@@ -1,8 +1,8 @@
 import { Injectable } from '@angular/core';
 import { MapsAPILoader } from '@agm/core';
 import { Resolve } from '@angular/router';
-import { Observable, BehaviorSubject, from } from 'rxjs';
-import { filter, map, mergeMap } from 'rxjs/operators';
+import { Observable, from } from 'rxjs';
+import { map } from 'rxjs/operators';
 
 declare const google: any;
 
diff --git a/src/app/core/loader.interceptor.ts b/src/app/core/loader.interceptor.ts
deleted file mode 100644
index 45556413d290be94ee0290ba61b0b4b7d12a41f9..0000000000000000000000000000000000000000
--- a/src/app/core/loader.interceptor.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Injectable } from '@angular/core';
-import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
-import { Observable, timer } from 'rxjs';
-import { tap } from 'rxjs/operators';
-import { LoaderService } from './loader.service';
-
-
-@Injectable()
-export class LoaderInterceptor implements HttpInterceptor {
-
-  constructor(private loaderService: LoaderService) { }
-
-  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
-    this.loaderService.loading$.next(true);
-    return next.handle(request).pipe(
-      tap(() => this.loaderService.loading$.next(false)),
-    );
-  }
-
-}
diff --git a/src/app/core/loader.service.ts b/src/app/core/loader.service.ts
index 013b0d2c75b0081fc837d20f6dd58b0fc8fe6206..9b349b5ad5cd1bb478e965f9530d88c54e469e54 100644
--- a/src/app/core/loader.service.ts
+++ b/src/app/core/loader.service.ts
@@ -1,17 +1,19 @@
 import { Injectable } from '@angular/core';
+import { Router, NavigationStart, NavigationEnd, NavigationCancel } from '@angular/router';
 import { Observable, BehaviorSubject } from 'rxjs';
-import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
+import { map, debounceTime, tap, filter } from 'rxjs/operators';
 
 
 @Injectable()
 export class LoaderService {
 
-  public loading$: BehaviorSubject<boolean> = new BehaviorSubject(false);
+  constructor(private router: Router) {}
 
   public loading(): Observable<boolean> {
-    return this.loading$.asObservable().pipe(
-      // Prevent having multiple false's or multiple true's
-      distinctUntilChanged(),
+    return this.router.events.pipe(
+      filter(e => e instanceof NavigationStart || e instanceof NavigationEnd || e instanceof NavigationCancel),
+      debounceTime(100),  // don't mark fast navigation changes as navigating
+      map((e) => e instanceof NavigationStart),
     );
   }
 
diff --git a/src/app/core/resolvers/generic.ts b/src/app/core/resolvers/generic.ts
index 9a63221deed88501ee4e88031d5835e87c8e519c..a506e79c4aaf9b9b2b31fdb4a52c9a67aabe381e 100644
--- a/src/app/core/resolvers/generic.ts
+++ b/src/app/core/resolvers/generic.ts
@@ -11,7 +11,6 @@ interface Retrievable<T> {
   retrieve: (id: any) => Observable<T>;
 }
 
-
 export abstract class ObjectListResolver<T> implements Resolve<T[]> {
 
   public service: Listable<T>;
@@ -23,7 +22,6 @@ export abstract class ObjectListResolver<T> implements Resolve<T[]> {
   }
 }
 
-
 export abstract class ObjectResolver<T> implements Resolve<T> {
 
   public service: Retrievable<T>;
diff --git a/src/app/core/resolvers/simple.resolver.ts b/src/app/core/resolvers/simple.resolver.ts
index 401ec5676c5a6eb84d0d7faafa43a1de37d69660..30dc9ca6a3ce632c7d52ad75e52ff9b7636e05e3 100644
--- a/src/app/core/resolvers/simple.resolver.ts
+++ b/src/app/core/resolvers/simple.resolver.ts
@@ -3,8 +3,6 @@ import { Observable, of } from 'rxjs';
 import { map, tap, catchError } from 'rxjs/operators';
 import { HttpClient } from '@angular/common/http';
 import { Resolve } from '@angular/router';
-import { environment } from 'environments/environment';
-
 
 @Injectable()
 export abstract class SimpleListResolver<T> implements Resolve<T[]> {
diff --git a/src/app/showcase-site/shared/action.service.ts b/src/app/showcase-site/shared/action.service.ts
index 545c69c3ab02d9b8c7ff1e60f2b8c4ba6257ca51..e185a6301586bf3d150e01470c3def439dfde088 100644
--- a/src/app/showcase-site/shared/action.service.ts
+++ b/src/app/showcase-site/shared/action.service.ts
@@ -1,8 +1,7 @@
 import { Injectable } from '@angular/core';
 import { HttpClient } from '@angular/common/http';
 import { Observable } from 'rxjs';
-import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
-import { map, tap, filter } from 'rxjs/operators';
+import { map } from 'rxjs/operators';
 import { Action } from './action.model';
 import { environment } from 'environments/environment';
 import { ObjectListResolver } from 'app/core';
diff --git a/src/app/showcase-site/shared/article.service.ts b/src/app/showcase-site/shared/article.service.ts
index d29d8d102966b1f216ccaf68e023f5173d226dd1..796e221b2a6a3b374f3a2f8138b9fd6c5c719efc 100644
--- a/src/app/showcase-site/shared/article.service.ts
+++ b/src/app/showcase-site/shared/article.service.ts
@@ -1,7 +1,7 @@
 import { Injectable } from '@angular/core';
 import { HttpClient } from '@angular/common/http';
 import { Observable } from 'rxjs';
-import { map, tap } from 'rxjs/operators';
+import { map } from 'rxjs/operators';
 import { Article } from './article.model';
 import { environment } from 'environments/environment';
 import { ObjectListResolver, ObjectResolver } from 'app/core';
diff --git a/src/app/showcase-site/showcase-site-routing.module.ts b/src/app/showcase-site/showcase-site-routing.module.ts
index 5f49db97e16685aac7d79031672f5616d426f3b1..df7ddaf805dc88c977134d885bdafbe0b9cfdf09 100644
--- a/src/app/showcase-site/showcase-site-routing.module.ts
+++ b/src/app/showcase-site/showcase-site-routing.module.ts
@@ -32,7 +32,7 @@ const routes: Routes = [
         resolve: {
           'actions': ActionsResolver,
           'partners': PartnersResolver,
-        },
+        }, 
         data: { title: 'Accueil' },
       },
       {
diff --git a/src/app/splash/splash.component.html b/src/app/splash/splash.component.html
deleted file mode 100644
index 569a3dccfe6b0a0f3a92de7395b380418246694d..0000000000000000000000000000000000000000
--- a/src/app/splash/splash.component.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<div id="splash">
-  <mat-progress-bar mode="indeterminate" color="primary"></mat-progress-bar>
-</div>
diff --git a/src/app/splash/splash.component.scss b/src/app/splash/splash.component.scss
deleted file mode 100644
index 0ad89ce139f8c04e2edea29a60c9a4ca37955aec..0000000000000000000000000000000000000000
--- a/src/app/splash/splash.component.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-#splash {
-  z-index: 9999999;
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100vw;
-
-  i {
-    background: white;
-    border-radius: 50%;
-    width: 1.3em;
-    height: 1.3em;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-  }
-}
diff --git a/src/app/splash/splash.component.ts b/src/app/splash/splash.component.ts
deleted file mode 100644
index 2f403a885cdcc6ed2e373b939125b8333aa44e2c..0000000000000000000000000000000000000000
--- a/src/app/splash/splash.component.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-
-@Component({
-  selector: 'app-splash',
-  templateUrl: './splash.component.html',
-  styleUrls: ['./splash.component.scss']
-})
-export class SplashComponent implements OnInit {
-
-  constructor() { }
-
-  ngOnInit() {
-  }
-
-}