refactor version