Refactor, add Decorators