Please extract this out to a member function so it can be overloaded if required