user args to run commands

use args to run commands.  a little more sensical this time

catch errors and pretty print usage

use kwargs to run commands

use args to run commands.  a little more sensical this time

squash prev commits