refactoring extrapolator out into its own module