2nd run at this...  uses cache instead of passing the ref from program.cs (which disappears when program.cs finishes?!)