`hanning_filter` and `create_qspace` should be functions, not methods on the model. If we can replace `self.hanning_filter()` with something more like, `self.filter = hanning_filter(gtab, filter_width)` it makes the code much more readable. Specifically the inputs and outputs of the function/method are clear and the state change of the object becomes explicit instead of implicit (someone reading the code doesn't have to look inside `hanning_filter` to see that the state of the object has been updated).