version refactor