refactoring, docs and added the possibility to a listener listen for more than 1 external class