added requires_arc = true