added a buttload of stuff