refactored to split up classes and use better syntax
I don't really know, but I must have done something