better args error checking