 		return "\(self.getArray)"
 	}
 	
-	private static func create(array : [A]) -> ArrayOf<A> {
-		return ArrayOf(array)
-	}
-	
 	public static var arbitrary : Gen<ArrayOf<A>> {
-		return Array<A>.arbitrary.fmap(ArrayOf.init)
+		return ArrayOf.init <^> Array<A>.arbitrary
 	}
 	
 	public static func shrink(bl : ArrayOf<A>) -> [ArrayOf<A>] {

					return Gen.pure(SetOf(Set([])))
				}
				
				return sequence(Array((0...k)).map { _ in A.arbitrary }).fmap({ SetOf.create(Set($0)) })
			}
		}
	}

		return "\(self.getOptional)"
	}
	
	public static var arbitrary : Gen<OptionalOf<A>> {
		return OptionalOf.init <^> Optional<A>.arbitrary
	}
	
	public static func shrink(bl : OptionalOf<A>) -> [OptionalOf<A>] {
