base refactor init