refactoring decorating