new callback argument to be more dynamic