added Struct.swap()