better argument handling