added missing quaternion constructor and promotion rule