refactor observers. bug fixes