add Quaternion class