arity based overloading