Passing more tests, mostly need to implement swapping