The call order of `collect_stats` then `init` feels backwards to me. Considering `init` is not actually implemented in the subclasses, it might be better to remove it.