class ImmutableFeatures implements Features {

    @Override
    public Features removeFeature(final String featureId) {
        if (!features.containsKey(checkFeatureId(featureId))) {
            return this;
        }

        final Map<String, Feature> featuresCopy = copyFeatures();
        featuresCopy.remove(featureId);

        return new ImmutableFeatures(featuresCopy);
    }

    private  ImmutableFeatures(final Map<String, Feature> features);

}