init version with refactor