quaternion update