private void drawToMap(List<RiverSection> sections) {
        RiverSection oldSection = null;

        for (RiverSection section : sections) {
            riverMap.put(section.getPosition(), this);
            if (oldSection != null) {
                section.setBranch(oldSection.direction.getReverseDirection(),
                        oldSection.getSize());
            }
            Tile tile = map.getTile(section.getPosition());
            if (tile.isLand()) {
                if (section.getSize() >= TileImprovement.FJORD_RIVER) {
                    TileType greatRiver = map.getSpecification().getTileType("model.tile.greatRiver");
                    tile.setType(greatRiver);
                    // changing the type resets the improvements
                    //container.addRiver(section.getSize(), section.encodeStyle());
                    logger.fine("Added fjord (magnitude: " + section.getSize() +
                                ") to tile at " + section.getPosition());
                } else if (section.getSize() > TileImprovement.NO_RIVER) {
                    TileItemContainer container = tile.getTileItemContainer();
                    if (container == null) {
                        container = new TileItemContainer(tile.getGame(), tile);
                        tile.setTileItemContainer(container);
                    }
                    container.addRiver(section.getSize(), section.encodeStyle());
                    logger.fine("Added river (magnitude: " + section.getSize() +
                                ") to tile at " + section.getPosition());
                }
                region.addTile(tile);
                oldSection = section;
            }
        }
    }