@mateiz A user needs an `Impurity` instance to construct `Strategy`, but very unlikely they need to call `calculate` directly or implement their own `Impurity`. I'm okay if we mark the `calculate` method unstable in another PR later.