change how args are passed to main
refactor callback logic
some cli tests
use Schema