document the API