split CLI stuff into descendant module