diff --git a/app/controllers/error.coffee b/app/controllers/error.coffee
new file mode 100644
index 00000000..90babea0
--- /dev/null
+++ b/app/controllers/error.coffee
@@ -0,0 +1,5 @@
+`import Ember from 'ember'`
+
+Controller = Ember.Controller.extend()
+
+`export default Controller`
diff --git a/app/routes/basic.coffee b/app/routes/basic.coffee
index e6c5af54..3449337d 100644
--- a/app/routes/basic.coffee
+++ b/app/routes/basic.coffee
@@ -2,6 +2,11 @@
 `import Ember from 'ember'`
 
 Route = Ember.Route.extend
+  activate: ->
+    if @routeName != 'error'
+      @controllerFor('error').set('layoutName', null)
+    return @_super.apply(this, arguments)
+
   beforeModel: (transition) ->
     @auth.autoSignIn() unless @signedIn()
 
diff --git a/app/routes/error.js b/app/routes/error.js
new file mode 100644
index 00000000..5231b4cc
--- /dev/null
+++ b/app/routes/error.js
@@ -0,0 +1,10 @@
+import TravisRoute from 'travis/routes/basic';
+
+export default TravisRoute.extend({
+  resetController(controller, isExiting, transition) {
+    if (isExiting) {
+      controller.set('message', null);
+      controller.set('layoutName', null);
+    }
+  }
+});
diff --git a/app/routes/owner.coffee b/app/routes/owner.coffee
index 2ae81837..8e134009 100644
--- a/app/routes/owner.coffee
+++ b/app/routes/owner.coffee
@@ -4,7 +4,6 @@
 `import config from 'travis/config/environment'`
 
 Route = TravisRoute.extend
-
   deactivate: ->
     @controllerFor('loading').set('layoutName', null)
 
@@ -19,4 +18,17 @@ Route = TravisRoute.extend
 
     @_super.apply(this, arguments)
 
+  actions:
+    error: (error, transition, originRoute) ->
+      login = transition.params.owner.owner
+      message = if error.status == 404
+        "Couldn't find an owner with login \"#{login}\""
+      else
+        "There was an error while loading data, please try again."
+
+      @controllerFor('error').set('layoutName', 'simple')
+      @controllerFor('error').set('message', message)
+
+      return true
+
 `export default Route`
diff --git a/app/templates/error.hbs b/app/templates/error.hbs
new file mode 100644
index 00000000..9653e44f
--- /dev/null
+++ b/app/templates/error.hbs
@@ -0,0 +1,5 @@
+{{#if message}}
+  {{message}}
+{{else}}
+  There was an error, please try again.
+{{/if}}
diff --git a/app/templates/owner/error.hbs b/app/templates/owner/error.hbs
new file mode 100644
index 00000000..257cc564
--- /dev/null
+++ b/app/templates/owner/error.hbs
@@ -0,0 +1 @@
+foo
diff --git a/app/views/error.coffee b/app/views/error.coffee
new file mode 100644
index 00000000..fd4d7995
--- /dev/null
+++ b/app/views/error.coffee
@@ -0,0 +1,9 @@
+`import Ember from 'ember'`
+
+View = Ember.View.extend
+  layoutName: (->
+    if name = @get('controller.layoutName')
+      'layouts/' + name
+  ).property('controller.layoutName')
+
+`export default View`