Implemented a lot of functionality to Shift class, almost complete