it feels surprising that a ...? method might create something (ie, have a side effect). should the creation be handled in caller?