added a lot of stuff i should've commit earlier