added lots of classes and stuff