[WIP] Api and code update

This is the PR for the api and code update. I apologize in advance for it being one big pull request, it will just be easier this way.

This is work-in-progress and I will be adding issues to outline what is left. Feel free to comment or ask questions!

Do not merge to master yet!