dao divided to api and impl