support array callback