support an array of callbacks