definitions in header moved to cpp file