add scope.$compute() and $on() for cleaner separation of properties