! only call callback if it exists