the implementation of this should be in the cpp file to match the style guide. This is too much code to be in the header.