Index: trunk/lib/Ripper.pm
===================================================================
--- trunk/lib/Ripper.pm	(revision 23)
+++ trunk/lib/Ripper.pm	(revision 24)
@@ -12,5 +12,5 @@
 has tracks => ( 
     is => 'rw',
-    handles => [qw{read_disc get_tracks get_cuesheet}],
+    handles => [qw{read_disc has_tracks get_cuesheet}],
 );
 
@@ -21,5 +21,5 @@
     $self->read_disc($self->device);
 
-    die "No tracks found; is there a CD in the drive?\n" unless @{ $self->get_tracks };
+    die "No tracks found; is there a CD in the drive?\n" unless $self->has_tracks;
 
     my $tempdir = tempdir(CLEANUP => 1);
Index: trunk/lib/Tracks.pm
===================================================================
--- trunk/lib/Tracks.pm	(revision 23)
+++ trunk/lib/Tracks.pm	(revision 24)
@@ -1,14 +1,13 @@
 package Tracks;
 
-use strict;
-use warnings;
-
-use Class::Std;
+use Moose;
 use Digest::SHA1;
-use Audio::FLAC::Header;
 
 use constant SECTOR_OFFSET => 150;
 
-my %tracks_for :ATTR( get => 'tracks' );
+has tracks => (
+    is      => 'rw',
+    default => sub { [] },
+);
 
 sub _get_tracks_from_cdinfo {    
@@ -66,5 +65,10 @@
 sub read_disc {
     my ($self, $device) = @_;
-    $tracks_for{ident $self} = [ _get_tracks_from_cdparanoia($device) ];
+    $self->tracks([ _get_tracks_from_cdparanoia($device) ]);
+}
+
+sub has_tracks {
+    my $self = shift;
+    return @{ $self->tracks } > 0;
 }
 
@@ -72,5 +76,5 @@
     my ($self) = @_;
 
-    my @tracks = @{ $tracks_for{ident $self} };
+    my @tracks = @{ $self->tracks };
 
     return unless @tracks;
@@ -95,5 +99,5 @@
 sub get_cuesheet {
     my ($self) = @_;
-    my @tracks = @{ $tracks_for{ident $self} };
+    my @tracks = @{ $self->tracks };
     my @cuesheet;
     push @cuesheet, qq{FILE "cdda.wav" WAVE};
@@ -112,5 +116,5 @@
     my ($self) = @_;
     # use a msf start unless track 1 begins at sector
-    return $tracks_for{ident $self}[1]{sector} == 0 ? '1-' : '00:00.00-';
+    return $self->tracks->[1]{sector} == 0 ? '1-' : '00:00.00-';
 }
 
