Right now there are two sub-packages with optimization functions, dexp.processing.denoising and dexp.processing.optimization. This can be improved, I prefer how the latter is implemented, but the butterworth_calibrator has much more functionality and we need to think more about the best way to refactor this.