refactor on decorator