revise arg parsing