think swap method is cleaner