Implemented a ton of stuff