diff --git a/PerlMagick/demo/Turtle.pm b/PerlMagick/demo/Turtle.pm
new file mode 100644
index 0000000..93bc819
--- /dev/null
+++ b/PerlMagick/demo/Turtle.pm
@@ -0,0 +1,56 @@
+package Turtle;
+
+# Written by jreed@itis.com, adapted by John Cristy.
+
+sub new
+{
+  my $class = shift;
+  my $self = {};
+
+  @{$self}{qw(x y theta mirror)} = @_;
+  bless $self, $class;
+}
+
+sub forward
+{
+  my $self = shift;
+  my ($r, $what) = @_;
+  my ($newx, $newy)=($self->{x}+$r* sin($self->{theta}),
+                     $self->{y}+$r*-cos($self->{theta}));
+  if ($what) {
+    &$what($self->{x}, $self->{y}, $newx, $newy);  # motion
+  }
+  # According to the coderef passed in
+  ($self->{x}, $self->{y})=($newx, $newy);  # change the old coords
+}
+
+sub turn
+{
+  my $self = shift;
+  my $dtheta = shift;
+
+  $self->{theta} += $dtheta*$self->{mirror};
+}
+
+sub state
+{
+  my $self = shift;
+
+  @{$self}{qw(x y theta mirror)};
+}
+
+sub setstate
+{
+  my $self = shift;
+
+  @{$self}{qw(x y theta mirror)} = @_;
+}
+
+sub mirror
+{
+  my $self = shift;
+
+  $self->{mirror} *= -1;
+}
+
+"Turtle.pm";