We need the complete definition (as opposed to the forward definition) because when we create a new vm object we need to know the full size.