public static void handle ( String input, JTextPane console ) {
    GUI.commandHistory.add ( input ) ;
    GUI.commandHistoryLocation = GUI.commandHistory.size ( ) ;

    GUI.write ( "Processing... [ "
        + console.getText ( ).replaceAll ( "\r", "" ).replaceAll ( "\n", "" )
        + " ]" ) ;
    console.setText ( "" ) ;

    input = input.replaceAll ( "\r", "" ).replaceAll ( "\n", "" ) ;
    try {
      if ( input.equalsIgnoreCase ( "quit" )
          || input.equalsIgnoreCase ( "exit" )
          || input.equalsIgnoreCase ( "close" ) ) {
        Core.fileLogger.flush ( ) ;
        System.exit ( 0 ) ;
      } else {
        final String inp[] = input.split ( "(\\s)+" ) ;
        if ( inp.length == 0 ) { return ; }
        final Class<?> cmdClass = Class.forName ( "net.mokon.scrabble.cmd.CMD_"
            + inp[ 0 ].toLowerCase ( ) ) ;
        final Constructor<?> cmdConstructor = cmdClass
            .getDeclaredConstructors ( )[ 0 ] ;
        final Command toRun = (Command) cmdConstructor.newInstance ( inp,
            console, Core.scrabbleBoard, Core.main, Core.moves,
            Core.scrabbleBoard.bag ) ;
        if ( inp[ 0 ].equalsIgnoreCase ( "word" ) ) {
          final Method method = cmdClass.getMethod ( "setFrame", JFrame.class ) ;
          method.invoke ( toRun, Core.showWorkingScreen ( ) ) ;
        }
        toRun.start ( ) ;
      }
    } catch ( final ClassNotFoundException e ) {
      GUI.write ( "Unknown Command - Valid are [ help, word, use, draw,"
          + " place, set, unset, grid, size, fill, lookup ]" ) ;
    } catch ( final Throwable e ) {
      GUI.write ( "An error has been enountered [ " + e.toString ( )
          + " ]. Attempting to continue..." ) ;
      e.printStackTrace ( ) ;
      e.printStackTrace ( Core.fileLogger ) ;
    }
  }