privatye constructor has moved to fully inlined in .h file