make interpolation optional and per-series. return NaN for missing points
refactoring, applying recommendations from analysis