ensure cb is only called once