Horrible Prototype, will probably completely redo the framework