completely rethink command_output and more