done with varargs maybe