diff --git a/app.rb b/app.rb
index b593becb1193c23eaee1077a2dd9ac048fad8e32..1dfd3109f74a08adcce6f2cfc053a76f5f2bf457 100644
--- a/app.rb
+++ b/app.rb
@@ -1,4 +1,6 @@
 require 'sinatra'
+require 'models/user'
+require 'models/service_space'
 
 use Rack::Session::Cookie, :key => 'rack.session',
                            :path => '/',
@@ -34,9 +36,45 @@ before do
     ]
 
     session[:init] = true
+
+    # check if the user is currently logged in
+    if session.has_key?(:user_id)
+        @user = (User.includes(:permissions).find(session[:user_id]) rescue nil)
+    else
+        @user = nil;
+    end
+end
+
+helpers do
+  def load_service_space
+    url_name = params[:service_space_url_name]
+    space = ServiceSpace.find_by(:url_name => url_name)
+    raise Sinatra::NotFound if space.nil?
+    @space = space
+  end
+
+  def require_login
+    if @user.nil?
+      flash(:alert, 'You Must Login', 'That page requires you to be logged in. If you don\'t have an account, please sign up for <a href="/new_members/">New&nbsp;Member&nbsp;Orientation</a>.')
+      redirect '/login/'
+    end
+  end
+end
+
+not_found do
+  @breadcrumbs << {:text => 'Not Found'}
+  erb 'That page was not found.', :layout => :fixed
+end
+
+error do
+  @breadcrumbs << {:text => 'Error'}
+  flash(:danger, 'Sorry! There was an error.', "We apologize. A really bad error occurred and it didn't work. We're fixing this as we speak.")
+  erb 'In the meantime, you can <a href="/">go back to the homepage</a>.', :layout => :fixed
 end
 
 get '/' do
   @breadcrumbs << {:text => 'Home'}
-  'Home'
-end
\ No newline at end of file
+  erb 'Home', :layout => :fixed
+end
+
+Dir.glob("#{ROOT}/routes/*.rb") { |file| require file }
\ No newline at end of file