Index: /trunk/lib/Ripper.pm
===================================================================
--- /trunk/lib/Ripper.pm	(revision 28)
+++ /trunk/lib/Ripper.pm	(revision 29)
@@ -9,8 +9,12 @@
 use File::Copy;
 
-has device => ( is => 'rw' );
+has device => (
+    is  => 'rw',
+    isa => 'Str',
+);
 has tracks => ( 
-    is => 'rw',
-    handles => [qw{read_disc has_tracks get_cuesheet}],
+    is      => 'rw',
+    isa     => 'Tracks',
+    handles => [qw{read_disc has_tracks}],
 );
 
@@ -36,5 +40,5 @@
     # encode + cuesheet
     open my $CUE, "> $cue_file";
-    print $CUE $self->get_cuesheet;
+    print $CUE $self->tracks->get_cuesheet;
     close $CUE;
     system 'flac', '-o', $flac_file, '--cuesheet', $cue_file, $wav_file;
Index: /trunk/lib/Tracks.pm
===================================================================
--- /trunk/lib/Tracks.pm	(revision 28)
+++ /trunk/lib/Tracks.pm	(revision 29)
@@ -21,4 +21,5 @@
 has tracks => (
     is      => 'rw',
+    isa     => 'ArrayRef[HashRef]',
     default => sub { [] },
 );
@@ -26,4 +27,5 @@
 has discid => (
     is       => 'ro',
+    isa      => 'Str',
     builder  => '_calculate_musicbrainz_discid',
     lazy     => 1,
