##Core Functionality
- render_content populates response content_type and body
- redirect_to populates response status and location
- render creates filepath to a template, i.e.'/views/cats_controller/show.html.erb'
- render creates ERB instance with filepath, evaluates by binding local variables
- session method in controller base allows insertion into session hash
- session parses request cookie into session hash if it exists, else the session hash is an empty hash
- session has store_session method which populates response cookie with session hash
- render and redirect_to methods overridden to store the session
- params instance created in controller on initialization
- params hash populated with route parameters, as well as decoded request body and query string
- params returns values as strings
- route objects have attributes such as the controller they are associated with, the http method they use, the regex url pattern to match and the controller action it takes
- request path is matched against the pattern and the http method is confirmed identical to ensure the correct route is chosen
- route run pulls route_params from request, creates new controller and invokes action
- controller base invoke action calls the method matching the argument name on itself then renders the appropriate template unless the response was already built
- router's routes array is populated with standard http routes with add_route
- router draw method evaluates proc allowing multiple routes to be created at once
- router searches routes for match to request, returns 404 error if none exists and runs the route otherwise
##Bonus
- flash method in controller base constructs a flash object if one doesn't exist
- flash parses cookie for appropriate key and stores value in flash hash
- flash only persists messages for one additional request
- flash now doesn't persist the message for an additional request
- link_to and button_to creates html
- routes modified to create a url helper in the controller which returns the correct path