Use @protocol to instead of NSObject category