Limitations:
I'll eventually attempt to fix much of this and certainly implement missing features in the future.