simplified implementation of angular's core features like dirty checking, scope,  data-binding