refactored decorators