On a second thought, quaternion is not a *sub* class, rather a new class, so you may be right about subclassing.