first implementation of overload