deep watching is sufficient, angular.equals not necessary
added save functionality