final static Options createInstance( final Configuration configuration ) {
        final Options instance = createDefaultInstance();
        if ( configuration != null ) {
            instance.setAntialiasScreen( configuration.isAntialiasScreen() );
            instance.setShowScale( configuration.isShowScale() );
            instance.setShowBranchLengthValues( configuration.isShowBranchLengthValues() );
            instance.setShowOverview( configuration.isShowOverview() );
            instance.setCladogramType( configuration.getCladogramType() );
            instance.setOvPlacement( configuration.getOvPlacement() );
            instance.setPrintLineWidth( configuration.getPrintLineWidth() );
            instance.setNodeLabelDirection( configuration.getNodeLabelDirection() );
            instance.setBackgroundColorGradient( configuration.isBackgroundColorGradient() );
            if ( configuration.getNumberOfDigitsAfterCommaForBranchLengthValues() >= 0 ) {
                instance.setNumberOfDigitsAfterCommaForBranchLength( configuration
                        .getNumberOfDigitsAfterCommaForBranchLengthValues() );
            }
            if ( configuration.getNumberOfDigitsAfterCommaForConfidenceValues() >= 0 ) {
                instance.setNumberOfDigitsAfterCommaForConfidenceValues( configuration
                        .getNumberOfDigitsAfterCommaForConfidenceValues() );
            }
            instance.setExtractPfamTaxonomyCodesInNhParsing( configuration.isExtractPfamTaxonomyCodesInNhParsing() );
            instance.setReplaceUnderscoresInNhParsing( configuration.isReplaceUnderscoresInNhParsing() );
            instance.setInternalNumberAreConfidenceForNhParsing( configuration
                    .isInternalNumberAreConfidenceForNhParsing() );
            instance.setNhParsingIgnoreQuotes( configuration.isNhParsingIgnoreQuotes() );
            instance.setEditable( configuration.isEditable() );
            if ( configuration.getMinConfidenceValue() != MIN_CONFIDENCE_DEFAULT ) {
                instance.setMinConfidenceValue( configuration.getMinConfidenceValue() );
            }
            if ( configuration.getGraphicsExportX() > 0 ) {
                instance.setPrintSizeX( configuration.getGraphicsExportX() );
            }
            if ( configuration.getGraphicsExportY() > 0 ) {
                instance.setPrintSizeY( configuration.getGraphicsExportY() );
            }
            if ( configuration.getBaseFontSize() > 0 ) {
                instance.setBaseFont( instance.getBaseFont().deriveFont( ( float ) configuration.getBaseFontSize() ) );
            }
            if ( !ForesterUtil.isEmpty( configuration.getBaseFontFamilyName() ) ) {
                instance.setBaseFont( new Font( configuration.getBaseFontFamilyName(), Font.PLAIN, instance
                        .getBaseFont().getSize() ) );
            }
            if ( configuration.getPhylogenyGraphicsType() != null ) {
                instance.setPhylogenyGraphicsType( configuration.getPhylogenyGraphicsType() );
            }
        }
        return instance;
    }