make callbacks the first argument