improved argument reading