more work on the hook, observer visibility is almost working