Implemented a lot