add quaternion support