paul givens row swap functionality