added a lot of new stuff