added a lot of stuff