added a crapload of stuff