better sub-commands - more generic