add support for varargs