Naive observer impl