diff --git a/www/source/examples.pl b/www/source/examples.pl
new file mode 100644
index 0000000..16cab79
--- /dev/null
+++ b/www/source/examples.pl
@@ -0,0 +1,453 @@
+#!/usr/bin/perl
+#
+# Overall demo of the major PerlMagick methods.
+#
+use Image::Magick;
+
+#
+# Read model & smile image.
+#
+print "Read...\n";
+$null=Image::Magick->new;
+$null->Set(size=>'70x70');
+$x=$null->ReadImage('NULL:black');
+warn "$x" if "$x";
+
+$model=Image::Magick->new();
+$x=$model->ReadImage('model.gif');
+warn "$x" if "$x";
+$model->Label('Magick');
+$model->Set(background=>'white');
+
+$smile=Image::Magick->new;
+$x=$smile->ReadImage('smile.gif');
+warn "$x" if "$x";
+$smile->Label('Smile');
+$smile->Set(background=>'white');
+#
+# Create image stack.
+#
+print "Transform image...\n";
+$images=Image::Magick->new();
+
+print "Adaptive Blur...\n";
+$example=$model->Clone();
+$example->Label('Adaptive Blur');
+$example->AdaptiveBlur('0x1');
+push(@$images,$example);
+
+print "Adaptive Resize...\n";
+$example=$model->Clone();
+$example->Label('Adaptive Resize');
+$example->AdaptiveResize('60%');
+push(@$images,$example);
+
+print "Adaptive Sharpen...\n";
+$example=$model->Clone();
+$example->Label('Adaptive Sharpen');
+$example->AdaptiveSharpen('0x1');
+push(@$images,$example);
+
+print "Adaptive Threshold...\n";
+$example=$model->Clone();
+$example->Label('Adaptive Threshold');
+$example->AdaptiveThreshold('5x5+5%');
+push(@$images,$example);
+
+print "Add Noise...\n";
+$example=$model->Clone();
+$example->Label('Add Noise');
+$example->AddNoise("Laplacian");
+push(@$images,$example);
+
+print "Annotate...\n";
+$example=$model->Clone();
+$example->Label('Annotate');
+$example->Annotate(text=>'Magick',geometry=>'+0+20',font=>'Generic.ttf',
+  fill=>'gold',gravity=>'North',pointsize=>14);
+push(@$images,$example);
+
+print "Auto-gamma...\n";
+$example=$model->Clone();
+$example->Label('Auto Gamma');
+$example->AutoGamma();
+push(@$images,$example);
+
+print "Auto-level...\n";
+$example=$model->Clone();
+$example->Label('Auto Level');
+$example->AutoLevel();
+push(@$images,$example);
+
+print "Blur...\n";
+$example=$model->Clone();
+$example->Label('Blur');
+$example->Blur('0.0x1.0');
+push(@$images,$example);
+
+print "Border...\n";
+$example=$model->Clone();
+$example->Label('Border');
+$example->Border(geometry=>'6x6',color=>'gold');
+push(@$images,$example);
+
+print "Channel...\n";
+$example=$model->Clone();
+$example->Label('Channel');
+$example->Channel(channel=>'red');
+push(@$images,$example);
+
+print "Charcoal...\n";
+$example=$model->Clone();
+$example->Label('Charcoal');
+$example->Charcoal('0x1');
+push(@$images,$example);
+
+print "Composite...\n";
+$example=$model->Clone();
+$example->Label('Composite');
+$example->Composite(image=>$smile,compose=>'over',geometry=>'+35+65');
+push(@$images,$example);
+
+print "Contrast...\n";
+$example=$model->Clone();
+$example->Label('Contrast');
+$example->Contrast();
+push(@$images,$example);
+
+print "Contrast Stretch...\n";
+$example=$model->Clone();
+$example->Label('Contrast Stretch');
+$example->ContrastStretch('5%');
+push(@$images,$example);
+
+print "Convolve...\n";
+$example=$model->Clone();
+$example->Label('Convolve');
+$example->Convolve([1, 1, 1, 1, 4, 1, 1, 1, 1]);
+push(@$images,$example);
+
+print "Crop...\n";
+$example=$model->Clone();
+$example->Label('Crop');
+$example->Crop(geometry=>'80x80+25+50');
+$example->Set(page=>'0x0+0+0');
+push(@$images,$example);
+
+print "Despeckle...\n";
+$example=$model->Clone();
+$example->Label('Despeckle');
+$example->Despeckle();
+push(@$images,$example);
+
+print "Distort...\n";
+$example=$model->Clone();
+$example->Label('Distort');
+$example->Distort(method=>'arc',points=>[60],'virtual-pixel'=>'white');
+push(@$images,$example);
+
+print "Draw...\n";
+$example=$model->Clone();
+$example->Label('Draw');
+$example->Draw(fill=>'none',stroke=>'gold',primitive=>'circle',
+  points=>'60,90 60,120',strokewidth=>2);
+push(@$images,$example);
+
+print "Detect Edges...\n";
+$example=$model->Clone();
+$example->Label('Detect Edges');
+$example->Edge();
+push(@$images,$example);
+
+print "Emboss...\n";
+$example=$model->Clone();
+$example->Label('Emboss');
+$example->Emboss('0x1');
+push(@$images,$example);
+
+print "Equalize...\n";
+$example=$model->Clone();
+$example->Label('Equalize');
+$example->Equalize();
+push(@$images,$example);
+
+print "Implode...\n";
+$example=$model->Clone();
+$example->Label('Explode');
+$example->Implode(-1);
+push(@$images,$example);
+
+print "Flip...\n";
+$example=$model->Clone();
+$example->Label('Flip');
+$example->Flip();
+push(@$images,$example);
+
+print "Flop...\n";
+$example=$model->Clone();
+$example->Label('Flop');
+$example->Flop();
+push(@$images,$example);
+
+print "Frame...\n";
+$example=$model->Clone();
+$example->Label('Frame');
+$example->Frame('15x15+3+3');
+push(@$images,$example);
+
+print "Fx...\n";
+$example=$model->Clone();
+$example->Label('Fx');
+push(@$images,$example->Fx(expression=>'0.5*u'));
+
+print "Gamma...\n";
+$example=$model->Clone();
+$example->Label('Gamma');
+$example->Gamma(1.6);
+push(@$images,$example);
+
+print "Gaussian Blur...\n";
+$example=$model->Clone();
+$example->Label('Gaussian Blur');
+$example->GaussianBlur('0.0x1.5');
+push(@$images,$example);
+
+print "Gradient...\n";
+$gradient=Image::Magick->new;
+$gradient->Set(size=>'130x194');
+$x=$gradient->ReadImage('gradient:#20a0ff-#ffff00');
+warn "$x" if "$x";
+$gradient->Label('Gradient');
+push(@$images,$gradient);
+
+print "Grayscale...\n";
+$example=$model->Clone();
+$example->Label('Grayscale');
+$example->Quantize(colorspace=>'gray');
+push(@$images,$example);
+
+print "Implode...\n";
+$example=$model->Clone();
+$example->Label('Implode');
+$example->Implode(0.5);
+push(@$images,$example);
+
+print "Level...\n";
+$example=$model->Clone();
+$example->Label('Level');
+$example->Level('20%');
+push(@$images,$example);
+
+print "Median Filter...\n";
+$example=$model->Clone();
+$example->Label('Median Filter');
+$example->MedianFilter();
+push(@$images,$example);
+
+print "Modulate...\n";
+$example=$model->Clone();
+$example->Label('Modulate');
+$example->Modulate(brightness=>110,saturation=>110,hue=>110);
+push(@$images,$example);
+$example=$model->Clone();
+
+print "Monochrome...\n";
+$example->Label('Monochrome');
+$example->Quantize(colorspace=>'gray',colors=>2,dither=>'false');
+push(@$images,$example);
+
+print "Motion Blur...\n";
+$example=$model->Clone();
+$example->Label('Motion Blur');
+$example->MotionBlur('0x13+10-10');
+push(@$images,$example);
+
+print "Negate...\n";
+$example=$model->Clone();
+$example->Label('Negate');
+$example->Negate();
+push(@$images,$example);
+
+print "Normalize...\n";
+$example=$model->Clone();
+$example->Label('Normalize');
+$example->Normalize();
+push(@$images,$example);
+
+print "Oil Paint...\n";
+$example=$model->Clone();
+$example->Label('Oil Paint');
+$example->OilPaint();
+push(@$images,$example);
+
+print "Plasma...\n";
+$plasma=Image::Magick->new;
+$plasma->Set(size=>'130x194');
+$x=$plasma->ReadImage('plasma:fractal');
+warn "$x" if "$x";
+$plasma->Label('Plasma');
+push(@$images,$plasma);
+
+print "Polaroid...\n";
+$example=$model->Clone();
+$example->Label('Polaroid');
+$example->Polaroid(caption=>'Magick',rotate=>-5.0,gravity=>'center');
+push(@$images,$example);
+
+print "Quantize...\n";
+$example=$model->Clone();
+$example->Label('Quantize');
+$example->Quantize();
+push(@$images,$example);
+
+print "Radial Blur...\n";
+$example=$model->Clone();
+$example->Label('Radial Blur');
+$example->RadialBlur(10);
+push(@$images,$example);
+
+print "Raise...\n";
+$example=$model->Clone();
+$example->Label('Raise');
+$example->Raise('10x10');
+push(@$images,$example);
+
+print "Recolor...\n";
+$example=$model->Clone();
+$example->Label('Recolor');
+$example->Recolor([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0.5, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
+push(@$images,$example);
+
+print "Reduce Noise...\n";
+$example=$model->Clone();
+$example->Label('Reduce Noise');
+$example->ReduceNoise();
+push(@$images,$example);
+
+print "Resize...\n";
+$example=$model->Clone();
+$example->Label('Resize');
+$example->Resize('60%');
+push(@$images,$example);
+
+print "Roll...\n";
+$example=$model->Clone();
+$example->Label('Roll');
+$example->Roll(geometry=>'+20+10');
+push(@$images,$example);
+
+print "Rotate...\n";
+$example=$model->Clone();
+$example->Label('Rotate');
+$example->Rotate(45);
+push(@$images,$example);
+
+print "Sample...\n";
+$example=$model->Clone();
+$example->Label('Sample');
+$example->Sample('60%');
+push(@$images,$example);
+
+print "Scale...\n";
+$example=$model->Clone();
+$example->Label('Scale');
+$example->Scale('60%');
+push(@$images,$example);
+
+print "Segment...\n";
+$example=$model->Clone();
+$example->Label('Segment');
+$example->Segment();
+push(@$images,$example);
+
+print "Shade...\n";
+$example=$model->Clone();
+$example->Label('Shade');
+$example->Shade(geometry=>'30x30',gray=>'true');
+push(@$images,$example);
+
+print "Sharpen...\n";
+$example=$model->Clone();
+$example->Label('Sharpen');
+$example->Sharpen('0.0x1.0');
+push(@$images,$example);
+
+print "Shave...\n";
+$example=$model->Clone();
+$example->Label('Shave');
+$example->Shave('10x10');
+push(@$images,$example);
+
+print "Shear...\n";
+$example=$model->Clone();
+$example->Label('Shear');
+$example->Shear('-20x20');
+push(@$images,$example);
+
+print "Sketch...\n";
+$example=$model->Clone();
+$example->Label('Sketch');
+$example->Set(colorspace=>'Gray');
+$example->Sketch('0x20+120');
+push(@$images,$example);
+
+print "Sigmoidal Contrast...\n";
+$example=$model->Clone();
+$example->Label('Sigmoidal Contrast');
+$example->SigmoidalContrast("3x50%");
+push(@$images,$example);
+
+print "Spread...\n";
+$example=$model->Clone();
+$example->Label('Spread');
+$example->Spread();
+push(@$images,$example);
+
+print "Solarize...\n";
+$example=$model->Clone();
+$example->Label('Solarize');
+$example->Solarize();
+push(@$images,$example);
+
+print "Swirl...\n";
+$example=$model->Clone();
+$example->Label('Swirl');
+$example->Swirl(90);
+push(@$images,$example);
+
+print "Unsharp Mask...\n";
+$example=$model->Clone();
+$example->Label('Unsharp Mask');
+$example->UnsharpMask('0.0x1.0');
+push(@$images,$example);
+
+print "Vignette...\n";
+$example=$model->Clone();
+$example->Label('Vignette');
+$example->Vignette('0x20');
+push(@$images,$example);
+
+print "Wave...\n";
+$example=$model->Clone();
+$example->Label('Wave');
+$example->Wave('25x150');
+push(@$images,$example);
+#
+# Create image montage.
+#
+print "Montage...\n";
+$montage=$images->Montage(geometry=>'128x160+8+4>',gravity=>'Center',
+  tile=>'5x+10+200',compose=>'over',background=>'#ffffff',
+  font=>'Generic.ttf',pointsize=>18,fill=>'#600',stroke=>'none',
+	shadow=>'true');
+
+$logo=Image::Magick->new();
+$logo->Read('logo:');
+$logo->Zoom('40%');
+$montage->Composite(image=>$logo,gravity=>'North');
+
+print "Write...\n";
+$montage->Set(matte=>'false');
+$montage->Write('demo.jpg');
+print "Display...\n";
+$montage->Write('win:');