diff --git a/app/Repos/BookRepo.php b/app/Repos/BookRepo.php
index 469fdb31d..031e3b44c 100644
--- a/app/Repos/BookRepo.php
+++ b/app/Repos/BookRepo.php
@@ -95,7 +95,9 @@ class BookRepo
      */
     public function getBySlug($slug)
     {
-        return $this->book->where('slug', '=', $slug)->first();
+        $book = $this->book->where('slug', '=', $slug)->first();
+        if ($book === null) abort(404);
+        return $book;
     }
 
     /**
diff --git a/app/Repos/ChapterRepo.php b/app/Repos/ChapterRepo.php
index c3d75ca9d..1e4996a40 100644
--- a/app/Repos/ChapterRepo.php
+++ b/app/Repos/ChapterRepo.php
@@ -56,7 +56,9 @@ class ChapterRepo
      */
     public function getBySlug($slug, $bookId)
     {
-        return $this->chapter->where('slug', '=', $slug)->where('book_id', '=', $bookId)->first();
+        $chapter = $this->chapter->where('slug', '=', $slug)->where('book_id', '=', $bookId)->first();
+        if ($chapter === null) abort(404);
+        return $chapter;
     }
 
     /**
diff --git a/app/Repos/PageRepo.php b/app/Repos/PageRepo.php
index 052d9dd1e..e049ae57b 100644
--- a/app/Repos/PageRepo.php
+++ b/app/Repos/PageRepo.php
@@ -64,7 +64,9 @@ class PageRepo
      */
     public function getBySlug($slug, $bookId)
     {
-        return $this->page->where('slug', '=', $slug)->where('book_id', '=', $bookId)->first();
+        $page = $this->page->where('slug', '=', $slug)->where('book_id', '=', $bookId)->first();
+        if ($page === null) abort(404);
+        return $page;
     }
 
     /**
diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php
index 8f66e2d01..0062bb258 100644
--- a/resources/views/errors/404.blade.php
+++ b/resources/views/errors/404.blade.php
@@ -1,9 +1,11 @@
-@extends('public')
+@extends('base')
 
 @section('content')
 
 
+<div class="container">
     <h1>Page Not Found</h1>
     <p>The page you were looking for could not be found.</p>
+</div>
 
 @stop
\ No newline at end of file