refactor arguments