 // MARK: - Rank
 
 /// Represents the rank of a traditional Western playing card
-enum Rank: Int, Sequence, Printable {
+enum Rank: Int, SequenceType, Printable {
     case Ace = 1
     case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
     case Jack, Queen, King
     
-    typealias GeneratorType = RankGenerator
+    typealias Generator = RankGenerator
     
     func generate() -> RankGenerator {
         return RankGenerator(rank: self)


/// 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, Sequence, Printable {
    case Spades, Hearts, Diamonds, Clubs
    
    typealias GeneratorType = SuitGenerator
    
    func generate() -> SuitGenerator {
        return SuitGenerator(suit: self)

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