Quoting Erik Veenstra <google / erikveen.dds.nl>: > @items = LazyLoad.new{load; @items} > @snapshots = LazyLoad.new{load; @snapshots} I forgot to mention. I think you've hit on a nice idiom for using lazy evaluation in Ruby here. In simpler cases, it could look something like: @blah = promise { @blah = expensive_computation } Good find! -mental