OK, some I'm wondering if we should stop trying to roll our own memoization and use a gem like memoist?  Maybe we actually _want_ something custom-y here, to handle the proc issue?