ENH: improve argument handling