refactor signature