Version checking
Annotation refactoring

Adding more annotations for version management.

Refactoring existing annotations to be more explicit, to reduce subtly introduced errors