don't extend Observer interface