added the first part of the API. have to for edge cases now.