update factory singleton to have single accessor