use XOR because simpler