implement XCH (untested) (contributes to #9)