optimise the input arguments for generating method