added and changed a lot of stuff