added spin method, added more tests, close to 100% coverage