safe version of observer