Renamed and refactored the classes to make it actually work.