we now have some preliminary support for caching intermediate results