update quaternion class