Moved all implementation to .cpp file from .h