support for variable number of input and output arguments. support for multidimensional output arrays