class STKGeometryBuilder {

    public List<TerrainTileGeometry> buildInitialGeometries(String typeKey, String serverUrl, String tileSetName,
            TileSetMetadata tileSetMetadata, Divider<GeographicPosition> divider, TileRenderProperties props)
    {
        List<TerrainTileGeometry> geometries = New.list();

        List<ZYXImageKey> keys = New.list(
                new ZYXImageKey(0, 0, 0,
                        new GeographicBoundingBox(LatLonAlt.createFromDegrees(-90, -180), LatLonAlt.createFromDegrees(90, 0))),
                new ZYXImageKey(0, 0, 1,
                        new GeographicBoundingBox(LatLonAlt.createFromDegrees(-90, 0), LatLonAlt.createFromDegrees(90, 180))));

        for (ZYXImageKey key : keys)
        {
            TerrainTileGeometry.Builder<GeographicPosition> builder = new TerrainTileGeometry.Builder<>();
            STKElevationImageReader meshReader = new STKElevationImageReader(key.getBounds(), tileSetMetadata.getProjection(),
                    typeKey);
            builder.setElevationReader(meshReader);
            builder.setBounds(key.getBounds());
            ImageManager imageManager = new ImageManager(key,
                    new STKTerrainImageProvider(myDataRegistry, serverUrl, tileSetName));
            builder.setImageManager(imageManager);
            builder.setMaximumDisplaySize(250);
            builder.setMinimumDisplaySize(50);
            builder.setDivider(divider);
            geometries.add(new TerrainTileGeometry(builder, props, typeKey));
        }

        return geometries;
    }

    public  STKGeometryBuilder(DataRegistry dataRegistry);

}