refactor parse arguments