add experimental callback feature