Starting Observer pattern draft