Refactoring the Version module