I could move the tsort portion into its own method, then it'd look something like this:
```
def self.all
  @@all ||= begin
    models = Sprig::Harvest.classes.map { |klass| new(klass) }
    
    tsorted_classes(models).map do |klass| 
      models.find { |model| model.klass == klass }
    end
  end
end

def self.tsorted_classes(models)
  models.reduce(TsortableHash.new) do |hash, model|
    hash.merge(model.klass => model.dependencies)
  end.tsort
end
```

Feels?  Any changes/suggestions?