@Override
    public boolean handle(Context ctx) {
        String cmdLine = (String)ctx.getValue(Context.KEY_COMMAND_LINE_INPUT);
        boolean handled = false;

        // handle command line entry.  NOTE: value can be null
        if(
            cmdLine != null && 
            !cmdLine.trim().isEmpty() &&
            respondsTo.matcher(cmdLine).matches()
        ){
            String[] tokens = cmdLine.trim().split("\\s+");
            if(commands != null && !commands.isEmpty()){
                Command cmd = commands.get(tokens[0]);
                if(cmd != null){
                    if(tokens.length > 1){
                        String[] args = Arrays.copyOfRange(tokens, 1, tokens.length);
                        ctx.putValue(Context.KEY_COMMAND_LINE_ARGS, args);
                    }
                    
                    try{
                        cmd.execute(ctx);
                    }catch(Exception ex){
                        ctx.getIoConsole().printf("WARNING: unable to execute command: [%s]%n%s%n", cmdLine, ex.getMessage());
                    }
                }else{
                    ctx.getIoConsole().printf(
                            "%nCommand [%s] is unknown. "
                            + "Type help for a list of installed commands.", 
                            tokens[0]
                    );
                }
                handled = true;
            }
        }
        
        return handled;
    }