Some obvious optimizations
Some more obvious optimizations
return the same type of thing in both execution paths
re-add program name fiddling in $?USAGE