added overload_fun contracts, the basic version