begin refactor to auto init