Instead of concatenating strings, couldn't the subcommand->help() or new method provide this behavior?   That might also be useful in solving the traversal issues.