Quaternion: don't modify the parameter
Stage: make members private