make sure factory gets called only once