sync and async (old fashion style) subject impl
tree visitor pattern