Module to class

@seuros i'm fairly happy with this.
still need to do the ManagerWorker

WDYT?