Implement and document public api