I don't usually generalize something until the second or third time I do the same kind of functionality.


I usually don't either, especially for new territory. But I've abstracted state-saving mechanisms often enough that it's now second-nature, and I can't imagine doing a project without it. :) Thanks for the link on the factory pattern.