public static void main(final String[] args) {
        long start = System.currentTimeMillis();
        final VFrame frame = new VFrame(); // our frame chain.
        for(String s : args)
            frame.stack().push(new Term<String>(Type.TString, s));
        final boolean interactive = args.length == 0 ? true : false;
        // Setup the world quote.

        Prologue.init(frame);
        try {
            // do we have any args?
            CharStream cs = null;
            if (args.length > 0) {
                debug("Opening:" + args[0]);
                cs = new FileCharStream(args[0]);
            } else {
                banner();
                cs = ConsoleCharStream.getInstance();
            }

            CmdQuote program = new CmdQuote(new LexStream(cs)) {
                public void dofunction(VFrame scope) {
                    if (interactive) {
                        try {
                            super.dofunction(scope);
                        } catch (VException e) {
                            outln(">" + e.message());
                            outln(" " + e.stack());
                            frame.dump();
                            //frame.reinit();
                            V.debug(e);
                        } catch (Exception e) {
                            outln(">" + e.getMessage());
                            frame.dump();
                            //frame.reinit();
                            e.printStackTrace();
                        }
                    } else super.dofunction(scope);
                }
            };
            program.eval(frame.child()); // we save the original defs.
        } catch (VException e) {
            outln(e.message());
            outln(e.stack());
            debug(e);
        } catch (Exception e) {
            outln(e.getMessage());
            debug(e);
        }
        if (_showtime)
            outln("time: " + (System.currentTimeMillis() - start));

    }