improved argument handling