rewrite part 1: new CLI API

**Currently, *geoffrey* isn’t fully usable.**