api: more code draft