now caches expression for faster repeated execution