Move Quaternion to a separate module