refactored Worker interface/abstract-class