merged api and impl