added a bunch more features