forked from Angular Phonecat, this follows the entire tutorial, with commenting