Add some data-event magic and use event dispatcher to interface with them
Simplify logging
Seperate out queue logic to new component, fix some continuity bugs, use more event dispatcher