make callbacks optional