changed up the implementation of ArgList to use an ArgGenerator to produce input dependent Args