added and changed bunches of stuff! too much to explain. but essential changes. just take a look