I've added the last few functions but much work still remains. I still need to:
* add the missing functions from the backend
* rename the files to be more logical
* make sure enums are used all over
* clear up all TODO statements