Rewrote parts of the API, expanded some stuff to make the whole thing easier
to read and more clear on what stuff means.