more efficient arg parsing