         }
     }
     
-    struct RankGenerator: Generator {
+    struct RankGenerator: GeneratorType {
         var rank: Rank? = Rank.Ace // default to starting with the lowest rank
         
         mutating func next() -> Rank? {

        }
    }
    
    struct SuitGenerator: Generator {
        // using the ranking used in Bridge
        var suit: Suit? = Suit.Spades
        


/// Represents the suit of a traditional Western playing card using the ranking used in Bridge
// Notice that I never call toRaw() or fromRaw() here
enum Suit: Int, SequenceType, Printable {
    case Spades, Hearts, Diamonds, Clubs
    
    typealias Generator = SuitGenerator
    
    func generate() -> SuitGenerator {
        return SuitGenerator(suit: self)
