I am not sure if it makes sense to have CFeatures* CSOMachine::get_features()
if there is already const CFeatures* CSOMachine::get_features() const. To me it
looks weird to keep both, and at first sight I prefer
const CFeatures* CSOMachine::get_features() const.

Why should we keep both?