improve flags

dont use custom FlagSet for each command instead using global FlagSet.
improve code style. less code
remove boilerplate code using closures
add run command