reusing code
= overloaded
helper function tested