adding a lot of stuff i should of committed earlier...