init ctor the right way