diff --git a/www/command-line-options.html b/www/command-line-options.html
index 55083f5..5a747be 100644
--- a/www/command-line-options.html
+++ b/www/command-line-options.html
@@ -149,7 +149,7 @@
    <a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
 </div>
 </div>
 </div>
@@ -685,11 +685,22 @@
 
 <table style='background-color:#FFFFE0; margin-left:40px; margin-right:40px; width:88%'><tr><td style='width:75%'>Surround the image with a border of color. </td><td style='text-align:right;'></td></tr></table>
 
-<p>Set the width and height using the <em class="arg">size</em> portion of the <em class="arg">gravity</em> argument.  See <a href="../www/command-line-processing.html#geometry">Image Geometry</a> for complete details about the <em class="arg">geometry</em> argument. Offsets are ignored. </p>
+<p>Set the width and height using the <em class="arg">size</em> portion of the
+<em class="arg">gravity</em> argument.  See <a href="../www/command-line-processing.html#geometry">Image Geometry</a> for complete details about the <em class="arg">geometry</em> argument. Offsets are
+ignored. </p>
 
-<p>Set the border color by preceding with the <a href="#bordercolor">-bordercolor</a> setting.</p>
+<p>Set the border color by preceding with the <a
+href="#bordercolor">-bordercolor</a> setting.</p>
 
-<p>See also the <a href="#frame">-frame</a> option, which has more functionality.</p>
+<p>The <a href="#border">-border</a> operation is affected by the current <a
+href="#compose">-compose</a> setting and assumes that this is using the default
+'<kbd>Over</kbd>' composition method.  It generates a image of the appropriate
+size colors by the current <a href="#bordercolor">-bordercolor</a> before
+overlaying the original image in the center of this net image.  This means that
+with the default compose method of '<kbd>Over</kbd>' any transparent parts may
+be replaced by the current <a href="#bordercolor">-bordercolor</a> setting.</p>  
+<p>See also the <a href="#frame">-frame</a> option, which has more
+functionality.</p>
 
 <div style="margin: auto;">
   <h4><a name="bordercolor" id="bordercolor"></a>-bordercolor <em class="arg">color</em></h4>
@@ -1210,7 +1221,12 @@
 
 <p>This option places comments in a non-pixel portion of the image file. For a comment to be visibly written on the image itself, use the <a href="#annotate">-annotate</a> or <a href="#draw">-draw</a> options.</p>
 
-<p>Use this option to assign a specific comment to the image, when writing to an image format that supports comments.  You can include the image filename, type, width, height, or other image attribute by embedding special format characters listed under the <a href="#format">-format</a> option. The comment is not drawn on the image, but is embedded in the image datastream via "Comment" tag or similar mechanism. </p>
+<p>Use this option to assign a specific comment to the image, when writing to
+an image format that supports comments.  You can include the image filename,
+type, width, height, or other image attribute by embedding special format
+characters listed in the <a href="../www/escape.html">Format and Print Image
+Properties</a>. The comment is not drawn on the image, but is embedded in the
+image datastream via "Comment" tag or similar mechanism. </p>
 
 <p>For example,</p>
 
@@ -1218,7 +1234,8 @@
      -comment "%m:%f %wx%h"
 </p>
 
-<p>produces an image comment of <kbd>MIFF:bird.miff 512x480</kbd> for an image titled <kbd>bird.miff</kbd> and whose width is 512 and height is 480.</p>
+<p>produces an image comment of <kbd>MIFF:bird.miff 512x480</kbd> for an image
+titled <kbd>bird.miff</kbd> and whose width is 512 and height is 480.</p>
 
 <p>If the first character of <em class="arg">string</em> is <em class="arg">@</em>, the image comment is read from a file titled by the remaining characters in the string.  Comments in a file are literal; no embedded formatting characters are recognized.</p>
 
@@ -1228,534 +1245,29 @@
 
 <table style='background-color:#FFFFE0; margin-left:40px; margin-right:40px; width:88%'><tr><td style='width:75%'>Set the type of image composition.</td><td style='text-align:right;'></td></tr></table>
 
-<p>The description of composition uses abstract terminology in order to allow
-the description to be more precise, while avoiding constant values which are
-specific to a particular build configuration. Each image pixel is represented
-by red, green, and blue levels (which are equal for a gray pixel). The
-build-dependent value <em class="QR">QuantumRange</em> is the maximum integral
-value which may be stored, per pixel, in the red, green, or blue channels of
-the image. Each image pixel may also optionally (if the image matte channel is
-enabled) have an associated level of opacity, ranging from <em>opaque</em> to
-<em>transparent</em>, which may be used to determine the influence of the pixel
-color when compositing the pixel with another image pixel. If the image matte
-channel is disabled, then all pixels in the image are treated as opaque. The
-color of an opaque pixel is fully visible while the color of a transparent
-pixel color is entirely absent (pixel color is ignored).</p>
+<p>See <a href="../www/compose.html">Alpha Compositing</a> for
+a detailed discussion of alpha compositing.</p>
 
-<p>By definition, raster images have a rectangular shape. All image rows are of
-equal length, as are all image columns. By treating the alpha channel as a
-visual "mask" the rectangular image may be given a "shape" by treating the
-alpha channel as a cookie-cutter for the image. This is done by setting the
-pixels within the shape to be opaque, with pixels outside the shape set as
-transparent. Pixels on the boundary of the shape may be between opaque and
-transparent in order to provide antialiasing (visually smooth edges). The
-description of the composition operators use this concept of image "shape" in
-order to make the description of the operators easier to understand. While it
-is convenient to describe the operators in terms of "shapes" they are by no
-means limited to mask-style operations since they are based on continuous
-floating-point mathematics rather than simple boolean operations.</p>
+<p>This setting effects image processing operators that merge two (or more)
+images together in some way.  This includes the operators,
+<a href="#composite">-composite</a>,
+<a href="#layers">-layers</a> composite,
+<a href="#flatten">-flatten</a>,
+<a href="#mosaic">-mosaic</a>,
+<a href="#layers">-layers</a> merge,
+<a href="#border">-border</a>,
+<a href="#frame">-frame</a>,
+and <a href="#extent">-extent</a>. </p>
 
-<p>The following alpha blending (Duff-Porter) compose methods are available:</p>
-
-<table class="doc">
-  <tbody>
-  <tr valign="top">
-    <th align="left" style="width: 8%">Method</th>
-    <th align="left">Description</th>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">clear</td>
-    <td valign="top">Both the color and the alpha of the destination are
-        cleared. Neither the source nor the destination are used (except for
-        destinations size and other meta-data which is always preserved.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">src</td>
-    <td valign="top">The source is copied to the destination. The destination
-        is not used as input, though it is cleared.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">dst</td>
-    <td valign="top">The destination is left untouched. The source image is
-        completely ignored.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">src-over</td>
-    <td valign="top">The source is composited over the destination. this is
-       the default alpha blending compose method, when neither the compose
-       setting is set, nor is set in the image meta-data.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">dst-over</td>
-    <td valign="top">The destination is composited over the source and the
-        result replaces the destination.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">src-in</td>
-    <td valign="top">The part of the source lying inside of the destination
-        replaces the destination.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">dst-in</td>
-    <td valign="top">The part of the destination lying inside of the source
-        replaces the destination. Areas not overlaid are cleared.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">src-out</td>
-    <td valign="top">The part of the source lying outside of the destination
-        replaces the destination.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">dst-out</td>
-    <td valign="top">The part of the destination lying outside of the source
-        replaces the destination.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">src-atop</td>
-    <td valign="top">The part of the source lying inside of the destination is
-        composited onto the destination.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">dst-atop</td>
-    <td valign="top">The part of the destination lying inside of the source is
-        composited over the source and replaces the destination. Areas not
-        overlaid are cleared. </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">xor</td>
-    <td valign="top">The part of the source that lies outside of the
-        destination is combined with the part of the destination that lies
-        outside of the source.  Source or Destination, but not both. </td>
-  </tr>
-
-  </tbody>
-</table>
-
-<p>Any of the 'Src-*' methods can also be specified without the 'Src-' part.
-For example the defaul compose method can be specified as just 'Over'.</p>
-
-
-<p>The following mathemathical composition methods are also available. </p>
-
-<table class="doc">
-  <tbody>
-  <tr valign="top">
-    <th align="left" style="width: 8%">Method</th>
-    <th align="left">Description</th>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">multiply</td>
-    <td valign="top">The source is multiplied by the destination and replaces
-        the destination. The resultant color is always at least as dark as
-        either of the two constituent colors. Multiplying any color with black
-        produces black. Multiplying any color with white leaves the original
-        color unchanged.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">screen</td>
-    <td valign="top">The source and destination are complemented and then
-        multiplied and then replace the destination. The resultant color is
-        always at least as light as either of the two constituent colors.
-        Screening any color with white produces white. Screening any color
-        with black leaves the original color unchanged.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">plus</td>
-    <td valign="top">The source is added to the destination and replaces the
-        destination. This operator is useful for averaging or a controled
-        merger of two images, rather than a direct overlay.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">add</td>
-    <td valign="top">As per 'plus' but transparency data is treated as matte
-        values. As such any transparent areas in either image remain
-        transparent. </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">minus</td>
-    <td valign="top">Subtract the colors in the source image from the
-        destination image. When transparency is involved, opaque areas is
-        subtracted from any destination opaque areas. </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">subtract</td>
-    <td valign="top">Subtract the colors in the source image from the
-        destination image. When transparency is involved transparent areas are
-        subtracted, so only the opaque areas in the source remain opaque in
-        the destination image. </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">difference</td>
-    <td valign="top">Subtracts the darker of the two constituent colors from
-        the lighter. Painting with white inverts the destination color.
-        Painting with black produces no change.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">exclusion</td>
-    <td valign="top">Produces an effect similar to that of 'difference', but
-        appears as lower contrast.  Painting with white inverts the
-        destination color. Painting with black produces no change.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">darken</td>
-    <td valign="top">Selects the darker of the destination and source colors.
-        The destination is replaced with the source when the source is darker,
-        otherwise it is left unchanged.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">lighten</td>
-    <td valign="top">Selects the lighter of the destination and source colors.
-        The destination is replaced with the source when the source is
-        lighter, otherwise it is left unchanged. </td>
-  </tr>
-
-  </tbody>
-</table>
-
-<p>Typically these use the default 'Over' alpha blending when transparencies
-are also involved, except for 'Plus' which uses a 'plus' alpha blending.
-This means the alpha channel is used to not only specify that all
-non-transparent parts of the input image is visible, but also applied color
-channel 'weighting' of the values. This also applied to the lighting
-composition methods below. </p>
-
-<p>As of IM v6.6.1-6, if the special '<kbd>Sync</kbd>' flag is not specified
-(enabled by default) with the <a href="#channel" >-channel</a> setting, then
-the above mathematical compositions will nolonger syncronise its actiosn with
-the alpha channel.  Instead the math composition will be applied on an
-individual channel basis as defined by the <a href="#channel" >-channel</a>.
-this includes the alpha channel. </p>
-
-<p>This special usage allows you to perform mathematics between images. </p>
-
-
-<p>The following lighting composition methods are also available. </p>
-
-<table class="doc">
-  <tbody>
-  <tr valign="top">
-    <th align="left" style="width: 8%">Method</th>
-    <th align="left">Description</th>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">linear-dodge</td>
-    <td valign="top">This is equivelent to 'Plus' in that the color channels
-        are simply added, however it does not 'Plus' the alpha channel, but
-        uses the normal 'Over' alpha blending, which transparencies are
-        involved.  Produces a sort of additive multiply-like result. Added
-        ImageMagick version 6.5.4-3. </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">linear-burn</td>
-    <td valign="top">As 'Linear-Dodge', but also subtract one from the result.
-        Sort of a additive 'Screen' of the images.  Added ImageMagick version
-        6.5.4-3. </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">color-dodge</td>
-    <td valign="top">Brightens the destination color to reflect the source
-        color. Painting with black produces no change.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">color-burn</td>
-    <td valign="top">Darkens the destination color to reflect the source
-        color.  Painting with white produces no change. Fixed in ImageMagick
-        version 6.5.4-3. </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">overlay</td>
-    <td valign="top">Multiplies or screens the colors, dependent on the
-        destination color. Source colors overlay the destination whilst
-        preserving its highlights and shadows. The destination color is not
-        replaced, but is mixed with the source color to reflect the lightness
-        or darkness of the destination.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">hard-light</td>
-    <td valign="top">Multiplies or screens the colors, dependent on the source
-        color value. If the source color is lighter than 0.5, the destination
-        is lightened as if it were screened. If the source color is darker
-        than 0.5, the destination is darkened, as if it were multiplied. The
-        degree of lightening or darkening is proportional to the difference
-        between the source color and 0.5. If it is equal to 0.5 the
-        destination is unchanged.  Painting with pure black or white produces
-        black or white.</td>
-  </tr>
-
-
-  <tr valign="top">
-    <td valign="top">linear-light</td>
-    <td valign="top">Like 'Hard-Light' but using linear-dodge and linear-burn
-        instead.  Increases contrast slightly with an impact on the
-        foreground's tonal values.</td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">soft-light</td>
-    <td valign="top">Darkens or lightens the colors, dependent on the source
-        color value. If the source color is lighter than 0.5, the destination
-        is lightened. If the source color is darker than 0.5, the destination
-        is darkened, as if it were burned in. The degree of darkening or
-        lightening is proportional to the difference between the source color
-        and 0.5. If it is equal to 0.5, the destination is unchanged. Painting
-        with pure black or white produces a distinctly darker or lighter area,
-        but does not result in pure black or white. Fixed in ImageMagick
-        version 6.5.4-3. </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">pegtop-light</td>
-    <td valign="top">Almost equivelent to 'Soft-Light', but using a
-        continuious mathematical formula rather than two conditionally
-        selected formulae. Added ImageMagick version 6.5.4-3. </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">vivid-light</td>
-    <td valign="top">A modified 'Linear-Light' designed to preserve very stong
-        primary and secondary colors in the image. Added ImageMagick version
-        6.5.4-3. </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">pin-light</td>
-    <td valign="top">Similar to 'Hard-Light', but using sharp linear shadings,
-        to similate the effects of a strong 'pinhole' light source. Added
-        ImageMagick version 6.5.4-3. </td>
-  </tr>
-
-  </tbody>
-</table>
-
-
-
-<p>Also included are these special purpose compose methods:</p>
-
-<table class="doc">
-  <tbody>
-  <tr valign="top">
-    <th align="left" style="width: 8%">Method</th>
-    <th align="left">Description</th>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">copy-*</td>
-    <td valign="top">Copy the specified channel (Red, Green, Blue, Cyan,
-        Magenta, Yellow, Black, or Opacity) in the source image to the
-        same channel in the destination image.  If the channel specified
-        does not exist in the source image, (which can only happen for methods,
-        '<kbd>copy-opacity</kbd>' or '<kbd>copy-black</kbd>') then it is
-        assumed that the source image is a special grayscale channel image
-        of the values to be copied. </td>
-    </tr>
-
-  <tr valign="top">
-    <td valign="top">change-mask</td>
-    <td valign="top">Replace any destination pixel that is the similar to the source images pixel (as defined by the current <a href="#fuzz">-fuzz</a> factor), with transparency. </td>
-  </tr>
-  </tbody>
-</table>
-
-<p>On top of these composed methods are a few special ones that not only require
-the two images that are being merged or overlaid, but have some extra numerical
-arguments, which are tabled below. </p>
-
-<p>In the "<code>composite</code>" command these composition methods are
-selected using special options with the arguments needed. They are usually,
-but not always, the same name as the composte 'method' they use, and replaces
-the normal use of the <a href="#compose" >-compose</a> setting in the
-"<code>composite</code>" command.  For example... </p>
-
-<p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>composite ... -blend 50x50 ...</span></p>
-<p>As of IM v6.5.3-4 the "<code>convert</code>" command can now also supply
-these extra arguments to its <a href="#composite" >-composite</a> operator,
-using the special <a href="#set">-set</a> attribute of '<kbd class="arg">option:compose:args</kbd>'.  This means you can now make use of
-these special argumented <a href="#compose" >-compose</a> methods, those the
-argument and the method both need to be set separatally.  For example... </p>
-
-<p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>convert ... -compose blend  -set option:compose:args 50x50  -composite ...</span></p>
-<p>The following is a table of these special 'argumented' compose methods,
-with a brief summary of what they do. For more details see the equivalent
-"composite" command option name.  </p>
-
-<table class="doc">
-  <tbody>
-  <tr valign="top">
-    <th align="left" style="width: 8%">Method</th>
-    <th align="left">Description</th>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">dissolve</td>
-    <td valign="top">Arguments:
-        <em class="arg">src_percent</em>[x<em class="arg">dst_percent</em>]
-    <br>Equivalent to "<code>composite</code>" <a href="#dissolve">-dissolve</a>
-    <br>Dissolve the 'source' image by the percentage given before overlaying
-        'over' the 'destination' image. If <em class="arg">src_percent</em> is
-        greater than 100, it starts dissolving the main image so it will
-        become transparent at a value of '<kbd class="arg">200</kbd>'.  If
-        both percentages are given, each image are dissolved to the
-        percentages given.
-    </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">blend</td>
-    <td valign="top">Arguments:
-        <em class="arg">src_percent</em>[x<em class="arg">dst_percent</em>]
-    <br>Equivalent to "<code>composite</code>" <a href="#blend">-blend</a>
-    <br>Average the images together ('plus') according to the percentages
-        given and each pixels transparency.  If only a single percentage value
-        is given it sets the weight of the composite or 'source' image, while
-        the background image is weighted by the exact opposite amount. That is
-        a <kbd>-blend 30</kbd> merges 30% of the 'source' image with 70% of
-        the 'destination' image.  Thus it is equivalent to <kbd>-blend
-        30x70</kbd>.
-    </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">mathematics</td>
-    <td valign="top">Arguments: <em class="arg">A, B, C, D</em>
-    <br>Not available in "<code>composite</code>" at this time.
-    <br>Merge the source and destination images according to the formula
-    <br>&nbsp; &nbsp; &nbsp;<code>A*Sc*Dc + B*Sc + C*Dc + D</code>
-    <br>Can be used to generate a custom composition method that would
-        otherwise need to be implemented using the slow <a href="#fx">-fx</a>
-        DIY image operator.   Added to ImageMagick version 6.5.4-3.
-    <br>As of IM v6.6.1-6 this method will do per-channel math compositions
-        if the 'Sync' flag is removed from <a href="#channel" >-channel</a>,
-        just like all the other mathematical compostion methods above.
-    </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">modulate</td>
-    <td valign="top">Arguments:
-        <em class="arg">brightness</em>[x<em class="arg">saturation</em>]
-    <br>Equivalent to "<code>composite</code>" <a href="#watermark">-watermark</a>
-    <br>Take a grayscale image (with alpha mask) and modify the destination
-        image's brightness according to watermark image's grayscale value and
-        the <em class="arg">brightness</em> percentage.  The destinations
-        color saturation attribute is just direct modified by the <em
-        class="arg">saturation</em> percentage, which defaults to 100 percent
-        (no color change).
-
-    </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">displace</td>
-    <td valign="top">Arguments:
-        <em class="arg">X-scale</em>[x<em class="arg">Y-scale</em>][!][%]
-    <br>Equivalent to "<code>composite</code>" <a href="#displace">-displace</a>
-    <br>With this option, the 'overlay' image, and optionally the 'mask'
-        image, is used as a relative displacement map, which is used to
-        displace the lookup of what part of the destination image is seen at
-        each point of the overlaid area.  Much like the displacement map is a
-        'lens' that distorts the original 'background' image behind it.
-    <br><br>
-        The X-scale is modilated by the 'red' channel of the overlay image
-        while the Y-scale is modulated by the green channel, (the mask image
-        if given is rolled into green channel of the overlay image. This
-        separation allows you to modulate the X and Y lookup displacement
-        separatally allowing you to di 2 dimentional displacements, rather
-        than 1 dimentional verctored displacements (using grayscale image).
-    <br><br>
-        If the overlay image contains transparency this is used as a mask
-        of the resulting image to remove 'invalid' pixels.
-    <br><br>
-        The '%' flag makes the displacement scale relative to the size of the
-        overlay image (100% = half width/height of image). Using '!' switches
-        percentage arguments to refer to the destination image size instead.
-    <br><br>
-        Special flags were added Added to ImageMagick version 6.5.3-5.
-    </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">distort</td>
-    <td valign="top">Arguments:
-        <em class="arg">X-scale</em>[x<em class="arg">Y-scale</em
-        >[+<em class="arg">X-center</em>+<em class="arg">Y-center</em>]][!][%]
-    <br>Not available in "<code>composite</code>" at this time.
-    <br>Exactly as per 'Displace' (above), but using absolute coordinates,
-        relative to the center of the overlay (or that given).  Basically
-        allows you to generate absolute distortion maps where 'black' will
-        look up the left/top edge, and 'white' looks up the bottom/right
-        edge of the destination image, according to the scale given.
-    <br><br>
-        The '!' flag not only switches percentage scaling, to use the
-        destination image, but also the image the center offset of the lookup.
-        This means the overlay can lookup a completely different region of the
-        destination image.
-    <br><br>
-        Added to ImageMagick version 6.5.3-5.
-    </td>
-  </tr>
-
-  <tr valign="top">
-    <td valign="top">blur</td>
-    <td valign="top">Arguments:
-        <em class="arg">Width</em>[x<em class="arg">Height</em
-          >[+<em class="arg">Angle</em>]]
-    <br>Equivalent to "<code>composite</code>"
-        <a href="#blur-composite">-blur</a>
-    <br>A Variable Blur Mapping Composition method, where each pixel in the
-        overlaid region is replaced with an Elliptical Weighted Average (EWA),
-        with an ellipse (typically a circle) of the given sigma size, scaled
-        according to overlay (source image) grayscale mapping.
-    <br><br>
-        As per 'Displace' and 'Distort', the red channel will modulate the
-        width of the ellipse, while the green channel will modulate the height
-        of the ellipse.  However at this time the ellipse angle is not
-        modulated though this may be a future posibility (perhaps with a
-        special flag to enable use of blur channel for this purpose).
-    <br><br>
-        Added to ImageMagick version 6.5.4-0.
-    </td>
-  </tr>
-
-  </tbody>
-</table>
-
-<p>To print a complete list of all the available compose operators, use <a
-href="#list">-list compose</a>.</p>
+<p>It is also one of the primary options for the "<kbd>composite</kbd>"
+command.  </p>
 
 
 <div style="margin: auto;">
   <h4><a name="composite" id="composite"></a>-composite</h4>
 </div>
 
-<table style='background-color:#FFFFE0; margin-left:40px; margin-right:40px; width:88%'><tr><td style='width:75%'>Perform alpha composition on the current image sequence.</td><td style='text-align:right;'></td></tr></table>
+<table style='background-color:#FFFFE0; margin-left:40px; margin-right:40px; width:88%'><tr><td style='width:75%'>Perform alpha composition on two images and an optional mask</td><td style='text-align:right;'></td></tr></table>
 
 <p>Take the first image 'destination' and overlay the second 'source' image
 according to the current <a href="#compose">-compose</a> setting. The location
@@ -2688,7 +2200,10 @@
    -draw 'image SrcOver 100,100 225,225 image.jpg'
 </p>
 
-<p>You can use 0,0 for the image size, which means to use the actual dimensions found in the image header. Otherwise, it is scaled to the given dimensions. See <a href="#compose">-compose</a> for a description of the composite operators.</p>
+<p>You can use 0,0 for the image size, which means to use the actual
+dimensions found in the image header. Otherwise, it is scaled to the given
+dimensions. See <a href="../www/compose.html">Alpha Compositing</a> for
+a detailed discussion of alpha composition methods that are available. </p>
 
 <p>Use <kbd>text</kbd> to annotate an image with text. Follow the text coordinates with a string. If the string has embedded spaces, enclose it in single or double quotes.</p>
 
@@ -3191,9 +2706,31 @@
 
 <table style='background-color:#FFFFE0; margin-left:40px; margin-right:40px; width:88%'><tr><td style='width:75%'>Surround the image with a border or beveled frame.</td><td style='text-align:right;'></td></tr></table>
 
-<p>The color of the border is specified with the <a href="#mattecolor">-mattecolor</a> command line option. </p>
+<p>The color of the border is specified with the <a href="#mattecolor"
+>-mattecolor</a> command line option. </p>
 
-<p>See <a href="../www/command-line-processing.html#geometry">Image Geometry</a> for complete details about the <em class="arg">geometry</em> argument. The <em class="arg">size</em> portion of the <em class="arg">geometry</em> argument indicates the amount of extra width and height that is added to the dimensions of the image. If no offsets are given in the <em class="arg">geometry</em> argument, then the border added is a solid color.  Offsets <em>x</em> and <em>y</em>, if present, specify that the width and height of the border is partitioned to form an outer bevel of thickness <em>x</em>&nbsp;pixels and an inner bevel of thickness <em>y</em>&nbsp;pixels. (Negative offsets make no sense here.)  The <a href="#frame">-frame</a> option is not affected by the <a href="#gravity">-gravity</a> option.</p>
+<p>See <a href="../www/command-line-processing.html#geometry">Image Geometry</a> for complete details about the <em class="arg">geometry</em> argument. The <em class="arg">size</em> portion of the <em
+class="arg">geometry</em> argument indicates the amount of extra width and
+height that is added to the dimensions of the image. If no offsets are given
+in the <em class="arg">geometry</em> argument, then the border added is
+a solid color.  Offsets <em>x</em> and <em>y</em>, if present, specify that
+the width and height of the border is partitioned to form an outer bevel of
+thickness <em>x</em>&nbsp;pixels and an inner bevel of thickness
+<em>y</em>&nbsp;pixels. Negative offsets make no sense as frame arguments.
+</p>
+
+<p>The <a href="#frame">-frame</a> option is affected by the current <a
+href="#compose">-compose</a> setting and assumes that this is using the default
+'<kbd>Over</kbd>' composition method.  It generates a image of the appripriate
+size with the current <a href="#bordercolor">-bordercolor</a> setting, and then
+draws the frame of four distinct colors close to the current <a
+href="#mattecolor">-mattecolor</a>.  The original image is then overlaid onto
+center of this image.  This means that with the default compose method of
+'<kbd>Over</kbd>' any transparent parts may be replaced by the current <a
+href="#bordercolor">-bordercolor</a> setting.</p>
+
+<p>The image composition is not
+affected by the <a href="#gravity">-gravity</a> option.</p>
 
 
 <div style="margin: auto;">
@@ -3688,7 +3225,9 @@
 
 <p>When saving an image to a <em class="arg">PostScript</em> file, any label assigned to an image is used as a header string to print above the postscript image. </p>
 
-<p>You can include the image filename, type, width, height, or other image attribute by embedding special format character.  See <a href="#format">-format</a> for details of the percent escape codes.</p>
+<p>You can include the image filename, type, width, height, or other image
+attribute by embedding special format character.  See <a href="../www/escape.html">Format and Print Image
+Properties</a> for details of the percent escape codes.</p>
 
 <p>For example,</p>
 
