--- /dev/null
+#!perl
+package IntStack;
+use Mouse;
+
+has storage => (
+ is => 'ro',
+ isa => 'ArrayRef[Int]',
+
+ default => sub{ [] },
+ traits => [qw(Array)],
+
+ handles => {
+ push => 'push',
+ pop => 'pop',
+ top => [ get => -1 ],
+ },
+);
+
+__PACKAGE__->meta->make_immutable();
+
+package main;
+
+my $stack = IntStack->new;
+
+$stack->push(42);
+$stack->push(27);
+
+print $stack->pop, "\n";
+print $stack->top, "\n";
+