a lot of refactoring on the queue component.
Merge branch 'listener'