Refactor; replace EventEmitter with typed events
Implement update observing for multiple tabs