     print("\(pet.name) makes a \(pet.makeSound()) sound.")
 }
 
-iterator([1, 2, 3, 4, 5]) { (number) in
+iterator([1, 2, 3]) { (number) in
 
     print("I'm on \(number)")
+}
+
+iterator(["one", "two", "three"]) { (string) in
+
+    print("I'm on \(string)")
 }
 /*:
  ### Multiple Type Parameters and Naming

let catKennel = BuildingCatKennel()
catKennel.add(snowy)    // a cat
catKennel.add(snuffles) // a cat
// catKennel.add(fido)  // can't add a dog

print("Cat kennel has \(catKennel.count) cats.")

let same = matt.sameKennels(kennel1: backYardKennel, kennel2: buildingKennel)
/*:
 The following will not comple becuase `buildingKennel` and `catKennel` do not pass the constrains in the where clause
 
 `let same2 = matt.sameKennels(kennel1: buildingKennel, kennel2: catKennel)`
 


let thatInt = chooseThatOverThis(1, that: 10)
print(thatInt)

let thisSomething = chooseThatOverThis("This", that: 10)
print(thisSomething)
/*:
 ## Generic Types
 Swift provides a way for you to create generic types, special types that can work with any type.
