First attempt at caching. Untested, and not sure what to make of the <<-
operator. Looks like a 'dynamic' operator, to lift things from a scope to
an enclosing scope
initial implementation. No idea if this works
now actually runs, and prints timing information. Probably correct