tutorial from http://dailyjs.com/2013/04/25/angularjs-3/