add-watch sets observers on objects, like side cutting concerns. In Java it'd be done via Aspects.
add-watch
:pre and :post for pre- and post- compute on functions.
:pre
:post