- Add Version class
- Do some refactoring