Improved the API, but mostly started implementing the interfaces for the types package