Reworked the argument public API