Reworking as state was missing, I think address swap is also being overloaded