__autoreleasing is optional