Implement tab operations as low level utility functions.
Implement tests for tab events.
Don't re-use listener so that same steam can be merged several times.
Add more event/core like tests.