auto pickling to save intermediate results; refactoring and 80ch