add cli & improve api