API: Enhance the actual API to keep the user with opaque types as much as possible