Implimenting many API methods. Closes #1, closes #2, closes #3, closes #4, closes #5, closes #6, closes #7.