diff --git a/package.json b/package.json
index c2decf2..416e294 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,9 @@
     "@angular/platform-browser": "^5.2.1",
     "@angular/platform-browser-dynamic": "^5.2.1",
     "@angular/router": "^5.2.1",
+    "@ngrx/core": "^1.2.0",
+    "@ngrx/effects": "^5.0.1",
+    "@ngrx/store": "^5.0.0",
     "core-js": "^2.5.3",
     "hammerjs": "^2.0.8",
     "rxjs": "^5.5.6",
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index ea32beb..7fdd553 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -4,6 +4,8 @@ import { Routes, RouterModule } from '@angular/router';
 const routes: Routes = [
   { path: '', loadChildren: './pages/pages.module#PagesModule' },
   { path: 'auth', loadChildren: './pages/auth/auth.module#AuthModule' },
+  { path: 'errors', loadChildren: './pages/errors/errors.module#ErrorsModule' },
+  { path: '**', redirectTo: 'errors/404' }
 ];
 
 @NgModule({
diff --git a/src/app/commons/ui/material/material.module.ts b/src/app/commons/ui/material/material.module.ts
index bf16297..06f08f7 100644
--- a/src/app/commons/ui/material/material.module.ts
+++ b/src/app/commons/ui/material/material.module.ts
@@ -6,7 +6,7 @@ import {
   MatSlideToggleModule, MatInputModule, MatCheckboxModule,
   MatToolbarModule, MatSnackBarModule, MatSidenavModule,
   MatTabsModule, MatSelectModule, MatRadioModule,
-  MatAutocompleteModule, MatFormFieldModule
+  MatAutocompleteModule, MatFormFieldModule,
 } from '@angular/material';
 
 const MATERIAL_MODULES: any[] = [
diff --git a/src/app/pages/auth/auth.module.ts b/src/app/pages/auth/auth.module.ts
index b93bf59..197f5be 100644
--- a/src/app/pages/auth/auth.module.ts
+++ b/src/app/pages/auth/auth.module.ts
@@ -1,6 +1,5 @@
 import { NgModule } from '@angular/core';
 import { CommonModule } from '@angular/common';
-import { RouterModule, Routes } from '@angular/router';
 import { AuthComponent } from './auth.component';
 import { AuthRoutingModule } from './auth-routing.module';
 import { SigninComponent } from './signin/signin.component';
diff --git a/src/app/pages/auth/signin/signin.component.html b/src/app/pages/auth/signin/signin.component.html
index 0cdd669..34ad602 100644
--- a/src/app/pages/auth/signin/signin.component.html
+++ b/src/app/pages/auth/signin/signin.component.html
@@ -1,3 +1 @@
-
-  signin works!
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/app/pages/auth/signin/signin.component.scss b/src/app/pages/auth/signin/signin.component.scss
index e69de29..1ae1e4f 100644
--- a/src/app/pages/auth/signin/signin.component.scss
+++ b/src/app/pages/auth/signin/signin.component.scss
@@ -0,0 +1,9 @@
+.signin-form {
+  min-width: 150px;
+  max-width: 500px;
+  width: 100%;
+}
+
+.signin-full-width {
+  width: 100%;
+}
\ No newline at end of file
diff --git a/src/app/pages/auth/signin/signin.component.ts b/src/app/pages/auth/signin/signin.component.ts
index ad243d4..983533c 100644
--- a/src/app/pages/auth/signin/signin.component.ts
+++ b/src/app/pages/auth/signin/signin.component.ts
@@ -1,4 +1,8 @@
 import { Component, OnInit } from '@angular/core';
+import { ActivatedRoute, Router } from '@angular/router';
+import { Form, FormBuilder, FormGroup, FormGroupDirective, FormControl, NgForm, Validators } from '@angular/forms';
+import { ErrorStateMatcher } from '@angular/material/core';
+
 
 @Component({
   selector: 'of-auth-signin',
@@ -7,9 +11,19 @@ import { Component, OnInit } from '@angular/core';
 })
 export class SigninComponent implements OnInit {
 
-  constructor() { }
+  signInForm: FormGroup;
+  returnURL: string;
+
+  constructor(
+    private router: Router,
+    private activatedRoute: ActivatedRoute,
+  ) { }
 
   ngOnInit() {
+    this.returnURL = this.activatedRoute.snapshot.queryParams['returnURL'] || '/';
+  }
+
+  initForm() {
   }
 
 }
diff --git a/src/app/pages/errors/e404/e404.component.html b/src/app/pages/errors/e404/e404.component.html
new file mode 100644
index 0000000..f20a4f7
--- /dev/null
+++ b/src/app/pages/errors/e404/e404.component.html
@@ -0,0 +1,3 @@
+
+  e404 works!
+
diff --git a/src/app/pages/errors/e404/e404.component.scss b/src/app/pages/errors/e404/e404.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/pages/errors/e404/e404.component.spec.ts b/src/app/pages/errors/e404/e404.component.spec.ts
new file mode 100644
index 0000000..d8b4265
--- /dev/null
+++ b/src/app/pages/errors/e404/e404.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { E404Component } from './e404.component';
+
+describe('E404Component', () => {
+  let component: E404Component;
+  let fixture: ComponentFixture;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ E404Component ]
+    })
+    .compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(E404Component);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/pages/errors/e404/e404.component.ts b/src/app/pages/errors/e404/e404.component.ts
new file mode 100644
index 0000000..4230885
--- /dev/null
+++ b/src/app/pages/errors/e404/e404.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+  selector: 'of-e404',
+  templateUrl: './e404.component.html',
+  styleUrls: ['./e404.component.scss']
+})
+export class E404Component implements OnInit {
+
+  constructor() { }
+
+  ngOnInit() {
+  }
+
+}
diff --git a/src/app/pages/errors/e500/e500.component.html b/src/app/pages/errors/e500/e500.component.html
new file mode 100644
index 0000000..75a4328
--- /dev/null
+++ b/src/app/pages/errors/e500/e500.component.html
@@ -0,0 +1,3 @@
+
+  e500 works!
+
diff --git a/src/app/pages/errors/e500/e500.component.scss b/src/app/pages/errors/e500/e500.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/pages/errors/e500/e500.component.spec.ts b/src/app/pages/errors/e500/e500.component.spec.ts
new file mode 100644
index 0000000..341a53f
--- /dev/null
+++ b/src/app/pages/errors/e500/e500.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { E500Component } from './e500.component';
+
+describe('E500Component', () => {
+  let component: E500Component;
+  let fixture: ComponentFixture;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ E500Component ]
+    })
+    .compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(E500Component);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/pages/errors/e500/e500.component.ts b/src/app/pages/errors/e500/e500.component.ts
new file mode 100644
index 0000000..cd35ad2
--- /dev/null
+++ b/src/app/pages/errors/e500/e500.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+  selector: 'of-e500',
+  templateUrl: './e500.component.html',
+  styleUrls: ['./e500.component.scss']
+})
+export class E500Component implements OnInit {
+
+  constructor() { }
+
+  ngOnInit() {
+  }
+
+}
diff --git a/src/app/pages/errors/errors-routing.module.ts b/src/app/pages/errors/errors-routing.module.ts
new file mode 100644
index 0000000..3178dd8
--- /dev/null
+++ b/src/app/pages/errors/errors-routing.module.ts
@@ -0,0 +1,22 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+import { ErrorsComponent } from './errors.component';
+import { E404Component } from './e404/e404.component';
+import { E500Component } from './e500/e500.component';
+
+const routes: Routes = [
+  {
+    path: '',
+    component: ErrorsComponent,
+    children: [
+      { path: '404', component: E404Component },
+      { path: '500', component: E500Component },
+    ]
+  }
+];
+
+@NgModule({
+  imports: [RouterModule.forChild(routes)],
+  exports: [RouterModule]
+})
+export class ErrorsRoutingModule { }
diff --git a/src/app/pages/errors/errors.component.html b/src/app/pages/errors/errors.component.html
new file mode 100644
index 0000000..6e1ca1a
--- /dev/null
+++ b/src/app/pages/errors/errors.component.html
@@ -0,0 +1,3 @@
+eheader
+
+efooter
\ No newline at end of file
diff --git a/src/app/pages/errors/errors.component.scss b/src/app/pages/errors/errors.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/pages/errors/errors.component.spec.ts b/src/app/pages/errors/errors.component.spec.ts
new file mode 100644
index 0000000..c569cf7
--- /dev/null
+++ b/src/app/pages/errors/errors.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ErrorsComponent } from './errors.component';
+
+describe('ErrorsComponent', () => {
+  let component: ErrorsComponent;
+  let fixture: ComponentFixture;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ ErrorsComponent ]
+    })
+    .compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(ErrorsComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/pages/errors/errors.component.ts b/src/app/pages/errors/errors.component.ts
new file mode 100644
index 0000000..689bdd8
--- /dev/null
+++ b/src/app/pages/errors/errors.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+  selector: 'of-errors',
+  templateUrl: './errors.component.html',
+  styleUrls: ['./errors.component.scss']
+})
+export class ErrorsComponent implements OnInit {
+
+  constructor() { }
+
+  ngOnInit() {
+  }
+
+}
diff --git a/src/app/pages/errors/errors.module.ts b/src/app/pages/errors/errors.module.ts
new file mode 100644
index 0000000..d776b71
--- /dev/null
+++ b/src/app/pages/errors/errors.module.ts
@@ -0,0 +1,16 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+import { ErrorsComponent } from './errors.component';
+import { ErrorsRoutingModule } from './errors-routing.module';
+import { E500Component } from './e500/e500.component';
+import { E404Component } from './e404/e404.component';
+
+@NgModule({
+  imports: [
+    CommonModule,
+    ErrorsRoutingModule
+  ],
+  declarations: [ErrorsComponent, E500Component, E404Component]
+})
+export class ErrorsModule { }
diff --git a/yarn.lock b/yarn.lock
index 23af4f7..decb365 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -164,6 +164,18 @@
   dependencies:
     tslib "^1.7.1"
 
+"@ngrx/core@^1.2.0":
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/@ngrx/core/-/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6"
+
+"@ngrx/effects@^5.0.1":
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/@ngrx/effects/-/effects-5.0.1.tgz#cf970a6b8e2f3d3647e795e7040e09a2e7d157ed"
+
+"@ngrx/store@^5.0.0":
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/@ngrx/store/-/store-5.0.0.tgz#483a955ea99a63ee083675ce0596d505e5501747"
+
 "@ngtools/json-schema@1.1.0", "@ngtools/json-schema@^1.1.0":
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922"