added variable arguments