pretty sure row swapping works