hmm, we need to actually instantiate a new factory each time?