move field constructors to separate init function