From http://campus.codeschool.com/courses/shaping-up-with-angular-js/