         }) };
     },
 
-    //clear completed todos
+    //Clear completed todos
     function clear_completed (state) {
         return { todos: _.reject(state.todos, _.flippar(_.at, 'completed')) };
     },
 
+    //Save the entire app to localStorage
     function save_app (state) {
         localStorage.setItem('pasta-todo', JSON.stringify(state));
         return {};
     },
 
+    //Recover the app from localStorage
     function load_app (state) {
         return localStorage.getItem('pasta-todo')
             || { todos: [] };

     [:h2 "Pasta Is Simple"]
     [:p [:strong "Simple"] " in the sense Rich Hickey told us in his talk " [:a {:href "http://www.infoq.com/presentations/Simple-Made-Easy"} "Simple Made Easy"] ". Pasta lets you treat " [:span.important "data as data"] " and it turns " [:span.important "uncontrolled global state into a concrete first-class value"] ". Pasta is mostly functional. The model is a collection of pure functions. The application itself is a pure function that maps an application state to an UI state."]
     [:p "Pasta is simple because Pasta apps are not object oriented. Objects should be avoided where possible because they introduce implicit global state, makes it hard to inspect data (you know, \"" [:i "information hiding"] "\") and makes it so easy to corrupt data."]
     [:p "Pasta is simple because it doesn't do anything that it isn't supporsed to do. There are good data manipulation libraries already, namely Underscore (or lodash). There are good UI manipulation libraries already, namely jQuery (or Zepto). No point reinventing the wheel is there?"]]
    [:hr]
    [:section#mvc
     [:h2 "MVC the Pasta way"]

        return { todos: state.todos.concat({title: title, completed: false}) };
    },

    //Mark a todo either active or complete
    function toggle_status (state, data) {
        return { todos: _.map(state.todos, function (todo) {
            if (todo === data.todo) return _.assoc(todo, 'completed', data.completed);
