require fireInitial to be called explicitly