Add a bunch more functionality