basic api and build dsl