refactor ability