Implements basics of observer model