Add overloading to functions
Implement variadic and overloaded fns