implement NSCopying, NSMutableCopying, NSFastEnumeration