public void mainLine(String[] args, Atdl4jConfiguration config) throws Exception
	{
		// -- Setup SWT-specific Display and Shell --
		Display display = new Display();
		shell = new Shell( display );
		GridLayout shellLayout = new GridLayout( 1, true );
		shell.setLayout( shellLayout );
		// shell.setText(
		// "atdl4j(sm)- The Open-Source Java Solution for FIXatdl(sm)" );
		// \u2120 should work but just get square box shell.setText(
		// "atdl4j\u2120 - The Open-Source Java Solution for FIXatdl\u2120" );
		shell.setText( "atdl4j - The Open-Source Java Solution for FIXatdl" );

		// -- Delegate setup to AbstractAtdl4jTesterApp, construct a new
		// SWT-specific Atdl4jOptions --
		init( args, config, new Atdl4jOptions(), shell );

		// -- Build the SWT.Composite from Atdl4jTesterPanel (** core GUI component **) --
		getAtdl4jTesterPanel().buildAtdl4jTesterPanel( shell, getAtdl4jOptions() );

		// -- SWT-specific stuff to improve layout --
		// screen sizing works better with pack() after open() shell.pack();
		shell.open();
		shell.pack();

		// -- avoid postage stamp size at start --
		shell.setSize( shell.computeSize( 475, 500 ) );

		// -- SWT-specific stuff to keep Display and Shell active --
		while ( !shell.isDisposed() )
		{
			try
			{
				if ( !display.readAndDispatch() )
				{
					display.sleep();
				}
			}
			catch (Exception e)
			{
				if ( Atdl4jConfig.getConfig().isCatchAllRuntimeExceptions() )
				{
					logger.warn( "Fatal Exception encountered", e );
					if ( ( getAtdl4jTesterPanel() != null ) && 
						  ( getAtdl4jTesterPanel().getAtdl4jCompositePanel() != null ) && 
						  ( getAtdl4jTesterPanel().getAtdl4jCompositePanel().getAtdl4jUserMessageHandler() != null ) )
					{
						getAtdl4jTesterPanel().getAtdl4jCompositePanel().getAtdl4jUserMessageHandler().displayException( "Fatal Exception encountered", "", e );

					}
				}
				else
				{
					throw e;
				}
			}
		}

		display.dispose();
	}