The reason that annotate() returns a Bio::Graphics::FeatureFile rather than an array of features the way that find() does is because Bio::Graphics::FeatureFile also allows you to set up how the features will be rendered; you can define tracks, assign different feature types to different tracks, and assign each feature type a glyph, color, and other options.