Further separation between Observe and Act

Ensure further that observers don't operate in an
IO context where not necessary, ie only when printing to
screen and not before.