Observers are definitely the way to go about this.