Protocol uses NSDictionary instead of generic object (id).