class BoundaryLayer extends KujakuLayer {

    @Override
    public void updateFeatures(@NonNull FeatureCollection featureCollection) {
        this.builder.featureCollection = featureCollection;

        if (boundaryLabelLayer != null) {
            GenericAsyncTask genericAsyncTask = new GenericAsyncTask(new AsyncTaskCallable() {
                @Override
                public Object[] call() throws Exception {
                    return new Object[]{calculateCenterPoints(builder.featureCollection)};
                }
            });

            genericAsyncTask.setOnFinishedListener(new OnFinishedListener() {
                @Override
                public void onSuccess(Object[] objects) {
                    FeatureCollection boundaryCenterFeatures = (FeatureCollection) objects[0];

                    boundaryLabelsSource.setGeoJson(boundaryCenterFeatures);
                    boundarySource.setGeoJson(featureCollection);
                }

                @Override
                public void onError(Exception e) {
                    Log.e(TAG, Log.getStackTraceString(e));
                }
            });

            genericAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        }
    }

      BoundaryLayer(@NonNull KujakuLayer.Builder builder);

}