Add a Version string attribute
Create new version structs from a constructor
Fix method ordering
Use pointers everywhere, add a constructor, add diff methods