callback param instead of cb everywhere, for more consistency (ESRI only accepts callback)