added a lot of other stuff