refactor args