added xOneOf, and tests