better arg handling