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";