Implement a lot of stuff