observer pattern for board (ish)