do not call factory multiple times