added Quaternion class