class ImmutableThingFromScratchBuilder implements ThingBuilder, ThingBuilder.FromScratch {

    @Override
    public FromScratch setFeatureProperty(final String featureId, final JsonPointer propertyPath,
            final JsonValue propertyValue) {

        checkNotNull(propertyValue, "property value to be set");

        final Features existingFeatures = getFeatures();
        if (null != existingFeatures) {
            return setFeatures(existingFeatures.setProperty(featureId, propertyPath, propertyValue));
        } else {
            final FeatureProperties featureProperties = ThingsModelFactory.newFeaturePropertiesBuilder()
                    .set(propertyPath, propertyValue)
                    .build();
            return setFeature(featureId, featureProperties);
        }
    }

    private  ImmutableThingFromScratchBuilder();

}