code: def process(self, txt, mode):
          
          result = ''
          if mode == 'ADD':  # already in add mode, so add data
              if txt in self.all_commands['cmd'][0]:
                  self.show_output('Returning to Command mode')
                  mode = 'COMMAND'
                  self.prompt = '> '
              else:
                  self.show_output('Adding Text : ', txt)
                  result = self.cmd_add(txt)
          elif mode == 'QUERY':
              if txt in self.all_commands['cmd'][0]:
                  self.show_output('Returning to Command mode')
                  mode = 'COMMAND'
                  self.prompt = '> '
              else:
                  self.show_output('Query : ', txt)
                  result = self.cmd_query(txt)
          else:   
              if txt in self.all_commands['exit'][0]:
                  self.cmd_exit()
                  
              elif txt in self.all_commands['help'][0]:
                  self.cmd_help()
                  
              elif txt in self.all_commands['cmd'][0]:
                  result = 'Returning to Command mode'
                  mode = 'COMMAND'
                  self.prompt = '> '
                  
              elif txt in self.all_commands['add'][0]:
                  result = 'Entering Add mode'
                  mode = 'ADD'
                  self.prompt = 'ADD > '
              
              elif txt in self.all_commands['query'][0]:
                  result = 'Entering Query mode'
                  mode = 'QUERY'
                  self.prompt = '?? > '
              else:
                  result = 'Unknown command - type help for list of commands'
  
          return result, mode
docs: Top level function to process the command, mainly
          depending on mode.
          This should work by using the function name defined
          in all_commamnds