Most functionality is finished, got some cleaning up to do though