diff --git a/.gitignore b/.gitignore
index 7749c1bd20bd40fb0e1d5746687a0dd15eabc63e..a5af17fcaef2446837c7633bf8f026ed80fbf3f3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -86,4 +86,3 @@ vite.config.ts.*
 *.module.scss.d.ts
 libs/shared/lib/components/buttons/buttons.module.scss.d.ts
 libs/shared/lib/vis/visualizations/table_vis/components/table.module.scss.d.ts
-*.scss.d.ts
diff --git a/libs/shared/lib/components/DesignGuides/styleGuide.mdx b/libs/shared/lib/components/DesignGuides/styleGuide.mdx
index 67cb021c5893f0c88ffead82529c77b3b704fc8a..97066332084941593fcf8e12237c30425fb7eeda 100644
--- a/libs/shared/lib/components/DesignGuides/styleGuide.mdx
+++ b/libs/shared/lib/components/DesignGuides/styleGuide.mdx
@@ -3,7 +3,6 @@ import { ColorPalette, ColorItem, IconGallery, IconItem, Canvas } from '@storybo
 import { Button } from '../buttons/.';
 
 import { TextInput } from '@graphpolaris/shared/lib/components/inputs';
-
 import { Icon } from '../icon/.';
 
 import {
@@ -741,7 +740,8 @@ GraphPolaris uses [Material UI](https://mui.com/material-ui/material-icons/) thr
 </div>
 
 ```jsx
-<Icon name="ArrowBack" size={32} />
+import Icon from '@graphpolaris/shared/lib/components/icon';
+<Icon name="ArrowBack" size={32} />;
 ```
 
 There are 5 types of Icons in Material UI:
diff --git a/libs/shared/lib/components/charts/scatterplotD3/index.tsx b/libs/shared/lib/components/charts/scatterplotD3/index.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..e96894e8a0060e85f6b7e6a8cf4dbc4fa1bf6614
--- /dev/null
+++ b/libs/shared/lib/components/charts/scatterplotD3/index.tsx
@@ -0,0 +1,203 @@
+import React, { useEffect, useRef } from 'react';
+import * as d3 from 'd3';
+
+export interface ScatterplotProps {
+  data: regionData;
+  visualConfig: VisualRegionConfig;
+  xScale: d3.ScaleLinear<number, number>;
+  onBrushUpdate: (idElements: string[]) => void;
+  onResultJitter: (data: DataPoint[]) => void;
+}
+
+export interface DataPoint {
+  x: number;
+  y: number;
+  id: string;
+}
+export interface DataPointXY {
+  x: number;
+  y: number;
+}
+
+export interface VisualRegionConfig {
+  marginPercentage: {
+    top: number;
+    right: number;
+    bottom: number;
+    left: number;
+  };
+  margin: {
+    top: number;
+    right: number;
+    bottom: number;
+    left: number;
+  };
+  width: number;
+  height: number;
+  widthMargin: number;
+  heightMargin: number;
+}
+
+export interface regionData {
+  name: string;
+  placementMethod: string;
+  xData: number[];
+  yData: number[];
+  idData: string[];
+  colorNodes: string;
+  titleRegion: string;
+  xAxisName: string;
+  label: string;
+}
+
+const Scatterplot: React.FC<ScatterplotProps> = ({ data, visualConfig, xScale, onBrushUpdate, onResultJitter }) => {
+  const svgRef = useRef(null);
+  const brushRef = useRef<SVGGElement>(null as any);
+
+  useEffect(() => {
+    const svg = d3.select(svgRef.current);
+
+    const groupMargin = svg.append('g').attr('transform', `translate(${visualConfig.margin.left},${visualConfig.margin.top})`);
+
+    const brushGroup = d3.select(brushRef.current);
+    brushGroup.attr('transform', `translate(${visualConfig.margin.left},${visualConfig.margin.top})`).attr('class', 'brushingElem');
+
+    const yScale = d3.scaleLinear().domain([-1, 1]).range([visualConfig.heightMargin, 0]);
+
+    const dataPoints = data.xData;
+    const dataYvalue = 0.0;
+    const maxComputations = 200;
+    let tickCount = 0;
+    const radius = visualConfig.width * 0.007;
+    const dataCircles: DataPointXY[] = dataPoints.map((value) => ({ x: value, y: 0 }));
+
+    const simulation = d3
+      .forceSimulation<DataPointXY>(dataCircles)
+      .force('x', d3.forceX((d) => xScale(d.x!)).strength(4))
+      .force('y', d3.forceY((d) => yScale(0.0)).strength(0.1))
+      .force('collide', d3.forceCollide(radius * 1.25).strength(0.5));
+
+    const circles = groupMargin
+      .selectAll('circle')
+      .data(dataCircles)
+      .enter()
+      .append('circle')
+      .attr('class', (d, i) => `${data.idData[i]}`)
+      .attr('cx', (d, i) => xScale(d.x))
+      .attr('cy', (d) => yScale(d.y))
+      .attr('r', radius)
+      .attr('stroke', 'gray')
+      .attr('fill', data.colorNodes);
+
+    simulation.on('tick', function () {
+      circles.attr('cx', (d, i) => d.x as number).attr('cy', (d) => d.y as number);
+
+      tickCount++;
+      if (tickCount > maxComputations) {
+        const dataSimulation: DataPoint[] = dataCircles.map(({ x, y }, i) => ({
+          x,
+          y,
+          id: data.idData[i],
+        }));
+
+        onResultJitter(dataSimulation);
+
+        simulation.stop();
+      }
+    });
+
+    const xAxis = d3.axisBottom(xScale);
+    const yAxis = d3.axisLeft(yScale);
+
+    groupMargin
+      .append('g')
+      .attr('transform', 'translate(0,' + visualConfig.heightMargin + ')')
+      .call(xAxis);
+
+    svg.selectAll('.tick text').attr('class', 'font-mono text-primary').style('stroke', 'none');
+    svg
+      .append('text')
+      .attr('x', visualConfig.widthMargin + visualConfig.margin.right)
+      .attr('y', visualConfig.heightMargin + 1.75 * visualConfig.margin.bottom)
+      .text(data.xAxisName)
+      .attr('class', 'font-inter text-primary font-semibold');
+
+    groupMargin
+      .append('rect')
+      .attr('x', 0.0)
+      .attr('y', 0.0)
+      .attr('width', visualConfig.widthMargin)
+      .attr('height', visualConfig.heightMargin)
+      .attr('rx', 0)
+      .attr('ry', 0)
+      .attr('class', 'fill-none stroke-secondary');
+
+    svg
+      .append('rect')
+      .attr('x', 0.0)
+      .attr('y', 0.0)
+      .attr('width', visualConfig.width)
+      .attr('height', visualConfig.width)
+      .attr('rx', 0)
+      .attr('ry', 0)
+      .attr('class', 'fill-none stroke-secondary');
+
+    svg
+      .append('rect')
+      .attr('x', 0.0)
+      .attr('y', 0.0)
+      .attr('width', visualConfig.width)
+      .attr('height', visualConfig.width * 1.4)
+      .attr('rx', 0)
+      .attr('ry', 0)
+      .attr('class', 'fill-none stroke-secondary');
+
+    // BRUSH LOGIC
+    const brush = d3
+      .brush()
+      .extent([
+        [0, 0],
+        [visualConfig.widthMargin, visualConfig.heightMargin],
+      ])
+      .on('brush', brushed);
+
+    let selectedDataIds: string[] = [];
+
+    function brushed(event: any) {
+      if (!event.selection) {
+      } else {
+        const [[x0, y0], [x1, y1]] = event.selection;
+
+        dataPoints.forEach((d, i) => {
+          const x = xScale(d)!;
+          const y = yScale(dataYvalue)!;
+
+          if (x >= x0 && x <= x1 && y >= y0 && y <= y1) {
+            selectedDataIds.push(data.idData[i]);
+          }
+        });
+
+        onBrushUpdate(selectedDataIds);
+        selectedDataIds = [];
+      }
+    }
+
+    brushGroup.call(brush);
+  }, [data, visualConfig, xScale]);
+
+  return (
+    <div className="w-full">
+      <div
+        className="absolute border-light group bg-secondary-200 text-left overflow-x-hidden truncate capitalize"
+        style={{ width: visualConfig.width }}
+      >
+        <p className="mx-2 w-full">{data.titleRegion}</p>
+      </div>
+      <svg ref={svgRef} width={visualConfig.width} height={visualConfig.height}>
+        <g ref={brushRef} />
+      </svg>
+    </div>
+  );
+};
+
+export default Scatterplot;
diff --git a/libs/shared/lib/components/charts/scatterplotD3/scatterplot.stories.tsx b/libs/shared/lib/components/charts/scatterplotD3/scatterplot.stories.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..c52925f897869179055d3a2b7cbf78feec6a97f4
--- /dev/null
+++ b/libs/shared/lib/components/charts/scatterplotD3/scatterplot.stories.tsx
@@ -0,0 +1,141 @@
+import React from 'react';
+import { Meta, Story } from '@storybook/react';
+import Scatterplot, { ScatterplotProps, VisualRegionConfig, regionData, DataPoint } from '.';
+import * as d3 from 'd3';
+
+const Component: Meta<typeof Scatterplot> = {
+  title: 'Visual charts/Charts/ScatterplotD3',
+  component: Scatterplot,
+  decorators: [(story) => <div style={{ width: '100%', height: '100vh' }}>{story()}</div>],
+};
+
+export default Component;
+
+const dummyData: regionData = {
+  name: 'Sample Data',
+  placementMethod: 'Random',
+  xData: [1, 2, 3, 3, 2.5, 4, 5, 5.5],
+  yData: [0.5, -0.5, 0, 0.7, -0.3],
+  idData: ['id1', 'id2', 'id3', 'id4', 'id5'],
+  colorNodes: '#3498db',
+  titleRegion: 'Scatterplot Example',
+  xAxisName: 'X-Axis',
+  label: 'Data Points',
+};
+
+const dummyData2: regionData = {
+  name: 'Sample Data',
+  placementMethod: 'Random',
+  xData: [43, 36, 49, 46, 54, 54, 43, 33, 28, 39, 51, 43, 44, 32, 49, 53, 43, 40, 35, 41, 30, 32, 41, 31, 43, 44, 35, 34, 56, 31],
+  yData: [0.5, -0.5, 0, 0.7, -0.3],
+  idData: ['id1', 'id2', 'id3', 'id4', 'id5'],
+  colorNodes: '#3498db',
+  titleRegion: 'Scatterplot Example',
+  xAxisName: 'X-Axis',
+  label: 'Data Points',
+};
+
+const dummyData3: regionData = {
+  name: 'Sample Data',
+  placementMethod: 'Random',
+  xData: [
+    8.1, 7.3, 8, 6.8, 7.8, 7.1, 7.8, 8.5, 8.6, 8.3, 8.2, 8.1, 8.6, 8.4, 7.8, 8, 7.6, 6.1, 7.6, 8.3, 7.4, 7.7, 7.7, 7.3, 8.3, 7.2, 7.8, 7,
+    7.2, 8, 7.8, 8.1, 7.9, 7, 8.3, 7.2, 8.3, 7.8, 8, 7.3, 6, 7, 7.4, 7.5, 6.3, 5.5, 7.6, 7.8, 7.1, 7.9, 7.8, 7.9, 7.3, 7.3, 6.6, 6.9, 7,
+    7.3, 7.1, 7.3, 6.7, 7.1, 6.6, 6.6, 7.1, 7.2, 7.1, 7.2, 6.8, 6.7, 8, 8.6, 6.9, 7.9, 6.4, 7.9, 7.7, 8.1, 7.2, 7, 7.8, 6.9, 6.5, 7.4, 7.4,
+    7.2, 6.2, 5.7, 0, 7.6, 7.5, 8.4, 7.7, 6.6, 6.8, 7.8, 6.3, 7.7, 7.6, 7.7, 8, 7.2, 7.7, 6.6, 8.1, 6.9, 6.8, 6.9, 7.7, 8.1, 7.9, 7.8, 7.8,
+    8.3, 8.4, 8.4, 7.9, 7.4, 7.4, 7.9, 7.8, 7.5, 8.1, 7.7, 7.6, 8.2, 8.2, 7.1, 6, 8, 7.1, 7.2, 7.4, 7.3, 7.2, 8, 7.2, 7.4, 6.6, 7.6, 7.6,
+    6.5, 4.1, 4.1, 7.2, 7.9, 8, 7.5, 6.9, 5, 8.4, 6.3, 6.7, 7, 7.1, 6.9, 6.1, 8.1, 7, 6.9, 7.2, 7.2, 7.8, 8, 7.3, 7.8, 8, 7.8, 8.2, 7.9,
+    7.4,
+  ],
+  yData: [0.5, -0.5, 0, 0.7, -0.3],
+  idData: ['id1', 'id2', 'id3', 'id4', 'id5'],
+  colorNodes: '#3498db',
+  titleRegion: 'Scatterplot Example',
+  xAxisName: 'X-Axis',
+  label: 'Data Points',
+};
+
+const xExtent: [number, number] = [0, 6];
+
+const xExtent2: [number, number] = [22, 68];
+
+const xExtent3: [number, number] = [0, 10];
+
+// Dummy visual configuration
+const configVisualRegion: VisualRegionConfig = {
+  marginPercentage: { top: 0.15, right: 0.15, bottom: 0.15, left: 0.15 },
+  margin: { top: 0.0, right: 0.0, bottom: 0.0, left: 0.0 },
+  width: 700,
+  height: 300,
+  widthMargin: 0.0,
+  heightMargin: 0.0,
+};
+
+configVisualRegion.margin = {
+  top: configVisualRegion.marginPercentage.top * configVisualRegion.height,
+  right: configVisualRegion.marginPercentage.right * configVisualRegion.width,
+  bottom: configVisualRegion.marginPercentage.bottom * configVisualRegion.height,
+  left: configVisualRegion.marginPercentage.left * configVisualRegion.width,
+};
+
+configVisualRegion.widthMargin = configVisualRegion.width - configVisualRegion.margin.right - configVisualRegion.margin.left;
+configVisualRegion.heightMargin = configVisualRegion.height - configVisualRegion.margin.top - configVisualRegion.margin.bottom;
+
+// Dummy xScale function
+const xScaleShared = d3
+  .scaleLinear()
+  .domain(xExtent as [number, number])
+  .range([0, configVisualRegion.widthMargin]);
+
+const xScaleShared2 = d3
+  .scaleLinear()
+  .domain(xExtent2 as [number, number])
+  .range([0, configVisualRegion.widthMargin]);
+
+const xScaleShared3 = d3
+  .scaleLinear()
+  .domain(xExtent3 as [number, number])
+  .range([0, configVisualRegion.widthMargin]);
+
+// Dummy event handlers
+const handleBrushUpdate = (selectedIds: string[]) => {
+  console.log('Brush Updated:', selectedIds);
+};
+
+const handleResultJitter = (jitteredData: DataPoint[]) => {
+  console.log('Result Jitter:', jitteredData);
+};
+
+// Define a story for the Scatterplot component
+export const BasicScatterplot: Story<ScatterplotProps> = (args) => <Scatterplot {...args} />;
+
+// Set initial args for the story
+BasicScatterplot.args = {
+  data: dummyData,
+  visualConfig: configVisualRegion,
+  xScale: xScaleShared,
+  onBrushUpdate: handleBrushUpdate,
+  onResultJitter: handleResultJitter,
+};
+
+export const RealData1: Story<ScatterplotProps> = (args) => <Scatterplot {...args} />;
+
+// Set initial args for the story
+RealData1.args = {
+  data: dummyData2,
+  visualConfig: configVisualRegion,
+  xScale: xScaleShared2,
+  onBrushUpdate: handleBrushUpdate,
+  onResultJitter: handleResultJitter,
+};
+
+export const RealData2: Story<ScatterplotProps> = (args) => <Scatterplot {...args} />;
+
+// Set initial args for the story
+RealData2.args = {
+  data: dummyData3,
+  visualConfig: configVisualRegion,
+  xScale: xScaleShared3,
+  onBrushUpdate: handleBrushUpdate,
+  onResultJitter: handleResultJitter,
+};
diff --git a/libs/shared/lib/components/charts/scatterplot_pixi/index.tsx b/libs/shared/lib/components/charts/scatterplot_pixi/index.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..6253e57b58f8e11e174085b4e906294cf0ff6448
--- /dev/null
+++ b/libs/shared/lib/components/charts/scatterplot_pixi/index.tsx
@@ -0,0 +1,221 @@
+import React, { useEffect, useRef } from 'react';
+import * as d3 from 'd3';
+//import { VisualRegionConfig, regionData, DataPoint, DataPointXY } from './types';
+import * as PIXI from 'pixi.js';
+
+export interface ScatterplotProps {
+  data: regionData;
+  visualConfig: VisualRegionConfig;
+  xScale: d3.ScaleLinear<number, number>;
+  onBrushUpdate: (idElements: string[]) => void;
+  onResultJitter: (data: DataPoint[]) => void;
+}
+
+interface DataPointXY {
+  x: number;
+  y: number;
+  radius: number;
+  gfx: PIXI.Graphics;
+}
+
+export interface DataPoint {
+  x: number;
+  y: number;
+  id: string;
+}
+
+export interface VisualRegionConfig {
+  marginPercentage: {
+    top: number;
+    right: number;
+    bottom: number;
+    left: number;
+  };
+  margin: {
+    top: number;
+    right: number;
+    bottom: number;
+    left: number;
+  };
+  width: number;
+  height: number;
+  widthMargin: number;
+  heightMargin: number;
+}
+
+export interface regionData {
+  name: string;
+  placementMethod: string;
+  xData: number[];
+  yData: number[];
+  idData: string[];
+  colorNodes: string;
+  titleRegion: string;
+  xAxisName: string;
+  label: string;
+}
+
+const Scatterplot: React.FC<ScatterplotProps> = ({ data, visualConfig, xScale, onBrushUpdate, onResultJitter }) => {
+  const svgRef = useRef(null);
+  const brushRef = useRef<SVGGElement>(null as any);
+
+  const pixiContainerRef = useRef<HTMLDivElement>(null);
+
+  useEffect(() => {
+    if (!pixiContainerRef.current) return;
+
+    const brushGroup = d3.select(brushRef.current);
+    brushGroup.attr('transform', `translate(${visualConfig.margin.left},${visualConfig.margin.top})`).attr('class', 'brushingElem');
+
+    const yScale = d3.scaleLinear().domain([-1, 1]).range([visualConfig.heightMargin, 0]);
+
+    console.log(visualConfig);
+    // PIXI
+    const app = new PIXI.Application({
+      width: visualConfig.width,
+      height: visualConfig.height,
+      backgroundColor: 0xffffff,
+      antialias: true,
+    });
+    const scatterContainer = new PIXI.Container();
+    app.stage.addChild(scatterContainer);
+
+    const dataPoints = data.xData;
+    const numPoints = data.xData.length;
+    const dataYvalue = 0.0;
+    const maxComputations = 10;
+    let tickCount = 0;
+    const radius = numPoints >= 170 ? visualConfig.width * 0.0042 : visualConfig.width * 0.007;
+
+    const dataCircles: DataPointXY[] = dataPoints.map((value) => ({
+      x: value,
+      y: 0.0,
+      radius,
+      gfx: new PIXI.Graphics(),
+    }));
+
+    dataCircles.forEach((d) => {
+      const graphics = new PIXI.Graphics();
+      graphics.beginFill(0x0000ff);
+      graphics.drawCircle(xScale(d.x) + visualConfig.margin.left, yScale(d.y) + visualConfig.margin.top, radius);
+      graphics.endFill();
+      scatterContainer.addChild(graphics);
+      d.gfx = graphics;
+    });
+
+    console.log('DONE SIMULATION');
+
+    const svg = d3
+      .select(svgRef.current)
+      .attr('width', visualConfig.width)
+      .attr('height', visualConfig.height)
+      .style('position', 'absolute')
+      .style('top', 0)
+      .style('left', 0);
+
+    const groupMargin = svg.append('g').attr('transform', `translate(${visualConfig.margin.left},${visualConfig.margin.top})`);
+
+    svg
+      .append('text')
+      .attr('x', 1.1 * visualConfig.margin.left)
+      .attr('y', visualConfig.margin.top)
+      .text(data.titleRegion)
+      .attr('class', 'font-inter text-primary font-semibold');
+
+    svg
+      .append('text')
+      .attr('x', visualConfig.widthMargin + visualConfig.margin.right)
+      .attr('y', visualConfig.heightMargin + 1.75 * visualConfig.margin.bottom)
+      .text(data.xAxisName)
+      .attr('class', 'font-inter text-primary font-semibold');
+
+    const simulation = d3
+      .forceSimulation<DataPointXY>(dataCircles)
+      .force('x', d3.forceX((d) => xScale(d.x!)).strength(4))
+      .force('y', d3.forceY((d) => yScale(0.0)).strength(0.1))
+      .force('collide', d3.forceCollide(radius * 1.25).strength(0.5));
+
+    const ticked = () => {
+      dataCircles.forEach((node) => {
+        let { x, y, gfx } = node;
+        gfx.x = node.x;
+        gfx.y = node.y;
+      });
+
+      tickCount++;
+
+      if (tickCount > maxComputations) {
+        simulation.stop();
+
+        const dataSimulation: DataPoint[] = dataCircles.map(({ x, y }, i) => ({
+          x: x - visualConfig.margin.left,
+          y: y - visualConfig.margin.top,
+          id: data.idData[i],
+        }));
+
+        onResultJitter(dataSimulation);
+      }
+    };
+
+    simulation.on('tick', ticked);
+
+    pixiContainerRef.current.appendChild(app.view as unknown as Node);
+
+    const xAxis = d3.axisBottom(xScale);
+    const yAxis = d3.axisLeft(yScale);
+
+    groupMargin
+      .append('g')
+      .attr('transform', 'translate(0,' + visualConfig.heightMargin + ')')
+      .call(xAxis);
+
+    svg.selectAll('.tick text').attr('class', 'font-inter text-primary font-semibold').style('stroke', 'none');
+
+    // BRUSH LOGIC
+    const brush = d3
+      .brush()
+      .extent([
+        [0, 0],
+        [visualConfig.widthMargin, visualConfig.heightMargin],
+      ])
+      .on('brush', brushed);
+
+    let selectedDataIds: string[] = [];
+
+    function brushed(event: any) {
+      if (!event.selection) {
+      } else {
+        const [[x0, y0], [x1, y1]] = event.selection;
+
+        dataPoints.forEach((d, i) => {
+          const x = xScale(d)!;
+          const y = yScale(dataYvalue)!;
+
+          if (x >= x0 && x <= x1 && y >= y0 && y <= y1) {
+            selectedDataIds.push(data.idData[i]);
+          }
+        });
+
+        onBrushUpdate(selectedDataIds);
+        selectedDataIds = [];
+      }
+    }
+
+    brushGroup.call(brush);
+
+    return () => {
+      app.destroy(true);
+    };
+  }, [data, visualConfig, xScale]);
+
+  return (
+    <div className="h-full w-full" style={{ position: 'relative' }}>
+      <div ref={pixiContainerRef}></div>
+      <svg ref={svgRef} className="h-full w-full">
+        <g ref={brushRef} />
+      </svg>
+    </div>
+  );
+};
+
+export default Scatterplot;
diff --git a/libs/shared/lib/components/charts/scatterplot_pixi/scatterplot.stories.tsx b/libs/shared/lib/components/charts/scatterplot_pixi/scatterplot.stories.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..5e81b125adaf29998080af0ea802d897fe6f1405
--- /dev/null
+++ b/libs/shared/lib/components/charts/scatterplot_pixi/scatterplot.stories.tsx
@@ -0,0 +1,144 @@
+// Scatterplot.stories.tsx
+import React from 'react';
+import { Meta, Story } from '@storybook/react';
+import Scatterplot, { ScatterplotProps, VisualRegionConfig, regionData, DataPoint } from '.';
+import * as d3 from 'd3';
+
+const Component: Meta<typeof Scatterplot> = {
+  title: 'Visual charts/Charts/ScatterplotPIXI',
+  component: Scatterplot,
+  decorators: [(story) => <div style={{ width: '100%', height: '100vh' }}>{story()}</div>],
+};
+
+export default Component;
+
+// Define dummy data for the Scatterplot component
+const dummyData: regionData = {
+  name: 'Sample Data',
+  placementMethod: 'Random',
+  //xData: [1, 2, 3, 3, 2.5, 4, 5, 5.5],
+  xData: [4, 5, 5.5],
+  yData: [0.5, -0.5, 0, 0.7, -0.3],
+  idData: ['id1', 'id2', 'id3', 'id4', 'id5'],
+  colorNodes: '#3498db',
+  titleRegion: 'Scatterplot Example',
+  xAxisName: 'X-Axis',
+  label: 'Data Points',
+};
+
+const dummyData2: regionData = {
+  name: 'Sample Data',
+  placementMethod: 'Random',
+  xData: [43, 36, 49, 46, 54, 54, 43, 33, 28, 39, 51, 43, 44, 32, 49, 53, 43, 40, 35, 41, 30, 32, 41, 31, 43, 44, 35, 34, 56, 31],
+  yData: [0.5, -0.5, 0, 0.7, -0.3],
+  idData: ['id1', 'id2', 'id3', 'id4', 'id5'],
+  colorNodes: '#3498db',
+  titleRegion: 'Scatterplot Example',
+  xAxisName: 'X-Axis',
+  label: 'Data Points',
+};
+
+const dummyData3: regionData = {
+  name: 'Sample Data',
+  placementMethod: 'Random',
+  xData: [
+    8.1, 7.3, 8, 6.8, 7.8, 7.1, 7.8, 8.5, 8.6, 8.3, 8.2, 8.1, 8.6, 8.4, 7.8, 8, 7.6, 6.1, 7.6, 8.3, 7.4, 7.7, 7.7, 7.3, 8.3, 7.2, 7.8, 7,
+    7.2, 8, 7.8, 8.1, 7.9, 7, 8.3, 7.2, 8.3, 7.8, 8, 7.3, 6, 7, 7.4, 7.5, 6.3, 5.5, 7.6, 7.8, 7.1, 7.9, 7.8, 7.9, 7.3, 7.3, 6.6, 6.9, 7,
+    7.3, 7.1, 7.3, 6.7, 7.1, 6.6, 6.6, 7.1, 7.2, 7.1, 7.2, 6.8, 6.7, 8, 8.6, 6.9, 7.9, 6.4, 7.9, 7.7, 8.1, 7.2, 7, 7.8, 6.9, 6.5, 7.4, 7.4,
+    7.2, 6.2, 5.7, 0, 7.6, 7.5, 8.4, 7.7, 6.6, 6.8, 7.8, 6.3, 7.7, 7.6, 7.7, 8, 7.2, 7.7, 6.6, 8.1, 6.9, 6.8, 6.9, 7.7, 8.1, 7.9, 7.8, 7.8,
+    8.3, 8.4, 8.4, 7.9, 7.4, 7.4, 7.9, 7.8, 7.5, 8.1, 7.7, 7.6, 8.2, 8.2, 7.1, 6, 8, 7.1, 7.2, 7.4, 7.3, 7.2, 8, 7.2, 7.4, 6.6, 7.6, 7.6,
+    6.5, 4.1, 4.1, 7.2, 7.9, 8, 7.5, 6.9, 5, 8.4, 6.3, 6.7, 7, 7.1, 6.9, 6.1, 8.1, 7, 6.9, 7.2, 7.2, 7.8, 8, 7.3, 7.8, 8, 7.8, 8.2, 7.9,
+    7.4,
+  ],
+  yData: [0.5, -0.5, 0, 0.7, -0.3],
+  idData: ['id1', 'id2', 'id3', 'id4', 'id5'],
+  colorNodes: '#3498db',
+  titleRegion: 'Scatterplot Example',
+  xAxisName: 'X-Axis',
+  label: 'Data Points',
+};
+
+const xExtent: [number, number] = [0, 6];
+
+const xExtent2: [number, number] = [22, 68];
+
+const xExtent3: [number, number] = [0, 10];
+
+// Dummy visual configuration
+const configVisualRegion: VisualRegionConfig = {
+  marginPercentage: { top: 0.15, right: 0.15, bottom: 0.15, left: 0.15 },
+  margin: { top: 0.0, right: 0.0, bottom: 0.0, left: 0.0 },
+  width: 700,
+  height: 300,
+  widthMargin: 0.0,
+  heightMargin: 0.0,
+};
+
+configVisualRegion.margin = {
+  top: configVisualRegion.marginPercentage.top * configVisualRegion.height,
+  right: configVisualRegion.marginPercentage.right * configVisualRegion.width,
+  bottom: configVisualRegion.marginPercentage.bottom * configVisualRegion.height,
+  left: configVisualRegion.marginPercentage.left * configVisualRegion.width,
+};
+
+configVisualRegion.widthMargin = configVisualRegion.width - configVisualRegion.margin.right - configVisualRegion.margin.left;
+configVisualRegion.heightMargin = configVisualRegion.height - configVisualRegion.margin.top - configVisualRegion.margin.bottom;
+
+// Dummy xScale function
+const xScaleShared = d3
+  .scaleLinear()
+  .domain(xExtent as [number, number])
+  .range([0, configVisualRegion.widthMargin]);
+
+const xScaleShared2 = d3
+  .scaleLinear()
+  .domain(xExtent2 as [number, number])
+  .range([0, configVisualRegion.widthMargin]);
+
+const xScaleShared3 = d3
+  .scaleLinear()
+  .domain(xExtent3 as [number, number])
+  .range([0, configVisualRegion.widthMargin]);
+
+// Dummy event handlers
+const handleBrushUpdate = (selectedIds: string[]) => {
+  console.log('Brush Updated:', selectedIds);
+};
+
+const handleResultJitter = (jitteredData: DataPoint[]) => {
+  console.log('Result Jitter:', jitteredData);
+};
+
+// Define a story for the Scatterplot component
+export const BasicScatterplot: Story<ScatterplotProps> = (args) => <Scatterplot {...args} />;
+
+// Set initial args for the story
+BasicScatterplot.args = {
+  data: dummyData,
+  visualConfig: configVisualRegion,
+  xScale: xScaleShared,
+  onBrushUpdate: handleBrushUpdate,
+  onResultJitter: handleResultJitter,
+};
+
+export const RealData1: Story<ScatterplotProps> = (args) => <Scatterplot {...args} />;
+
+// Set initial args for the story
+RealData1.args = {
+  data: dummyData2,
+  visualConfig: configVisualRegion,
+  xScale: xScaleShared2,
+  onBrushUpdate: handleBrushUpdate,
+  onResultJitter: handleResultJitter,
+};
+
+export const RealData2: Story<ScatterplotProps> = (args) => <Scatterplot {...args} />;
+
+// Set initial args for the story
+RealData2.args = {
+  data: dummyData3,
+  visualConfig: configVisualRegion,
+  xScale: xScaleShared3,
+  onBrushUpdate: handleBrushUpdate,
+  onResultJitter: handleResultJitter,
+};
diff --git a/libs/shared/lib/data-access/broker/wsState.tsx b/libs/shared/lib/data-access/broker/wsState.tsx
index 4a375ef3903aa52bcd361f37061104dbbaf821b6..8ad7ca2dfc19400078b3a6e93c610a8b1b5f6f1a 100644
--- a/libs/shared/lib/data-access/broker/wsState.tsx
+++ b/libs/shared/lib/data-access/broker/wsState.tsx
@@ -1,14 +1,8 @@
 import { QueryBuilderState } from '../store/querybuilderSlice';
 import { URLParams, setParam } from '../api/url';
 import { Broker } from './broker';
-import { VisState } from '../store/visualizationSlice';
 import { DateStringStatement } from '../../querybuilder/model/logic/general';
 
-// export function wsGetState() {
-//   Broker.instance().subscribe((data) => dispatch(readInSchemaFromBackend(data)), 'schema_result');
-//   Broker.instance().sendMessage({});
-// }
-
 export const databaseNameMapping: string[] = ['arangodb', 'neo4j'];
 export const databaseProtocolMapping: string[] = ['neo4j://', 'neo4j+s://', 'bolt://', 'bolt+s://'];
 
diff --git a/libs/shared/lib/mock-data/query-result/big2ndChamberQueryResult.js b/libs/shared/lib/mock-data/query-result/big2ndChamberQueryResult.js
index 2cbb5c56688fa7b79290212a43e10b6e0f4302d5..9e4e088f8d4b58f2c044b44d26bd8691d2399485 100644
--- a/libs/shared/lib/mock-data/query-result/big2ndChamberQueryResult.js
+++ b/libs/shared/lib/mock-data/query-result/big2ndChamberQueryResult.js
@@ -9342,6 +9342,7 @@ export const big2ndChamberQueryResult = {
         anc: 1526,
         img: 'https://www.tweedekamer.nl/sites/default/files/styles/member_parlement_profile_square/public/9ab41898-332f-4c08-a834-d58b4669c990.jpg?itok=pbUPRriP',
         leeftijd: 43,
+        height: 190,
         naam: 'Dilan Yeilgz-Zegerius',
         partij: 'VVD',
         woonplaats: 'Amsterdam',
@@ -9358,6 +9359,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Steven van Weyenberg',
         partij: 'D66',
         woonplaats: "'s-Gravenhage",
+        height: 187,
       },
     },
     {
@@ -9371,6 +9373,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Lisa Westerveld',
         partij: 'GL',
         woonplaats: 'Nijmegen',
+        height: 188,
       },
     },
     {
@@ -9384,6 +9387,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Hanneke van der Werf',
         partij: 'D66',
         woonplaats: "'s-Gravenhage",
+        height: 190,
       },
     },
     {
@@ -9397,6 +9401,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Danai van Weerdenburg',
         partij: 'PVV',
         woonplaats: 'Amstelveen',
+        height: 190,
       },
     },
     {
@@ -9410,6 +9415,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Frank Wassenberg',
         partij: 'PvdD',
         woonplaats: 'Geleen',
+        height: 186,
       },
     },
     {
@@ -9423,6 +9429,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Leonie Vestering',
         partij: 'PvdD',
         woonplaats: 'Almere',
+        height: 186,
       },
     },
     {
@@ -9436,6 +9443,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Peter Valstar',
         partij: 'VVD',
         woonplaats: "'s-Gravenzande",
+        height: 184,
       },
     },
     {
@@ -9449,6 +9457,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Judith Tielen',
         partij: 'VVD',
         woonplaats: 'Utrecht',
+        height: 181,
       },
     },
     {
@@ -9462,6 +9471,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Joris Thijssen',
         partij: 'PvdA',
         woonplaats: 'Muiderberg',
+        height: 188,
       },
     },
     {
@@ -9475,6 +9485,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Ockje Tellegen',
         partij: 'VVD',
         woonplaats: "'s-Gravenhage",
+        height: 184,
       },
     },
     {
@@ -9488,6 +9499,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Chris Stoffer',
         partij: 'SGP',
         woonplaats: 'Elspeet',
+        height: 188,
       },
     },
     {
@@ -9501,6 +9513,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Kees van der Staaij',
         partij: 'SGP',
         woonplaats: 'Benthuizen',
+        height: 186,
       },
     },
     {
@@ -9514,8 +9527,10 @@ export const big2ndChamberQueryResult = {
         naam: 'Joost Sneller',
         partij: 'D66',
         woonplaats: "'s-Gravenhage",
+        height: 194,
       },
     },
+
     {
       id: 'kamerleden/120',
       _key: '120',
@@ -9527,6 +9542,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Sylvana Simons',
         partij: 'BIJ1',
         woonplaats: 'Duivendrecht',
+        height: 187,
       },
     },
     {
@@ -9540,6 +9556,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Gert-Jan Segers',
         partij: 'CU',
         woonplaats: 'Hoogland',
+        height: 197,
       },
     },
     {
@@ -9553,6 +9570,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Carola Schouten',
         partij: 'CU',
         woonplaats: 'Rotterdam',
+        height: 185,
       },
     },
     {
@@ -9566,6 +9584,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Mark Rutte',
         partij: 'VVD',
         woonplaats: "'s-Gravenhage",
+        height: 183,
       },
     },
     {
@@ -9579,6 +9598,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Rens Raemakers',
         partij: 'D66',
         woonplaats: 'Neer',
+        height: 185,
       },
     },
     {
@@ -9592,6 +9612,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Lammert van Raan',
         partij: 'PvdD',
         woonplaats: 'Amsterdam',
+        height: 185,
       },
     },
     {
@@ -9605,6 +9626,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Lilianne Ploumen',
         partij: 'PvdA',
         woonplaats: 'Amsterdam',
+        height: 193,
       },
     },
     {
@@ -9618,6 +9640,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Caroline van der Plas',
         partij: 'BBB',
         woonplaats: 'Deventer',
+        height: 185,
       },
     },
     {
@@ -9631,6 +9654,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Kati Piri',
         partij: 'PvdA',
         woonplaats: "'s-Gravenhage",
+        height: 185,
       },
     },
     {
@@ -9644,6 +9668,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Jorien Wuite',
         partij: 'D66',
         woonplaats: 'Voorburg',
+        height: 187,
       },
     },
     {
@@ -9657,6 +9682,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Wieke Paulusma',
         partij: 'D66',
         woonplaats: 'Groningen',
+        height: 180,
       },
     },
     {
@@ -9670,6 +9696,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Marille Paul',
         partij: 'VVD',
         woonplaats: 'Amsterdam',
+        height: 188,
       },
     },
     {
@@ -9683,6 +9710,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Jan Paternotte',
         partij: 'D66',
         woonplaats: 'Leiden',
+        height: 183,
       },
     },
     {
@@ -9696,6 +9724,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Hilde Palland',
         partij: 'CDA',
         woonplaats: 'Kampen',
+        height: 192,
       },
     },
     {
@@ -9709,6 +9738,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Michiel van Nispen',
         partij: 'SP',
         woonplaats: 'Breda',
+        height: 186,
       },
     },
     {
@@ -9722,6 +9752,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Henk Nijboer',
         partij: 'PvdA',
         woonplaats: 'Groningen',
+        height: 184,
       },
     },
     {
@@ -9735,6 +9766,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Daan de Neef',
         partij: 'VVD',
         woonplaats: 'Breda',
+        height: 182,
       },
     },
     {
@@ -9748,6 +9780,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Edgar Mulder',
         partij: 'PVV',
         woonplaats: 'Zwolle',
+        height: 187,
       },
     },
     {
@@ -9761,6 +9794,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Fahid Minhas',
         partij: 'VVD',
         woonplaats: 'Schiedam',
+        height: 195,
       },
     },
     {
@@ -9774,6 +9808,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Gideon van Meijeren',
         partij: 'FVD',
         woonplaats: "'s-Gravenhage",
+        height: 190,
       },
     },
     {
@@ -9787,6 +9822,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Paul van Meenen',
         partij: 'D66',
         woonplaats: 'Leiden',
+        height: 195,
       },
     },
     {
@@ -9800,6 +9836,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Gidi Markuszower',
         partij: 'PVV',
         woonplaats: 'Amstelveen',
+        height: 189,
       },
     },
     {
@@ -9813,6 +9850,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Barry Madlener',
         partij: 'PVV',
         woonplaats: 'Rockanje',
+        height: 190,
       },
     },
     {
@@ -9826,6 +9864,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Senna Maatoug',
         partij: 'GL',
         woonplaats: 'Leiden',
+        height: 188,
       },
     },
     {
@@ -9839,6 +9878,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Bart Snels',
         partij: 'GL',
         woonplaats: 'Utrecht',
+        height: 196,
       },
     },
     {
@@ -9852,6 +9892,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Renske Leijten',
         partij: 'SP',
         woonplaats: 'Haarlem',
+        height: 187,
       },
     },
     {
@@ -9865,6 +9906,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Tom van der Lee',
         partij: 'GL',
         woonplaats: 'Amsterdam',
+        height: 190,
       },
     },
     {
@@ -9878,6 +9920,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Jeanet van der Laan',
         partij: 'D66',
         woonplaats: 'Lisse',
+        height: 193,
       },
     },
     {
@@ -9891,6 +9934,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Ren Peters',
         partij: 'CDA',
         woonplaats: 'Oss',
+        height: 188,
       },
     },
     {
@@ -9904,6 +9948,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Peter Kwint',
         partij: 'SP',
         woonplaats: 'Amsterdam',
+        height: 183,
       },
     },
     {
@@ -9917,6 +9962,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Tunahan Kuzu',
         partij: 'DENK',
         woonplaats: 'Rotterdam',
+        height: 185,
       },
     },
     {
@@ -9930,6 +9976,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Attje Kuiken',
         partij: 'PvdA',
         woonplaats: 'Breda',
+        height: 190,
       },
     },
     {
@@ -9943,6 +9990,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Anne Kuik',
         partij: 'CDA',
         woonplaats: 'Groningen',
+        height: 189,
       },
     },
     {
@@ -9956,6 +10004,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Daan de Kort',
         partij: 'VVD',
         woonplaats: 'Veldhoven',
+        height: 191,
       },
     },
     {
@@ -9969,6 +10018,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Daniel Koerhuis',
         partij: 'VVD',
         woonplaats: 'Raalte',
+        height: 185,
       },
     },
     {
@@ -9982,6 +10032,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Simone Kerseboom',
         partij: 'FVD',
         woonplaats: 'Maastricht',
+        height: 186,
       },
     },
     {
@@ -9995,6 +10046,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Bart van Kent',
         partij: 'SP',
         woonplaats: "'s-Gravenhage",
+        height: 188,
       },
     },
     {
@@ -10008,6 +10060,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Vicky Maeijer',
         partij: 'PVV',
         woonplaats: 'Krimpen aan den IJssel',
+        height: 183,
       },
     },
     {
@@ -10021,6 +10074,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Barbara Kathmann',
         partij: 'PvdA',
         woonplaats: 'Rotterdam',
+        height: 179,
       },
     },
     {
@@ -10034,6 +10088,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Hatte van der Woude',
         partij: 'VVD',
         woonplaats: 'Delft',
+        height: 191,
       },
     },
     {
@@ -10047,6 +10102,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Hlya Kat',
         partij: 'D66',
         woonplaats: 'Amsterdam',
+        height: 191,
       },
     },
     {
@@ -10060,6 +10116,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Roelien Kamminga',
         partij: 'VVD',
         woonplaats: 'Groningen',
+        height: 185,
       },
     },
     {
@@ -10073,6 +10130,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Sigrid Kaag',
         partij: 'D66',
         woonplaats: "'s-Gravenhage",
+        height: 188,
       },
     },
     {
@@ -10086,6 +10144,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Raymond de Roon',
         partij: 'PVV',
         woonplaats: 'Aardenburg',
+        height: 188,
       },
     },
     {
@@ -10099,6 +10158,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Romke de Jong',
         partij: 'D66',
         woonplaats: 'Gorredijk',
+        height: 192,
       },
     },
     {
@@ -10112,6 +10172,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Geert Wilders',
         partij: 'PVV',
         woonplaats: '',
+        height: 190,
       },
     },
     {
@@ -10125,6 +10186,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Lon de Jong',
         partij: 'PVV',
         woonplaats: "'s-Gravenhage",
+        height: 187,
       },
     },
     {
@@ -10138,6 +10200,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Pim van Strien',
         partij: 'VVD',
         woonplaats: 'Amsterdam',
+        height: 177,
       },
     },
     {
@@ -10151,6 +10214,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Queeny Rajkowski',
         partij: 'VVD',
         woonplaats: 'Utrecht',
+        height: 187,
       },
     },
     {
@@ -10164,6 +10228,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Rob Jetten',
         partij: 'D66',
         woonplaats: 'Ubbergen',
+        height: 193,
       },
     },
     {
@@ -10177,6 +10242,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Freek Jansen',
         partij: 'FVD',
         woonplaats: "'s-Gravenhage",
+        height: 186,
       },
     },
     {
@@ -10190,6 +10256,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Folkert Idsinga',
         partij: 'VVD',
         woonplaats: 'Amsterdam',
+        height: 185,
       },
     },
     {
@@ -10203,6 +10270,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Pepijn van Houwelingen',
         partij: 'FVD',
         woonplaats: "'s-Gravenhage",
+        height: 184,
       },
     },
     {
@@ -10216,6 +10284,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Habtamu de Hoop',
         partij: 'PvdA',
         woonplaats: "'s-Gravenhage",
+        height: 185,
       },
     },
     {
@@ -10224,6 +10293,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO-_G',
       attributes: {
         naam: 'Commissie voor de Inlichtingen- en Veiligheidsdiensten',
+        year: 2015,
+        topic: 'Foreign Office',
       },
     },
     {
@@ -10237,6 +10308,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Wopke Hoekstra',
         partij: 'CDA',
         woonplaats: 'Bussum',
+        height: 186,
       },
     },
     {
@@ -10250,6 +10322,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Hans Vijlbrief',
         partij: 'D66',
         woonplaats: 'Woubrugge',
+        height: 190,
       },
     },
     {
@@ -10263,6 +10336,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Agnes Mulder',
         partij: 'CDA',
         woonplaats: 'Assen',
+        height: 182,
       },
     },
     {
@@ -10276,6 +10350,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Jacqueline van den Hil',
         partij: 'VVD',
         woonplaats: 'Goes',
+        height: 188,
       },
     },
     {
@@ -10289,16 +10364,21 @@ export const big2ndChamberQueryResult = {
         naam: 'Maarten Hijink',
         partij: 'SP',
         woonplaats: 'Amersfoort',
+        height: 192,
       },
     },
+
     {
       id: 'commissies/35',
       _key: '35',
       _rev: '_cYl_IhO-_E',
       attributes: {
         naam: 'Gezamenlijke toezichtsgroep Europol',
+        year: 2011,
+        topic: 'Defense',
       },
     },
+
     {
       id: 'kamerleden/57',
       _key: '57',
@@ -10310,6 +10390,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Lilian Helder',
         partij: 'PVV',
         woonplaats: 'Venlo',
+        height: 180,
       },
     },
     {
@@ -10323,6 +10404,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Jeroen van Wijngaarden',
         partij: 'VVD',
         woonplaats: 'Amsterdam',
+        height: 186,
       },
     },
     {
@@ -10336,6 +10418,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Eelco Heinen',
         partij: 'VVD',
         woonplaats: "'s-Gravenhage",
+        height: 189,
       },
     },
     {
@@ -10349,6 +10432,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Pieter Heerma',
         partij: 'CDA',
         woonplaats: 'Purmerend',
+        height: 185,
       },
     },
     {
@@ -10362,8 +10446,10 @@ export const big2ndChamberQueryResult = {
         naam: 'Alexander Hammelburg',
         partij: 'D66',
         woonplaats: 'Amsterdam',
+        height: 185,
       },
     },
+
     {
       id: 'kamerleden/142',
       _key: '142',
@@ -10375,6 +10461,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Dennis Wiersma',
         partij: 'VVD',
         woonplaats: 'De Bilt',
+        height: 189,
       },
     },
     {
@@ -10388,6 +10475,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Kiki Hagen',
         partij: 'D66',
         woonplaats: 'Mijdrecht',
+        height: 182,
       },
     },
     {
@@ -10401,6 +10489,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Liane den Haan',
         partij: 'Fractie Den Haan',
         woonplaats: 'Woerden',
+        height: 183,
       },
     },
     {
@@ -10414,6 +10503,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Nilfer  Gndoan',
         partij: 'Volt',
         woonplaats: 'Amsterdam',
+        height: 189,
       },
     },
     {
@@ -10427,6 +10517,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Lucille Werner',
         partij: 'CDA',
         woonplaats: 'Nederhorst den Berg',
+        height: 183,
       },
     },
     {
@@ -10440,6 +10531,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Tjeerd de Groot',
         partij: 'D66',
         woonplaats: 'Haarlem',
+        height: 195,
       },
     },
     {
@@ -10453,6 +10545,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Peter de Groot',
         partij: 'VVD',
         woonplaats: 'Harderwijk',
+        height: 190,
       },
     },
     {
@@ -10466,6 +10559,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Pieter Grinwis',
         partij: 'CU',
         woonplaats: "'s-Gravenhage",
+        height: 190,
       },
     },
     {
@@ -10479,6 +10573,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Alexander Kops',
         partij: 'PVV',
         woonplaats: 'Overasselt',
+        height: 194,
       },
     },
     {
@@ -10492,6 +10587,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Dion Graus',
         partij: 'PVV',
         woonplaats: 'Heerlen',
+        height: 190,
       },
     },
     {
@@ -10505,8 +10601,10 @@ export const big2ndChamberQueryResult = {
         naam: 'Sjoerd Sjoerdsma',
         partij: 'D66',
         woonplaats: "'s-Gravenhage",
+        height: 181,
       },
     },
+
     {
       id: 'kamerleden/43',
       _key: '43',
@@ -10518,6 +10616,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Machiel de Graaf',
         partij: 'PVV',
         woonplaats: "'s-Gravenhage",
+        height: 188,
       },
     },
     {
@@ -10531,16 +10630,21 @@ export const big2ndChamberQueryResult = {
         naam: 'Lisa van Ginneken',
         partij: 'D66',
         woonplaats: 'Amsterdam',
+        height: 187,
       },
     },
+
     {
       id: 'commissies/34',
       _key: '34',
       _rev: '_cYl_IhO-_C',
       attributes: {
         naam: 'Commissie voor het Onderzoek van de Geloofsbrieven',
+        year: 2016,
+        topic: 'Police',
       },
     },
+
     {
       id: 'kamerleden/41',
       _key: '41',
@@ -10552,16 +10656,21 @@ export const big2ndChamberQueryResult = {
         naam: 'Jaco Geurts',
         partij: 'CDA',
         woonplaats: 'Voorthuizen',
+        height: 192,
       },
     },
+
     {
       id: 'commissies/33',
       _key: '33',
       _rev: '_cYl_IhO-_A',
       attributes: {
         naam: 'Contactgroep Duitsland',
+        year: 2015,
+        topic: 'Police',
       },
     },
+
     {
       id: 'kamerleden/38',
       _key: '38',
@@ -10573,6 +10682,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Silvio Erkens',
         partij: 'VVD',
         woonplaats: 'Kerkrade',
+        height: 186,
       },
     },
     {
@@ -10586,6 +10696,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Derk Jan  Eppink',
         partij: 'JA21',
         woonplaats: "'s-Gravenhage",
+        height: 196,
       },
     },
     {
@@ -10599,6 +10710,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Ulysse Ellian',
         partij: 'VVD',
         woonplaats: 'Almere',
+        height: 187,
       },
     },
     {
@@ -10612,6 +10724,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Zohair El Yassini',
         partij: 'VVD',
         woonplaats: 'Utrecht',
+        height: 191,
       },
     },
     {
@@ -10625,6 +10738,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Joost Eerdmans',
         partij: 'JA21',
         woonplaats: 'Rotterdam',
+        height: 188,
       },
     },
     {
@@ -10638,6 +10752,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Jasper van Dijk',
         partij: 'SP',
         woonplaats: 'Utrecht',
+        height: 187,
       },
     },
     {
@@ -10651,16 +10766,21 @@ export const big2ndChamberQueryResult = {
         naam: 'Inge van Dijk',
         partij: 'CDA',
         woonplaats: 'Gemert',
+        height: 182,
       },
     },
+
     {
       id: 'commissies/32',
       _key: '32',
       _rev: '_cYl_IhO-_-',
       attributes: {
         naam: 'Parlementaire enqutecommissie aardgaswinning Groningen',
+        year: 2012,
+        topic: 'Police',
       },
     },
+
     {
       id: 'kamerleden/29',
       _key: '29',
@@ -10672,6 +10792,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Gijs van Dijk',
         partij: 'PvdA',
         woonplaats: 'Den Burg',
+        height: 195,
       },
     },
     {
@@ -10685,6 +10806,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Tony van Dijck',
         partij: 'PVV',
         woonplaats: "'s-Gravenhage",
+        height: 189,
       },
     },
     {
@@ -10698,6 +10820,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Laurens Dassen',
         partij: 'Volt',
         woonplaats: 'Amsterdam',
+        height: 187,
       },
     },
     {
@@ -10711,6 +10834,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Thom van Campen',
         partij: 'VVD',
         woonplaats: 'Zwolle',
+        height: 184,
       },
     },
     {
@@ -10719,6 +10843,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--8',
       attributes: {
         naam: 'Commissie voor de Verzoekschriften en de Burgerinitiatieven',
+        year: 2014,
+        topic: 'Police',
       },
     },
     {
@@ -10732,6 +10858,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Laura Bromet',
         partij: 'GL',
         woonplaats: 'Monnickendam',
+        height: 185,
       },
     },
     {
@@ -10740,16 +10867,22 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--6',
       attributes: {
         naam: 'Delegatie naar de OVSE-Assemblee',
+        year: 2014,
+        topic: 'Police',
       },
     },
+
     {
       id: 'commissies/29',
       _key: '29',
       _rev: '_cYl_IhO--4',
       attributes: {
         naam: 'Contactgroep Verenigd Koninkrijk',
+        year: 2015,
+        topic: 'Defense',
       },
     },
+
     {
       id: 'kamerleden/54',
       _key: '54',
@@ -10761,6 +10894,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Rudmer Heerema',
         partij: 'VVD',
         woonplaats: 'Alkmaar',
+        height: 183,
       },
     },
     {
@@ -10774,6 +10908,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Faissal Boulakjar',
         partij: 'D66',
         woonplaats: 'Teteringen',
+        height: 192,
       },
     },
     {
@@ -10787,6 +10922,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Raoul Boucke',
         partij: 'D66',
         woonplaats: 'Rotterdam',
+        height: 188,
       },
     },
     {
@@ -10800,6 +10936,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Kauthar Bouchallikh',
         partij: 'GL',
         woonplaats: 'Amsterdam',
+        height: 191,
       },
     },
     {
@@ -10813,6 +10950,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Derk Boswijk',
         partij: 'CDA',
         woonplaats: 'Kockengen',
+        height: 193,
       },
     },
     {
@@ -10826,6 +10964,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Don Ceder',
         partij: 'CU',
         woonplaats: 'Amsterdam',
+        height: 189,
       },
     },
     {
@@ -10834,6 +10973,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--2',
       attributes: {
         naam: 'Interparlementaire commissie inzake de Nederlandse Taalunie',
+        year: 2015,
+        topic: 'Foreign Office',
       },
     },
     {
@@ -10842,6 +10983,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--0',
       attributes: {
         naam: 'Contactgroep Frankrijk',
+        year: 2015,
+        topic: 'Defense',
       },
     },
     {
@@ -10855,6 +10998,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Martin Bosma',
         partij: 'PVV',
         woonplaats: 'Amsterdam',
+        height: 191,
       },
     },
     {
@@ -10868,6 +11012,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Roelof Bisschop',
         partij: 'SGP',
         woonplaats: 'Veenendaal',
+        height: 183,
       },
     },
     {
@@ -10881,6 +11026,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Mirjam Bikker',
         partij: 'CU',
         woonplaats: 'Gouda',
+        height: 196,
       },
     },
     {
@@ -10894,6 +11040,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Vera Bergkamp',
         partij: 'D66',
         woonplaats: 'Amsterdam',
+        height: 189,
       },
     },
     {
@@ -10907,6 +11054,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Joba van den Berg',
         partij: 'CDA',
         woonplaats: 'Utrecht',
+        height: 192,
       },
     },
     {
@@ -10915,6 +11063,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--w',
       attributes: {
         naam: 'Parlementaire ondervragingscommissie Kinderopvangtoeslag',
+        year: 2015,
+        topic: 'Police',
       },
     },
     {
@@ -10923,6 +11073,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--u',
       attributes: {
         naam: 'Kunstcommissie',
+        year: 2016,
+        topic: 'Foreign Office',
       },
     },
     {
@@ -10931,6 +11083,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--s',
       attributes: {
         naam: 'Delegatie naar de Parlementaire Vergadering van de Raad van Europa',
+        year: 2016,
+        topic: 'Defense',
       },
     },
     {
@@ -10939,6 +11093,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--q',
       attributes: {
         naam: 'Delegatie naar de NAVO-Assemblee',
+        year: 2015,
+        topic: 'Justice',
       },
     },
     {
@@ -10952,6 +11108,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Salima Belhaj',
         partij: 'D66',
         woonplaats: 'Rotterdam',
+        height: 192,
       },
     },
     {
@@ -10965,6 +11122,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Ingrid Michon-Derkzen',
         partij: 'VVD',
         woonplaats: "'s-Gravenhage",
+        height: 189,
       },
     },
     {
@@ -10978,6 +11136,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Harm Beertema',
         partij: 'PVV',
         woonplaats: 'Voorburg',
+        height: 180,
       },
     },
     {
@@ -10986,6 +11145,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--o',
       attributes: {
         naam: 'Bouwbegeleidingscommissie',
+        year: 2015,
+        topic: 'Police',
       },
     },
     {
@@ -10999,6 +11160,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Sandra Beckerman',
         partij: 'SP',
         woonplaats: 'Groningen',
+        height: 193,
       },
     },
     {
@@ -11012,6 +11174,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Bente Becker',
         partij: 'VVD',
         woonplaats: "'s-Gravenhage",
+        height: 180,
       },
     },
     {
@@ -11025,6 +11188,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Stephan van Baarle',
         partij: 'DENK',
         woonplaats: 'Rotterdam',
+        height: 195,
       },
     },
     {
@@ -11038,6 +11202,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Farid Azarkan',
         partij: 'DENK',
         woonplaats: 'Culemborg',
+        height: 195,
       },
     },
     {
@@ -11051,6 +11216,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Nicki Pouw-Verweij',
         partij: 'JA21',
         woonplaats: 'Maarssen',
+        height: 184,
       },
     },
     {
@@ -11059,6 +11225,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--m',
       attributes: {
         naam: 'Nederlandse Groep van de Interparlementaire Unie',
+        year: 2015,
+        topic: 'Police',
       },
     },
     {
@@ -11072,6 +11240,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Khadija Arib',
         partij: 'PvdA',
         woonplaats: 'Amsterdam',
+        height: 180,
       },
     },
     {
@@ -11085,6 +11254,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Sietse Fritsma',
         partij: 'PVV',
         woonplaats: "'s-Gravenhage",
+        height: 183,
       },
     },
     {
@@ -11098,6 +11268,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Mustafa Amhaouch',
         partij: 'CDA',
         woonplaats: 'Panningen',
+        height: 193,
       },
     },
     {
@@ -11106,6 +11277,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--k',
       attributes: {
         naam: 'Koninkrijksrelaties',
+        year: 2015,
+        topic: 'Justice',
       },
     },
     {
@@ -11114,6 +11287,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--i',
       attributes: {
         naam: 'Justitie en Veiligheid',
+        year: 2013,
+        topic: 'Police',
       },
     },
     {
@@ -11122,6 +11297,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--g',
       attributes: {
         naam: 'Europese Zaken',
+        year: 2013,
+        topic: 'Police',
       },
     },
     {
@@ -11135,6 +11312,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Mahir Alkaya',
         partij: 'SP',
         woonplaats: 'Amsterdam',
+        height: 188,
       },
     },
     {
@@ -11143,6 +11321,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--e',
       attributes: {
         naam: 'Volksgezondheid, Welzijn en Sport',
+        year: 2014,
+        topic: 'Police',
       },
     },
     {
@@ -11151,6 +11331,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--c',
       attributes: {
         naam: 'Presidium',
+        year: 2012,
+        topic: 'Police',
       },
     },
     {
@@ -11159,6 +11341,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--a',
       attributes: {
         naam: 'Onderwijs, Cultuur en Wetenschap',
+        year: 2015,
+        topic: 'Police',
       },
     },
     {
@@ -11167,6 +11351,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--Y',
       attributes: {
         naam: 'Landbouw, Natuur en Voedselkwaliteit',
+        year: 2015,
+        topic: 'Defense',
       },
     },
     {
@@ -11180,6 +11366,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Ruben Brekelmans',
         partij: 'VVD',
         woonplaats: 'Oisterwijk',
+        height: 193,
       },
     },
     {
@@ -11188,6 +11375,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--W',
       attributes: {
         naam: 'Infrastructuur en Waterstaat',
+        year: 2016,
+        topic: 'Police',
       },
     },
     {
@@ -11201,6 +11390,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Christine Teunissen',
         partij: 'PvdD',
         woonplaats: "'s-Gravenhage",
+        height: 190,
       },
     },
     {
@@ -11209,6 +11399,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--U',
       attributes: {
         naam: 'Digitale Zaken',
+        year: 2012,
+        topic: 'Police',
       },
     },
     {
@@ -11222,6 +11414,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Fleur Agema',
         partij: 'PVV',
         woonplaats: "'s-Gravenhage",
+        height: 186,
       },
     },
     {
@@ -11230,6 +11423,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--y',
       attributes: {
         naam: 'Commissie voor de Werkwijze',
+        year: 2012,
+        topic: 'Defense',
       },
     },
     {
@@ -11238,6 +11433,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--S',
       attributes: {
         naam: 'Sociale Zaken en Werkgelegenheid',
+        year: 2013,
+        topic: 'Police',
       },
     },
     {
@@ -11246,6 +11443,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--Q',
       attributes: {
         naam: 'Rijksuitgaven',
+        year: 2015,
+        topic: 'Foreign Office',
       },
     },
     {
@@ -11254,6 +11453,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--O',
       attributes: {
         naam: 'Financin',
+        year: 2013,
+        topic: 'Justice',
       },
     },
     {
@@ -11262,6 +11463,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--M',
       attributes: {
         naam: 'Economische Zaken en Klimaat',
+        year: 2016,
+        topic: 'Police',
       },
     },
     {
@@ -11275,6 +11478,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Corinne Ellemeet',
         partij: 'GL',
         woonplaats: 'Abcoude',
+        height: 185,
       },
     },
     {
@@ -11283,6 +11487,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--K',
       attributes: {
         naam: 'Delegatie naar de Raadgevende Interparlementaire Beneluxraad',
+        year: 2015,
+        topic: 'Foreign Office',
       },
     },
     {
@@ -11291,6 +11497,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--I',
       attributes: {
         naam: 'Defensie',
+        year: 2017,
+        topic: 'Police',
       },
     },
     {
@@ -11304,6 +11512,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Marieke Koekkoek',
         partij: 'Volt',
         woonplaats: 'Utrecht',
+        height: 191,
       },
     },
     {
@@ -11312,6 +11521,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--G',
       attributes: {
         naam: 'Contactgroep Verenigde Staten',
+        year: 2015,
+        topic: 'Defense',
       },
     },
     {
@@ -11320,6 +11531,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--E',
       attributes: {
         naam: 'Contactgroep Belgi',
+        year: 2014,
+        topic: 'Defense',
       },
     },
     {
@@ -11328,6 +11541,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--C',
       attributes: {
         naam: 'Buitenlandse Zaken',
+        year: 2015,
+        topic: 'Defense',
       },
     },
     {
@@ -11336,6 +11551,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO--A',
       attributes: {
         naam: 'Buitenlandse Handel en Ontwikkelingssamenwerking',
+        year: 2013,
+        topic: 'Defense',
       },
     },
     {
@@ -11349,6 +11566,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Eva van Esch',
         partij: 'PvdD',
         woonplaats: 'Utrecht',
+        height: 200,
       },
     },
     {
@@ -11357,6 +11575,8 @@ export const big2ndChamberQueryResult = {
       _rev: '_cYl_IhO---',
       attributes: {
         naam: 'Binnenlandse Zaken',
+        year: 2015,
+        topic: 'Justice',
       },
     },
     {
@@ -11370,6 +11590,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Aukje de Vries',
         partij: 'VVD',
         woonplaats: 'Leeuwarden',
+        height: 185,
       },
     },
     {
@@ -11383,6 +11604,7 @@ export const big2ndChamberQueryResult = {
         naam: 'Thierry Aartsen',
         partij: 'VVD',
         woonplaats: 'Breda',
+        height: 188,
       },
     },
   ],
diff --git a/libs/shared/lib/mock-data/query-result/gotCharacter2Character.ts b/libs/shared/lib/mock-data/query-result/gotCharacter2Character.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9105cd2f79a9da3111226af9ccd93371130b0323
--- /dev/null
+++ b/libs/shared/lib/mock-data/query-result/gotCharacter2Character.ts
@@ -0,0 +1,9072 @@
+/**
+ * This program has been developed by students from the bachelor Computer Science at
+ * Utrecht University within the Software Project course.
+ * © Copyright Utrecht University (Department of Information and Computing Sciences)
+ */
+
+/* istanbul ignore file */
+/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
+ * We do not test mock data.
+ * See testing plan for more details.*/
+
+/** Mock elements used for testing the query results. */
+export const gotCharacter2Character = {
+  nodes: [
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.3328256397977546,
+        book45PageRank: 0.6875444317091245,
+        centrality: 0,
+        community: 578,
+        degree: 0,
+        fastrf_embedding: [
+          0.35382550954818726, -0.45881387591362, -0.17309759557247162, 1.4506233930587769, 0.05110495537519455, 0.41523367166519165,
+          0.7736440896987915, 0.6593196392059326, 0.040663570165634155, 0.02788778766989708,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Addam-Marbrand',
+        pagerank: 0.15000000000000002,
+      },
+      id: '0',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 454.8086339495463,
+        book1PageRank: 3.036200181612617,
+        book45PageRank: 9.48743926545994,
+        centrality: 0.8181818181818182,
+        community: 759,
+        degree: 46,
+        fastrf_embedding: [
+          0.08447568863630295, -0.7249010801315308, -0.4880490005016327, 1.135746717453003, 0.041625794023275375, 0.2633621394634247,
+          0.8561347723007202, 0.8741286993026733, -0.07169564068317413, 0.037886470556259155,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Cersei-Lannister',
+        pagerank: 0.4001630128506378,
+      },
+      id: '112',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.8508984093822541,
+        centrality: 0,
+        community: 577,
+        degree: 10,
+        fastrf_embedding: [
+          0.36229580640792847, -0.4522989094257355, -0.17423927783966064, 1.380697250366211, -0.0720769464969635, 0.2259959578514099,
+          0.4495922923088074, 0.5221387147903442, -0.8756401538848877, 0.20467771589756012,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Lyle-Crakehall',
+        pagerank: 0.2443896312039272,
+      },
+      id: '577',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 65.9354648495481,
+        book1PageRank: 1.3390781579894246,
+        book45PageRank: 1.4283741342247789,
+        centrality: 0,
+        community: 579,
+        degree: 4,
+        fastrf_embedding: [
+          0.5135704874992371, -0.23034945130348206, -0.2317800670862198, 1.4799480438232422, 0.44372862577438354, -0.16692866384983063,
+          0.45448362827301025, 0.5420435667037964, -0.6498622894287109, -0.006971225142478943,
+        ],
+        labels: ['Character'],
+        louvain: 1,
+        name: 'Brynden-Tully',
+        pagerank: 0.16345302106929013,
+      },
+      id: '98',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 550.7243811839038,
+        book1PageRank: 3.120978816514323,
+        book45PageRank: 11.037292436542574,
+        centrality: 0.5957446808510638,
+        community: 579,
+        degree: 96,
+        fastrf_embedding: [
+          0.2603858411312103, -0.48431724309921265, -0.2220391482114792, 1.345127820968628, 0.1143094003200531, 0.03599052131175995,
+          0.7399157285690308, 0.6830123662948608, -0.6101155281066895, 0.1299990713596344,
+        ],
+        labels: ['Character'],
+        louvain: 1,
+        name: 'Jaime-Lannister',
+        pagerank: 1.5045862772633602,
+      },
+      id: '302',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.5775526296331895,
+        centrality: 0,
+        community: 654,
+        degree: 6,
+        fastrf_embedding: [
+          0.238351970911026, -0.47206851840019226, -0.4519234299659729, 1.0758657455444336, -0.18891717493534088, 0.6921825408935547,
+          0.534992516040802, 0.8704518675804138, 0.577397346496582, -0.6044090986251831,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Jalabhar-Xho',
+        pagerank: 0.17645340146292307,
+      },
+      id: '303',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 185.7202718429223,
+        book1PageRank: 1.7111011335717086,
+        book45PageRank: 1.2796758235256933,
+        centrality: 0.4641509433962264,
+        community: 578,
+        degree: 97,
+        fastrf_embedding: [
+          0.31962850689888, -0.7590652704238892, 0.014353357255458832, 1.3323899507522583, -0.261833518743515, -0.027908802032470703,
+          0.7807412147521973, 0.6981460452079773, -0.30424240231513977, 0.23160305619239807,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Varys',
+        pagerank: 3.589986279753582,
+      },
+      id: '578',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.0792047257329225,
+        centrality: 0,
+        community: 578,
+        degree: 9,
+        fastrf_embedding: [
+          0.15822133421897888, -0.577011227607727, -0.07917480915784836, 1.0352537631988525, -0.10755930840969086, 0.4035959243774414,
+          1.0521013736724854, 0.8448116183280945, 0.5597030520439148, -0.17567524313926697,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Gyles-Rosby',
+        pagerank: 0.19067454471493087,
+      },
+      id: '246',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 326.0235718571289,
+        book1PageRank: 2.967875936721671,
+        book45PageRank: 1.7481242041246878,
+        centrality: 0.5818181818181818,
+        community: 759,
+        degree: 87,
+        fastrf_embedding: [
+          0.0879557877779007, -0.8956883549690247, -0.17543070018291473, 1.0413628816604614, -0.062191352248191833, 0.059248827397823334,
+          0.9057177305221558, 0.7111008167266846, -0.512309193611145, 0.5116318464279175,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Joffrey-Baratheon',
+        pagerank: 0.8797740201119548,
+      },
+      id: '319',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 3272.6060155260343,
+        book1PageRank: 5.930439547970604,
+        book45PageRank: 7.444193451258991,
+        centrality: 0.5742574257425742,
+        community: 584,
+        degree: 300,
+        fastrf_embedding: [
+          0.10336129367351532, -0.8539108037948608, -0.28118857741355896, 0.8287017941474915, 0.029834989458322525, -0.11270476877689362,
+          1.1531343460083008, 0.5260605216026306, -0.13846704363822937, 0.15312975645065308,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Tyrion-Lannister',
+        pagerank: 9.473142454730429,
+      },
+      id: '567',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.9592703889942701,
+        centrality: 0,
+        community: 759,
+        degree: 32,
+        fastrf_embedding: [
+          0.26368263363838196, -0.6556603908538818, -0.2219369113445282, 1.4346692562103271, 0.15780062973499298, 0.5151747465133667,
+          0.6843439340591431, 0.24719300866127014, -0.09223191440105438, 0.6285061240196228,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Oberyn-Martell',
+        pagerank: 0.5476896270620903,
+      },
+      id: '440',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.44161729115126985,
+        book45PageRank: 1.8040361675169607,
+        centrality: 0.3815789473684211,
+        community: 579,
+        degree: 12,
+        fastrf_embedding: [
+          0.34857890009880066, -0.557540237903595, -0.020548289641737938, 1.216947317123413, -0.13602174818515778, 0.2284156233072281,
+          0.9544765949249268, 0.7975549101829529, -0.275760293006897, 0.42080923914909363,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Kevan-Lannister',
+        pagerank: 0.2226637058204542,
+      },
+      id: '343',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 450.60713840159633,
+        book1PageRank: 2.405221649705289,
+        book45PageRank: 2.799910037566406,
+        centrality: 0.47470817120622566,
+        community: 579,
+        degree: 124,
+        fastrf_embedding: [
+          0.3950556814670563, -0.5283526182174683, -0.17238706350326538, 1.363006830215454, 0.2016204595565796, -0.12209222465753555,
+          0.665755033493042, 0.7187542915344238, -0.5251519680023193, 0.5614954829216003,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Tywin-Lannister',
+        pagerank: 4.665256252734499,
+      },
+      id: '568',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 579,
+        degree: 0,
+        fastrf_embedding: [
+          0.6692425608634949, 0.26947808265686035, -0.46825382113456726, 1.4707913398742676, 0.15199536085128784, -0.030865386128425598,
+          0.24450114369392395, 0.7146733403205872, -0.5190035104751587, 0.38898786902427673,
+        ],
+        labels: ['Character'],
+        louvain: 1,
+        name: 'Aegon-Frey-(son-of-Stevron)',
+        pagerank: 0.15000000000000002,
+      },
+      id: '1',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.3816280330285436,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0.5,
+        community: 579,
+        degree: 8,
+        fastrf_embedding: [
+          0.6811410188674927, 0.2711561322212219, -0.4886857271194458, 1.467673659324646, 0.099857859313488, -0.03907119855284691,
+          0.34969642758369446, 0.6281612515449524, -0.5236510038375854, 0.1621444821357727,
+        ],
+        labels: ['Character'],
+        louvain: 1,
+        name: 'Stevron-Frey',
+        pagerank: 0.5116539737891275,
+      },
+      id: '544',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 556.3859307359309,
+        book1PageRank: 1.0387052718545167,
+        book45PageRank: 0.841940236074413,
+        centrality: 0.3633720930232558,
+        community: 579,
+        degree: 45,
+        fastrf_embedding: [
+          0.6159646511077881, 0.1356440931558609, -0.30006998777389526, 1.4447922706604004, 0.27605241537094116, -0.001966409385204315,
+          0.3873421251773834, 0.8253891468048096, -0.4911245107650757, 0.39679402112960815,
+        ],
+        labels: ['Character'],
+        louvain: 1,
+        name: 'Walder-Frey',
+        pagerank: 2.4525242562301783,
+      },
+      id: '579',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 1255.6896562838228,
+        book1PageRank: 3.8472761104398057,
+        book45PageRank: 2.419347971991366,
+        centrality: 0.5170068027210885,
+        community: 579,
+        degree: 131,
+        fastrf_embedding: [
+          0.3740772008895874, -0.2786458730697632, -0.4937567710876465, 1.2647309303283691, 0.21857687830924988, -0.019341230392456055,
+          0.3039262294769287, 0.5820882320404053, -0.818312406539917, 0.7786474227905273,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Robb-Stark',
+        pagerank: 2.673258936368296,
+      },
+      id: '504',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 2604.7556467555924,
+        book1PageRank: 5.4188070749134205,
+        book45PageRank: 1.7513287543111746,
+        centrality: 0.8333333333333334,
+        community: 579,
+        degree: 26,
+        fastrf_embedding: [
+          0.524446964263916, -0.3803202211856842, -0.2185530960559845, 1.4116944074630737, 0.12343055754899979, -0.11456385254859924,
+          0.08329211175441742, 0.6949648857116699, -0.31851106882095337, 0.6014328002929688,
+        ],
+        labels: ['Character'],
+        louvain: 1,
+        name: 'Catelyn-Stark',
+        pagerank: 0.36334500362236216,
+      },
+      id: '107',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.3602141353119677,
+        book45PageRank: 0.2861487607239073,
+        centrality: 0,
+        community: 579,
+        degree: 0,
+        fastrf_embedding: [
+          0.051244139671325684, -1.335524082183838, 0.520713210105896, 0.2758268713951111, -0.42050158977508545, -0.020816698670387268,
+          -0.43031367659568787, 0.6724191904067993, -0.510455310344696, 0.41937217116355896,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Aegon-I-Targaryen',
+        pagerank: 0.15000000000000002,
+      },
+      id: '2',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 1484.278023228871,
+        book1PageRank: 2.6353023509911737,
+        book45PageRank: 9.36202418133131,
+        centrality: 1,
+        community: 598,
+        degree: 41,
+        fastrf_embedding: [
+          0.5061865448951721, 0.0026036519557237625, 0.23025906085968018, 0.9562555551528931, -0.09583791345357895, -0.3958593010902405,
+          -0.28125515580177307, 0.8477262258529663, -0.20620185136795044, -1.1790757179260254,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Daenerys-Targaryen',
+        pagerank: 0.5712255412556179,
+      },
+      id: '143',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 580,
+        degree: 4,
+        fastrf_embedding: [
+          0.29320764541625977, -1.2091906070709229, 0.4764113426208496, 0.16568231582641602, -0.3530804514884949, -0.1499391347169876,
+          -0.7283502817153931, 0.5094102621078491, -0.6105861663818359, 0.158638596534729,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Torrhen-Stark',
+        pagerank: 0.17244886864299633,
+      },
+      id: '580',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 7.6224690805776,
+        book1PageRank: 1.2337390227391452,
+        book45PageRank: 9.0986322915408,
+        centrality: 0.43891402714932126,
+        community: 588,
+        degree: 197,
+        fastrf_embedding: [
+          -0.2867729365825653, -0.8818053007125854, 0.6064205169677734, 0.5158848762512207, 0.17983628809452057, -0.07672466337680817,
+          0.8879333734512329, 1.1696799993515015, 0.003904564306139946, 0.4153077006340027,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Stannis-Baratheon',
+        pagerank: 6.20480796309716,
+      },
+      id: '543',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 581,
+        degree: 4,
+        fastrf_embedding: [
+          0.19583703577518463, -1.0480444431304932, 0.7550164461135864, -0.5675674676895142, -0.611786961555481, 0.389486700296402,
+          -0.8797573447227478, 0.2949497401714325, 0.090794637799263, 0.08744000643491745,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Visenya-Targaryen',
+        pagerank: 0.30370833794586366,
+      },
+      id: '581',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.5486369188023731,
+        book45PageRank: 0.7109761151598671,
+        centrality: 0.3216374269005848,
+        community: 579,
+        degree: 20,
+        fastrf_embedding: [
+          0.12408335506916046, -0.13430869579315186, -0.11781823635101318, 0.9684189558029175, 0.045937053859233856, -0.06577116250991821,
+          0.12567414343357086, 0.2992299199104309, -0.8216472864151001, 1.3020484447479248,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Nan',
+        pagerank: 0.41105871087574575,
+      },
+      id: '433',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 579,
+        degree: 4,
+        fastrf_embedding: [
+          -0.21484623849391937, -0.7199147939682007, 0.16973641514778137, 0.6368154287338257, -0.44954782724380493, 0.04624718427658081,
+          -0.2269868552684784, 0.4506351351737976, -0.9326561689376831, 1.1061972379684448,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Harren-Hoare',
+        pagerank: 0.1669946883164812,
+      },
+      id: '262',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 581,
+        degree: 2,
+        fastrf_embedding: [
+          0.2057913839817047, -1.1658313274383545, 0.6951664686203003, -0.6772897243499756, -0.5461992025375366, 0.3201676905155182,
+          -0.8220010995864868, 0.3032340109348297, 0.00979489367455244, -0.00028330087661743164,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Rhaenys-Targaryen',
+        pagerank: 0.16416666740551594,
+      },
+      id: '500',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 4638.53495125504,
+        book1PageRank: 8.164174336296284,
+        book45PageRank: 2.809556921719629,
+        centrality: 0.7586206896551724,
+        community: 579,
+        degree: 49,
+        fastrf_embedding: [
+          0.39165541529655457, -1.1100142002105713, -0.0980011522769928, 0.8953916430473328, 0.04706774279475212, -0.043146103620529175,
+          -0.021473795175552368, 0.6434606313705444, -0.7552379369735718, 0.6352384090423584,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Eddard-Stark',
+        pagerank: 0.5553947000175775,
+      },
+      id: '179',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 2.348783510962536,
+        centrality: 0,
+        community: 584,
+        degree: 0,
+        fastrf_embedding: [
+          0.32778751850128174, -0.7581890821456909, -1.1725186109542847, 0.6428011655807495, 0.030254025012254715, -0.8991533517837524,
+          0.36473867297172546, 0.13194376230239868, -0.4506591856479645, 0.011595115065574646,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Aegon-Targaryen-(son-of-Rhaegar)',
+        pagerank: 0.15000000000000002,
+      },
+      id: '3',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 2.503340728894643,
+        centrality: 0,
+        community: 584,
+        degree: 12,
+        fastrf_embedding: [
+          0.4616726040840149, -0.7348994016647339, -1.075956106185913, 0.8340579271316528, -0.047098636627197266, -0.7158306837081909,
+          0.2798345983028412, 0.04796832799911499, -0.41842299699783325, 0.01652691885828972,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Jon-Connington',
+        pagerank: 0.5220928440129301,
+      },
+      id: '323',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.9089440594023611,
+        centrality: 0,
+        community: 584,
+        degree: 12,
+        fastrf_embedding: [
+          -0.12693113088607788, -0.831745445728302, -1.3437113761901855, 0.13542519509792328, -0.03183312714099884, -0.9192761182785034,
+          0.5697532296180725, -0.18541720509529114, -0.29708099365234375, 0.14898493885993958,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Ysilla',
+        pagerank: 1.8468133248903862,
+      },
+      id: '584',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.7080637275792925,
+        centrality: 0,
+        community: 584,
+        degree: 4,
+        fastrf_embedding: [
+          -0.13971787691116333, -0.7383099794387817, -1.2555582523345947, 0.30226096510887146, -0.08026215434074402, -0.8872379064559937,
+          0.6440114378929138, 0.050050243735313416, -0.314571738243103, -0.2246687412261963,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Haldon',
+        pagerank: 0.19037499949336054,
+      },
+      id: '254',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.6051830290152673,
+        centrality: 0,
+        community: 751,
+        degree: 2,
+        fastrf_embedding: [
+          0.6489818096160889, -0.6697157621383667, -0.970938503742218, 0.4360257387161255, -0.06320531666278839, -0.8109044432640076,
+          0.3585510551929474, -0.04849749058485031, 0.17723557353019714, 0.25557589530944824,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Harry-Strickland',
+        pagerank: 0.15849999981001023,
+      },
+      id: '264',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.7107048086631681,
+        centrality: 0,
+        community: 584,
+        degree: 4,
+        fastrf_embedding: [
+          0.4371272623538971, -0.7035917043685913, -0.9272801876068115, 0.38067427277565, -0.18146547675132751, -0.9040710926055908,
+          0.061299070715904236, 0.2568960189819336, 0.006736874580383301, 0.18998247385025024,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Franklyn-Flowers',
+        pagerank: 0.28600000962615013,
+      },
+      id: '201',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 48.5263961145348,
+        book1PageRank: 0.8354410136736818,
+        book45PageRank: 1.6249182805699136,
+        centrality: 0.4838709677419355,
+        community: 583,
+        degree: 32,
+        fastrf_embedding: [
+          0.624599277973175, -0.6197682023048401, -0.6961383819580078, 1.0124919414520264, -0.010250523686408997, -0.46889156103134155,
+          0.21319197118282318, 0.6531264185905457, -0.8112566471099854, -0.05033724755048752,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Rhaegar-Targaryen',
+        pagerank: 0.43746920298066044,
+      },
+      id: '498',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.2820460287177498,
+        centrality: 0,
+        community: 582,
+        degree: 2,
+        fastrf_embedding: [
+          0.3503406047821045, -0.3826330602169037, -1.0031523704528809, 0.1314883828163147, 0.20446603000164032, -0.868667483329773,
+          0.5408930778503418, 0.12137355655431747, -0.13345377147197723, 0.3164454698562622,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Rhaenys-Targaryen-(daughter-of-Rhaegar)',
+        pagerank: 0.15849999981001023,
+      },
+      id: '582',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.0429978574561956,
+        centrality: 0,
+        community: 584,
+        degree: 12,
+        fastrf_embedding: [
+          -0.05492242053151131, -0.8997224569320679, -1.3389917612075806, 0.3007015287876129, -0.023618366569280624, -0.905581533908844,
+          0.5532042384147644, -0.050141919404268265, -0.279156893491745, 0.1375030279159546,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Yandry',
+        pagerank: 1.0222655191413816,
+      },
+      id: '576',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.8086615685670171,
+        centrality: 0,
+        community: 583,
+        degree: 7,
+        fastrf_embedding: [
+          0.35202160477638245, -0.45370709896087646, -0.5617284774780273, 1.1161112785339355, 0.44704100489616394, -0.11323574185371399,
+          0.7515504956245422, 0.6188985109329224, -0.4929269552230835, 0.40018582344055176,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Elia-Martell',
+        pagerank: 0.2902517402063598,
+      },
+      id: '186',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.178339720929161,
+        centrality: 0,
+        community: 584,
+        degree: 10,
+        fastrf_embedding: [
+          -0.048058245331048965, -0.8636007308959961, -1.3210257291793823, 0.39597374200820923, -0.10296101868152618, -0.8844176530838013,
+          0.5718063116073608, -0.1362050622701645, -0.3505590856075287, 0.07182955741882324,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Rolly-Duckfield',
+        pagerank: 0.29456907981474095,
+      },
+      id: '513',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 49.16335101201368,
+        book1PageRank: 0.9977233416744522,
+        book45PageRank: 0.834891237841564,
+        centrality: 0.41333333333333333,
+        community: 583,
+        degree: 37,
+        fastrf_embedding: [
+          0.4401358962059021, -0.2860235869884491, -0.7772444486618042, 1.3447821140289307, 0.0237511545419693, -0.15980197489261627,
+          0.14658448100090027, 0.5278943777084351, -0.7245345115661621, -0.5962563753128052,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Viserys-Targaryen',
+        pagerank: 1.4997900311679198,
+      },
+      id: '583',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.0429978574561956,
+        centrality: 0,
+        community: 584,
+        degree: 6,
+        fastrf_embedding: [
+          -0.057466063648462296, -0.8774425983428955, -1.324796438217163, 0.26433226466178894, -0.09897635877132416, -0.9227813482284546,
+          0.5977977514266968, -0.09174138307571411, -0.284066379070282, 0.14308345317840576,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Lemore',
+        pagerank: 0.2208577539330092,
+      },
+      id: '358',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.306266340075915,
+        centrality: 0,
+        community: 644,
+        degree: 0,
+        fastrf_embedding: [
+          -0.13105764985084534, -0.2286354899406433, 0.4529497027397156, 0.7909402251243591, 0.04333731532096863, -0.171614870429039,
+          0.8774953484535217, 0.6744737029075623, 0.5847921967506409, 0.19481338560581207,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Aegon-V-Targaryen',
+        pagerank: 0.15000000000000002,
+      },
+      id: '4',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 186.58333333333334,
+        book1PageRank: 1.1114288087803295,
+        book45PageRank: 1.4819357858504518,
+        centrality: 0,
+        community: 712,
+        degree: 3,
+        fastrf_embedding: [
+          0.09763889759778976, -0.542799174785614, 0.3037383556365967, 0.6556527614593506, -0.04637296870350838, -0.5069757699966431,
+          1.0010168552398682, 0.8582731485366821, 0.6343648433685303, 0.3986271619796753,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Aemon-Targaryen-(Maester-Aemon)',
+        pagerank: 0.27750000506639483,
+      },
+      id: '6',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 578,
+        degree: 0,
+        fastrf_embedding: [
+          0.35017889738082886, -0.25048044323921204, -0.05688502639532089, 1.0817139148712158, 0.09505587816238403, 0.07308007031679153,
+          0.5013588070869446, 0.6071778535842896, -0.8193973302841187, 0.3360396921634674,
+        ],
+        labels: ['Character'],
+        louvain: 1,
+        name: 'Aemon-Targaryen-(Dragonknight)',
+        pagerank: 0.15000000000000002,
+      },
+      id: '5',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.5841243390877138,
+        centrality: 0,
+        community: 601,
+        degree: 2,
+        fastrf_embedding: [
+          0.6753732562065125, -0.15743723511695862, 0.7690147757530212, -0.53502357006073, -0.15250776708126068, 0.2544763684272766,
+          0.8013629913330078, 0.8450644016265869, -0.06016535684466362, 0.9896143674850464,
+        ],
+        labels: ['Character'],
+        louvain: 8,
+        name: 'Alleras',
+        pagerank: 0.1594350002007559,
+      },
+      id: '21',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.2861487607239073,
+        centrality: 0,
+        community: 585,
+        degree: 4,
+        fastrf_embedding: [
+          0.27056261897087097, -0.031137585639953613, 0.40717196464538574, 1.1275166273117065, -0.022999614477157593, -0.4695357084274292,
+          0.3136826157569885, 0.974829912185669, 0.21412606537342072, -0.6021357774734497,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Daeron-II-Targaryen',
+        pagerank: 0.16780640935397978,
+      },
+      id: '585',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 3682.391035767814,
+        book1PageRank: 5.314800432638434,
+        book45PageRank: 2.9308712847295655,
+        centrality: 0.6301369863013698,
+        community: 579,
+        degree: 145,
+        fastrf_embedding: [
+          0.15070635080337524, -1.031607985496521, -0.17285197973251343, 1.1109888553619385, 0.04046834260225296, -0.08462268859148026,
+          0.3566634953022003, 0.9442095756530762, -0.5363819599151611, 0.5043748617172241,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Robert-Baratheon',
+        pagerank: 1.9016745418434495,
+      },
+      id: '506',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.2599786666408508,
+        book45PageRank: 1.058987981110726,
+        centrality: 0,
+        community: 712,
+        degree: 4,
+        fastrf_embedding: [
+          -0.09054188430309296, -0.1498204469680786, -0.0669674426317215, 0.8189582228660583, 0.004751414060592651, -0.4973081052303314,
+          0.8191807270050049, 0.26236024498939514, 0.3729591369628906, 0.9740878939628601,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Dareon',
+        pagerank: 0.16226302101276815,
+      },
+      id: '150',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 487.6864094298229,
+        book1PageRank: 1.716192155791437,
+        book45PageRank: 0.7816609743844524,
+        centrality: 0.8333333333333334,
+        community: 712,
+        degree: 42,
+        fastrf_embedding: [
+          -0.011551138013601303, -0.33987724781036377, -0.13477183878421783, 1.133234977722168, -0.029152758419513702, -0.7801793813705444,
+          0.9220090508460999, 0.8196306824684143, 0.34635916352272034, 0.45641130208969116,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Jeor-Mormont',
+        pagerank: 0.6508172471262501,
+      },
+      id: '311',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 248.6059682105335,
+        book1PageRank: 1.6807384852255065,
+        book45PageRank: 3.6033050869515044,
+        centrality: 0.39800995024875624,
+        community: 579,
+        degree: 103,
+        fastrf_embedding: [
+          0.3215669095516205, -0.16206499934196472, -0.021910198032855988, 0.5307669043540955, 0.045968953520059586, -0.708032488822937,
+          0.9519858360290527, 0.8969416618347168, 0.45856279134750366, 0.9501901865005493,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Samwell-Tarly',
+        pagerank: 2.7418717619837003,
+      },
+      id: '522',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 2952.057281565677,
+        book1PageRank: 4.821979834747603,
+        book45PageRank: 11.409916274911177,
+        centrality: 0.5783132530120482,
+        community: 579,
+        degree: 152,
+        fastrf_embedding: [
+          -0.1593378782272339, -0.12120263278484344, 0.21296489238739014, 0.5519320964813232, -0.2671765983104706, -0.6195541024208069,
+          1.1500990390777588, 0.8015871047973633, 0.18524999916553497, 0.8261103630065918,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Jon-Snow',
+        pagerank: 2.647344075094848,
+      },
+      id: '325',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.2599786666408508,
+        book45PageRank: 0.9331032323000134,
+        centrality: 0,
+        community: 749,
+        degree: 8,
+        fastrf_embedding: [
+          -0.033095236867666245, -0.24763047695159912, 0.44622814655303955, 0.5913351774215698, 0.09092831611633301, -0.3473329544067383,
+          1.1065492630004883, 1.011132836341858, 0.499261736869812, 0.7704875469207764,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Hobb',
+        pagerank: 0.22340275872240456,
+      },
+      id: '275',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.2599786666408508,
+        book45PageRank: 0.4697049884733574,
+        centrality: 0,
+        community: 712,
+        degree: 4,
+        fastrf_embedding: [
+          -0.07731602340936661, -0.2750323414802551, 0.40817415714263916, 1.058273196220398, -0.12072117626667023, -0.5151766538619995,
+          1.0427325963974, 0.7149254679679871, 0.4507332742214203, 0.45951464772224426,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Donal-Noye',
+        pagerank: 0.1684192341782364,
+      },
+      id: '165',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.4787097112625391,
+        centrality: 0,
+        community: 790,
+        degree: 7,
+        fastrf_embedding: [
+          0.007625482976436615, -0.15797024965286255, 0.2562410831451416, 0.6399595737457275, -0.09211467951536179, -0.6404820680618286,
+          1.2885630130767822, 0.8898814916610718, 0.49454012513160706, 0.49608445167541504,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Denys-Mallister',
+        pagerank: 0.18631377762895907,
+      },
+      id: '155',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.7656580604446743,
+        book45PageRank: 0.6000340129077912,
+        centrality: 0.4791666666666667,
+        community: 578,
+        degree: 24,
+        fastrf_embedding: [
+          -0.03498402237892151, -0.4378775954246521, 0.1956186294555664, 1.0039448738098145, -0.21239125728607178, -0.1860930621623993,
+          0.9526291489601135, 1.106031894683838, 0.012202996760606766, 0.44217991828918457,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Janos-Slynt',
+        pagerank: 0.3889661404421652,
+      },
+      id: '304',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.2577218757265301,
+        book45PageRank: 2.7176235321141315,
+        centrality: 0.6666666666666666,
+        community: 750,
+        degree: 40,
+        fastrf_embedding: [
+          -0.13408134877681732, -0.40485429763793945, 0.21943841874599457, 0.3594663143157959, 0.008995283395051956, -0.70162034034729,
+          1.4391398429870605, 0.5828009843826294, 0.3534069061279297, 0.5167901515960693,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Mance-Rayder',
+        pagerank: 0.5762390226615505,
+      },
+      id: '388',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.6417657825306526,
+        centrality: 0,
+        community: 790,
+        degree: 4,
+        fastrf_embedding: [
+          -0.1028597429394722, -0.08017627894878387, 0.34328073263168335, 0.4299759864807129, 0.007134236395359039, -0.5445866584777832,
+          1.295475959777832, 1.0054917335510254, 0.5509196519851685, 0.41981786489486694,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Cotter-Pyke',
+        pagerank: 0.1684192341782364,
+      },
+      id: '134',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.28415533672540527,
+        book45PageRank: 1.058611735199264,
+        centrality: 1,
+        community: 579,
+        degree: 6,
+        fastrf_embedding: [
+          -0.28814372420310974, -0.0540560781955719, 0.3909608721733093, 0.5632327795028687, 0.29229217767715454, -0.2827697694301605,
+          0.6291808485984802, 1.1509002447128296, 0.5207818150520325, 0.7639250755310059,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Clydas',
+        pagerank: 0.2044805342674863,
+      },
+      id: '126',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.7361442029003702,
+        book45PageRank: 1.5345541669277791,
+        centrality: 1,
+        community: 749,
+        degree: 4,
+        fastrf_embedding: [
+          -0.20349961519241333, -0.09628871083259583, 0.28078776597976685, 0.6126757264137268, -0.11005618423223495, -0.5903635025024414,
+          1.1180227994918823, 1.0865838527679443, 0.5022112131118774, 0.521109938621521,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Bowen-Marsh',
+        pagerank: 0.16911498275585476,
+      },
+      id: '86',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 1.2833333333333332,
+        book1PageRank: 0.9763953561067544,
+        book45PageRank: 0.8757418979446541,
+        centrality: 0.3798449612403101,
+        community: 790,
+        degree: 28,
+        fastrf_embedding: [
+          0.1165768951177597, -0.14123579859733582, 0.23870398104190826, 0.36477407813072205, -0.09262926131486893, -0.5656961798667908,
+          1.3077627420425415, 0.9454015493392944, 0.4263685941696167, 0.7693473100662231,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Pypar',
+        pagerank: 0.68080542163629,
+      },
+      id: '474',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 86.48439879061316,
+        book1PageRank: 1.3312090776411118,
+        book45PageRank: 0.2980407954824272,
+        centrality: 1,
+        community: 712,
+        degree: 3,
+        fastrf_embedding: [
+          0.05805518478155136, -0.4231557250022888, 0.1508362889289856, 0.793872594833374, -0.10239517688751221, -0.5844134092330933,
+          1.2810319662094116, 0.6313513517379761, 0.4148658812046051, 0.6310234069824219,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Alliser-Thorne',
+        pagerank: 0.1594350002007559,
+      },
+      id: '22',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.5305469762841706,
+        centrality: 0,
+        community: 749,
+        degree: 16,
+        fastrf_embedding: [
+          0.18402203917503357, -0.11833465099334717, 0.173573836684227, 0.5045828819274902, 0.0072644674219191074, -0.6460074186325073,
+          1.1486303806304932, 1.0082999467849731, 0.41361624002456665, 0.7742220163345337,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Eddison-Tollett',
+        pagerank: 0.3092751323171952,
+      },
+      id: '180',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.5123826092159853,
+        book45PageRank: 0.15000000000000002,
+        centrality: 1,
+        community: 644,
+        degree: 2,
+        fastrf_embedding: [
+          -0.043192654848098755, -0.1987200528383255, -0.2676914632320404, 1.215951681137085, -0.11235614120960236, -0.5434143543243408,
+          0.6378965377807617, 0.413564532995224, 0.7823292016983032, 0.512211799621582,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Chett',
+        pagerank: 0.1594350002007559,
+      },
+      id: '116',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 587,
+        degree: 2,
+        fastrf_embedding: [
+          -0.13105764985084534, -0.2286354899406433, 0.4529497027397156, 0.7909402251243591, 0.04333731532096863, -0.171614870429039,
+          0.8774953484535217, 0.6744737029075623, 0.5847921967506409, 0.19481338560581207,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Wynton-Stout',
+        pagerank: 0.1594350002007559,
+      },
+      id: '587',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.4554980795628517,
+        centrality: 0,
+        community: 749,
+        degree: 14,
+        fastrf_embedding: [
+          -0.03418835252523422, -0.23348137736320496, 0.4804912805557251, 0.3019288182258606, 0.23637685179710388, -0.14495201408863068,
+          0.9218735098838806, 1.2538330554962158, 0.17567457258701324, 0.965032696723938,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Owen',
+        pagerank: 0.40939602637139816,
+      },
+      id: '453',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 3.4833333333333334,
+        book1PageRank: 0.9669283299078737,
+        book45PageRank: 0.7089983969056376,
+        centrality: 0.6666666666666666,
+        community: 790,
+        degree: 13,
+        fastrf_embedding: [
+          0.1610819697380066, -0.2669253647327423, 0.08054626733064651, 0.5644290447235107, 0.1703289896249771, -0.768134355545044,
+          1.1730635166168213, 0.9023222327232361, 0.4207369387149811, 0.7312483787536621,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Grenn',
+        pagerank: 0.2859037181857457,
+      },
+      id: '234',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 586,
+        degree: 2,
+        fastrf_embedding: [
+          -0.13105764985084534, -0.2286354899406433, 0.4529497027397156, 0.7909402251243591, 0.04333731532096863, -0.171614870429039,
+          0.8774953484535217, 0.6744737029075623, 0.5847921967506409, 0.19481338560581207,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Maekar-I-Targaryen',
+        pagerank: 0.1594350002007559,
+      },
+      id: '586',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.7031533668286436,
+        centrality: 0,
+        community: 712,
+        degree: 13,
+        fastrf_embedding: [
+          -0.05065222084522247, 0.11438309401273727, -0.2275242656469345, 0.43067216873168945, 0.2577267289161682, -0.8852856755256653,
+          0.9432477355003357, 0.5752620697021484, 0.5588582754135132, 0.9693528413772583,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Gilly',
+        pagerank: 0.30500835486261174,
+      },
+      id: '223',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.6660473058231673,
+        centrality: 0,
+        community: 588,
+        degree: 0,
+        fastrf_embedding: [
+          -0.2590896487236023, -0.2160208374261856, 0.31051772832870483, 0.6923779249191284, 0.5717533826828003, -0.19308164715766907,
+          0.5440511107444763, 0.8048562407493591, -0.7266746163368225, 0.8484365940093994,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Aenys-Frey',
+        pagerank: 0.15000000000000002,
+      },
+      id: '7',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.6745774282333485,
+        book45PageRank: 0.49375571140013763,
+        centrality: 1,
+        community: 588,
+        degree: 4,
+        fastrf_embedding: [
+          -0.04731575399637222, 0.120216503739357, 0.5666197538375854, 0.7014703154563904, 0.5784305334091187, -0.3583323657512665,
+          0.585944414138794, 1.1338611841201782, -0.4710731506347656, 0.7166886925697327,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Hosteen-Frey',
+        pagerank: 0.22437500506639482,
+      },
+      id: '282',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 168.75234023581112,
+        book1PageRank: 1.6840092593782918,
+        book45PageRank: 6.272860489546943,
+        centrality: 0.45664739884393063,
+        community: 642,
+        degree: 125,
+        fastrf_embedding: [
+          -0.02100447565317154, -0.014319300651550293, 0.10238289088010788, 0.7284644246101379, 0.9727104902267456, -0.5143104791641235,
+          0.4468599855899811, 0.5795356631278992, -0.1433645486831665, 0.7739073038101196,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Theon-Greyjoy',
+        pagerank: 4.454318900905401,
+      },
+      id: '559',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 2.5919834691822983,
+        centrality: 0,
+        community: 588,
+        degree: 35,
+        fastrf_embedding: [
+          0.05724462866783142, -0.3949112892150879, 0.31534361839294434, 0.9019062519073486, 0.4163757562637329, -0.23121686279773712,
+          0.6159299612045288, 0.8263908624649048, -0.756229817867279, 0.9102413654327393,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Wyman-Manderly',
+        pagerank: 2.9192363729778927,
+      },
+      id: '588',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 301.00645534734974,
+        book1PageRank: 2.781731928245661,
+        book45PageRank: 5.083229982429223,
+        centrality: 0,
+        community: 605,
+        degree: 8,
+        fastrf_embedding: [
+          -0.15551070868968964, -0.6832578182220459, -0.30330514907836914, 0.7459936141967773, 0.024958975613117218, -0.3971257507801056,
+          0.46677395701408386, 0.6506232619285583, -0.6878155469894409, 1.09311842918396,
+        ],
+        labels: ['Character'],
+        louvain: 9,
+        name: 'Arya-Stark',
+        pagerank: 0.2661666698753834,
+      },
+      id: '47',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 3.215006654255786,
+        centrality: 0,
+        community: 795,
+        degree: 0,
+        fastrf_embedding: [
+          0.15897467732429504, -0.17925335466861725, 0.590828537940979, 0.32584187388420105, 0.3149564266204834, 0.41693615913391113,
+          -0.04546399042010307, -0.19182133674621582, 0.24988800287246704, 1.2208153009414673,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Aeron-Greyjoy',
+        pagerank: 0.15000000000000002,
+      },
+      id: '8',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.4950784318326234,
+        centrality: 0,
+        community: 642,
+        degree: 2,
+        fastrf_embedding: [
+          0.0896957516670227, -0.36347395181655884, 0.3502333164215088, 0.6016445755958557, 0.44537267088890076, 0.07483971118927002,
+          0.46132051944732666, -0.08892324566841125, 0.1075761616230011, 0.8562092781066895,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Murenmure',
+        pagerank: 0.15849999981001023,
+      },
+      id: '427',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 4.583288589222134,
+        centrality: 0,
+        community: 642,
+        degree: 6,
+        fastrf_embedding: [
+          0.05665529891848564, -0.34007540345191956, 1.2472158670425415, 0.11344917118549347, 0.46910056471824646, 0.6760565638542175,
+          -0.5096606016159058, 0.7005107402801514, 0.16423840820789337, -0.01096695102751255,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Asha-Greyjoy',
+        pagerank: 0.22650000303983692,
+      },
+      id: '49',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.8784086178095748,
+        centrality: 0,
+        community: 795,
+        degree: 2,
+        fastrf_embedding: [
+          0.49478679895401, -0.11485598981380463, 0.6636173725128174, 0.3069183826446533, 0.46989214420318604, 0.6955260038375854,
+          -0.3205004930496216, -0.06278128921985626, 0.06365551054477692, 1.272136926651001,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Baelor-Blacktyde',
+        pagerank: 0.15849999981001023,
+      },
+      id: '55',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.5336844518361452,
+        centrality: 0,
+        community: 795,
+        degree: 2,
+        fastrf_embedding: [
+          0.2722611427307129, -0.08866839110851288, 0.6885997653007507, 0.20476439595222473, 0.2655707001686096, 0.463327556848526,
+          0.06429857015609741, -0.4279199242591858, 0.3706035017967224, 0.9791222810745239,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Meldred-Merlyn',
+        pagerank: 0.15849999981001023,
+      },
+      id: '403',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.3439251004811857,
+        centrality: 0,
+        community: 589,
+        degree: 2,
+        fastrf_embedding: [
+          0.21345838904380798, -0.1839655637741089, 0.24781841039657593, 0.2344418615102768, 0.03830865025520325, 0.16972015798091888,
+          -0.04663768410682678, -0.42498552799224854, 0.4602431654930115, 0.9509879946708679,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Emmond',
+        pagerank: 0.15849999981001023,
+      },
+      id: '589',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.5336844518361452,
+        centrality: 0,
+        community: 795,
+        degree: 2,
+        fastrf_embedding: [
+          0.2722611427307129, -0.08866839110851288, 0.6885997653007507, 0.20476439595222473, 0.2655707001686096, 0.463327556848526,
+          0.06429857015609741, -0.4279199242591858, 0.3706035017967224, 0.9791222810745239,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Gorold-Goodbrother',
+        pagerank: 0.15849999981001023,
+      },
+      id: '229',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.3439251004811857,
+        centrality: 0,
+        community: 591,
+        degree: 2,
+        fastrf_embedding: [
+          0.21345838904380798, -0.1839655637741089, 0.24781841039657593, 0.2344418615102768, 0.03830865025520325, 0.16972015798091888,
+          -0.04663768410682678, -0.42498552799224854, 0.4602431654930115, 0.9509879946708679,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Greydon-Goodbrother',
+        pagerank: 0.15849999981001023,
+      },
+      id: '591',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.7151214759856994,
+        centrality: 0,
+        community: 754,
+        degree: 2,
+        fastrf_embedding: [
+          0.3607626259326935, 0.11295418441295624, 0.7000997066497803, -0.01248949021100998, 0.334852397441864, 0.6304581165313721,
+          0.018627870827913284, -0.3000517785549164, -0.11845386028289795, 1.012982726097107,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Dunstan-Drumm',
+        pagerank: 0.15849999981001023,
+      },
+      id: '176',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 5.16893551207987,
+        centrality: 0,
+        community: 795,
+        degree: 47,
+        fastrf_embedding: [
+          0.15346822142601013, 0.023705177009105682, 0.8502622842788696, 0.13421399891376495, 0.5347766876220703, 0.5788986682891846,
+          0.03540709987282753, -0.0327128991484642, 0.36255428194999695, 0.8504924774169922,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Victarion-Greyjoy',
+        pagerank: 2.457920060706385,
+      },
+      id: '570',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.3439251004811857,
+        centrality: 0,
+        community: 590,
+        degree: 2,
+        fastrf_embedding: [
+          0.21345838904380798, -0.1839655637741089, 0.24781841039657593, 0.2344418615102768, 0.03830865025520325, 0.16972015798091888,
+          -0.04663768410682678, -0.42498552799224854, 0.4602431654930115, 0.9509879946708679,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Gormond-Goodbrother',
+        pagerank: 0.15849999981001023,
+      },
+      id: '590',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 2.580611080437404,
+        centrality: 0,
+        community: 795,
+        degree: 8,
+        fastrf_embedding: [
+          0.34326767921447754, 0.09150480479001999, 0.8510715961456299, 0.06887040287256241, 0.8008952736854553, 0.7848354578018188,
+          -0.2873465418815613, 0.11609599739313126, -0.28596264123916626, 1.154029369354248,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Euron-Greyjoy',
+        pagerank: 0.23019302150933074,
+      },
+      id: '196',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.3439251004811857,
+        centrality: 0,
+        community: 592,
+        degree: 2,
+        fastrf_embedding: [
+          0.21345838904380798, -0.1839655637741089, 0.24781841039657593, 0.2344418615102768, 0.03830865025520325, 0.16972015798091888,
+          -0.04663768410682678, -0.42498552799224854, 0.4602431654930115, 0.9509879946708679,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Rus',
+        pagerank: 0.15849999981001023,
+      },
+      id: '592',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.3439171079310139,
+        book45PageRank: 1.354411211543558,
+        centrality: 0,
+        community: 579,
+        degree: 7,
+        fastrf_embedding: [
+          0.5566164255142212, -0.5206098556518555, 0.6026222109794617, 0.84507155418396, 0.5012587308883667, 0.21336328983306885,
+          -0.062205810099840164, 0.6604902744293213, -0.40010643005371094, 1.0204181671142578,
+        ],
+        labels: ['Character'],
+        louvain: 6,
+        name: 'Balon-Greyjoy',
+        pagerank: 0.21215946646407247,
+      },
+      id: '59',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 642,
+        degree: 6,
+        fastrf_embedding: [
+          0.43200719356536865, -0.5889291167259216, 0.42937251925468445, 0.8241429924964905, 0.5152851939201355, 0.39414289593696594,
+          -0.03995458036661148, 0.46418628096580505, -0.06669969111680984, 0.8993206024169922,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Dagmer',
+        pagerank: 0.18528469031443823,
+      },
+      id: '145',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 578,
+        degree: 0,
+        fastrf_embedding: [
+          0.10562554746866226, -0.9452250003814697, -0.2646690011024475, 1.038591980934143, 0.09868663549423218, -0.0006889980868436396,
+          -0.28780853748321533, 0.7473011016845703, -0.6694434881210327, 0.1440054327249527,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Aerys-I-Targaryen',
+        pagerank: 0.15000000000000002,
+      },
+      id: '9',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 8.28829365079365,
+        book1PageRank: 0.8114613687410979,
+        book45PageRank: 1.6913404157247254,
+        centrality: 0,
+        community: 579,
+        degree: 0,
+        fastrf_embedding: [
+          0.3397246301174164, -0.7213707566261292, -0.4630584418773651, 0.8045739531517029, 0.1143319234251976, -0.3947611451148987,
+          0.3344513773918152, 0.527863621711731, -1.0694804191589355, 0.655458390712738,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Aerys-II-Targaryen',
+        pagerank: 0.15000000000000002,
+      },
+      id: '10',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 21.263478156030683,
+        book1PageRank: 1.397750504097986,
+        book45PageRank: 3.847007803850277,
+        centrality: 0,
+        community: 647,
+        degree: 4,
+        fastrf_embedding: [
+          0.5724420547485352, -0.6208063960075378, 0.08574279397726059, 1.2681182622909546, -0.13755622506141663, -0.007845878601074219,
+          -0.03494848310947418, 0.7921830415725708, -0.6665058135986328, -0.14223045110702515,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Barristan-Selmy',
+        pagerank: 0.16946052592247726,
+      },
+      id: '63',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.30868186434050165,
+        centrality: 0,
+        community: 594,
+        degree: 2,
+        fastrf_embedding: [
+          0.4047410488128662, -0.4657806158065796, -0.6155595779418945, 0.29377108812332153, 0.1625927984714508, -0.36167630553245544,
+          0.4903513491153717, 0.3068419098854065, -1.0668256282806396, 0.7754056453704834,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Elbert-Arryn',
+        pagerank: 0.15671052620746198,
+      },
+      id: '594',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.30868186434050165,
+        centrality: 0,
+        community: 593,
+        degree: 2,
+        fastrf_embedding: [
+          0.4047410488128662, -0.4657806158065796, -0.6155595779418945, 0.29377108812332153, 0.1625927984714508, -0.36167630553245544,
+          0.4903513491153717, 0.3068419098854065, -1.0668256282806396, 0.7754056453704834,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Denys-Darklyn',
+        pagerank: 0.15671052620746198,
+      },
+      id: '593',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.30868186434050165,
+        centrality: 0,
+        community: 595,
+        degree: 2,
+        fastrf_embedding: [
+          0.4047410488128662, -0.4657806158065796, -0.6155595779418945, 0.29377108812332153, 0.1625927984714508, -0.36167630553245544,
+          0.4903513491153717, 0.3068419098854065, -1.0668256282806396, 0.7754056453704834,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Owen-Merryweather',
+        pagerank: 0.15671052620746198,
+      },
+      id: '595',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 4.879381355762563,
+        centrality: 0,
+        community: 579,
+        degree: 4,
+        fastrf_embedding: [
+          0.08395122736692429, -0.48357462882995605, -0.102462038397789, 0.7517064809799194, 0.5965766310691833, -0.2169780284166336,
+          0.6098052263259888, 1.0373749732971191, -0.491291880607605, 0.7258671522140503,
+        ],
+        labels: ['Character'],
+        louvain: 1,
+        name: 'Brienne-of-Tarth',
+        pagerank: 0.18918648110993677,
+      },
+      id: '93',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 596,
+        degree: 2,
+        fastrf_embedding: [
+          0.4047410488128662, -0.4657806158065796, -0.6155595779418945, 0.29377108812332153, 0.1625927984714508, -0.36167630553245544,
+          0.4903513491153717, 0.3068419098854065, -1.0668256282806396, 0.7754056453704834,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Rossart',
+        pagerank: 0.15671052620746198,
+      },
+      id: '596',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.3190171776107361,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 744,
+        degree: 2,
+        fastrf_embedding: [
+          0.38597872853279114, -0.44516730308532715, -0.9270932674407959, 0.15531325340270996, 0.06348730623722076, 0.07906970381736755,
+          -0.19090509414672852, -0.08174589276313782, -1.3074488639831543, 0.4143381118774414,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Arthur-Dayne',
+        pagerank: 0.15671052620746198,
+      },
+      id: '45',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 35.790906315906305,
+        book1PageRank: 0.8075335524252142,
+        book45PageRank: 0.15000000000000002,
+        centrality: 1,
+        community: 579,
+        degree: 2,
+        fastrf_embedding: [
+          0.398515522480011, -0.7017136812210083, -0.283589243888855, 0.9168105125427246, 0.23126818239688873, -0.399612158536911,
+          0.0018385127186775208, 0.48199862241744995, -0.9380099773406982, 0.9864753484725952,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Brandon-Stark',
+        pagerank: 0.15671052620746198,
+      },
+      id: '89',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 369,
+        book1PageRank: 0.9988465499357091,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0.46153846153846156,
+        community: 744,
+        degree: 9,
+        fastrf_embedding: [
+          0.35426387190818787, -0.8758154511451721, -0.6213362216949463, 0.3649592995643616, -0.07614004611968994, 0.1557808816432953,
+          -0.18067896366119385, 0.31332477927207947, -1.2754696607589722, 0.4003463387489319,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Gerold-Hightower',
+        pagerank: 0.20198708475890317,
+      },
+      id: '220',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 215.4933758745622,
+        book1PageRank: 1.6767129790370843,
+        book45PageRank: 1.0508304998457756,
+        centrality: 0.5555555555555556,
+        community: 579,
+        degree: 19,
+        fastrf_embedding: [
+          0.24075177311897278, -0.9125552177429199, -0.09325560927391052, 1.1230369806289673, -0.17357975244522095, -0.3397396206855774,
+          0.3190739154815674, 1.0019413232803345, -0.5274693369865417, 0.38708925247192383,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Jon-Arryn',
+        pagerank: 0.3922768542530218,
+      },
+      id: '322',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 642,
+        degree: 0,
+        fastrf_embedding: [
+          -0.26232272386550903, -0.11071087419986725, -0.0678274929523468, -0.04159998148679733, 0.8977054357528687, -0.9789156317710876,
+          -0.28088775277137756, 0.2980397343635559, -0.24441498517990112, -0.9069576263427734,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Aggar',
+        pagerank: 0.15000000000000002,
+      },
+      id: '11',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 740,
+        degree: 2,
+        fastrf_embedding: [
+          -0.27287182211875916, -0.12887486815452576, -0.12177454680204391, -0.0925779789686203, 0.5898597240447998, -1.117659330368042,
+          -0.30853521823883057, 0.08758970350027084, -0.009036421775817871, -1.2379553318023682,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Gariss',
+        pagerank: 0.18187500126659872,
+      },
+      id: '209',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 597,
+        degree: 2,
+        fastrf_embedding: [
+          -0.2686989903450012, -0.22427046298980713, -0.2104559689760208, -0.1536506712436676, 0.8060241937637329, -0.7935734391212463,
+          -0.3116157352924347, 0.17041589319705963, -0.279786080121994, -1.0011526346206665,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Gelmarr',
+        pagerank: 0.18187500126659872,
+      },
+      id: '597',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 642,
+        degree: 2,
+        fastrf_embedding: [
+          -0.26723840832710266, -0.24718324840068817, 0.20659126341342926, -0.13102783262729645, 1.0486083030700684, -0.5962783098220825,
+          -0.48699629306793213, 0.14658762514591217, 0.09229302406311035, -1.0561351776123047,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Gynir',
+        pagerank: 0.18187500126659872,
+      },
+      id: '247',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 2.7067081021933315,
+        centrality: 0,
+        community: 579,
+        degree: 24,
+        fastrf_embedding: [
+          0.07877007126808167, -0.25942671298980713, -0.023772617802023888, 0.6469724774360657, 0.9617824554443359, -0.496620774269104,
+          0.6498986482620239, 0.7025370001792908, -0.6987602710723877, 0.8514343500137329,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Ramsay-Snow',
+        pagerank: 0.4945253948851744,
+      },
+      id: '487',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 1.25,
+        book1PageRank: 0.837582402291154,
+        book45PageRank: 0.89868715216267,
+        centrality: 0,
+        community: 598,
+        degree: 0,
+        fastrf_embedding: [
+          0.4782326817512512, 0.18900737166404724, -0.18380805850028992, 0.9129754304885864, -0.3412477970123291, -0.14090049266815186,
+          -0.3642543852329254, 0.6273171901702881, -0.17276813089847565, -1.4336646795272827,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Aggo',
+        pagerank: 0.15000000000000002,
+      },
+      id: '12',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 2.0447611637014753,
+        centrality: 0,
+        community: 598,
+        degree: 7,
+        fastrf_embedding: [
+          0.5037447214126587, -0.02728169783949852, 0.1654825061559677, 0.8407720327377319, -0.31293371319770813, 0.027433030307292938,
+          -0.33009564876556396, 0.6309828758239746, -0.06142246723175049, -1.4926997423171997,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Daario-Naharis',
+        pagerank: 0.18698856722235177,
+      },
+      id: '140',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0.5833333333333333,
+        book1PageRank: 0.7342166360626841,
+        book45PageRank: 0.893835176482019,
+        centrality: 0.42857142857142855,
+        community: 598,
+        degree: 27,
+        fastrf_embedding: [
+          0.3415970504283905, 0.25221580266952515, -0.22634288668632507, 0.8374249339103699, -0.32263821363449097, -0.19006529450416565,
+          -0.43348228931427, 0.6022756099700928, -0.2015356421470642, -1.5048915147781372,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Rakharo',
+        pagerank: 1.1692492467240063,
+      },
+      id: '598',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.0118862670838125,
+        centrality: 0,
+        community: 647,
+        degree: 9,
+        fastrf_embedding: [
+          0.5893946886062622, 0.09590291231870651, 0.019968943670392036, 0.995403528213501, -0.30462291836738586, -0.1457730233669281,
+          -0.3601304888725281, 0.6863243579864502, -0.21179601550102234, -1.3345671892166138,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Grey-Worm',
+        pagerank: 0.18474854709110908,
+      },
+      id: '236',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0.75,
+        book1PageRank: 0.8185839459899825,
+        book45PageRank: 1.0426963928054347,
+        centrality: 0.6666666666666666,
+        community: 598,
+        degree: 24,
+        fastrf_embedding: [
+          0.39350783824920654, 0.036258600652217865, -0.14978615939617157, 0.9664514064788818, -0.33103424310684204, -0.2786523699760437,
+          -0.24317355453968048, 0.707338273525238, -0.23311834037303925, -1.4120612144470215,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Jhogo',
+        pagerank: 0.4877009305626036,
+      },
+      id: '316',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 216.97409125789324,
+        book1PageRank: 1.5836452394056197,
+        book45PageRank: 0.6924635926035807,
+        centrality: 0.8333333333333334,
+        community: 583,
+        degree: 38,
+        fastrf_embedding: [
+          0.34452134370803833, 0.07410167157649994, -0.4691700339317322, 1.1204524040222168, -0.2476586103439331, -0.3877110481262207,
+          -0.22071903944015503, 0.486291766166687, -0.27537667751312256, -1.289807915687561,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Jorah-Mormont',
+        pagerank: 0.6114231596935364,
+      },
+      id: '330',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.7900770384846811,
+        centrality: 0,
+        community: 647,
+        degree: 7,
+        fastrf_embedding: [
+          0.523594856262207, 0.062079161405563354, 0.06086311489343643, 0.8795093894004822, -0.4515085816383362, 0.021852925419807434,
+          -0.39852064847946167, 0.5939505100250244, -0.185516819357872, -1.3127949237823486,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Belwas',
+        pagerank: 0.18238087138743142,
+      },
+      id: '68',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0.5,
+        book1PageRank: 0.730436991921759,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0.5,
+        community: 598,
+        degree: 8,
+        fastrf_embedding: [
+          0.32912328839302063, 0.19131657481193542, -0.3122829794883728, 0.9124878644943237, -0.4093326926231384, -0.42761918902397156,
+          -0.2468276023864746, 0.6660988926887512, -0.22773773968219757, -1.3621500730514526,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Quaro',
+        pagerank: 0.7384134892158322,
+      },
+      id: '479',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 1115.0946392450378,
+        book1PageRank: 2.621800855430382,
+        book45PageRank: 0.427024874427094,
+        centrality: 0.8333333333333334,
+        community: 598,
+        degree: 13,
+        fastrf_embedding: [
+          0.33428704738616943, 0.14069423079490662, -0.587169885635376, 0.8545362949371338, -0.39954066276550293, -0.33938974142074585,
+          -0.1901719719171524, 0.51315838098526, -0.36500418186187744, -1.4059913158416748,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Drogo',
+        pagerank: 0.23985331856541886,
+      },
+      id: '173',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 759,
+        degree: 0,
+        fastrf_embedding: [
+          0.1729266494512558, -0.6280988454818726, -0.6107078790664673, 0.5023464560508728, -0.030020132660865784, 0.5260482430458069,
+          0.7634270191192627, 0.759006142616272, 0.16601680219173431, 0.0519854873418808,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Alayaya',
+        pagerank: 0.15000000000000002,
+      },
+      id: '13',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 70.9633362722568,
+        book1PageRank: 1.3965144199159014,
+        book45PageRank: 1.007017112747398,
+        centrality: 0,
+        community: 759,
+        degree: 4,
+        fastrf_embedding: [
+          0.6806806325912476, -0.6402292251586914, -0.12519103288650513, 1.059975028038025, -0.3187932074069977, 0.19515293836593628,
+          0.9199696779251099, 0.546980619430542, 0.030231215059757233, -0.057223349809646606,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Bronn',
+        pagerank: 0.22437500506639482,
+      },
+      id: '94',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 599,
+        degree: 2,
+        fastrf_embedding: [
+          0.2160315364599228, -0.6365177631378174, -0.7419354915618896, 0.2084408700466156, -0.20655882358551025, 0.5157018899917603,
+          0.5487356781959534, 0.5536060333251953, 0.19051171839237213, -0.11326861381530762,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Dancy',
+        pagerank: 0.18187500126659872,
+      },
+      id: '599',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.4998938384112588,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 790,
+        degree: 0,
+        fastrf_embedding: [
+          0.19161008298397064, 0.015205785632133484, 0.03040532022714615, 0.5289475917816162, -0.23097361624240875, -0.7138828039169312,
+          1.1565823554992676, 0.41949230432510376, 0.3576059341430664, 0.9464817643165588,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Albett',
+        pagerank: 0.15000000000000002,
+      },
+      id: '14',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 3.6166666666666663,
+        book1PageRank: 1.1170990512279069,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0.8,
+        community: 790,
+        degree: 6,
+        fastrf_embedding: [
+          0.34984540939331055, -0.30502671003341675, -0.029451223090291023, 0.241451695561409, -0.19216129183769226, -0.8183128833770752,
+          1.301256775856018, 0.5645219683647156, 0.43900325894355774, 0.7674124240875244,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Halder',
+        pagerank: 0.22918200276609274,
+      },
+      id: '253',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 1.3333333333333333,
+        book1PageRank: 0.8670542587958647,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0.38461538461538464,
+        community: 790,
+        degree: 10,
+        fastrf_embedding: [
+          0.26230818033218384, -0.21079474687576294, -0.12962332367897034, 0.2986072897911072, -0.14938205480575562, -0.8475897312164307,
+          1.2654229402542114, 0.5148031711578369, 0.532828152179718, 0.7925337553024292,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Rast',
+        pagerank: 0.42460934997037825,
+      },
+      id: '489',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 504,
+        degree: 0,
+        fastrf_embedding: [
+          0.06719833612442017, 0.7413680553436279, -0.3833967447280884, 0.291585236787796, 0.47747495770454407, -0.8039200901985168,
+          0.15036660432815552, -0.008340766653418541, 0.10938003659248352, 1.2290012836456299,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Alebelly',
+        pagerank: 0.15000000000000002,
+      },
+      id: '15',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 642,
+        degree: 6,
+        fastrf_embedding: [
+          0.27200302481651306, 0.5761487483978271, -0.28199613094329834, 0.43437814712524414, 0.8091588020324707, -0.6292738318443298,
+          0.23180073499679565, 0.11084068566560745, -0.3595815896987915, 1.2388056516647339,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Mikken',
+        pagerank: 0.31683480778444845,
+      },
+      id: '411',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 960.0319135675135,
+        book1PageRank: 3.5609024426905043,
+        book45PageRank: 2.299498666362717,
+        centrality: 1,
+        community: 642,
+        degree: 12,
+        fastrf_embedding: [
+          0.18649210035800934, -0.07998603582382202, -0.3705011010169983, 0.8752190470695496, 0.5738258361816406, -0.3852701783180237,
+          0.44138383865356445, 0.42096853256225586, -0.43709516525268555, 1.3531146049499512,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Bran-Stark',
+        pagerank: 0.23719562517944728,
+      },
+      id: '87',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.6520970976232804,
+        centrality: 0,
+        community: 642,
+        degree: 14,
+        fastrf_embedding: [
+          0.2789633274078369, 0.505684494972229, -0.4875318706035614, 0.47282975912094116, 0.4536575675010681, -0.9123715162277222,
+          0.5393115282058716, -0.03493547439575195, -0.1826711744070053, 1.244126796722412,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Jojen-Reed',
+        pagerank: 0.262961876801313,
+      },
+      id: '320',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 600,
+        degree: 4,
+        fastrf_embedding: [
+          0.23246756196022034, 0.6974871754646301, -0.3677389621734619, 0.38687771558761597, 0.7046610116958618, -0.6571850776672363,
+          0.058824323117733, 0.20959322154521942, 0.019439183175563812, 1.3377799987792969,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Hayhead',
+        pagerank: 0.18590732572114918,
+      },
+      id: '600',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 578,
+        degree: 0,
+        fastrf_embedding: [
+          0.3248729705810547, -0.6475861072540283, 0.06159733235836029, 1.02019202709198, 0.16680312156677246, 0.1659797728061676,
+          0.977206826210022, 0.3137732744216919, 0.7006691694259644, -0.3806611895561218,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Alerie-Hightower',
+        pagerank: 0.15000000000000002,
+      },
+      id: '16',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 3.397819584057552,
+        centrality: 0,
+        community: 759,
+        degree: 33,
+        fastrf_embedding: [
+          0.07683264464139938, -0.6434027552604675, -0.36699724197387695, 1.0741709470748901, 0.14859099686145782, 0.5431520938873291,
+          0.9411510825157166, 0.6082888841629028, 0.4150800406932831, -0.39981985092163086,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Margaery-Tyrell',
+        pagerank: 0.4583576373137364,
+      },
+      id: '391',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 185,
+        book1PageRank: 0.5827201121476663,
+        book45PageRank: 2.2301535542764443,
+        centrality: 0.3465346534653465,
+        community: 759,
+        degree: 20,
+        fastrf_embedding: [
+          0.3441427946090698, -0.6547719836235046, 0.026113465428352356, 1.2118632793426514, 0.10577734559774399, -0.032120879739522934,
+          0.9141044616699219, 0.914553165435791, 0.0922529399394989, 0.30602115392684937,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Mace-Tyrell',
+        pagerank: 0.3126887778056106,
+      },
+      id: '380',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 543,
+        degree: 0,
+        fastrf_embedding: [
+          -0.6591737270355225, -0.9178801774978638, 0.41295138001441956, -0.35936877131462097, 0.11214488744735718, 0.10745690017938614,
+          1.2584195137023926, 0.7148911356925964, -0.2538801431655884, 0.1732778549194336,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Alester-Florent',
+        pagerank: 0.15000000000000002,
+      },
+      id: '17',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 643,
+        degree: 6,
+        fastrf_embedding: [
+          -0.6433216333389282, -1.058708906173706, 0.28401440382003784, -0.7232656478881836, 0.12930083274841309, 0.1745828092098236,
+          1.1219226121902466, 0.4931524395942688, -0.4046419858932495, -0.14627644419670105,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Lamprey',
+        pagerank: 0.19860674505325734,
+      },
+      id: '352',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 2.516479572860613,
+        centrality: 0,
+        community: 579,
+        degree: 34,
+        fastrf_embedding: [
+          -0.6373391151428223, -0.6362437009811401, 0.44533056020736694, -0.5235491394996643, -0.35871997475624084, -0.009545132517814636,
+          1.2901310920715332, 0.6985951662063599, 0.4482290744781494, 0.1021599993109703,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Selyse-Florent',
+        pagerank: 1.2826917780563538,
+      },
+      id: '529',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.8605488641114385,
+        centrality: 0,
+        community: 579,
+        degree: 2,
+        fastrf_embedding: [
+          -0.5972199440002441, -0.9875547885894775, 0.43828636407852173, -0.49333930015563965, 0.32556697726249695, 0.030625350773334503,
+          1.135685920715332, 0.7290375232696533, -0.151260644197464, 0.04259815067052841,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Axell-Florent',
+        pagerank: 0.1682142862118781,
+      },
+      id: '52',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 2.528418507713882,
+        centrality: 0,
+        community: 579,
+        degree: 16,
+        fastrf_embedding: [
+          -0.5502477884292603, -0.9033403396606445, 0.39599117636680603, -0.10079849511384964, 0.05720099061727524, 0.08192747831344604,
+          1.0580518245697021, 0.8261584043502808, -0.4753626883029938, 0.3658595681190491,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Davos-Seaworth',
+        pagerank: 0.44369929637759925,
+      },
+      id: '153',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 759,
+        degree: 4,
+        fastrf_embedding: [
+          -0.5044726729393005, -1.0168097019195557, 0.33523082733154297, 0.5174519419670105, 0.13191401958465576, -0.02064187452197075,
+          0.9959079027175903, 0.7468008995056152, -0.32271942496299744, 0.3899652063846588,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Cortnay-Penrose',
+        pagerank: 0.19371428564190868,
+      },
+      id: '133',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 165.77342172159842,
+        book1PageRank: 1.8515431244512286,
+        book45PageRank: 1.0991256658896622,
+        centrality: 0.4012345679012346,
+        community: 579,
+        degree: 71,
+        fastrf_embedding: [
+          0.09294648468494415, -0.8807356357574463, 0.14869654178619385, 0.8774021863937378, 0.3517022728919983, -0.0906384140253067,
+          0.5649178624153137, 0.8817591071128845, -0.3882412314414978, 0.8010244965553284,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Renly-Baratheon',
+        pagerank: 1.3172016226384333,
+      },
+      id: '494',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.6859432215789765,
+        centrality: 0,
+        community: 578,
+        degree: 0,
+        fastrf_embedding: [
+          -0.06856673955917358, -0.5586454272270203, -0.08058442175388336, 1.267162561416626, 0.07687050104141235, 0.558209240436554,
+          0.5270260572433472, 0.40289372205734253, 0.6682100296020508, -0.6842713356018066,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Alla-Tyrell',
+        pagerank: 0.15000000000000002,
+      },
+      id: '18',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.5583418844342077,
+        centrality: 0,
+        community: 578,
+        degree: 8,
+        fastrf_embedding: [
+          -0.046338632702827454, -0.6167125701904297, -0.026036232709884644, 1.4280022382736206, -0.06137625128030777, 0.505361020565033,
+          0.7012099623680115, 0.4134485423564911, 0.3558212220668793, -0.647286593914032,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Megga-Tyrell',
+        pagerank: 0.23714400000031804,
+      },
+      id: '402',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.5041256899801747,
+        centrality: 0,
+        community: 578,
+        degree: 18,
+        fastrf_embedding: [
+          -0.02883622981607914, -0.46381160616874695, -0.3929693102836609, 0.8541038036346436, 0.2513197064399719, 0.5571079254150391,
+          0.9780802726745605, 0.9168018102645874, 0.5859556198120117, -0.47007447481155396,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Osney-Kettleblack',
+        pagerank: 0.41419761466063976,
+      },
+      id: '449',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.7068570494030371,
+        centrality: 0,
+        community: 578,
+        degree: 3,
+        fastrf_embedding: [
+          -0.05447322130203247, -0.502348780632019, -0.05680388584733009, 1.3614320755004883, -0.06325209885835648, 0.6616305112838745,
+          0.6347231268882751, 0.33406203985214233, 0.5722489953041077, -0.666122317314148,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Elinor-Tyrell',
+        pagerank: 0.1754999994300306,
+      },
+      id: '187',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 639.0769144474224,
+        book1PageRank: 3.556888399738488,
+        book45PageRank: 3.7797076602786017,
+        centrality: 0.5485714285714286,
+        community: 759,
+        degree: 181,
+        fastrf_embedding: [
+          0.13708491623401642, -0.8733153343200684, -0.0735018253326416, 1.3903062343597412, -0.13592472672462463, -0.10560852289199829,
+          0.6295033693313599, 0.43558716773986816, -0.37827664613723755, 0.4328886568546295,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Sansa-Stark',
+        pagerank: 3.580713636728881,
+      },
+      id: '524',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 759,
+        degree: 0,
+        fastrf_embedding: [
+          -0.22945110499858856, -0.9197509288787842, -0.09015142917633057, 0.8190823793411255, -0.09530404210090637, -0.19294574856758118,
+          1.1341986656188965, 0.496367871761322, 0.02878895401954651, 0.20091129839420319,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Allar-Deem',
+        pagerank: 0.15000000000000002,
+      },
+      id: '19',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 579,
+        degree: 0,
+        fastrf_embedding: [
+          -0.7343067526817322, -0.7185895442962646, 0.7496376037597656, -0.2307969629764557, 0.06173926591873169, -0.12118588387966156,
+          0.37106412649154663, 1.1397607326507568, -0.20055273175239563, 0.2846343517303467,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Allard-Seaworth',
+        pagerank: 0.15000000000000002,
+      },
+      id: '20',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.28453958025112874,
+        centrality: 0,
+        community: 579,
+        degree: 2,
+        fastrf_embedding: [
+          -0.7265000343322754, -0.8329794406890869, 0.8943355083465576, -0.06721208989620209, 0.13053131103515625, -0.3123573958873749,
+          0.3754035234451294, 1.1765289306640625, -0.03397418186068535, 0.36578798294067383,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Marya-Seaworth',
+        pagerank: 0.19250000063329936,
+      },
+      id: '399',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.8952351693029804,
+        centrality: 0,
+        community: 601,
+        degree: 4,
+        fastrf_embedding: [
+          0.6393713355064392, -0.21008500456809998, 0.9085114598274231, -0.7842376232147217, -0.362379252910614, 0.5021129846572876,
+          0.6350142955780029, 0.6310582160949707, -0.33330827951431274, 0.6485670804977417,
+        ],
+        labels: ['Character'],
+        louvain: 8,
+        name: 'Mollander',
+        pagerank: 0.19815115843703102,
+      },
+      id: '416',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.265029033120868,
+        centrality: 0,
+        community: 601,
+        degree: 2,
+        fastrf_embedding: [
+          0.7895497679710388, -0.20278401672840118, 0.7015137076377869, -0.8432311415672302, -0.22139614820480347, 0.5017268061637878,
+          0.5987043380737305, 0.7554118633270264, -0.25483810901641846, 0.8182867169380188,
+        ],
+        labels: ['Character'],
+        louvain: 8,
+        name: 'Armen',
+        pagerank: 0.16935996481333862,
+      },
+      id: '39',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.6469111571570043,
+        centrality: 0,
+        community: 790,
+        degree: 4,
+        fastrf_embedding: [
+          0.7357439994812012, -0.1530216932296753, 0.3949384093284607, -0.5659087300300598, -0.22031022608280182, -0.06586829572916031,
+          0.7858755588531494, 0.6179856061935425, 0.14132028818130493, 1.1710536479949951,
+        ],
+        labels: ['Character'],
+        louvain: 8,
+        name: 'Marwyn',
+        pagerank: 0.19815115843703102,
+      },
+      id: '398',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.8118777464023814,
+        centrality: 0,
+        community: 778,
+        degree: 8,
+        fastrf_embedding: [
+          0.8049525022506714, -0.21720144152641296, 1.05537748336792, -0.5376414060592651, -0.3153582215309143, 0.41480904817581177,
+          0.6429831385612488, 0.5462926626205444, -0.3307182788848877, 0.09152574092149734,
+        ],
+        labels: ['Character'],
+        louvain: 8,
+        name: 'Pate-(novice)',
+        pagerank: 0.33850822671010977,
+      },
+      id: '456',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.86063575472252,
+        centrality: 0,
+        community: 601,
+        degree: 8,
+        fastrf_embedding: [
+          0.8204887509346008, -0.1741878092288971, 0.6272316575050354, -0.7954012751579285, -0.1733918935060501, 0.46560972929000854,
+          0.5593675374984741, 0.6627204418182373, -0.3360559344291687, 0.8891912698745728,
+        ],
+        labels: ['Character'],
+        louvain: 8,
+        name: 'Roone',
+        pagerank: 0.33850822671010977,
+      },
+      id: '601',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.0471880288175162,
+        centrality: 0,
+        community: 601,
+        degree: 4,
+        fastrf_embedding: [
+          0.6106186509132385, -0.20287132263183594, 0.8037469387054443, -0.6912802457809448, -0.3306227922439575, 0.2217072695493698,
+          0.7959847450256348, 0.6704866886138916, -0.0841410756111145, 0.8439227938652039,
+        ],
+        labels: ['Character'],
+        louvain: 8,
+        name: 'Leo-Tyrell',
+        pagerank: 0.19815115843703102,
+      },
+      id: '360',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.8133702770787143,
+        centrality: 0,
+        community: 644,
+        degree: 22,
+        fastrf_embedding: [
+          -0.06291402876377106, -0.01707185059785843, 0.24101637303829193, 0.9355472922325134, -0.5912977457046509, -0.6023895740509033,
+          1.2249082326889038, 0.3600597381591797, 0.3315123915672302, 0.41646477580070496,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Qhorin-Halfhand',
+        pagerank: 0.41513108212553046,
+      },
+      id: '477',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 5.412194510470371,
+        book1PageRank: 0.6522569367369387,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 602,
+        degree: 0,
+        fastrf_embedding: [
+          0.006140097975730896, -1.2729203701019287, -0.173292875289917, 0.8793939352035522, -0.23712383210659027, -0.37136074900627136,
+          -0.1246374323964119, 0.467193067073822, -0.7222480773925781, 0.39941027760505676,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Alyn',
+        pagerank: 0.15000000000000002,
+      },
+      id: '23',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 301.50968478300933,
+        book1PageRank: 2.2450848513560313,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0.5098039215686274,
+        community: 579,
+        degree: 20,
+        fastrf_embedding: [
+          -0.033620987087488174, -0.7924801707267761, -0.007885828614234924, 1.170330286026001, -0.0035446062684059143,
+          -0.11535897850990295, 0.22699043154716492, 0.7652884721755981, -0.7167083621025085, 0.7932668328285217,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Jory-Cassel',
+        pagerank: 0.41693332137558314,
+      },
+      id: '332',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 5.448326831120944,
+        book1PageRank: 0.5573746472730505,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0.45098039215686275,
+        community: 559,
+        degree: 14,
+        fastrf_embedding: [
+          0.093599833548069, -1.367584466934204, -0.34797948598861694, 0.6671780943870544, -0.3462502360343933, 0.09481622278690338,
+          0.2813969850540161, 0.45110052824020386, -0.9116671085357666, 0.2657122015953064,
+        ],
+        labels: ['Character'],
+        louvain: 9,
+        name: 'Harwin',
+        pagerank: 0.26152153887288254,
+      },
+      id: '265',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 5.104686000274235,
+        book1PageRank: 0.8349586317556174,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0.3943089430894309,
+        community: 602,
+        degree: 14,
+        fastrf_embedding: [
+          0.1201857253909111, -1.1764299869537354, 0.08127625286579132, 0.9888867139816284, -0.08006580173969269, -0.3293425440788269,
+          -0.05032414197921753, 0.45700716972351074, -0.7836556434631348, 0.6889875531196594,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Tomard',
+        pagerank: 0.6000423252700741,
+      },
+      id: '602',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.6626807016546032,
+        centrality: 0,
+        community: 603,
+        degree: 0,
+        fastrf_embedding: [
+          -0.00007448345422744751, -0.774181604385376, -0.1131761223077774, 0.6042693853378296, -0.38120952248573303, -0.7984826564788818,
+          0.504533052444458, 0.8819511532783508, -0.3976520895957947, 0.047489188611507416,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Alys-Arryn',
+        pagerank: 0.15000000000000002,
+      },
+      id: '24',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.4305515002209468,
+        centrality: 0,
+        community: 603,
+        degree: 2,
+        fastrf_embedding: [
+          -0.08403186500072479, -0.7140920162200928, -0.20990079641342163, 0.4619963765144348, -0.4619963765144348, -0.8678457736968994,
+          0.4898812770843506, 0.5739131569862366, -0.3779645264148712, -0.20990081131458282,
+        ],
+        labels: ['Character'],
+        louvain: 2,
+        name: 'Elys-Waynwood',
+        pagerank: 0.21375000253319743,
+      },
+      id: '603',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.5947538228233319,
+        centrality: 0,
+        community: 579,
+        degree: 0,
+        fastrf_embedding: [
+          0.20666922628879547, -0.2838309407234192, 0.7714165449142456, 0.3198207914829254, 0.6226541996002197, -0.5664998292922974,
+          1.1361764669418335, 0.5705180168151855, 0.24628397822380066, 0.6756241321563721,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Alys-Karstark',
+        pagerank: 0.15000000000000002,
+      },
+      id: '25',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 2.83391254506529,
+        centrality: 0,
+        community: 579,
+        degree: 34,
+        fastrf_embedding: [
+          -0.07951347529888153, -0.6289715766906738, 0.6159084439277649, 0.08673706650733948, 0.3267785310745239, -0.3140060603618622,
+          1.3424160480499268, 0.8158959150314331, 0.16732722520828247, 0.5652411580085754,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Melisandre',
+        pagerank: 0.6797640767782116,
+      },
+      id: '404',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.7404553548135278,
+        centrality: 0,
+        community: 579,
+        degree: 6,
+        fastrf_embedding: [
+          0.09741663932800293, -0.4114850163459778, 0.7728412747383118, 0.39478427171707153, 0.6112785339355469, -0.6224844455718994,
+          0.9561765193939209, 0.7788453102111816, 0.2358994483947754, 0.5462509989738464,
+        ],
+        labels: ['Character'],
+        louvain: 4,
+        name: 'Sigorn',
+        pagerank: 0.3035222183165195,
+      },
+      id: '537',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.6148155126815624,
+        centrality: 0,
+        community: 640,
+        degree: 0,
+        fastrf_embedding: [
+          -0.19059109687805176, -0.7823134660720825, 1.196774959564209, -0.03239382803440094, 0.30670851469039917, 0.27394017577171326,
+          -0.10957957804203033, 1.119577169418335, 0.21176253259181976, -0.25510692596435547,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Alysane-Mormont',
+        pagerank: 0.15000000000000002,
+      },
+      id: '26',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.9607172023260079,
+        centrality: 0,
+        community: 579,
+        degree: 6,
+        fastrf_embedding: [
+          -0.21839836239814758, -0.6191450357437134, 1.2497609853744507, -0.02053389698266983, 0.21647104620933533, 0.1741677224636078,
+          0.030919615179300308, 1.2435665130615234, 0.20360954105854034, -0.316463440656662,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Justin-Massey',
+        pagerank: 0.23970859853870932,
+      },
+      id: '335',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 604,
+        degree: 0,
+        fastrf_embedding: [
+          -0.22170235216617584, -0.6380565166473389, -0.4877387285232544, 0.806667685508728, 0.1042829304933548, 0.0009585171937942505,
+          0.5106346011161804, 0.06489107757806778, -0.6772244572639465, 1.2204601764678955,
+        ],
+        labels: ['Character'],
+        louvain: 9,
+        name: 'Amabel',
+        pagerank: 0.15000000000000002,
+      },
+      id: '27',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 604,
+        degree: 4,
+        fastrf_embedding: [
+          -0.22750923037528992, -0.5156325697898865, -0.3634800314903259, 0.6901207566261292, 0.10821161419153214, -0.09499076753854752,
+          0.6282733678817749, -0.04334145784378052, -0.6946291327476501, 1.3176279067993164,
+        ],
+        labels: ['Character'],
+        louvain: 9,
+        name: 'Harra',
+        pagerank: 0.2165780218609143,
+      },
+      id: '604',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.5652134600736759,
+        centrality: 0,
+        community: 577,
+        degree: 0,
+        fastrf_embedding: [
+          0.43423032760620117, -0.33859777450561523, -0.3543396592140198, 1.201417326927185, -0.33252280950546265, 0.3226851224899292,
+          0.7657666206359863, 0.5695627927780151, -0.7903294563293457, -0.03369167447090149,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Amerei-Frey',
+        pagerank: 0.15000000000000002,
+      },
+      id: '28',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.2395607494919896,
+        book45PageRank: 0.9437698079679963,
+        centrality: 0,
+        community: 578,
+        degree: 15,
+        fastrf_embedding: [
+          0.11193758249282837, -0.7903108596801758, -0.19531279802322388, 1.2412216663360596, -0.4320358633995056, 0.3621222972869873,
+          0.7994350790977478, 0.6252822279930115, -0.3148863911628723, 0.07570536434650421,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Lancel-Lannister',
+        pagerank: 0.2762472264465585,
+      },
+      id: '353',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 605,
+        degree: 0,
+        fastrf_embedding: [
+          -0.2554644048213959, -0.665837287902832, -0.25679415464401245, 1.0018727779388428, -0.03939884901046753, -0.09554506838321686,
+          0.5946234464645386, 0.8423207998275757, -0.8757407665252686, 0.7340191602706909,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Amory-Lorch',
+        pagerank: 0.15000000000000002,
+      },
+      id: '29',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.4635570164711697,
+        centrality: 0,
+        community: 762,
+        degree: 22,
+        fastrf_embedding: [
+          -0.24615100026130676, -0.13398583233356476, -0.24694833159446716, 0.9949548244476318, 0.3157126307487488, -0.2569948732852936,
+          0.6387729644775391, 0.9246100783348083, -0.8185657858848572, 0.7703924179077148,
+        ],
+        labels: ['Character'],
+        louvain: 1,
+        name: 'Vargo-Hoat',
+        pagerank: 1.2853506446577783,
+      },
+      id: '569',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 50.30506214560945,
+        book1PageRank: 1.3161770734535378,
+        book45PageRank: 1.901028061207582,
+        centrality: 0.45098039215686275,
+        community: 605,
+        degree: 33,
+        fastrf_embedding: [
+          -0.013903392478823662, -0.6824511289596558, -0.1632148176431656, 1.1414265632629395, -0.017369695007801056, 0.006129167508333921,
+          0.4915618896484375, 0.8343790769577026, -0.8221396803855896, 0.6581631302833557,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Gregor-Clegane',
+        pagerank: 0.3391041246218377,
+      },
+      id: '233',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.2861852242172075,
+        centrality: 0,
+        community: 605,
+        degree: 34,
+        fastrf_embedding: [
+          -0.488845556974411, -0.5892162322998047, -0.22823312878608704, 0.9951544404029846, -0.1508396565914154, -0.06990738958120346,
+          0.5159801840782166, 0.7689964771270752, -1.0336662530899048, 0.6134886741638184,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Tickler',
+        pagerank: 0.64701260603507,
+      },
+      id: '605',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 12.016177875248642,
+        book1PageRank: 0.9710298674227562,
+        book45PageRank: 0.9973440801103626,
+        centrality: 0.4024390243902439,
+        community: 605,
+        degree: 39,
+        fastrf_embedding: [
+          -0.2794663608074188, -0.7642651796340942, -0.28516605496406555, 1.1445738077163696, -0.05175909772515297, 0.03121630847454071,
+          0.50645911693573, 0.751987636089325, -0.8832842111587524, 0.5181357264518738,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Meryn-Trant',
+        pagerank: 0.286430322938189,
+      },
+      id: '409',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 605,
+        degree: 6,
+        fastrf_embedding: [
+          -0.5009160041809082, -0.5227816700935364, -0.2104099690914154, 0.9969014525413513, -0.1907757818698883, -0.12495628744363785,
+          0.4949413239955902, 0.7634977102279663, -1.0365593433380127, 0.6350020170211792,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Chiswyck',
+        pagerank: 0.16345475263507186,
+      },
+      id: '118',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 605,
+        degree: 25,
+        fastrf_embedding: [
+          -0.4757729172706604, -0.5389525294303894, -0.1717270165681839, 1.023261547088623, -0.22651879489421844, -0.12885162234306335,
+          0.4954334497451782, 0.7767517566680908, -0.9996848106384277, 0.616011381149292,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Polliver',
+        pagerank: 0.26826926155995146,
+      },
+      id: '466',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0.4291666666666667,
+        book1PageRank: 0.6486761178480955,
+        book45PageRank: 1.3413827467043185,
+        centrality: 0.35,
+        community: 579,
+        degree: 42,
+        fastrf_embedding: [
+          0.06174349784851074, -0.387209415435791, 0.0305936299264431, 1.1848201751708984, 0.32963043451309204, -0.1902673840522766,
+          0.6990786790847778, 0.8612123131752014, -0.5965943336486816, 0.7499773502349854,
+        ],
+        labels: ['Character'],
+        louvain: 5,
+        name: 'Roose-Bolton',
+        pagerank: 1.0415416117121872,
+      },
+      id: '514',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 107.31905800110638,
+        book1PageRank: 1.655856483708393,
+        book45PageRank: 1.9377778184021484,
+        centrality: 0.4372093023255814,
+        community: 759,
+        degree: 81,
+        fastrf_embedding: [
+          -0.22196191549301147, -0.948661208152771, -0.20689857006072998, 1.0935463905334473, -0.10543958842754364, -0.01159493625164032,
+          0.44810739159584045, 0.6930024027824402, -0.8881871700286865, 0.49147334694862366,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Sandor-Clegane',
+        pagerank: 1.3518024821951826,
+      },
+      id: '523',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 609,
+        degree: 8,
+        fastrf_embedding: [
+          -0.18804068863391876, -1.0137375593185425, -0.7165317535400391, 0.19383908808231354, 0.09423843026161194, -0.13904759287834167,
+          0.7850372195243835, 0.9388687610626221, -0.44692596793174744, 0.5433445572853088,
+        ],
+        labels: ['Character'],
+        louvain: 9,
+        name: 'Hot-Pie',
+        pagerank: 0.17271781096196712,
+      },
+      id: '285',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.7553464509018956,
+        centrality: 0,
+        community: 605,
+        degree: 11,
+        fastrf_embedding: [
+          -0.4862182140350342, -0.5240540504455566, -0.20980104804039001, 0.9990618824958801, -0.19063544273376465, -0.13821575045585632,
+          0.4953821301460266, 0.7627758979797363, -1.0498902797698975, 0.6222118139266968,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Dunsen',
+        pagerank: 0.17734840626254345,
+      },
+      id: '175',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 3.6368595731753617,
+        book1PageRank: 0.8611274669575675,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0.4090909090909091,
+        community: 606,
+        degree: 37,
+        fastrf_embedding: [
+          -0.3664608299732208, -0.4238157570362091, -0.685887336730957, 0.48360079526901245, 0.3802621066570282, -0.15114495158195496,
+          0.40181899070739746, 0.9790546894073486, -0.2510300874710083, 0.9813156127929688,
+        ],
+        labels: ['Character'],
+        louvain: 9,
+        name: 'Yoren',
+        pagerank: 1.7676541172521105,
+      },
+      id: '606',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.2543563584390243,
+        book45PageRank: 0.5058849522944819,
+        centrality: 0.4423076923076923,
+        community: 609,
+        degree: 13,
+        fastrf_embedding: [
+          -0.1249905526638031, -1.263030767440796, -0.7188386917114258, 0.3207261264324188, -0.10790416598320007, -0.16824853420257568,
+          0.3566311299800873, 0.8134918212890625, -0.716829776763916, 0.32934194803237915,
+        ],
+        labels: ['Character'],
+        louvain: 9,
+        name: 'Gendry',
+        pagerank: 0.2225965500941952,
+      },
+      id: '216',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.8958153309981768,
+        centrality: 0,
+        community: 605,
+        degree: 35,
+        fastrf_embedding: [
+          -0.4365004301071167, -0.5731207132339478, -0.2057386338710785, 1.0244479179382324, -0.15602675080299377, -0.05774229019880295,
+          0.5014610290527344, 0.7731364965438843, -1.0392124652862549, 0.6063026189804077,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Rafford',
+        pagerank: 0.3332522843965038,
+      },
+      id: '484',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 5.504869039006967,
+        book1PageRank: 0.9622790138369638,
+        book45PageRank: 1.1763862196460029,
+        centrality: 0.48936170212765956,
+        community: 605,
+        degree: 25,
+        fastrf_embedding: [
+          -0.2558070123195648, -0.736536979675293, -0.19502314925193787, 1.1272926330566406, -0.055441491305828094, -0.06708138436079025,
+          0.451346755027771, 0.76103675365448, -0.9714889526367188, 0.47442400455474854,
+        ],
+        labels: ['Character'],
+        louvain: 0,
+        name: 'Ilyn-Payne',
+        pagerank: 0.2258897640632822,
+      },
+      id: '295',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.28904616048075626,
+        centrality: 0,
+        community: 775,
+        degree: 0,
+        fastrf_embedding: [
+          0.2597086727619171, -0.28251299262046814, 0.42165762186050415, 1.2427668571472168, 0.25716832280158997, 0.6358039379119873,
+          0.05766244977712631, 0.18081608414649963, 0.34011274576187134, 0.5160403847694397,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Anders-Yronwood',
+        pagerank: 0.15000000000000002,
+      },
+      id: '30',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 3.131443110883473,
+        centrality: 0,
+        community: 611,
+        degree: 34,
+        fastrf_embedding: [
+          0.448696494102478, 0.07639558613300323, 0.4432913661003113, 1.2130622863769531, 0.15428628027439117, 0.12714171409606934,
+          -0.8045210242271423, 0.3950953483581543, 0.3413751721382141, 0.20100033283233643,
+        ],
+        labels: ['Character'],
+        louvain: 3,
+        name: 'Quentyn-Martell',
+        pagerank: 1.1072696347249034,
+      },
+      id: '481',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 607,
+        degree: 0,
+        fastrf_embedding: [
+          -0.8990501165390015, -0.414492666721344, 0.1368994414806366, 0.16104015707969666, -0.3327723741531372, -0.06810474395751953,
+          0.398556649684906, 1.0292246341705322, -0.3806866705417633, 0.4841051697731018,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Andrew-Estermont',
+        pagerank: 0.15000000000000002,
+      },
+      id: '31',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 607,
+        degree: 2,
+        fastrf_embedding: [
+          -0.5639047622680664, 0.2272171676158905, -0.03784665837883949, 0.3455137312412262, -0.4030049443244934, -0.09547504782676697,
+          0.085206538438797, 0.851790189743042, -0.22707997262477875, 0.4456081688404083,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Gerald-Gower',
+        pagerank: 0.19250000063329936,
+      },
+      id: '607',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 579,
+        degree: 4,
+        fastrf_embedding: [
+          -0.8323777914047241, -0.8905108571052551, 0.2963816821575165, 0.23781155049800873, 0.020877588540315628, 0.09301517903804779,
+          0.31326913833618164, 1.221580147743225, -0.3037942349910736, 0.2825641930103302,
+        ],
+        labels: ['Character'],
+        louvain: 7,
+        name: 'Edric-Storm',
+        pagerank: 0.20700555391813397,
+      },
+      id: '182',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.8191449627557528,
+        centrality: 0,
+        community: 608,
+        degree: 0,
+        fastrf_embedding: [
+          -0.20160771906375885, -0.1783539354801178, 0.04164988175034523, 0.9647394418716431, 0.28673937916755676, 0.879231333732605,
+          -0.17469768226146698, 0.05941269174218178, 0.07394538074731827, 1.4267704486846924,
+        ],
+        labels: ['Character'],
+        louvain: 10,
+        name: 'Andrey-Dalt',
+        pagerank: 0.15000000000000002,
+      },
+      id: '32',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 3.380475865713493,
+        centrality: 0,
+        community: 608,
+        degree: 4,
+        fastrf_embedding: [
+          -0.1665801703929901, -0.2321557104587555, 0.21700920164585114, 0.9114621877670288, 0.3602381646633148, 1.0181353092193604,
+          0.06160109490156174, -0.02038540691137314, 0.16233433783054352, 1.2449471950531006,
+        ],
+        labels: ['Character'],
+        louvain: 10,
+        name: 'Arianne-Martell',
+        pagerank: 0.1896666668355465,
+      },
+      id: '38',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.8191449627557528,
+        centrality: 0,
+        community: 608,
+        degree: 8,
+        fastrf_embedding: [
+          -0.1945565938949585, -0.17896589636802673, 0.07970082014799118, 0.9536975026130676, 0.28843677043914795, 0.8379817605018616,
+          -0.21534791588783264, 0.050996508449316025, 0.08328095078468323, 1.449373483657837,
+        ],
+        labels: ['Character'],
+        louvain: 10,
+        name: 'Sylva-Santagar',
+        pagerank: 0.29393164777667147,
+      },
+      id: '550',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.4094925206761195,
+        centrality: 0,
+        community: 608,
+        degree: 8,
+        fastrf_embedding: [
+          -0.2676892876625061, -0.20437130331993103, 0.09623365849256516, 0.9806276559829712, 0.3092365264892578, 0.8317732214927673,
+          -0.09020727127790451, -0.03491111472249031, -0.0114387646317482, 1.4178003072738647,
+        ],
+        labels: ['Character'],
+        louvain: 10,
+        name: 'Garin-(orphan)',
+        pagerank: 0.340591598523315,
+      },
+      id: '208',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 1.4743721069759859,
+        centrality: 0,
+        community: 608,
+        degree: 18,
+        fastrf_embedding: [
+          0.04786025360226631, -0.1706364005804062, 0.03291970491409302, 1.0686653852462769, 0.3443296551704407, 0.8531808853149414,
+          -0.06111399084329605, 0.10356108844280243, 0.13045121729373932, 1.343186378479004,
+        ],
+        labels: ['Character'],
+        louvain: 10,
+        name: 'Tyene-Sand',
+        pagerank: 1.119418259043474,
+      },
+      id: '608',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0.4857142857142857,
+        book1PageRank: 0.7623995290884875,
+        book45PageRank: 2.101059216786183,
+        centrality: 0.3741496598639456,
+        community: 759,
+        degree: 31,
+        fastrf_embedding: [
+          -0.17933182418346405, -0.7230303287506104, 0.07342859357595444, 1.1926591396331787, 0.17627719044685364, 0.44882309436798096,
+          0.25772300362586975, 0.47612079977989197, -0.19175735116004944, 1.1527825593948364,
+        ],
+        labels: ['Character'],
+        louvain: 10,
+        name: 'Myrcella-Baratheon',
+        pagerank: 0.6067599734754532,
+      },
+      id: '431',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 609,
+        degree: 0,
+        fastrf_embedding: [
+          -0.0783599317073822, -1.3651463985443115, -0.3746917247772217, 0.4665380120277405, -0.7788668870925903, 0.23093929886817932,
+          0.5923318266868591, 0.43146419525146484, -0.658293604850769, -0.09130647033452988,
+        ],
+        labels: ['Character'],
+        louvain: 9,
+        name: 'Anguy',
+        pagerank: 0.15000000000000002,
+      },
+      id: '33',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 185,
+        book1PageRank: 0.8460429869693868,
+        book45PageRank: 0.896466930449239,
+        centrality: 0,
+        community: 630,
+        degree: 5,
+        fastrf_embedding: [
+          0.16845689713954926, -1.2436039447784424, -0.3788321018218994, 0.9859447479248047, -0.41283440589904785, -0.009253284893929958,
+          0.33742010593414307, 0.5852896571159363, -0.6952977180480957, 0.33821195363998413,
+        ],
+        labels: ['Character'],
+        louvain: 9,
+        name: 'Beric-Dondarrion',
+        pagerank: 0.1669946883164812,
+      },
+      id: '76',
+      label: 'Character',
+    },
+    {
+      attributes: {
+        book1BetweennessCentrality: 0,
+        book1PageRank: 0.15000000000000002,
+        book45PageRank: 0.15000000000000002,
+        centrality: 0,
+        community: 609,
+        degree: 18,
+        fastrf_embedding: [
+          -0.033342666923999786, -1.406994342803955, -0.39906275272369385, 0.4823271632194519, -0.568832278251648, 0.34022045135498047,
+          0.5983562469482422, 0.5155826807022095, -0.533621072769165, 0.030882954597473145,
+        ],
+        labels: ['Character'],
+        louvain: 9,
+        name: 'Tom-of-Sevenstreams',
+        pagerank: 0.8544419948553036,
+      },
+      id: '609',
+      label: 'Character',
+    },
+  ],
+  edges: [
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '0',
+      id: '5296',
+      to: '112',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '0',
+      id: '5298',
+      to: '577',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '0',
+      id: '5295',
+      to: '98',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 8,
+      },
+      from: '0',
+      id: '5297',
+      to: '302',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '0',
+      id: '4289',
+      to: '303',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '0',
+      id: '4294',
+      to: '578',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '0',
+      id: '4288',
+      to: '302',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '0',
+      id: '4287',
+      to: '246',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '0',
+      id: '4290',
+      to: '319',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 7,
+      },
+      from: '0',
+      id: '4293',
+      to: '567',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '0',
+      id: '4292',
+      to: '440',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '0',
+      id: '4291',
+      to: '343',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 6,
+      },
+      from: '0',
+      id: '2829',
+      to: '568',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 3,
+      },
+      from: '0',
+      id: '2828',
+      to: '302',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '0',
+      id: '11',
+      to: '578',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '0',
+      id: '10',
+      to: '568',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 7,
+      },
+      from: '0',
+      id: '9',
+      to: '567',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '0',
+      id: '8',
+      to: '440',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '0',
+      id: '7',
+      to: '577',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '0',
+      id: '6',
+      to: '343',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '0',
+      id: '5',
+      to: '319',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '0',
+      id: '4',
+      to: '303',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 14,
+      },
+      from: '0',
+      id: '3',
+      to: '302',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '0',
+      id: '2',
+      to: '246',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '0',
+      id: '1',
+      to: '112',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '0',
+      id: '0',
+      to: '98',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '1',
+      id: '4297',
+      to: '544',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 6,
+      },
+      from: '1',
+      id: '4298',
+      to: '579',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 5,
+      },
+      from: '1',
+      id: '4296',
+      to: '504',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '1',
+      id: '4295',
+      to: '107',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '1',
+      id: '15',
+      to: '579',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '1',
+      id: '14',
+      to: '544',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '1',
+      id: '13',
+      to: '504',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '1',
+      id: '12',
+      to: '107',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '2',
+      id: '6178',
+      to: '143',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '2',
+      id: '4299',
+      to: '143',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '2',
+      id: '4301',
+      to: '580',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '2',
+      id: '4300',
+      to: '543',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '2',
+      id: '3516',
+      to: '581',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '2',
+      id: '3513',
+      to: '433',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '2',
+      id: '3512',
+      to: '262',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '2',
+      id: '3514',
+      to: '500',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '2',
+      id: '3515',
+      to: '567',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 5,
+      },
+      from: '2',
+      id: '2830',
+      to: '143',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 4,
+      },
+      from: '2',
+      id: '2831',
+      to: '179',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '2',
+      id: '24',
+      to: '581',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '2',
+      id: '23',
+      to: '567',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '2',
+      id: '22',
+      to: '580',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '2',
+      id: '21',
+      to: '543',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '2',
+      id: '20',
+      to: '500',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '2',
+      id: '19',
+      to: '433',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '2',
+      id: '18',
+      to: '262',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '2',
+      id: '17',
+      to: '179',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 13,
+      },
+      from: '2',
+      id: '16',
+      to: '143',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 23,
+      },
+      from: '3',
+      id: '5409',
+      to: '567',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 16,
+      },
+      from: '3',
+      id: '5415',
+      to: '323',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '3',
+      id: '5421',
+      to: '584',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 11,
+      },
+      from: '3',
+      id: '5411',
+      to: '143',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 14,
+      },
+      from: '3',
+      id: '5413',
+      to: '254',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 9,
+      },
+      from: '3',
+      id: '5414',
+      to: '264',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '3',
+      id: '5412',
+      to: '201',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 12,
+      },
+      from: '3',
+      id: '5407',
+      to: '498',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '3',
+      id: '5417',
+      to: '582',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '3',
+      id: '5408',
+      to: '568',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 6,
+      },
+      from: '3',
+      id: '5420',
+      to: '576',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '3',
+      id: '5410',
+      to: '186',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 11,
+      },
+      from: '3',
+      id: '5418',
+      to: '513',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '3',
+      id: '5419',
+      to: '583',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 10,
+      },
+      from: '3',
+      id: '5416',
+      to: '358',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '3',
+      id: '4302',
+      to: '186',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '3',
+      id: '33',
+      to: '582',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 11,
+      },
+      from: '3',
+      id: '34',
+      to: '513',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 23,
+      },
+      from: '3',
+      id: '35',
+      to: '567',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 12,
+      },
+      from: '3',
+      id: '32',
+      to: '498',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '3',
+      id: '37',
+      to: '583',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '3',
+      id: '36',
+      to: '568',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '3',
+      id: '39',
+      to: '584',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '3',
+      id: '38',
+      to: '576',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 10,
+      },
+      from: '3',
+      id: '31',
+      to: '358',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 16,
+      },
+      from: '3',
+      id: '30',
+      to: '323',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 9,
+      },
+      from: '3',
+      id: '29',
+      to: '264',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 14,
+      },
+      from: '3',
+      id: '28',
+      to: '254',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '3',
+      id: '27',
+      to: '201',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 7,
+      },
+      from: '3',
+      id: '26',
+      to: '186',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 11,
+      },
+      from: '3',
+      id: '25',
+      to: '143',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '4',
+      id: '5423',
+      to: '6',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '4',
+      id: '3517',
+      to: '6',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '4',
+      id: '40',
+      to: '6',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '5',
+      id: '4303',
+      to: '302',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '5',
+      id: '41',
+      to: '302',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '6',
+      id: '42',
+      to: '21',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '6',
+      id: '48',
+      to: '585',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '6',
+      id: '63',
+      to: '506',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '6',
+      id: '49',
+      to: '150',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 25,
+      },
+      from: '6',
+      id: '57',
+      to: '311',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 99,
+      },
+      from: '6',
+      id: '64',
+      to: '522',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 110,
+      },
+      from: '6',
+      id: '58',
+      to: '325',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '6',
+      id: '55',
+      to: '275',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 11,
+      },
+      from: '6',
+      id: '51',
+      to: '165',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '6',
+      id: '50',
+      to: '155',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '6',
+      id: '56',
+      to: '304',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 12,
+      },
+      from: '6',
+      id: '65',
+      to: '543',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '6',
+      id: '60',
+      to: '388',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '6',
+      id: '47',
+      to: '134',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 33,
+      },
+      from: '6',
+      id: '46',
+      to: '126',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '6',
+      id: '44',
+      to: '86',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '6',
+      id: '62',
+      to: '474',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 7,
+      },
+      from: '6',
+      id: '43',
+      to: '22',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '6',
+      id: '52',
+      to: '180',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 9,
+      },
+      from: '6',
+      id: '45',
+      to: '116',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '6',
+      id: '66',
+      to: '587',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '6',
+      id: '61',
+      to: '453',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '6',
+      id: '54',
+      to: '234',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '6',
+      id: '59',
+      to: '586',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 20,
+      },
+      from: '6',
+      id: '53',
+      to: '223',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 4,
+      },
+      from: '6',
+      id: '2832',
+      to: '22',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 34,
+      },
+      from: '6',
+      id: '2837',
+      to: '325',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 13,
+      },
+      from: '6',
+      id: '2836',
+      to: '311',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 5,
+      },
+      from: '6',
+      id: '2835',
+      to: '126',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 9,
+      },
+      from: '6',
+      id: '2834',
+      to: '116',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 5,
+      },
+      from: '6',
+      id: '2838',
+      to: '522',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 4,
+      },
+      from: '6',
+      id: '2833',
+      to: '86',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 5,
+      },
+      from: '6',
+      id: '3522',
+      to: '522',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 11,
+      },
+      from: '6',
+      id: '3520',
+      to: '325',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '6',
+      id: '3518',
+      to: '585',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 9,
+      },
+      from: '6',
+      id: '3519',
+      to: '311',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '6',
+      id: '3521',
+      to: '586',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 36,
+      },
+      from: '6',
+      id: '4314',
+      to: '325',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '6',
+      id: '4311',
+      to: '275',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 5,
+      },
+      from: '6',
+      id: '4315',
+      to: '388',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '6',
+      id: '4321',
+      to: '587',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 9,
+      },
+      from: '6',
+      id: '4320',
+      to: '543',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 5,
+      },
+      from: '6',
+      id: '4310',
+      to: '234',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 16,
+      },
+      from: '6',
+      id: '4305',
+      to: '126',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '6',
+      id: '4304',
+      to: '22',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '6',
+      id: '4309',
+      to: '180',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '6',
+      id: '4307',
+      to: '155',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 5,
+      },
+      from: '6',
+      id: '4318',
+      to: '506',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 32,
+      },
+      from: '6',
+      id: '4319',
+      to: '522',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '6',
+      id: '4306',
+      to: '134',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '6',
+      id: '4316',
+      to: '453',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 11,
+      },
+      from: '6',
+      id: '4308',
+      to: '165',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 5,
+      },
+      from: '6',
+      id: '4317',
+      to: '474',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '6',
+      id: '4313',
+      to: '311',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 5,
+      },
+      from: '6',
+      id: '4312',
+      to: '304',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 29,
+      },
+      from: '6',
+      id: '5428',
+      to: '325',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 20,
+      },
+      from: '6',
+      id: '5427',
+      to: '223',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '6',
+      id: '5424',
+      to: '21',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 57,
+      },
+      from: '6',
+      id: '5429',
+      to: '522',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '6',
+      id: '5430',
+      to: '543',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 5,
+      },
+      from: '6',
+      id: '5426',
+      to: '150',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 12,
+      },
+      from: '6',
+      id: '5425',
+      to: '126',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 6,
+      },
+      from: '7',
+      id: '6255',
+      to: '282',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '7',
+      id: '6254',
+      to: '559',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '7',
+      id: '6256',
+      to: '588',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 6,
+      },
+      from: '7',
+      id: '3523',
+      to: '47',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '7',
+      id: '68',
+      to: '282',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '7',
+      id: '67',
+      to: '47',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '7',
+      id: '69',
+      to: '559',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '7',
+      id: '70',
+      to: '588',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 11,
+      },
+      from: '8',
+      id: '5495',
+      to: '427',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 7,
+      },
+      from: '8',
+      id: '5485',
+      to: '49',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '8',
+      id: '5486',
+      to: '55',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 7,
+      },
+      from: '8',
+      id: '5494',
+      to: '403',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '8',
+      id: '5489',
+      to: '589',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 10,
+      },
+      from: '8',
+      id: '5492',
+      to: '229',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '8',
+      id: '5493',
+      to: '591',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '8',
+      id: '5488',
+      to: '176',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 20,
+      },
+      from: '8',
+      id: '5498',
+      to: '570',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 6,
+      },
+      from: '8',
+      id: '5491',
+      to: '590',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 27,
+      },
+      from: '8',
+      id: '5490',
+      to: '196',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 5,
+      },
+      from: '8',
+      id: '5496',
+      to: '592',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 17,
+      },
+      from: '8',
+      id: '5487',
+      to: '59',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '8',
+      id: '5497',
+      to: '559',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 5,
+      },
+      from: '8',
+      id: '3524',
+      to: '145',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 17,
+      },
+      from: '8',
+      id: '3525',
+      to: '559',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '8',
+      id: '74',
+      to: '145',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 10,
+      },
+      from: '8',
+      id: '79',
+      to: '229',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '8',
+      id: '72',
+      to: '55',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 27,
+      },
+      from: '8',
+      id: '77',
+      to: '196',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 11,
+      },
+      from: '8',
+      id: '82',
+      to: '427',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '8',
+      id: '76',
+      to: '589',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 20,
+      },
+      from: '8',
+      id: '84',
+      to: '559',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 17,
+      },
+      from: '8',
+      id: '73',
+      to: '59',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '8',
+      id: '75',
+      to: '176',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '8',
+      id: '83',
+      to: '592',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 7,
+      },
+      from: '8',
+      id: '71',
+      to: '49',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 7,
+      },
+      from: '8',
+      id: '81',
+      to: '403',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '8',
+      id: '78',
+      to: '590',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '8',
+      id: '80',
+      to: '591',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 20,
+      },
+      from: '8',
+      id: '85',
+      to: '570',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '9',
+      id: '3526',
+      to: '506',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '9',
+      id: '86',
+      to: '506',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '10',
+      id: '5550',
+      to: '63',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 8,
+      },
+      from: '10',
+      id: '5554',
+      to: '506',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 6,
+      },
+      from: '10',
+      id: '5548',
+      to: '302',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 10,
+      },
+      from: '10',
+      id: '5549',
+      to: '498',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '10',
+      id: '5552',
+      to: '594',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '10',
+      id: '5547',
+      to: '112',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '10',
+      id: '5551',
+      to: '593',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 16,
+      },
+      from: '10',
+      id: '5555',
+      to: '568',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '10',
+      id: '5553',
+      to: '595',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '10',
+      id: '4323',
+      to: '93',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '10',
+      id: '4327',
+      to: '596',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 6,
+      },
+      from: '10',
+      id: '4328',
+      to: '567',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '10',
+      id: '4330',
+      to: '583',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 5,
+      },
+      from: '10',
+      id: '4322',
+      to: '45',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 10,
+      },
+      from: '10',
+      id: '4329',
+      to: '568',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 9,
+      },
+      from: '10',
+      id: '4326',
+      to: '506',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 22,
+      },
+      from: '10',
+      id: '4324',
+      to: '302',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 6,
+      },
+      from: '10',
+      id: '4325',
+      to: '319',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '10',
+      id: '3529',
+      to: '498',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 6,
+      },
+      from: '10',
+      id: '3530',
+      to: '506',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '10',
+      id: '3528',
+      to: '302',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '10',
+      id: '3531',
+      to: '567',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 5,
+      },
+      from: '10',
+      id: '3527',
+      to: '179',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 5,
+      },
+      from: '10',
+      id: '2842',
+      to: '302',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 4,
+      },
+      from: '10',
+      id: '2839',
+      to: '89',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 3,
+      },
+      from: '10',
+      id: '2841',
+      to: '220',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 10,
+      },
+      from: '10',
+      id: '2840',
+      to: '179',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 12,
+      },
+      from: '10',
+      id: '2844',
+      to: '506',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 3,
+      },
+      from: '10',
+      id: '2843',
+      to: '322',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '10',
+      id: '89',
+      to: '89',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '10',
+      id: '87',
+      to: '45',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '10',
+      id: '91',
+      to: '112',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 14,
+      },
+      from: '10',
+      id: '100',
+      to: '498',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '10',
+      id: '105',
+      to: '583',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '10',
+      id: '98',
+      to: '322',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '10',
+      id: '102',
+      to: '596',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '10',
+      id: '88',
+      to: '63',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 26,
+      },
+      from: '10',
+      id: '104',
+      to: '568',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '10',
+      id: '97',
+      to: '319',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 35,
+      },
+      from: '10',
+      id: '101',
+      to: '506',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '10',
+      id: '94',
+      to: '594',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 15,
+      },
+      from: '10',
+      id: '93',
+      to: '179',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 9,
+      },
+      from: '10',
+      id: '103',
+      to: '567',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '10',
+      id: '95',
+      to: '220',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '10',
+      id: '99',
+      to: '595',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 37,
+      },
+      from: '10',
+      id: '96',
+      to: '302',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '10',
+      id: '90',
+      to: '93',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '10',
+      id: '92',
+      to: '593',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '11',
+      id: '3532',
+      to: '209',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '11',
+      id: '3533',
+      to: '597',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '11',
+      id: '3534',
+      to: '247',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '11',
+      id: '3535',
+      to: '487',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '11',
+      id: '109',
+      to: '487',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '11',
+      id: '106',
+      to: '209',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '11',
+      id: '108',
+      to: '247',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '11',
+      id: '107',
+      to: '597',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 9,
+      },
+      from: '12',
+      id: '6259',
+      to: '143',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '12',
+      id: '6258',
+      to: '63',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '12',
+      id: '6260',
+      to: '140',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 9,
+      },
+      from: '12',
+      id: '6263',
+      to: '598',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 5,
+      },
+      from: '12',
+      id: '6261',
+      to: '236',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 6,
+      },
+      from: '12',
+      id: '6262',
+      to: '316',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '12',
+      id: '4332',
+      to: '598',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '12',
+      id: '4331',
+      to: '316',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '12',
+      id: '3539',
+      to: '330',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '12',
+      id: '3536',
+      to: '68',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 10,
+      },
+      from: '12',
+      id: '3537',
+      to: '143',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '12',
+      id: '3540',
+      to: '598',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 12,
+      },
+      from: '12',
+      id: '3538',
+      to: '316',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 11,
+      },
+      from: '12',
+      id: '2845',
+      to: '143',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 5,
+      },
+      from: '12',
+      id: '2848',
+      to: '330',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 3,
+      },
+      from: '12',
+      id: '2849',
+      to: '479',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 6,
+      },
+      from: '12',
+      id: '2846',
+      to: '173',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 4,
+      },
+      from: '12',
+      id: '2847',
+      to: '316',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 7,
+      },
+      from: '12',
+      id: '2850',
+      to: '598',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '12',
+      id: '115',
+      to: '236',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '12',
+      id: '111',
+      to: '68',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '12',
+      id: '114',
+      to: '173',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 30,
+      },
+      from: '12',
+      id: '113',
+      to: '143',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 26,
+      },
+      from: '12',
+      id: '116',
+      to: '316',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '12',
+      id: '118',
+      to: '479',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 23,
+      },
+      from: '12',
+      id: '119',
+      to: '598',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '12',
+      id: '110',
+      to: '63',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '12',
+      id: '112',
+      to: '140',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 9,
+      },
+      from: '12',
+      id: '117',
+      to: '330',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '13',
+      id: '4334',
+      to: '112',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '13',
+      id: '4333',
+      to: '94',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '13',
+      id: '4335',
+      to: '567',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '13',
+      id: '3541',
+      to: '599',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '13',
+      id: '3542',
+      to: '567',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '13',
+      id: '120',
+      to: '94',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 7,
+      },
+      from: '13',
+      id: '123',
+      to: '567',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '13',
+      id: '122',
+      to: '599',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '13',
+      id: '121',
+      to: '112',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 5,
+      },
+      from: '14',
+      id: '2852',
+      to: '325',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 3,
+      },
+      from: '14',
+      id: '2851',
+      to: '253',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 3,
+      },
+      from: '14',
+      id: '2853',
+      to: '489',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '14',
+      id: '125',
+      to: '325',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '14',
+      id: '124',
+      to: '253',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '14',
+      id: '126',
+      to: '489',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '15',
+      id: '3546',
+      to: '411',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 7,
+      },
+      from: '15',
+      id: '3543',
+      to: '87',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 6,
+      },
+      from: '15',
+      id: '3545',
+      to: '320',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '15',
+      id: '3544',
+      to: '600',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '15',
+      id: '129',
+      to: '320',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '15',
+      id: '130',
+      to: '411',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '15',
+      id: '128',
+      to: '600',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 7,
+      },
+      from: '15',
+      id: '127',
+      to: '87',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '16',
+      id: '4337',
+      to: '391',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '16',
+      id: '4336',
+      to: '380',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '16',
+      id: '132',
+      to: '391',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '16',
+      id: '131',
+      to: '380',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '17',
+      id: '4340',
+      to: '352',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '17',
+      id: '4341',
+      to: '529',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '17',
+      id: '4338',
+      to: '52',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '17',
+      id: '4342',
+      to: '543',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 11,
+      },
+      from: '17',
+      id: '4339',
+      to: '153',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 5,
+      },
+      from: '17',
+      id: '3550',
+      to: '543',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '17',
+      id: '3547',
+      to: '133',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '17',
+      id: '3549',
+      to: '494',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '17',
+      id: '3548',
+      to: '153',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 14,
+      },
+      from: '17',
+      id: '135',
+      to: '153',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '17',
+      id: '138',
+      to: '529',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '17',
+      id: '136',
+      to: '352',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '17',
+      id: '134',
+      to: '133',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '17',
+      id: '137',
+      to: '494',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 9,
+      },
+      from: '17',
+      id: '139',
+      to: '543',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '17',
+      id: '133',
+      to: '52',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 10,
+      },
+      from: '18',
+      id: '5591',
+      to: '402',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '18',
+      id: '5592',
+      to: '449',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 7,
+      },
+      from: '18',
+      id: '5590',
+      to: '391',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 8,
+      },
+      from: '18',
+      id: '5589',
+      to: '187',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 6,
+      },
+      from: '18',
+      id: '4344',
+      to: '402',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '18',
+      id: '4345',
+      to: '524',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 5,
+      },
+      from: '18',
+      id: '4343',
+      to: '187',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '18',
+      id: '143',
+      to: '449',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '18',
+      id: '144',
+      to: '524',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 7,
+      },
+      from: '18',
+      id: '141',
+      to: '391',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 13,
+      },
+      from: '18',
+      id: '140',
+      to: '187',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 16,
+      },
+      from: '18',
+      id: '142',
+      to: '402',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '19',
+      id: '3552',
+      to: '567',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '19',
+      id: '3551',
+      to: '304',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '19',
+      id: '145',
+      to: '304',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '19',
+      id: '146',
+      to: '567',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '20',
+      id: '3555',
+      to: '543',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 5,
+      },
+      from: '20',
+      id: '3554',
+      to: '399',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 5,
+      },
+      from: '20',
+      id: '3553',
+      to: '153',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '20',
+      id: '149',
+      to: '543',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '20',
+      id: '148',
+      to: '399',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '20',
+      id: '147',
+      to: '153',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 7,
+      },
+      from: '21',
+      id: '5435',
+      to: '416',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 5,
+      },
+      from: '21',
+      id: '5432',
+      to: '39',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '21',
+      id: '5434',
+      to: '398',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 8,
+      },
+      from: '21',
+      id: '5436',
+      to: '456',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 6,
+      },
+      from: '21',
+      id: '5437',
+      to: '601',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 7,
+      },
+      from: '21',
+      id: '5433',
+      to: '360',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 8,
+      },
+      from: '21',
+      id: '5431',
+      to: '522',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '21',
+      id: '150',
+      to: '39',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '21',
+      id: '155',
+      to: '601',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 8,
+      },
+      from: '21',
+      id: '154',
+      to: '456',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 8,
+      },
+      from: '21',
+      id: '156',
+      to: '522',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 7,
+      },
+      from: '21',
+      id: '151',
+      to: '360',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 7,
+      },
+      from: '21',
+      id: '153',
+      to: '416',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '21',
+      id: '152',
+      to: '398',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 6,
+      },
+      from: '22',
+      id: '6280',
+      to: '325',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '22',
+      id: '4349',
+      to: '477',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '22',
+      id: '4351',
+      to: '543',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 22,
+      },
+      from: '22',
+      id: '4347',
+      to: '325',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 6,
+      },
+      from: '22',
+      id: '4348',
+      to: '388',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '22',
+      id: '4350',
+      to: '522',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 13,
+      },
+      from: '22',
+      id: '4346',
+      to: '304',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '22',
+      id: '3557',
+      to: '319',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '22',
+      id: '3556',
+      to: '311',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 8,
+      },
+      from: '22',
+      id: '3559',
+      to: '567',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '22',
+      id: '3558',
+      to: '325',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 10,
+      },
+      from: '22',
+      id: '2857',
+      to: '311',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 7,
+      },
+      from: '22',
+      id: '2862',
+      to: '567',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 8,
+      },
+      from: '22',
+      id: '2861',
+      to: '522',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 5,
+      },
+      from: '22',
+      id: '2860',
+      to: '489',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 3,
+      },
+      from: '22',
+      id: '2855',
+      to: '234',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 3,
+      },
+      from: '22',
+      id: '2854',
+      to: '86',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 32,
+      },
+      from: '22',
+      id: '2858',
+      to: '325',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 4,
+      },
+      from: '22',
+      id: '2859',
+      to: '474',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 4,
+      },
+      from: '22',
+      id: '2856',
+      to: '253',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '22',
+      id: '165',
+      to: '474',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '22',
+      id: '159',
+      to: '253',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '22',
+      id: '169',
+      to: '543',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '22',
+      id: '157',
+      to: '86',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 13,
+      },
+      from: '22',
+      id: '161',
+      to: '311',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '22',
+      id: '166',
+      to: '477',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '22',
+      id: '167',
+      to: '489',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '22',
+      id: '162',
+      to: '319',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 63,
+      },
+      from: '22',
+      id: '163',
+      to: '325',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '22',
+      id: '158',
+      to: '234',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '22',
+      id: '164',
+      to: '388',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 13,
+      },
+      from: '22',
+      id: '160',
+      to: '304',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 15,
+      },
+      from: '22',
+      id: '170',
+      to: '567',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 12,
+      },
+      from: '22',
+      id: '168',
+      to: '522',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 8,
+      },
+      from: '23',
+      id: '2865',
+      to: '332',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 6,
+      },
+      from: '23',
+      id: '2864',
+      to: '265',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 11,
+      },
+      from: '23',
+      id: '2863',
+      to: '179',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 4,
+      },
+      from: '23',
+      id: '2866',
+      to: '506',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS1',
+        book: 1,
+        weight: 3,
+      },
+      from: '23',
+      id: '2867',
+      to: '602',
+      label: 'INTERACTS1',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 11,
+      },
+      from: '23',
+      id: '171',
+      to: '179',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '23',
+      id: '172',
+      to: '265',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 8,
+      },
+      from: '23',
+      id: '173',
+      to: '332',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '23',
+      id: '175',
+      to: '602',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '23',
+      id: '174',
+      to: '506',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 3,
+      },
+      from: '24',
+      id: '5627',
+      to: '322',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '24',
+      id: '5626',
+      to: '603',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '24',
+      id: '176',
+      to: '603',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '24',
+      id: '177',
+      to: '322',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 13,
+      },
+      from: '25',
+      id: '6281',
+      to: '325',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 6,
+      },
+      from: '25',
+      id: '6282',
+      to: '404',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 5,
+      },
+      from: '25',
+      id: '6283',
+      to: '537',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 13,
+      },
+      from: '25',
+      id: '178',
+      to: '325',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '25',
+      id: '180',
+      to: '537',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '25',
+      id: '179',
+      to: '404',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 5,
+      },
+      from: '26',
+      id: '6287',
+      to: '335',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 5,
+      },
+      from: '26',
+      id: '6286',
+      to: '543',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 18,
+      },
+      from: '26',
+      id: '6285',
+      to: '49',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '26',
+      id: '182',
+      to: '335',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '26',
+      id: '183',
+      to: '543',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 18,
+      },
+      from: '26',
+      id: '181',
+      to: '49',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '27',
+      id: '3561',
+      to: '604',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 6,
+      },
+      from: '27',
+      id: '3560',
+      to: '47',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '27',
+      id: '185',
+      to: '604',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '27',
+      id: '184',
+      to: '47',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 6,
+      },
+      from: '28',
+      id: '5632',
+      to: '302',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '28',
+      id: '5633',
+      to: '577',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 10,
+      },
+      from: '28',
+      id: '5634',
+      to: '353',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '28',
+      id: '188',
+      to: '577',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '28',
+      id: '186',
+      to: '302',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 10,
+      },
+      from: '28',
+      id: '187',
+      to: '353',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '29',
+      id: '4356',
+      to: '569',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '29',
+      id: '4355',
+      to: '568',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '29',
+      id: '4352',
+      to: '233',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 6,
+      },
+      from: '29',
+      id: '4354',
+      to: '440',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '29',
+      id: '4353',
+      to: '302',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 9,
+      },
+      from: '29',
+      id: '3562',
+      to: '47',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 5,
+      },
+      from: '29',
+      id: '3576',
+      to: '605',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 7,
+      },
+      from: '29',
+      id: '3567',
+      to: '233',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 5,
+      },
+      from: '29',
+      id: '3571',
+      to: '409',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '29',
+      id: '3564',
+      to: '118',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '29',
+      id: '3572',
+      to: '466',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '29',
+      id: '3574',
+      to: '514',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 5,
+      },
+      from: '29',
+      id: '3575',
+      to: '523',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '29',
+      id: '3563',
+      to: '112',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 7,
+      },
+      from: '29',
+      id: '3570',
+      to: '319',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '29',
+      id: '3568',
+      to: '285',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '29',
+      id: '3565',
+      to: '175',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 7,
+      },
+      from: '29',
+      id: '3578',
+      to: '569',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 5,
+      },
+      from: '29',
+      id: '3579',
+      to: '606',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 3,
+      },
+      from: '29',
+      id: '3566',
+      to: '216',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 5,
+      },
+      from: '29',
+      id: '3573',
+      to: '484',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '29',
+      id: '3577',
+      to: '568',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS2',
+        book: 2,
+        weight: 4,
+      },
+      from: '29',
+      id: '3569',
+      to: '295',
+      label: 'INTERACTS2',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '29',
+      id: '196',
+      to: '295',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '29',
+      id: '204',
+      to: '523',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '29',
+      id: '193',
+      to: '216',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 10,
+      },
+      from: '29',
+      id: '194',
+      to: '233',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 6,
+      },
+      from: '29',
+      id: '200',
+      to: '440',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '29',
+      id: '205',
+      to: '605',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 9,
+      },
+      from: '29',
+      id: '189',
+      to: '47',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '29',
+      id: '195',
+      to: '285',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '29',
+      id: '201',
+      to: '466',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '29',
+      id: '208',
+      to: '606',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '29',
+      id: '197',
+      to: '302',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '29',
+      id: '202',
+      to: '484',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '29',
+      id: '190',
+      to: '112',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '29',
+      id: '192',
+      to: '175',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 5,
+      },
+      from: '29',
+      id: '199',
+      to: '409',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 8,
+      },
+      from: '29',
+      id: '206',
+      to: '568',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 10,
+      },
+      from: '29',
+      id: '207',
+      to: '569',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '29',
+      id: '191',
+      to: '118',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 7,
+      },
+      from: '29',
+      id: '198',
+      to: '319',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '29',
+      id: '203',
+      to: '514',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '30',
+      id: '5637',
+      to: '481',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '30',
+      id: '4357',
+      to: '440',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '30',
+      id: '209',
+      to: '440',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '30',
+      id: '210',
+      to: '481',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 3,
+      },
+      from: '31',
+      id: '4360',
+      to: '607',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '31',
+      id: '4358',
+      to: '153',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '31',
+      id: '4359',
+      to: '182',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '31',
+      id: '212',
+      to: '182',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 3,
+      },
+      from: '31',
+      id: '213',
+      to: '607',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '31',
+      id: '211',
+      to: '153',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 10,
+      },
+      from: '32',
+      id: '5640',
+      to: '38',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 8,
+      },
+      from: '32',
+      id: '5643',
+      to: '550',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 11,
+      },
+      from: '32',
+      id: '5641',
+      to: '208',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '32',
+      id: '5644',
+      to: '608',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS45',
+        book: 45,
+        weight: 4,
+      },
+      from: '32',
+      id: '5642',
+      to: '431',
+      label: 'INTERACTS45',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 8,
+      },
+      from: '32',
+      id: '217',
+      to: '550',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 10,
+      },
+      from: '32',
+      id: '214',
+      to: '38',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '32',
+      id: '216',
+      to: '431',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 4,
+      },
+      from: '32',
+      id: '218',
+      to: '608',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS',
+        weight: 11,
+      },
+      from: '32',
+      id: '215',
+      to: '208',
+      label: 'INTERACTS',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 4,
+      },
+      from: '33',
+      id: '4362',
+      to: '76',
+      label: 'INTERACTS3',
+    },
+    {
+      attributes: {
+        Type: 'INTERACTS3',
+        book: 3,
+        weight: 12,
+      },
+      from: '33',
+      id: '4369',
+      to: '609',
+      label: 'INTERACTS3',
+    },
+  ],
+  nodeTypes: ['Character'],
+};
diff --git a/libs/shared/lib/mock-data/query-result/index.ts b/libs/shared/lib/mock-data/query-result/index.ts
index 9aa18d6652ab85eb8f39b3f33604311001fb59c0..bb78d76fa5f232aca872e5b2604379d78799363a 100644
--- a/libs/shared/lib/mock-data/query-result/index.ts
+++ b/libs/shared/lib/mock-data/query-result/index.ts
@@ -8,3 +8,6 @@ export * from './typesMockQueryResults';
 export * from './recommendationQueryResult';
 export * from './fincenQueryResults';
 export * from './slackQueryResults';
+export * from './marieBoucherSample';
+export * from './mockRecommendationsActorMovie';
+export * from './gotCharacter2Character';
diff --git a/libs/shared/lib/mock-data/query-result/marieBoucherSample.ts b/libs/shared/lib/mock-data/query-result/marieBoucherSample.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f6318df757bc02aff9ff83dbfc3afa15287cd4b4
--- /dev/null
+++ b/libs/shared/lib/mock-data/query-result/marieBoucherSample.ts
@@ -0,0 +1,324 @@
+/**
+ * This program has been developed by students from the bachelor Computer Science at
+ * Utrecht University within the Software Project course.
+ * © Copyright Utrecht University (Department of Information and Computing Sciences)
+ */
+
+/* istanbul ignore file */
+/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
+ * We do not test mock data.
+ * See testing plan for more details.*/
+
+export const marieBoucherSample = {
+  edges: [
+    {
+      from: 'merchant/0',
+      to: 'merchant/1',
+      id: 'transaction/1',
+      attributes: {
+        time: 1802,
+      },
+    },
+    {
+      from: 'merchant/0',
+      to: 'merchant/2',
+      id: 'transaction/2',
+      attributes: {
+        time: 1802,
+      },
+    },
+    {
+      from: 'merchant/0',
+      to: 'merchant/3',
+      id: 'transaction/3',
+      attributes: {
+        time: 1802,
+      },
+    },
+    {
+      from: 'merchant/0',
+      to: 'merchant/4',
+      id: 'transaction/4',
+      attributes: {
+        time: 1802,
+      },
+    },
+    {
+      from: 'merchant/4',
+      to: 'merchant/5',
+      id: 'transaction/5',
+      attributes: {
+        time: 1802,
+      },
+    },
+    {
+      from: 'merchant/5',
+      to: 'merchant/6',
+      id: 'transaction/6',
+      attributes: {
+        time: 1802,
+      },
+    },
+    {
+      from: 'merchant/5',
+      to: 'merchant/7',
+      id: 'transaction/7',
+      attributes: {
+        time: 1802,
+      },
+    },
+    {
+      //---------------------------------------------------------------------------------
+      from: 'merchant/0',
+      to: 'merchant/1',
+      id: 'transaction/8',
+      attributes: {
+        time: 1803,
+      },
+    },
+    {
+      from: 'merchant/0',
+      to: 'merchant/3',
+      id: 'transaction/9',
+      attributes: {
+        time: 1803,
+      },
+    },
+    {
+      from: 'merchant/0',
+      to: 'merchant/4',
+      id: 'transaction/12',
+      attributes: {
+        time: 1803,
+      },
+    },
+    {
+      from: 'merchant/0',
+      to: 'merchant/5',
+      id: 'transaction/13',
+      attributes: {
+        time: 1803,
+      },
+    },
+    //---------------------------------------------------------------------------------
+    {
+      from: 'merchant/0',
+      to: 'merchant/6',
+      id: 'transaction/19',
+      attributes: {
+        time: 1803,
+      },
+    },
+    {
+      //---------------------------------------------------------------------------------
+      from: 'merchant/0',
+      to: 'merchant/5',
+      id: 'transaction/20',
+      attributes: {
+        time: 1803,
+      },
+    },
+    {
+      from: 'merchant/0',
+      to: 'merchant/7',
+      id: 'transaction/21',
+      attributes: {
+        time: 1803,
+      },
+    },
+    {
+      from: 'merchant/0',
+      to: 'merchant/8',
+      id: 'transaction/22',
+      attributes: {
+        time: 1803,
+      },
+    },
+    {
+      from: 'merchant/0',
+      to: 'merchant/9',
+      id: 'transaction/23',
+      attributes: {
+        time: 1803,
+      },
+    },
+    {
+      from: 'merchant/11',
+      to: 'merchant/12',
+      id: 'transaction/25',
+      attributes: {
+        time: 1803,
+      },
+    },
+    //---------------------------------------------------------------------------------
+    //---------------------------------------------------------------------------------
+
+    {
+      from: 'merchant/9',
+      to: 'merchant/10',
+      id: 'transaction/28',
+      attributes: {
+        time: 1803,
+      },
+    },
+
+    //---------------------------------------------------------------------------------
+
+    {
+      from: 'merchant/0',
+      to: 'merchant/1',
+      id: 'transaction/29',
+      attributes: {
+        time: 1801,
+      },
+    },
+    {
+      from: 'merchant/0',
+      to: 'merchant/2',
+      id: 'transaction/30',
+      attributes: {
+        time: 1801,
+      },
+    },
+    {
+      from: 'merchant/5',
+      to: 'merchant/6',
+      id: 'transaction/31',
+      attributes: {
+        time: 1801,
+      },
+    },
+    {
+      from: 'merchant/5',
+      to: 'merchant/7',
+      id: 'transaction/32',
+      attributes: {
+        time: 1801,
+      },
+    },
+    {
+      from: 'merchant/3',
+      to: 'merchant/4',
+      id: 'transaction/33',
+      attributes: {
+        time: 1801,
+      },
+    },
+    //---------------------------------------------------------------------------------
+  ],
+  nodes: [
+    {
+      id: 'merchant/0',
+      label: 'Elise',
+      attributes: {
+        name: 'Elise',
+        data: [1801, 1802, 1803, 1804],
+        community: 'Legrand',
+      },
+    },
+    {
+      id: 'merchant/1',
+      label: 'Jacques',
+      attributes: {
+        name: 'Jacques',
+        data: [1801, 1802, 1803],
+        community: 'Legrand',
+      },
+    },
+    {
+      id: 'merchant/2',
+      label: 'Hubert',
+      attributes: {
+        name: 'Hubert',
+        data: [1803, 1804, 1802, 1801],
+        community: 'Dupont',
+      },
+    },
+    {
+      id: 'merchant/3',
+      label: 'Roze',
+      attributes: {
+        name: 'Roze',
+        data: [1804, 1802, 1803],
+        community: 'Legrand',
+      },
+    },
+
+    {
+      id: 'merchant/4',
+      label: 'Vallet',
+      attributes: {
+        name: 'Vallet',
+        data: [1804, 1802, 1803],
+      },
+    },
+    {
+      id: 'merchant/5',
+      label: 'John',
+      attributes: {
+        name: 'John',
+        data: [1804, 1803, 1801, 1802],
+        community: 'Legrand',
+      },
+    },
+    {
+      id: 'merchant/6',
+      label: 'Joseph',
+      attributes: {
+        name: 'Joseph',
+        data: [1804, 1803, 1801, 1802],
+        community: 'Dupont',
+      },
+    },
+    {
+      id: 'merchant/7',
+      label: 'Antoine',
+      attributes: {
+        name: 'Antoine',
+        data: [1804, 1803, 1801, 1802],
+      },
+    },
+    {
+      id: 'merchant/8',
+      label: 'Philippe',
+      attributes: {
+        name: 'Philippe',
+        data: [1804, 1803],
+        community: 'Dupont',
+      },
+    },
+    {
+      id: 'merchant/9',
+      label: 'Claude',
+      attributes: {
+        name: 'Claude',
+        data: [1804, 1803],
+        community: 'Dupont',
+      },
+    },
+    {
+      id: 'merchant/10',
+      label: 'Guillaume',
+      attributes: {
+        name: 'Guillaume',
+        data: [1804, 1803],
+      },
+    },
+    {
+      id: 'merchant/11',
+      label: 'Madeleine',
+      attributes: {
+        name: 'Madeleine',
+        data: [1803, 1804],
+      },
+    },
+    {
+      id: 'merchant/12',
+      label: 'Renexent',
+      attributes: {
+        name: 'Renexent',
+        data: [1803, 1804],
+      },
+    },
+  ],
+};
diff --git a/libs/shared/lib/mock-data/query-result/mockRecommendationsActorMovie.ts b/libs/shared/lib/mock-data/query-result/mockRecommendationsActorMovie.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1c96c1b58aeeb66c538677734f4f97f12b74f59c
--- /dev/null
+++ b/libs/shared/lib/mock-data/query-result/mockRecommendationsActorMovie.ts
@@ -0,0 +1,15938 @@
+
+export const mockRecommendationsActorMovie = {
+    nodes: [
+      {
+        "attributes": {
+          "budget": 5985,
+          "countries": [
+            "France"
+          ],
+          "degree": 0,
+          "imdbId": "0000417",
+          "imdbRating": 8.2,
+          "imdbVotes": 26747,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "32898",
+          "plot": "A group of astronomers go on an expedition to the moon.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/aaNIFWrq6eGi259APbB5yaqBFdm.jpg",
+          "released": "1902-10-04",
+          "revenue": 0,
+          "runtime": 13,
+          "title": "Trip to the Moon, A (Voyage dans la lune, Le)",
+          "tmdbId": "775",
+          "url": "https://themoviedb.org/movie/775",
+          "year": 1902
+        },
+        "id": "6138",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "degree": 4,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "François Lallement",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "1271225",
+          "url": "https://themoviedb.org/person/1271225"
+        },
+        "id": "9816",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "degree": 4,
+          "died": {},
+          "imdbId": "6170115",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Jules-Eugène Legris",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "1602569",
+          "url": "https://themoviedb.org/person/1602569"
+        },
+        "id": "9817",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 795000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0048424",
+          "imdbRating": 8.1,
+          "imdbVotes": 62918,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "7013",
+          "plot": "A religious fanatic marries a gullible widow whose young children are reluctant to tell him where their real daddy hid $10,000 he'd stolen in a robbery.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/8Xs3TNgxdiJqUiBOpFYxF0W9yoo.jpg",
+          "released": "1955-11-24",
+          "revenue": 0,
+          "runtime": 92,
+          "title": "Night of the Hunter, The",
+          "tmdbId": "3112",
+          "url": "https://themoviedb.org/movie/3112",
+          "year": 1955
+        },
+        "id": "4953",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia\n\nLillian Diana Gish (October 14, 1893 – February 27, 1993) was an American stage, screen and television actress whose film acting career spanned 75 years, from 1912 to 1987. \n\nShe was a prominent film star of the 1910s and 1920s, particularly associated with the films of director D. W.  Griffith, including her leading role in Griffith's seminal Birth of a Nation (1915)...",
+          "born": {},
+          "bornIn": "Springfield, Ohio, USA",
+          "degree": 15,
+          "died": {},
+          "imdbId": "0001273",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Lillian Gish",
+          "numberOfMoviesActedIn": 5,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/6DCWtvv654sc8p2OPnxGbKvl2qC.jpg",
+          "tmdbId": "8828",
+          "url": "https://themoviedb.org/person/8828"
+        },
+        "id": "9818",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0060420",
+          "imdbRating": 7.3,
+          "imdbVotes": 1489,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "7312",
+          "plot": "Lem Siddons is part of a traveling band who has a dream of becoming a lawyer. Deciding to settle down, he finds a job as a stockboy in the general store of a small town. Trying to fit in, ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/N5Q3z5fg2FR3JNtaka0Afjgeku.jpg",
+          "released": "1966-12-01",
+          "revenue": 0,
+          "runtime": 131,
+          "title": "Follow Me, Boys!",
+          "tmdbId": "40454",
+          "url": "https://themoviedb.org/movie/40454",
+          "year": 1966
+        },
+        "id": "5121",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 8394751,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0006864",
+          "imdbRating": 8,
+          "imdbVotes": 10299,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "7243",
+          "plot": "The story of a poor young woman, separated by prejudice from her husband and baby, is interwoven with tales of intolerance from throughout history.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/mnjifw19X094HvG80CN7nyMSRsD.jpg",
+          "released": "1916-09-05",
+          "revenue": 4000000,
+          "runtime": 197,
+          "title": "Intolerance: Love's Struggle Throughout the Ages",
+          "tmdbId": "3059",
+          "url": "https://themoviedb.org/movie/3059",
+          "year": 1916
+        },
+        "id": "5092",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 100000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0004972",
+          "imdbRating": 6.8,
+          "imdbVotes": 16449,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "7065",
+          "plot": "The Civil War divides friends and destroys families, but that's nothing compared to the anarchy in the black-ruled South after the war.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/pNpOXpQI5GSUfiWypubYtMh9928.jpg",
+          "released": "1915-03-03",
+          "revenue": 11000000,
+          "runtime": 165,
+          "title": "Birth of a Nation, The",
+          "tmdbId": "618",
+          "url": "https://themoviedb.org/movie/618",
+          "year": 1915
+        },
+        "id": "4987",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0017350",
+          "imdbRating": 7.8,
+          "imdbVotes": 1091,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "957",
+          "plot": "After having a child out of wedlock, a young Puritan woman is pressured to reveal the name of her lover.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/4c5u528tDEWK68ImgWaMpMKgHI6.jpg",
+          "released": "1927-01-08",
+          "revenue": 0,
+          "runtime": 115,
+          "title": "Scarlet Letter, The",
+          "tmdbId": "85638",
+          "url": "https://themoviedb.org/movie/85638",
+          "year": 1926
+        },
+        "id": "796",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Mae Marsh (born Mary Wayne Marsh, November 9, 1894 – February 13, 1968) was an American film actress with a career spanning over 50 years...",
+          "born": {},
+          "bornIn": "Madrid, New Mexico Territory , USA",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0550615",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Mae Marsh",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/wEHHFF2Tq2Z1BlRRr27SOcUW3pu.jpg",
+          "tmdbId": "8829",
+          "url": "https://themoviedb.org/person/8829"
+        },
+        "id": "9819",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia\n\nHenry Brazeale Walthall (March 16, 1878 – June 17, 1936) was an American stage and film actor.  He appeared as the Little Colonel in D.  W.  Griffith's The Birth of a Nation (1915).   In New York in 1901, Walthall won a role in Under Southern Skies by Charlotte Blair Parker.  He performed in the play for three years, in New York and on tour...",
+          "born": {},
+          "bornIn": "Shelby County, Alabama, USA",
+          "degree": 10,
+          "died": {},
+          "imdbId": "0910400",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Henry B. Walthall",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/5RZtgV7iFQFvVijQJzNFzViAEu8.jpg",
+          "tmdbId": "8830",
+          "url": "https://themoviedb.org/person/8830"
+        },
+        "id": "9820",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia\n\nMiriam Cooper (November 7, 1891 – April 12, 1976) was a silent film actress who is best known for her work in early film including Birth of a Nation and Intolerance for D. W.  Griffith and The Honor System and Evangeline for her husband Raoul Walsh.  She retired from acting in 1923 but was rediscovered by the film community in the 1960s, and toured colleges lecturing about silent films...",
+          "born": {},
+          "degree": 6,
+          "died": {},
+          "imdbId": "0178270",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Miriam Cooper",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/kl8SwHKsjvJkaHnWUInhFLhLSVw.jpg",
+          "tmdbId": "8831",
+          "url": "https://themoviedb.org/person/8831"
+        },
+        "id": "9821",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 200000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0006333",
+          "imdbRating": 7.1,
+          "imdbVotes": 1085,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "62383",
+          "plot": "Captain Nemo has built a fantastic submarine for his mission of revenge. He has traveled over 20,000 leagues in search of Charles Denver - a man who caused the death of Princess Daaker. ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/sv8LaZwJPMNUah2CurnOxmqlbS5.jpg",
+          "released": "1916-12-24",
+          "revenue": 8000000,
+          "runtime": 105,
+          "title": "20,000 Leagues Under the Sea",
+          "tmdbId": "30266",
+          "url": "https://themoviedb.org/movie/30266",
+          "year": 1916
+        },
+        "id": "7077",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "imdbId": "0360132",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Dan Hanlon",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "105947",
+          "url": "https://themoviedb.org/person/105947"
+        },
+        "id": "9822",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "imdbId": "0671728",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Edna Pendleton",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "105951",
+          "url": "https://themoviedb.org/person/105951"
+        },
+        "id": "9823",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Toledo, Ohio, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0072911",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Curtis Benton",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "105942",
+          "url": "https://themoviedb.org/person/105942"
+        },
+        "id": "9824",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "San Francisco, California, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0392709",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Allen Holubar",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "105948",
+          "url": "https://themoviedb.org/person/105948"
+        },
+        "id": "9825",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Edinburgh, Scotland, UK",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0014894",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Spottiswoode Aitken",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "8835",
+          "url": "https://themoviedb.org/person/8835"
+        },
+        "id": "9826",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nMary Maguire Alden (June 18, 1883 – July 2, 1946) was an American motion picture and stage actress.  She was one of the first Broadway actresses to work in Hollywood. \n\nBorn in New York City, Alden began her career on the Broadway stage.  She spent five years on Broadway before moving to Hollywood where she worked for the Biograph Company and Pathé Exchange in the first portion of her career...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0017488",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Mary Alden",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/tksV05qljP9YoLJ44ajq5Rw2QAL.jpg",
+          "tmdbId": "8832",
+          "url": "https://themoviedb.org/person/8832"
+        },
+        "id": "9827",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 6,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Frank Bennett",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "1647611",
+          "url": "https://themoviedb.org/person/1647611"
+        },
+        "id": "9828",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0009018",
+          "imdbRating": 7.8,
+          "imdbVotes": 4582,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3309",
+          "plot": "The Little Tramp and his dog companion struggle to survive in the inner city.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/41vqtliesQrsJQ9iTJh5nFYQgBg.jpg",
+          "released": "1918-04-14",
+          "revenue": 0,
+          "runtime": 33,
+          "title": "Dog's Life, A",
+          "tmdbId": "36208",
+          "url": "https://themoviedb.org/movie/36208",
+          "year": 1918
+        },
+        "id": "2672",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "degree": 24,
+          "labels": [
+            "Actor",
+            "Director",
+            "Person"
+          ],
+          "name": "Charles Chaplin",
+          "numberOfMoviesActedIn": 9
+        },
+        "id": "9829",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 2000000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0032553",
+          "imdbRating": 8.5,
+          "imdbVotes": 131262,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Esperanto"
+          ],
+          "movieId": "1281",
+          "plot": "Dictator Adenoid Hynkel tries to expand his empire while a poor Jewish barber tries to avoid persecution from Hynkel's regime.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1QpO9wo7JWecZ4NiBuu625FiY1j.jpg",
+          "released": "1941-03-07",
+          "revenue": 11000000,
+          "runtime": 125,
+          "title": "Great Dictator, The",
+          "tmdbId": "914",
+          "url": "https://themoviedb.org/movie/914",
+          "year": 1940
+        },
+        "id": "1054",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 1500000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0021749",
+          "imdbRating": 8.6,
+          "imdbVotes": 102726,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3307",
+          "plot": "With the aid of a wealthy erratic tippler, a dewy-eyed tramp who has fallen in love with a sightless flower girl accumulates money to be able to help her medically.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bXNvzjULc9jrOVhGfjcc64uKZmZ.jpg",
+          "released": "1931-03-07",
+          "revenue": 19181,
+          "runtime": 87,
+          "title": "City Lights",
+          "tmdbId": "901",
+          "url": "https://themoviedb.org/movie/901",
+          "year": 1931
+        },
+        "id": "2670",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 923000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0015864",
+          "imdbRating": 8.3,
+          "imdbVotes": 64847,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3629",
+          "plot": "A prospector goes to the Klondike in search of gold and finds it and more.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/eQRFo1qwRREYwj47Yoe1PisgOle.jpg",
+          "revenue": 2500000,
+          "runtime": 95,
+          "title": "Gold Rush, The",
+          "tmdbId": "962",
+          "url": "https://themoviedb.org/movie/962",
+          "year": 1925
+        },
+        "id": "2917",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 9000000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0018773",
+          "imdbRating": 8.2,
+          "imdbVotes": 17137,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3306",
+          "plot": "The Tramp finds work and the girl of his dreams at a circus.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/hWw9HfQmd4Rn1Et4vgZQsEf5tEZ.jpg",
+          "revenue": 0,
+          "runtime": 71,
+          "title": "Circus, The",
+          "tmdbId": "28978",
+          "url": "https://themoviedb.org/movie/28978",
+          "year": 1928
+        },
+        "id": "2669",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0044837",
+          "imdbRating": 8.1,
+          "imdbVotes": 12676,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3559",
+          "plot": "A fading comedian and a suicidally despondent ballet dancer must look to each other to find meaning and hope in their lives.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/sC31TDVXloovIsLLiTvVJERvjFS.jpg",
+          "released": "1952-10-29",
+          "revenue": 1000000,
+          "runtime": 137,
+          "title": "Limelight",
+          "tmdbId": "28971",
+          "url": "https://themoviedb.org/movie/28971",
+          "year": 1952
+        },
+        "id": "2863",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 1500000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0027977",
+          "imdbRating": 8.6,
+          "imdbVotes": 135450,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3462",
+          "plot": "The Tramp struggles to live in modern industrial society with the help of a young homeless woman.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/7uoiKOEjxBBW0AgDGQWrlfGQ90w.jpg",
+          "released": "1936-02-25",
+          "revenue": 8500000,
+          "runtime": 87,
+          "title": "Modern Times",
+          "tmdbId": "3082",
+          "url": "https://themoviedb.org/movie/3082",
+          "year": 1936
+        },
+        "id": "2783",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 250000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0012349",
+          "imdbRating": 8.4,
+          "imdbVotes": 63289,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3310",
+          "plot": "The Tramp cares for an abandoned child, but events put that relationship in jeopardy.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/drgMcyTsySQBnUPGaBThCHGdlWT.jpg",
+          "released": "1921-02-06",
+          "revenue": 2500000,
+          "runtime": 68,
+          "title": "Kid, The",
+          "tmdbId": "10098",
+          "url": "https://themoviedb.org/movie/10098",
+          "year": 1921
+        },
+        "id": "2673",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "UK"
+          ],
+          "degree": 0,
+          "imdbId": "0050598",
+          "imdbRating": 7.3,
+          "imdbVotes": 5218,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3640",
+          "plot": "A recently-deposed European monarch seeks shelter in New York City, where he becomes an accidental television celebrity and is later wrongly accused of being a Communist.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1uNz9qshUTrrmsxJ8gaLrhh7VhN.jpg",
+          "released": "1957-09-12",
+          "revenue": 0,
+          "runtime": 105,
+          "title": "King in New York, A",
+          "tmdbId": "28973",
+          "url": "https://themoviedb.org/movie/28973",
+          "year": 1957
+        },
+        "id": "2925",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0008133",
+          "imdbRating": 7.8,
+          "imdbVotes": 4947,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8511",
+          "plot": "Charlie is an immigrant who endures a challenging voyage and gets into trouble as soon as he arrives in America.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/uCRkOWSGahdQPBIVtecnUUoM4U0.jpg",
+          "released": "1917-06-17",
+          "revenue": 0,
+          "runtime": 30,
+          "title": "Immigrant, The",
+          "tmdbId": "47653",
+          "url": "https://themoviedb.org/movie/47653",
+          "year": 1917
+        },
+        "id": "5457",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 2000000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0039631",
+          "imdbRating": 8,
+          "imdbVotes": 11113,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3632",
+          "plot": "A suave but cynical man supports his family by marrying and murdering rich women for their money, but the job has some occupational hazards.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/6LcFw7KyghfBo2vqk3cpdqPu4PW.jpg",
+          "released": "1947-12-08",
+          "revenue": 0,
+          "runtime": 124,
+          "title": "Monsieur Verdoux",
+          "tmdbId": "30588",
+          "url": "https://themoviedb.org/movie/30588",
+          "year": 1947
+        },
+        "id": "2918",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia\n\nEdna Purviance (October 21, 1895 – January 11, 1958) was an American actress during the silent movie era.  She was the leading lady in many Charlie Chaplin movies.  In a span of eight years, she appeared in over thirty films with Chaplin...",
+          "born": {},
+          "bornIn": "Paradise Valley, Nevada, USA",
+          "degree": 11,
+          "died": {},
+          "imdbId": "0701012",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Edna Purviance",
+          "numberOfMoviesActedIn": 3,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/2uEZFOiUMPtctVbAnhf86OR6jQa.jpg",
+          "tmdbId": "21301",
+          "url": "https://themoviedb.org/person/21301"
+        },
+        "id": "9830",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "degree": 3,
+          "died": {},
+          "imdbId": "0132444",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Eric Campbell",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "21303",
+          "url": "https://themoviedb.org/person/21303"
+        },
+        "id": "9831",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Albert Austin (13 December 1881 or 1885 – 17 August 1953) was an actor, film star, director and script writer, noted mainly for his work in Charlie Chaplin films.  He was the brother of actor William Austin.  He was born in Birmingham, England, and was a music hall performer before coming to the U. S.  with Chaplin, both as members of the Fred Karno troupe, in 1910...",
+          "born": {},
+          "bornIn": "Birmingham, England",
+          "degree": 3,
+          "died": {},
+          "imdbId": "0042317",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Albert Austin",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/ztUZFA4xxiuppjUf7O8oR6xK5bs.jpg",
+          "tmdbId": "21306",
+          "url": "https://themoviedb.org/person/21306"
+        },
+        "id": "9832",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0018051",
+          "imdbRating": 7.6,
+          "imdbVotes": 2652,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8423",
+          "plot": "The most important family in Hickoryville is (naturally enough) the Hickorys, with sheriff Jim and his tough manly sons Leo and Olin. The timid youngest son, Harold, doesn't have the ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/wxh7Iq6Ng0tNjHbNLviNROyhL3M.jpg",
+          "released": "1927-01-17",
+          "revenue": 0,
+          "runtime": 82,
+          "title": "Kid Brother, The",
+          "tmdbId": "16661",
+          "url": "https://themoviedb.org/movie/16661",
+          "year": 1927
+        },
+        "id": "5434",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Harold Lloyd has been called the cinema’s “first man in space. ” He was a product of the film industry.  His comedy wasn’t imported from Vaudeville or the British Music Hall like his contemporaries, Charlie Chaplin and Buster Keaton.  Harold learned to use the camera the way other comics used a bowler hat or a funny walk...",
+          "born": {},
+          "bornIn": "Burchard, Nebraska, USA",
+          "degree": 15,
+          "died": {},
+          "imdbId": "0516001",
+          "labels": [
+            "Actor",
+            "Director",
+            "Person"
+          ],
+          "name": "Harold Lloyd",
+          "numberOfMoviesActedIn": 4,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/er4ZNznuum2v8vqeZr2fT3Friqo.jpg",
+          "tmdbId": "88953",
+          "url": "https://themoviedb.org/person/88953"
+        },
+        "id": "9833",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0009932",
+          "imdbRating": 6.1,
+          "imdbVotes": 503,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "72626",
+          "plot": "Billy Blazes confronts Crooked Charley, who has been ruling the town of Peaceful Vale through fear and violence.",
+          "released": "1919-07-06",
+          "revenue": 0,
+          "runtime": 12,
+          "title": "Billy Blazes, Esq.",
+          "tmdbId": "53516",
+          "url": "https://themoviedb.org/movie/53516",
+          "year": 1919
+        },
+        "id": "7413",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0015841",
+          "imdbRating": 7.6,
+          "imdbVotes": 3517,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25752",
+          "plot": "Nerdy college student will do anything to become popular on campus.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/yJjyEOHp1dpspruvcY4jL4gydoL.jpg",
+          "released": "1925-09-20",
+          "revenue": 0,
+          "runtime": 76,
+          "title": "Freshman, The",
+          "tmdbId": "42359",
+          "url": "https://themoviedb.org/movie/42359",
+          "year": 1925
+        },
+        "id": "5679",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0014429",
+          "imdbRating": 8.3,
+          "imdbVotes": 12476,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8235",
+          "plot": "When a store clerk organizes a publicity stunt, in which a friend climbs the outside of a tall building, circumstances force him to make the perilous climb himself.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/jWoeNjQPtRZJbS0LRPesY9uizgS.jpg",
+          "released": "1923-04-01",
+          "revenue": 623,
+          "runtime": 70,
+          "title": "Safety Last!",
+          "tmdbId": "22596",
+          "url": "https://themoviedb.org/movie/22596",
+          "year": 1923
+        },
+        "id": "5386",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nSnub Pollard (9 November 1889 – 19 January 1962) was an Australian-born vaudevillian, who became a silent film comedian in Hollywood, popular in the 1920s. \n\nBorn Harold Fraser, in Melbourne, Australia on 9 November 1889, he began performing with Pollard's Lilliputian Opera Company at a young age.  Like many of the actors in the popular juvenile company, he adopted Pollard as his stage name...",
+          "born": {},
+          "bornIn": " Melbourne, Victoria, Australia",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0689444",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "'Snub' Pollard",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/srCQa37TG3RHKx5PuthzjsTpe6n.jpg",
+          "tmdbId": "85778",
+          "url": "https://themoviedb.org/person/85778"
+        },
+        "id": "9834",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0022111",
+          "imdbRating": 7.4,
+          "imdbVotes": 2134,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8228",
+          "plot": "A lovely dame with dangerous lies employs the services of a private detective, who is quickly caught up in the mystery and intrigue of a statuette known as the Maltese Falcon.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/nGYYO0hmpMDFC69bNEXyAoJrCtn.jpg",
+          "released": "1931-06-13",
+          "revenue": 0,
+          "runtime": 80,
+          "title": "Maltese Falcon, The (a.k.a. Dangerous Female)",
+          "tmdbId": "28257",
+          "url": "https://themoviedb.org/movie/28257",
+          "year": 1931
+        },
+        "id": "5385",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia\n\nBebe Daniels (January 14, 1901 – March 16, 1971) was an American actress, singer, dancer, writer and producer.  She began her career in Hollywood during the silent film era as a child actress, became a star in musicals such as 42nd Street (1933), and later gained further fame on radio and television in Britain.  Throughout her career, Daniels appeared in 230 films...",
+          "born": {},
+          "bornIn": "Dallas, Texas, USA",
+          "degree": 13,
+          "died": {},
+          "imdbId": "0199841",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Bebe Daniels",
+          "numberOfMoviesActedIn": 3,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/fGvTe5FSELsgRZQsU3jX5btIm2y.jpg",
+          "tmdbId": "30000",
+          "url": "https://themoviedb.org/person/30000"
+        },
+        "id": "9835",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 439000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0024034",
+          "imdbRating": 7.7,
+          "imdbVotes": 7718,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "7080",
+          "plot": "A producer puts on what may be his last Broadway show and, at the last moment, a chorus girl has to replace the star.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/q4UEd8BL74zVsOOaJkKVMLMmdTg.jpg",
+          "released": "1933-03-11",
+          "revenue": 2281000,
+          "runtime": 89,
+          "title": "42nd Street",
+          "tmdbId": "3062",
+          "url": "https://themoviedb.org/movie/3062",
+          "year": 1933
+        },
+        "id": "5000",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 18000,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0010323",
+          "imdbRating": 8.1,
+          "imdbVotes": 37450,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "German"
+          ],
+          "movieId": "6987",
+          "plot": "Dr. Caligari's somnambulist, Cesare, and his deadly predictions.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/myK9DeIsXWGKgUTZyGXg2IfFk0W.jpg",
+          "released": "1921-03-19",
+          "revenue": 0,
+          "runtime": 67,
+          "title": "Cabinet of Dr. Caligari, The (Cabinet des Dr. Caligari., Das)",
+          "tmdbId": "234",
+          "url": "https://themoviedb.org/movie/234",
+          "year": 1920
+        },
+        "id": "4931",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Gestungshausen, Sonnefeld, Bavaria, Germany",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0470328",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Werner Krauss",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/xlyS30qzcndmczxG5JdJWwJ1heI.jpg",
+          "tmdbId": "3000",
+          "url": "https://themoviedb.org/person/3000"
+        },
+        "id": "9837",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Hans Walter Conrad Veidt (22 January 1893 – 3 April 1943) was a German actor best remembered for his roles in films such as Different from the Others (1919), The Cabinet of Dr.  Caligari (1920), and The Man Who Laughs (1928).  After a successful career in German silent film, where he was one of the best-paid stars of Ufa, he was forced to leave Germany in 1933 with his new Jewish wife after the Nazis came to power...",
+          "born": {},
+          "bornIn": "Potsdam, Brandenburg, Germany",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0891998",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Conrad Veidt",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/5PvSGqd3ZR9hjLE0Wo5yUPnKgPx.jpg",
+          "tmdbId": "3001",
+          "url": "https://themoviedb.org/person/3001"
+        },
+        "id": "9837",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "degree": 6,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Friedrich Feher",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/s5f3MVz7nL9dnsytzTAQb4AkMWx.jpg",
+          "tmdbId": "590591",
+          "url": "https://themoviedb.org/person/590591"
+        },
+        "id": "9838",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "degree": 6,
+          "died": {},
+          "imdbId": "0196820",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Lil Dagover",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/lksn2PhJAxIGaWKDbLflQpyIycl.jpg",
+          "tmdbId": "3005",
+          "url": "https://themoviedb.org/person/3005"
+        },
+        "id": "9839",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0011237",
+          "imdbRating": 7.2,
+          "imdbVotes": 4655,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "25737",
+          "plot": "In 16th-century Prague, a rabbi creates a giant creature from clay, called the Golem, and using sorcery, brings the creature to life in order to protect the Jews of Prague from persecution.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/PWKZx0gLB7EEMQUmWbvFk3yB3t.jpg",
+          "released": "1921-06-19",
+          "revenue": 0,
+          "runtime": 91,
+          "title": "Golem, The (Golem, wie er in die Welt kam, Der)",
+          "tmdbId": "2972",
+          "url": "https://themoviedb.org/movie/2972",
+          "year": 1920
+        },
+        "id": "5676",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Paul Wegener was a German actor known for his pioneering roles in Expressionist films.  He can also be considered a father of horror for his breakout role in The Student of Prague (1913).  Wegener maintained a career throughout and after the Nazi era, starring in his last film in 1948...",
+          "born": {},
+          "bornIn": "Arnoldsdorf, West Prussia, Germany [now Jarantowice, Kujawsko-Pomorskie, Poland]",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0917467",
+          "labels": [
+            "Actor",
+            "Director",
+            "Person"
+          ],
+          "name": "Paul Wegener",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/6D04qOrnJNNeCiZef0hxRqUt1B4.jpg",
+          "tmdbId": "29123",
+          "url": "https://themoviedb.org/person/29123"
+        },
+        "id": "9840",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Bad Arolsen, Germany",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0826210",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Albert Steinrück",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "29175",
+          "url": "https://themoviedb.org/person/29175"
+        },
+        "id": "9841",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Lyda Salmonova was a Czech stage and film actress.  She was married to the actor Paul Wegener and appeared alongside him in a number of films...",
+          "born": {},
+          "bornIn": "Prague, Czech Republic",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0758802",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Lyda Salmonova",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/mFNTWMnOw0HRJAU74418hfBLbvK.jpg",
+          "tmdbId": "29176",
+          "url": "https://themoviedb.org/person/29176"
+        },
+        "id": "9842",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Prague, Bohemia, Austria-Hungary [now Czech Republic]",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0222074",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Ernst Deutsch",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/yJttn5y0zKiMb8gAmFVuE7AStVK.jpg",
+          "tmdbId": "29177",
+          "url": "https://themoviedb.org/person/29177"
+        },
+        "id": "9843",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0020030",
+          "imdbRating": 7.7,
+          "imdbVotes": 879,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "59846",
+          "plot": "King Louis XIII of France is thrilled to have born to him a son - an heir to the throne. But when the queen delivers a twin, Cardinal Richelieu sees the second son as a potential for ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/9Yr7IHgbpTmS6gYA23VROcqY6EG.jpg",
+          "released": "1929-02-21",
+          "revenue": 0,
+          "runtime": 95,
+          "title": "Iron Mask, The",
+          "tmdbId": "79761",
+          "url": "https://themoviedb.org/movie/79761",
+          "year": 1929
+        },
+        "id": "6991",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "degree": 11,
+          "died": {},
+          "imdbId": "0209323",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Marguerite De La Motte",
+          "numberOfMoviesActedIn": 2,
+          "tmdbId": "128325",
+          "url": "https://themoviedb.org/person/128325"
+        },
+        "id": "9844",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0011439",
+          "imdbRating": 7.3,
+          "imdbVotes": 1552,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "59945",
+          "plot": "A seemingly idiotic fop is really the courageous vigilante Zorro, who seeks to protect the oppressed.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1N1gSSJs9ULgSWUM0W7zCXSR2QK.jpg",
+          "released": "1920-12-05",
+          "revenue": 0,
+          "runtime": 107,
+          "title": "Mark of Zorro, The",
+          "tmdbId": "42657",
+          "url": "https://themoviedb.org/movie/42657",
+          "year": 1920
+        },
+        "id": "6994",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia\n\nRobert McKim (August 26, 1886 – June 4, 1927) was an American actor of the silent film era.  He appeared in 99 films between 1915 and 1927.  He is best remembered for playing the arch villain opposite Douglas Fairbanks's Zorro in The Mark of Zorro in 1920. \n\nMcKim starred with Lon Chaney in the 1923 silent version of All The Brothers Were Valiant...",
+          "born": {},
+          "bornIn": "San Francisco - California - USA",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0571770",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Robert McKim",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "97990",
+          "url": "https://themoviedb.org/person/97990"
+        },
+        "id": "9845",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nNoah Nicholas Beery (January 17, 1882 – April 1, 1946) was an American actor, who appeared in films from 1913 to 1945. \n\nDescription above from the Wikipedia article Noah Beery, Sr. , licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Kansas City, Missouri, USA",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0001935",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Noah Beery",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/rFsrCS3q90odr4CdimFJHob6GkE.jpg",
+          "tmdbId": "128324",
+          "url": "https://themoviedb.org/person/128324"
+        },
+        "id": "9846",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nCharles Hill Mailes (25 May 1870 – 17 February 1937) was a Canadian actor of the silent era.  He appeared in 290 films between 1909 and 1935. \n\nHe was born in Halifax, Nova Scotia and died in Los Angeles, California.  His spouse was the actress Claire McDowell (married 1906), with whom he had two sons, Robert & Eugene. \n\nDescription above from the Wikipedia article Charles Hill Mailes, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Halifax, Nova Scotia, Canada",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0537556",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Charles Hill Mailes",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/cuZwr89Jxmx1fyAs6KuXPGbpfGS.jpg",
+          "tmdbId": "100804",
+          "url": "https://themoviedb.org/person/100804"
+        },
+        "id": "9847",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0018742",
+          "imdbRating": 8.3,
+          "imdbVotes": 7236,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25764",
+          "plot": "Hopelessly in love with a woman working at MGM Studios, a clumsy man attempts to become a motion picture cameraman to be close to the object of his desire.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/prhMP7VVxpQTzOFIPsbnr41IDTN.jpg",
+          "released": "1928-09-22",
+          "revenue": 0,
+          "runtime": 69,
+          "title": "Cameraman, The",
+          "tmdbId": "31411",
+          "url": "https://themoviedb.org/movie/31411",
+          "year": 1928
+        },
+        "id": "5683",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Buster Keaton was an American comic actor, filmmaker, producer and writer.  He was best known for his silent films, in which his trademark was physical comedy with a consistently stoic, deadpan expression, earning him the nickname \"The Great Stone Face\". \n\nKeaton was recognized as the seventh-greatest director of all time by Entertainment Weekly.  In 1999, the American Film Institute ranked Keaton the 21st-greatest male star of all time...",
+          "born": {},
+          "bornIn": "Piqua, Kansas, USA",
+          "degree": 39,
+          "died": {},
+          "imdbId": "0000036",
+          "labels": [
+            "Actor",
+            "Director",
+            "Person"
+          ],
+          "name": "Buster Keaton",
+          "numberOfMoviesActedIn": 17,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/kEybBFkO5AX83o3WKyNDfuvfVrn.jpg",
+          "tmdbId": "8635",
+          "url": "https://themoviedb.org/person/8635"
+        },
+        "id": "9848",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0011984",
+          "imdbRating": 7.2,
+          "imdbVotes": 2070,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "83322",
+          "plot": "Buster and his family go on a voyage on his homemade boat that proves to be one disaster after another.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/su82kWmVw5xEo2yBkO4t1TJa4G1.jpg",
+          "released": "1921-11-10",
+          "revenue": 0,
+          "runtime": 23,
+          "title": "Boat, The",
+          "tmdbId": "50704",
+          "url": "https://themoviedb.org/movie/50704",
+          "year": 1921
+        },
+        "id": "7730",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0012570",
+          "imdbRating": 7.8,
+          "imdbVotes": 2610,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "83359",
+          "plot": "After waking up from his wacky dream, a theater stage hand inadvertently causes havoc everywhere he works.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/ktC6esPLRlQqS2Dai8KZXFiQWLR.jpg",
+          "released": "1921-10-06",
+          "revenue": 0,
+          "runtime": 18,
+          "title": "Play House, The",
+          "tmdbId": "51362",
+          "url": "https://themoviedb.org/movie/51362",
+          "year": 1921
+        },
+        "id": "7733",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0012255",
+          "imdbRating": 7,
+          "imdbVotes": 1597,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "83096",
+          "plot": "A bank clerk ends up in a seemingly haunted house that is actually a thieves' hideout.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/8o1ktnormGixPYzyEMvzEgREFQn.jpg",
+          "released": "1921-02-21",
+          "revenue": 0,
+          "runtime": 21,
+          "title": "Haunted House, The",
+          "tmdbId": "51359",
+          "url": "https://themoviedb.org/movie/51359",
+          "year": 1921
+        },
+        "id": "7723",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0017765",
+          "imdbRating": 7.2,
+          "imdbVotes": 3063,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8275",
+          "plot": "To reconcile with his girlfriend, a bookish college student tries to become an athlete.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/dUwk8qNkXb243JViqdVqOvUmiMt.jpg",
+          "released": "1927-11-01",
+          "revenue": 0,
+          "runtime": 66,
+          "title": "College",
+          "tmdbId": "34847",
+          "url": "https://themoviedb.org/movie/34847",
+          "year": 1927
+        },
+        "id": "5401",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0019421",
+          "imdbRating": 8,
+          "imdbVotes": 9091,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25769",
+          "plot": "The effete son of a cantankerous riverboat captain comes to join his father's crew.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/zygJMsmXxeyDc1N67OCZc8xtq4I.jpg",
+          "released": "1928-05-20",
+          "revenue": 0,
+          "runtime": 70,
+          "title": "Steamboat Bill, Jr.",
+          "tmdbId": "25768",
+          "url": "https://themoviedb.org/movie/25768",
+          "year": 1928
+        },
+        "id": "5684",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0013025",
+          "imdbRating": 7.8,
+          "imdbVotes": 3959,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "83411",
+          "plot": "A series of mishaps manages to make a young man get chased by a big city's entire police force.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/uN8b6oQlmsb81G7GepgjPyRDLaO.jpg",
+          "released": "1922-03-01",
+          "revenue": 0,
+          "runtime": 18,
+          "title": "Cops",
+          "tmdbId": "38742",
+          "url": "https://themoviedb.org/movie/38742",
+          "year": 1922
+        },
+        "id": "7736",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0015163",
+          "imdbRating": 8.1,
+          "imdbVotes": 6352,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "7074",
+          "plot": "Two spoiled rich people find themselves trapped on an empty passenger ship.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/Av9JzUEpVw7N1HWrBd2s84oxcS2.jpg",
+          "released": "1924-10-13",
+          "revenue": 0,
+          "runtime": 59,
+          "title": "Navigator, The",
+          "tmdbId": "32318",
+          "url": "https://themoviedb.org/movie/32318",
+          "year": 1924
+        },
+        "id": "4995",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0014341",
+          "imdbRating": 7.9,
+          "imdbVotes": 7026,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8609",
+          "plot": "A man returns to his Appalachian homestead. On the trip, he falls for a young woman. The only problem is her family has vowed to kill every member of his family.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/lQrEfsUrvK7smks2eOOJDf5j9yk.jpg",
+          "released": "1923-11-19",
+          "revenue": 0,
+          "runtime": 65,
+          "title": "Our Hospitality",
+          "tmdbId": "701",
+          "url": "https://themoviedb.org/movie/701",
+          "year": 1923
+        },
+        "id": "5490",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0012543",
+          "imdbRating": 7,
+          "imdbVotes": 1856,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "83361",
+          "plot": "Buster helps a Native American tribe save their land from greedy oil barons.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1E0bHCxwnbnlKHHgpyrnIQNOCCO.jpg",
+          "released": "1922-01-01",
+          "revenue": 0,
+          "runtime": 20,
+          "title": "Paleface, The",
+          "tmdbId": "25770",
+          "url": "https://themoviedb.org/movie/25770",
+          "year": 1922
+        },
+        "id": "7734",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 750000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0017925",
+          "imdbRating": 8.3,
+          "imdbVotes": 50688,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3022",
+          "plot": "When Union spies steal an engineer's beloved locomotive, he pursues it single-handedly and straight through enemy lines.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/s7eE6tv22B1v2OVS92HuFpwUlaz.jpg",
+          "released": "1927-02-24",
+          "revenue": 0,
+          "runtime": 67,
+          "title": "General, The",
+          "tmdbId": "961",
+          "url": "https://themoviedb.org/movie/961",
+          "year": 1926
+        },
+        "id": "2447",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0014538",
+          "imdbRating": 7.2,
+          "imdbVotes": 2765,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "3140",
+          "plot": "The misadventures of Buster in three separate historical periods.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1xWJWo7FeL6KWvHHiXAnNiqUuUp.jpg",
+          "released": "1923-09-24",
+          "revenue": 0,
+          "runtime": 63,
+          "title": "Three Ages",
+          "tmdbId": "32628",
+          "url": "https://themoviedb.org/movie/32628",
+          "year": 1923
+        },
+        "id": "2543",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0015324",
+          "imdbRating": 8.3,
+          "imdbVotes": 20965,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25750",
+          "plot": "A film projectionist longs to be a detective, and puts his meagre skills to work when he is framed by a rival for stealing his girlfriend's father's pocketwatch.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1G9r3rqtbFAQuyWKOZm4Y5J5s7Q.jpg",
+          "released": "1924-04-21",
+          "revenue": 0,
+          "runtime": 45,
+          "title": "Sherlock Jr.",
+          "tmdbId": "992",
+          "url": "https://themoviedb.org/movie/992",
+          "year": 1924
+        },
+        "id": "5678",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0012224",
+          "imdbRating": 7.8,
+          "imdbVotes": 2213,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "83318",
+          "plot": "A series of adventures begins when an accident during photographing causes Buster to be mistaken for Dead Shot Dan, the evil badguy.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/pQ5CNJSJgxnTepojyQXMecoz3HB.jpg",
+          "released": "1921-05-15",
+          "revenue": 0,
+          "runtime": 23,
+          "title": "Goat, The",
+          "tmdbId": "51360",
+          "url": "https://themoviedb.org/movie/51360",
+          "year": 1921
+        },
+        "id": "7729",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0016332",
+          "imdbRating": 8,
+          "imdbVotes": 6030,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3232",
+          "plot": "A man learns he will inherit a fortune if he marries. By 7 p.m. Today.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/8nyRspullFdAesfwhxZwI7kMOHk.jpg",
+          "released": "1925-03-11",
+          "revenue": 0,
+          "runtime": 56,
+          "title": "Seven Chances",
+          "tmdbId": "32600",
+          "url": "https://themoviedb.org/movie/32600",
+          "year": 1925
+        },
+        "id": "2612",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0015863",
+          "imdbRating": 7.3,
+          "imdbVotes": 2421,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3133",
+          "plot": "With little luck at keeping a job in the city a New Yorker tries work in the country and eventually finds his way leading a herd of cattle to the West Coast.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/chZ6GbfTIKgD6nYmUKZScDAnIo8.jpg",
+          "released": "1925-11-01",
+          "revenue": 0,
+          "runtime": 68,
+          "title": "Go West",
+          "tmdbId": "33015",
+          "url": "https://themoviedb.org/movie/33015",
+          "year": 1925
+        },
+        "id": "2538",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "countries": [
+            "UK"
+          ],
+          "degree": 0,
+          "imdbId": "0172202",
+          "imdbRating": 8.9,
+          "imdbVotes": 389,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "80599",
+          "plot": "A series about the life, career and works of the movie comedy genius.",
+          "released": "1987-09-30",
+          "runtime": 160,
+          "title": "Buster Keaton: A Hard Act to Follow",
+          "tmdbId": "59572",
+          "url": "https://themoviedb.org/movie/59572",
+          "year": 1987
+        },
+        "id": "7646",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA",
+            " UK"
+          ],
+          "degree": 0,
+          "imdbId": "0060438",
+          "imdbRating": 7,
+          "imdbVotes": 6621,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8796",
+          "plot": "A wily slave must unite a virgin courtesan and his young smitten master to earn his freedom.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/Av4uAxlFz0BDKHJA6b01DQI6guJ.jpg",
+          "released": "1966-10-16",
+          "revenue": 0,
+          "runtime": 99,
+          "title": "Funny Thing Happened on the Way to the Forum, A",
+          "tmdbId": "17768",
+          "url": "https://themoviedb.org/movie/17768",
+          "year": 1966
+        },
+        "id": "5561",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0023322",
+          "imdbRating": 6,
+          "imdbVotes": 276,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "123663",
+          "plot": "To make her lover jealous, a beautiful socialite passes off a bumbling plumber as her paramour.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/l2o3tdssrm4riHFE3Udh1KIZw3T.jpg",
+          "released": "1932-02-06",
+          "revenue": 0,
+          "runtime": 73,
+          "title": "The Passionate Plumber",
+          "tmdbId": "53575",
+          "url": "https://themoviedb.org/movie/53575",
+          "year": 1932
+        },
+        "id": "8813",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Virginia Fox was born in Wheeling, West Virginia (though her grave erroneously  lists Charleston, W. Va.  as her place of birth), the daughter of Marie  (née Oglseby) and Frederick Fox.  While on vacation from boarding school, Fox traveled to visit a  friend in Los Angeles.  The two made a casual stop by the studio of Mack Sennett,  where she was hired on the spot and made a bathing beauty in the  studio's films...",
+          "born": {},
+          "bornIn": "Wheeling - West Virginia - United States",
+          "degree": 10,
+          "died": {},
+          "imdbId": "0289295",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Virginia Fox",
+          "numberOfMoviesActedIn": 5,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/aQg7RIenVSUmLgWQJFjgqEj4ycM.jpg",
+          "tmdbId": "121146",
+          "url": "https://themoviedb.org/person/121146"
+        },
+        "id": "9849",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "\"Big Joe\" Roberts, as he was known in vaudeville, toured the country with his first wife, Lillian Stuart Roberts as part of a rowdy act known as Roberts, Hays, and Roberts.  Their signature routine was called \"The Cowboy, the Swell and the Lady. \" At this time, in the first decade of the twentieth century, Buster Keaton's father, Joe Keaton, had started a summer Actors' Colony for vaudevillians between Lake Michigan and Muskegon Lake in Michigan...",
+          "born": {},
+          "bornIn": "Albany, New York, USA",
+          "degree": 16,
+          "died": {},
+          "imdbId": "0731247",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Joe Roberts",
+          "numberOfMoviesActedIn": 6,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/dqwp5M1pYiPreQFjkXTXTmf3I5c.jpg",
+          "tmdbId": "10525",
+          "url": "https://themoviedb.org/person/10525"
+        },
+        "id": "9850",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Los Angeles, California, USA",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0820461",
+          "labels": [
+            "Actor",
+            "Director",
+            "Person"
+          ],
+          "name": "Malcolm St. Clair",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/eeTYVC0RKAZzhylzNbX1MuXF4TB.jpg",
+          "tmdbId": "143998",
+          "url": "https://themoviedb.org/person/143998"
+        },
+        "id": "9851",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "degree": 23,
+          "labels": [
+            "Actor",
+            "Director",
+            "Person"
+          ],
+          "name": "Edward F. Cline",
+          "numberOfMoviesActedIn": 4,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/6lNCZC7XJCXcaw3dhVYX6MxIvLf.jpg",
+          "tmdbId": "13953",
+          "url": "https://themoviedb.org/person/13953"
+        },
+        "id": "9852",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0032828",
+          "imdbRating": 7,
+          "imdbVotes": 1957,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8522",
+          "plot": "Rightly suspected of illicit relations with the Masked Bandit, Flower Belle Lee is run out of Little Bend. On the train she meets con man Cuthbert J. Twillie and pretends to marry him for ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bB0ewfiQCrtpdRTd5DQs3cLSigg.jpg",
+          "released": "1940-03-15",
+          "revenue": 0,
+          "runtime": 83,
+          "title": "My Little Chickadee",
+          "tmdbId": "29353",
+          "url": "https://themoviedb.org/movie/29353",
+          "year": 1940
+        },
+        "id": "5458",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0032234",
+          "imdbRating": 7.4,
+          "imdbVotes": 5168,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3929",
+          "plot": "Henpecked Egbert Sousè has comic adventures as a substitute film director and unlikely bank guard.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/3XrqHTrJpTaUeyqXqb4fVacYWpf.jpg",
+          "released": "1940-11-29",
+          "revenue": 0,
+          "runtime": 72,
+          "title": "Bank Dick, The",
+          "tmdbId": "911",
+          "url": "https://themoviedb.org/movie/911",
+          "year": 1940
+        },
+        "id": "3159",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0033945",
+          "imdbRating": 7.5,
+          "imdbVotes": 1561,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25874",
+          "plot": "Fields wants to sell a film story to Esoteric Studios. On the way he gets insulted by little boys, beat up for ogling a woman, and abused by a waitress. He becomes his niece's guardian when...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bLDqpEDMUlkarmyEbyOaoxJ5OoU.jpg",
+          "released": "1941-10-10",
+          "revenue": 0,
+          "runtime": 71,
+          "title": "Never Give a Sucker an Even Break",
+          "tmdbId": "28789",
+          "url": "https://themoviedb.org/movie/28789",
+          "year": 1941
+        },
+        "id": "5707",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Wichita County, Texas, USA",
+          "degree": 3,
+          "died": {},
+          "imdbId": "0588033",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Carl Miller",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "63378",
+          "url": "https://themoviedb.org/person/63378"
+        },
+        "id": "9853",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0063591",
+          "imdbRating": 6.3,
+          "imdbVotes": 1682,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "6826",
+          "plot": "Jesse W. Haywood graduates from dental school in Philadelphia in 1870 and goes west to fight oral ignorance. Meanwhile stagecoach robber Penelope Bad Penny Cushing is offered a pardon ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/qEgG8odMSIUcSMjmqFUe8YUXp9x.jpg",
+          "released": "1968-07-10",
+          "revenue": 0,
+          "runtime": 101,
+          "title": "Shakiest Gun in the West, The",
+          "tmdbId": "20238",
+          "url": "https://themoviedb.org/movie/20238",
+          "year": 1968
+        },
+        "id": "4851",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia. \n\nJohn Leslie Coogan (October 26, 1914 – March 1, 1984), known professionally as Jackie Coogan, was an American actor who began his movie career as a child actor in silent films.  Many years later, he became known as Uncle Fester on 1960s sitcom The Addams Family.  In the interim, he sued his mother and stepfather over his squandered film earnings and provoked California to enact the first known legal protection for the earnings of child performers...",
+          "born": {},
+          "bornIn": "Los Angeles, California, USA",
+          "degree": 7,
+          "died": {},
+          "imdbId": "0001067",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Jackie Coogan",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/l9wiXgf7kLiuxgArVVeOqgPYHrm.jpg",
+          "tmdbId": "19426",
+          "url": "https://themoviedb.org/person/19426"
+        },
+        "id": "9854",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 1300000,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0017136",
+          "imdbRating": 8.3,
+          "imdbVotes": 107238,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "German"
+          ],
+          "movieId": "2010",
+          "plot": "In a futuristic city sharply divided between the working class and the city planners, the son of the city's mastermind falls in love with a working class prophet who predicts the coming of a savior to mediate their differences.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/hUK9rewffKGqtXynH5SW3v9hzcu.jpg",
+          "released": "1927-03-13",
+          "revenue": 650422,
+          "runtime": 153,
+          "title": "Metropolis",
+          "tmdbId": "19",
+          "url": "https://themoviedb.org/movie/19",
+          "year": 1927
+        },
+        "id": "1591",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nFriedrich Rudolf Klein-Rogge (24 November 1885 – 29 May 1955) was a German film actor.  Klein-Rogge is known for playing sinister figures in films in the 1920s and 1930s as well as being a mainstay in director Fritz Lang's Weimar-era films.  He is probably best known in popular culture, particularly to English-speaking audiences, for playing the archetypal mad scientist role of C.  A.  Rotwang in Lang's Metropolis and as the criminal genius Doctor Mabuse...",
+          "born": {},
+          "bornIn": "Cologne, Germany",
+          "degree": 13,
+          "died": {},
+          "imdbId": "0459030",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Rudolf Klein-Rogge",
+          "numberOfMoviesActedIn": 3,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/ua4GhFTM7uQqlM0RnSXEZ5v1kVB.jpg",
+          "tmdbId": "77",
+          "url": "https://themoviedb.org/person/77"
+        },
+        "id": "9856",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0023563",
+          "imdbRating": 7.9,
+          "imdbVotes": 8378,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "German"
+          ],
+          "movieId": "8670",
+          "plot": "A new crime wave grips the city and all clues seem to lead to the nefarious Dr. Mabuse, even though he has been imprisoned in a mental asylum for nearly a decade.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/tc2ET7j6X066VCjdHblSwLr8sEz.jpg",
+          "revenue": 27690,
+          "runtime": 122,
+          "title": "Testament of Dr. Mabuse, The (Das Testament des Dr. Mabuse)",
+          "tmdbId": "12206",
+          "url": "https://themoviedb.org/movie/12206",
+          "year": 1933
+        },
+        "id": "5520",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0013086",
+          "imdbRating": 7.9,
+          "imdbVotes": 4974,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "German"
+          ],
+          "movieId": "4768",
+          "plot": "Arch-criminal Dr. Mabuse sets out to make a fortune and run Berlin. Detective Wenk sets out to stop him.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/r5lKQ2p0t1AbQx2ncbFpBggTN9P.jpg",
+          "released": "1923-05-01",
+          "revenue": 0,
+          "runtime": 242,
+          "title": "Dr. Mabuse: The Gambler (Dr. Mabuse, der Spieler)",
+          "tmdbId": "5998",
+          "url": "https://themoviedb.org/movie/5998",
+          "year": 1922
+        },
+        "id": "3755",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Aud Egede-Nissen was a Norwegian stage and screen actress, and producer.   She made her acting debut on the Norwegian stage in 1911, appearing next in Norwegian director Bjørn Bjørnson's 1913 film \"Scenens børn\".  She first moved to Denmark and later Bjørn Bjørnson invited her to Berlin, where there were opportunities in the rapidly expanding film industry...",
+          "born": {},
+          "bornIn": "Bergen, Norway",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0250790",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Aud Egede-Nissen",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/271xabIyKpp8R0mjRRD6eZkfqjn.jpg",
+          "tmdbId": "28988",
+          "url": "https://themoviedb.org/person/28988"
+        },
+        "id": "9857",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Gertrude Welcker was a German stage ans screen actress.  From 1916 to 1919 she performed in Max Reinhardt theaters, Deutsches Theater Berlin, Kammerspiele, and Volksbühne.  She made her film debut in \"Hans Trutz in the Land of Plenty\" in 1917.  She ended her film career after 64 features in 1925.  She stayed on a couple of years in the theatre.  In 1941 she became a Red Cross nurse ans escaped to Sweden as Gertud Carlsund...",
+          "born": {},
+          "bornIn": "Dresden, Saxony, Germany",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0919684",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Gertrude Welcker",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/hyTUoxHZrdGY3C2hv3qS4gfF4at.jpg",
+          "tmdbId": "47169",
+          "url": "https://themoviedb.org/person/47169"
+        },
+        "id": "9858",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nAlfred Peter Abel (12 March 1879 – 12 December 1937) was a German film actor, director, and producer.  He appeared in more than 140 silent and sound films between 1913 and 1938.  His best-known performance was as Joh Fredersen in Fritz Lang's 1927 film, Metropolis...",
+          "born": {},
+          "bornIn": "Leipzig, Germany",
+          "degree": 8,
+          "died": {},
+          "imdbId": "0002154",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Alfred Abel",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/elRbE3CTs41tFKjP05uGVXt4Bxt.jpg",
+          "tmdbId": "73",
+          "url": "https://themoviedb.org/person/73"
+        },
+        "id": "9859",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Sweden"
+          ],
+          "degree": 0,
+          "imdbId": "0013257",
+          "imdbRating": 7.7,
+          "imdbVotes": 7540,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "Swedish",
+            " Danish"
+          ],
+          "movieId": "25744",
+          "plot": "Fictionalized documentary showing the evolution of witchcraft, from its pagan roots to its confusion with hysteria in modern Europe.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/v53aFWdXYwZJCiblIsC0ZqiS90r.jpg",
+          "released": "1929-05-27",
+          "revenue": 0,
+          "runtime": 91,
+          "title": "Haxan: Witchcraft Through the Ages (a.k.a. The Witches)",
+          "tmdbId": "57283",
+          "url": "https://themoviedb.org/movie/57283",
+          "year": 1922
+        },
+        "id": "5677",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "imdbId": "0669922",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Maren Pedersen",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "89675",
+          "url": "https://themoviedb.org/person/89675"
+        },
+        "id": "9860",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nClara Pontoppidan also known as Clara Wieth (April 23, 1883 – January 22, 1975) was a Danish actress.  She worked in Swedish and Danish silent films, including A Victim of the Mormons (Denmark, 1911). \n\nDescription above from the Wikipedia article Clara Pontoppidan, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Copenhagen, Denmark",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0690702",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Clara Pontoppidan",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/k5yBFjxpOQCtTKG3UF9pkOKBEF.jpg",
+          "tmdbId": "89676",
+          "url": "https://themoviedb.org/person/89676"
+        },
+        "id": "9861",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nViggo Elith William Pio (3 July 1887 - 10 February 1983) was a Danish actor of stage, screen, radio and television.  He is most noted for starring roles in films such as Carl Theodor Dreyer's Leaves from Satan's Book, Johan Jacobsen's Jenny and the Soldier and Benjamin Christensen's Häxan. \n\nDescription above from the Wikipedia article Elith Pio, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Copenhagen, Denmark",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0684773",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Elith Pio",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/uRns9P8BrjGyb3CI8Sbclp8aWWc.jpg",
+          "tmdbId": "89677",
+          "url": "https://themoviedb.org/person/89677"
+        },
+        "id": "9862",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nPeter Oscar Stribolt (12 February 1872 – 20 May 1927) was a Danish stage and film actor of the silent era in Denmark.  He worked prolifically under director Lau Lauritzen Sr. \n\nDescription above from the Wikipedia article Oscar Stribolt, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Copenhagen, Denmark",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0834325",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Oscar Stribolt",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "89678",
+          "url": "https://themoviedb.org/person/89678"
+        },
+        "id": "9863",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 53000,
+          "countries": [
+            "USA",
+            " France"
+          ],
+          "degree": 0,
+          "imdbId": "0013427",
+          "imdbRating": 7.8,
+          "imdbVotes": 7349,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "44587",
+          "plot": "In this silent predecessor to the modern documentary, film-maker Robert J. Flaherty spends one year following the lives of Nanook and his family, Inuit living in the Arctic Circle.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/9WAboi1QbKu41WkyGxQVNpXwwxx.jpg",
+          "released": "1922-06-11",
+          "revenue": 0,
+          "runtime": 79,
+          "title": "Nanook of the North",
+          "tmdbId": "669",
+          "url": "https://themoviedb.org/movie/669",
+          "year": 1922
+        },
+        "id": "6416",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "imdbId": "1354245",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Allakariallak",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "10094",
+          "url": "https://themoviedb.org/person/10094"
+        },
+        "id": "9864",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "imdbId": "0638725",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Nyla",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "10095",
+          "url": "https://themoviedb.org/person/10095"
+        },
+        "id": "9865",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "imdbId": "0020170",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Allee",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "10097",
+          "url": "https://themoviedb.org/person/10097"
+        },
+        "id": "9866",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "imdbId": "0192066",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Cunayou",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "10096",
+          "url": "https://themoviedb.org/person/10096"
+        },
+        "id": "9867",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0013442",
+          "imdbRating": 8,
+          "imdbVotes": 66098,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "German"
+          ],
+          "movieId": "1348",
+          "plot": "Vampire Count Orlok expresses interest in a new residence and real estate agent Hutter's wife.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/lsG4UFjL8SGKaH0Nz8vgFVJGifM.jpg",
+          "released": "1929-06-03",
+          "revenue": 0,
+          "runtime": 81,
+          "title": "Nosferatu (Nosferatu, eine Symphonie des Grauens)",
+          "tmdbId": "653",
+          "url": "https://themoviedb.org/movie/653",
+          "year": 1922
+        },
+        "id": "1111",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nFriedrich Gustav Max Schreck (6 September 1879 – 20 February 1936) was a German actor.  He is most often remembered today for his lead role in the film Nosferatu (1922). \n\nDescription above from the Wikipedia article Max Schreck, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Berlin, Germany",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0775180",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Max Schreck",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/uKVNFFt6VA8R7pp7HIPJF4e5PfX.jpg",
+          "tmdbId": "9839",
+          "url": "https://themoviedb.org/person/9839"
+        },
+        "id": "9868",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nGustav von Wangenheim (February 18, 1895 – August 5, 1975) was a German actor, screenwriter and director. \n\nDescription above from the Wikipedia article Gustav von Wangenheim, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Wiesbaden, Germany",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0903194",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Gustav von Wangenheim",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/5BQ07rsNY9z3IoN6sdwipoFoNWV.jpg",
+          "tmdbId": "9840",
+          "url": "https://themoviedb.org/person/9840"
+        },
+        "id": "9869",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nGreta Schröder (7 September 1891 – 13 April 1967) was a German actress.  She is best known for the role of Thomas Hutter's wife and victim to Count Orlok in the 1922 silent film Nosferatu.  In the fictionalized 2000 film, Shadow of the Vampire, she is portrayed as having been a famous actress during the making of Nosferatu, but in fact she was little known...",
+          "born": {},
+          "bornIn": "Düsseldorf, Germany",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0775659",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Greta Schröder",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/vkwD2LVM2QRD2a6auvq1K6Zpwd0.jpg",
+          "tmdbId": "9841",
+          "url": "https://themoviedb.org/person/9841"
+        },
+        "id": "9870",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Tschifu (now Yantai), China",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0774114",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Georg H. Schnell",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1uTps71tiRThDbvNqnyrCcH7IfM.jpg",
+          "tmdbId": "9843",
+          "url": "https://themoviedb.org/person/9843"
+        },
+        "id": "9871",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0024663",
+          "imdbRating": 5.5,
+          "imdbVotes": 276,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "71102",
+          "plot": "Tom Wayne rescues Clancy, Renard and Schmidt in the Arabian desert and they join him in going after El Shaitan, a bad guy who is never seen as he tries to wipe out the Foreign Legion.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/5JwT3JSWSyLushaIZzjDcGeMvUF.jpg",
+          "released": "1933-04-07",
+          "revenue": 0,
+          "runtime": 210,
+          "title": "Three Musketeers, The",
+          "tmdbId": "140887",
+          "url": "https://themoviedb.org/movie/140887",
+          "year": 1933
+        },
+        "id": "7334",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "degree": 10,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Ralph Bushman",
+          "numberOfMoviesActedIn": 2,
+          "tmdbId": "1670560",
+          "url": "https://themoviedb.org/person/1670560"
+        },
+        "id": "9873",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "imdbId": "0911469",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Craig Ward",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "10528",
+          "url": "https://themoviedb.org/person/10528"
+        },
+        "id": "9874",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Los Angeles, California, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0172560",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Monte Collins",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "1832030",
+          "url": "https://themoviedb.org/person/1832030"
+        },
+        "id": "9875",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "degree": 7,
+          "died": {},
+          "imdbId": "0205192",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Mildred Davis",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/vkWEUDIbRVqjn5Pfvqc8IMpYvdj.jpg",
+          "tmdbId": "88954",
+          "url": "https://themoviedb.org/person/88954"
+        },
+        "id": "9876",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 7,
+          "imdbId": "0835128",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Bill Strother",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/amRNvJPM3GeGG6CseYG9LxlmQjE.jpg",
+          "tmdbId": "148377",
+          "url": "https://themoviedb.org/person/148377"
+        },
+        "id": "9877",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "North Park, Colorado, USA",
+          "degree": 7,
+          "died": {},
+          "imdbId": "0949927",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Noah Young",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/xReuE153sUJASBj0h6kPQb2qbbm.jpg",
+          "tmdbId": "88958",
+          "url": "https://themoviedb.org/person/88958"
+        },
+        "id": "9878",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 4,
+          "imdbId": "0494993",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Margaret Leahy",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "144005",
+          "url": "https://themoviedb.org/person/144005"
+        },
+        "id": "9879",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 700000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0022958",
+          "imdbRating": 7.6,
+          "imdbVotes": 12527,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Russian"
+          ],
+          "movieId": "1929",
+          "plot": "A group of very different individuals staying at a luxurious hotel in Berlin deal with each of their respective dramas.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/2j7dxqIlGHdTaaUW9s4Z5zfp9qS.jpg",
+          "released": "1932-09-11",
+          "revenue": 2594000,
+          "runtime": 112,
+          "title": "Grand Hotel",
+          "tmdbId": "33680",
+          "url": "https://themoviedb.org/movie/33680",
+          "year": 1932
+        },
+        "id": "1511",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia\n\nWallace Fitzgerald Beery (April 1, 1885 – April 15, 1949) was an American actor.  He is best known for his portrayal of Bill in Min and Bill opposite Marie Dressler, his titular role in a series of films featuring the character Sweedie, and his titular role in The Champ, for which he won the Academy Award for Best Actor.  Beery appeared in some 250 movies over a 36-year span...",
+          "born": {},
+          "bornIn": "Kansas City, Missouri, USA",
+          "degree": 14,
+          "died": {},
+          "imdbId": "0000891",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Wallace Beery",
+          "numberOfMoviesActedIn": 4,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/b7qE3s332Wu7YcOzjBYT118UOXN.jpg",
+          "tmdbId": "29260",
+          "url": "https://themoviedb.org/person/29260"
+        },
+        "id": "9880",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 435000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0023948",
+          "imdbRating": 7.8,
+          "imdbVotes": 5728,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25795",
+          "plot": "Affluent Millicent and Oliver Jordan throw a dinner for a handful of wealthy and/or well-born acquaintances, each of whom has much to reveal.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/p9V2dIMqC1g1S9bDgvxqUOJDfp6.jpg",
+          "released": "1934-01-12",
+          "revenue": 2156000,
+          "runtime": 111,
+          "title": "Dinner at Eight",
+          "tmdbId": "39130",
+          "url": "https://themoviedb.org/movie/39130",
+          "year": 1933
+        },
+        "id": "5691",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0016039",
+          "imdbRating": 7.1,
+          "imdbVotes": 3252,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "4277",
+          "plot": "The first film adaptation of Sir Arthur Conan Doyle's classic novel about a land where prehistoric creatures still roam.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/411VnWtYJdEFKiaGqJOeTmBv8th.jpg",
+          "released": "1925-06-22",
+          "revenue": 0,
+          "runtime": 106,
+          "title": "Lost World, The",
+          "tmdbId": "2981",
+          "url": "https://themoviedb.org/movie/2981",
+          "year": 1925
+        },
+        "id": "3418",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0016847",
+          "imdbRating": 8.1,
+          "imdbVotes": 10137,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "German"
+          ],
+          "movieId": "4404",
+          "plot": "The demon Mephisto wagers with God that he can corrupt a mortal man's soul.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/y2zle61QtznvwqnnQcYxXypDZAq.jpg",
+          "released": "1926-12-06",
+          "revenue": 0,
+          "runtime": 85,
+          "title": "Faust",
+          "tmdbId": "10728",
+          "url": "https://themoviedb.org/movie/10728",
+          "year": 1926
+        },
+        "id": "3503",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Emil Jannings (1884–1950) was a German actor.  He was the first actor to win the Academy Award for Best Actor...",
+          "born": {},
+          "bornIn": "Rorschach, Switzerland",
+          "degree": 13,
+          "died": {},
+          "imdbId": "0417837",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Emil Jannings",
+          "numberOfMoviesActedIn": 3,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/yX7AFfYgYit6WlPshockLsP40LB.jpg",
+          "tmdbId": "2895",
+          "url": "https://themoviedb.org/person/2895"
+        },
+        "id": "9881",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0020697",
+          "imdbRating": 7.8,
+          "imdbVotes": 10087,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "German",
+            " English",
+            " French"
+          ],
+          "movieId": "4970",
+          "plot": "An elderly professor's ordered life spins dangerously out of control when he falls for a nightclub singer.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/uwZE9GHXWiZE9fZt207tvr17fDn.jpg",
+          "released": "1931-01-03",
+          "revenue": 0,
+          "runtime": 124,
+          "title": "Blue Angel, The (Blaue Engel, Der)",
+          "tmdbId": "228",
+          "url": "https://themoviedb.org/movie/228",
+          "year": 1930
+        },
+        "id": "3872",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0015064",
+          "imdbRating": 8.1,
+          "imdbVotes": 8731,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "4405",
+          "plot": "An aging doorman, after being fired from his prestigious job at a luxurious Hotel is forced to face the scorn of his friends, neighbours and society.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/gl4Ux6RH0X5q1RHhu4fAj8Vdrrt.jpg",
+          "released": "1925-01-05",
+          "revenue": 0,
+          "runtime": 90,
+          "title": "Last Laugh, The (Letzte Mann, Der)",
+          "tmdbId": "5991",
+          "url": "https://themoviedb.org/movie/5991",
+          "year": 1924
+        },
+        "id": "3504",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Hamburg, Germany",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0217848",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Maly Delschaft",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/m1xP591e4pee4gnLMRq58M5l4Va.jpg",
+          "tmdbId": "35420",
+          "url": "https://themoviedb.org/person/35420"
+        },
+        "id": "9882",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Berlin, Germany",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0384897",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Max Hiller",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "47029",
+          "url": "https://themoviedb.org/person/47029"
+        },
+        "id": "9883",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Troppau, Silesia, Austria-Hungary [now Opava, Czech Republic]",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0476130",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Emilie Kurz",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/aTco2ojDUT5in2GRhagnzTDSyTc.jpg",
+          "tmdbId": "47032",
+          "url": "https://themoviedb.org/person/47032"
+        },
+        "id": "9884",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nKathryn McGuire (December 6, 1903 – October 10, 1978) was an American silent-film actress and dancer. \n\nDescription above from the Wikipedia article Kathryn McGuire, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Peoria, Illinois, U.S.",
+          "degree": 7,
+          "died": {},
+          "imdbId": "0570230",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Kathryn McGuire",
+          "numberOfMoviesActedIn": 2,
+          "tmdbId": "14920",
+          "url": "https://themoviedb.org/person/14920"
+        },
+        "id": "9885",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nFrederick Vroom (11 November 1857 – 24 June 1942) was a Canadian actor of the silent era.  He appeared in 70 films between 1912 and 1939. \n\nHe was born in Nova Scotia, Canada and died in Hollywood, California from a heart attack. \n\nDescription above from the Wikipedia article Frederick Vroom, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Nova Scotia, Canada",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0904143",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Frederick Vroom",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/atQMQI84MyYYICd6nGtcvbwhVD9.jpg",
+          "tmdbId": "14421",
+          "url": "https://themoviedb.org/person/14421"
+        },
+        "id": "9886",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "degree": 3,
+          "died": {},
+          "imdbId": "0444172",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Joe Keaton",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/jCPa5FUv7izUmOekWPPd5bQJ8kh.jpg",
+          "tmdbId": "10530",
+          "url": "https://themoviedb.org/person/10530"
+        },
+        "id": "9887",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 3,
+          "died": {},
+          "imdbId": "0175068",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Erwin Connelly",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "14921",
+          "url": "https://themoviedb.org/person/14921"
+        },
+        "id": "9888",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 1135654,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0015400",
+          "imdbRating": 7.9,
+          "imdbVotes": 3954,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "7302",
+          "plot": "A recalcitrant thief vies with a duplicitous Mongol ruler for the hand of a beautiful princess.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/a6IzXkwZRDimfn8HATzP6Pi6Ois.jpg",
+          "released": "1924-03-23",
+          "revenue": 1213880,
+          "runtime": 155,
+          "title": "Thief of Bagdad, The",
+          "tmdbId": "28963",
+          "url": "https://themoviedb.org/movie/28963",
+          "year": 1924
+        },
+        "id": "5114",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Douglas Fairbanks, Sr.  (May 23, 1883 – December 12, 1939) was an American actor, screenwriter, director and producer.  He was best known for his swashbuckling roles in silent films such as The Thief of Bagdad, Robin Hood, and The Mark of Zorro.  An astute businessman, Fairbanks was a founding member of United Artists.  Fairbanks was also a founding member of The Motion Picture Academy and hosted the first Oscars Ceremony in 1929...",
+          "born": {},
+          "bornIn": "Denver, Colorado, United States",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0001196",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Douglas Fairbanks",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/eAT0WkRYA9DXtTmcbhvhhMrQcZa.jpg",
+          "tmdbId": "109088",
+          "url": "https://themoviedb.org/person/109088"
+        },
+        "id": "9889",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Snitz Edwards was a noted character actor, in films from 1915 to 1931...",
+          "born": {},
+          "bornIn": "Budapest, Austria-Hungary [now Hungary]",
+          "degree": 13,
+          "died": {},
+          "imdbId": "0250366",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Snitz Edwards",
+          "numberOfMoviesActedIn": 3,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/jBtTVS1Ve1tnwVKKYQQyWcwjmNk.jpg",
+          "tmdbId": "14488",
+          "url": "https://themoviedb.org/person/14488"
+        },
+        "id": "9890",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "San Francisco, California, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0067634",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Charles Belcher",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "108104",
+          "url": "https://themoviedb.org/person/108104"
+        },
+        "id": "9891",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nJulanne Johnston (May 1, 1900 - December 26, 1988) was an American silent film actress born in Indianapolis, Indiana. \n\nJohnston is known for being on William Randolph Hearst's yacht The Oneida during the weekend in November 1924 when film director and producer Thomas Ince later died of heart failure.  She was also the female lead in the Douglas Fairbanks film The Thief of Bagdad, with Anna May Wong, that same year...",
+          "born": {},
+          "bornIn": "Indianapolis, Indiana, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0426710",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Julanne Johnston",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/5CJdV1WKw9E0mPs8hWeC2bYV9m9.jpg",
+          "tmdbId": "29981",
+          "url": "https://themoviedb.org/person/29981"
+        },
+        "id": "9892",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Soviet Union"
+          ],
+          "degree": 0,
+          "imdbId": "0015648",
+          "imdbRating": 8,
+          "imdbVotes": 38796,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "Russian"
+          ],
+          "movieId": "3742",
+          "plot": "A dramatized account of a great Russian naval mutiny and a resulting street demonstration which brought on a police massacre.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/hZmsRLsCnE9Zshf1YJONUpCOhds.jpg",
+          "released": "1925-12-24",
+          "revenue": 45100,
+          "runtime": 66,
+          "title": "Battleship Potemkin",
+          "tmdbId": "643",
+          "url": "https://themoviedb.org/movie/643",
+          "year": 1925
+        },
+        "id": "3013",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nAleksandr Pavlovich Antonov (1898 – 1962) was a Russian film actor who had a lengthy career, stretching from the silent era to the 1950s. \n\nHis best known role was as Grigory Vakulinchuk in Sergei Eisenstein's film The Battleship Potemkin.  He also had a part in another Eisenstein film, Strike. \n\nDescription above from the Wikipedia article Aleksandr Pavlovich Antonov, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Moscow, Russian Empire",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0031446",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Aleksandr Antonov",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/np04jLrwpAR0V7a1MNMyNtYncQ9.jpg",
+          "tmdbId": "9609",
+          "url": "https://themoviedb.org/person/9609"
+        },
+        "id": "9893",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Vladimir Grigorievich Barsky (1866 - January 24, 1936) - Russian Soviet director, screenwriter and actor; author of articles on theater issues. \n\nHe took part in the development of Turkmen and Uzbek cinematography.  He graduated from the Moscow Real School (1885) and the Imperial Moscow Technical School. \n\nFrom 1892 - director and actor of a number of theaters, in 1899–1917 he worked as a director and actor of the drama theater in Ivanovo-Voznesensk, in 1917–1921 - at the National House in Tiflis...",
+          "born": {},
+          "bornIn": "Russian Empire",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0058290",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Vladimir Barsky",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/oVJqWwAPy5LQz2luSsRkkUZtjcm.jpg",
+          "tmdbId": "9610",
+          "url": "https://themoviedb.org/person/9610"
+        },
+        "id": "9894",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Grigori Vasilyevich Aleksandrov or Alexandrov (original family name was Mormonenko; 23 January 1903 - 16 December 1983) was a prominent Soviet film director who was named a People's Artist of the USSR in 1947 and a Hero of Socialist Labor in 1973.  He was awarded the Stalin Prizes for 1941 and 1950...",
+          "born": {},
+          "bornIn": "Yekaterinburg, Russian Empire",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0017893",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Grigori Aleksandrov",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/gY3az71QDIwBrl2POLb2tvaKkrg.jpg",
+          "tmdbId": "9607",
+          "url": "https://themoviedb.org/person/9607"
+        },
+        "id": "9895",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Moscow, Russian Empire [now Russia]",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0090434",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Ivan Bobrov",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/yCHbMMtSGOYzn5O7FfaTncYsSBw.jpg",
+          "tmdbId": "9611",
+          "url": "https://themoviedb.org/person/9611"
+        },
+        "id": "9896",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Jobyna Ralston (born Jobyna Lancaster Raulston, November 21, 1899 – January 22, 1967) was an American stage and film actress.  She had a featured role in the first Oscar-winning film, Wings in 1927, but is perhaps best remembered today for her on-screen chemistry with Harold Lloyd, with whom she appeared in seven movies...",
+          "born": {},
+          "bornIn": "South Pittsburg, Tennessee, USA",
+          "degree": 13,
+          "died": {},
+          "imdbId": "0707814",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Jobyna Ralston",
+          "numberOfMoviesActedIn": 3,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/tIPbxqkszkjOHc1VZVzONEWHtLu.jpg",
+          "tmdbId": "102501",
+          "url": "https://themoviedb.org/person/102501"
+        },
+        "id": "9897",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 2000000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0018578",
+          "imdbRating": 7.8,
+          "imdbVotes": 7685,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "1925",
+          "plot": "Two young men, one rich, one middle class, who are in love with the same woman, become fighter pilots in World War I.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/a5z7gCR1xLikOJK3WYXIoXoo9Xi.jpg",
+          "released": "1929-01-05",
+          "revenue": 0,
+          "runtime": 144,
+          "title": "Wings",
+          "tmdbId": "28966",
+          "url": "https://themoviedb.org/movie/28966",
+          "year": 1927
+        },
+        "id": "1507",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 7,
+          "died": {},
+          "imdbId": "0070757",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Brooks Benedict",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/l3Bw5oBij94yG0QSO45inFnySRZ.jpg",
+          "tmdbId": "115995",
+          "url": "https://themoviedb.org/person/115995"
+        },
+        "id": "9898",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 7,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "James Anderson",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "1759857",
+          "url": "https://themoviedb.org/person/1759857"
+        },
+        "id": "9899",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Conneautville, Pennsylvania, USA",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0874124",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Howard Truesdale",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "144016",
+          "url": "https://themoviedb.org/person/144016"
+        },
+        "id": "9900",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "bornIn": "Covington, Kentucky, USA",
+          "degree": 4,
+          "imdbId": "0616762",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Kathleen Myers",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "144017",
+          "url": "https://themoviedb.org/person/144017"
+        },
+        "id": "9901",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0860617",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Ray Thompson",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "144018",
+          "url": "https://themoviedb.org/person/144018"
+        },
+        "id": "9902",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 4,
+          "imdbId": "0264146",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Brown Eyes",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "1364095",
+          "url": "https://themoviedb.org/person/1364095"
+        },
+        "id": "9903",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nMack Swain (born Moroni Swain, February 16, 1876 – August 25, 1935) was an early American film actor, who appeared in many of Mack Sennett's comedies at Keystone Studios, including the Keystone Cops series.  He also appeared in major features by Charlie Chaplin. \n\nIn the early 1900s Swain had his own stock theater company, which performed in the western and midwestern United States...",
+          "born": {},
+          "bornIn": "Salt Lake City, Utah, USA",
+          "degree": 3,
+          "died": {},
+          "imdbId": "0841501",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Mack Swain",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/yoxashVRv3PBTiispOboUjIZJy2.jpg",
+          "tmdbId": "14435",
+          "url": "https://themoviedb.org/person/14435"
+        },
+        "id": "9904",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia\n\nTom Murray (September 8, 1874 – August 27, 1935) was an American film actor.  He appeared in thirteen films between 1922 and 1931.  Born in Stonefort, Illinois and died in Hollywood, California of a heart attack. \n\nDescription above from the Wikipedia article Tom Murray (actor), licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Stonefort, Illinois, United States",
+          "degree": 3,
+          "died": {},
+          "imdbId": "0615306",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Tom Murray",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/p80JeuEZeSrRpfmIYH47ARG47C4.jpg",
+          "tmdbId": "14437",
+          "url": "https://themoviedb.org/person/14437"
+        },
+        "id": "9905",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Henry Bergman (February 23, 1868 – October 22, 1946) was an American actor of stage and film, known for his long association with Charlie Chaplin.  Born in San Francisco, California, he acted in live theater, appearing in Henrietta in 1888 at the Hollis Street Theater in Boston and in the touring production of The Senator in 1892 and 1893.  He made his Broadway debut in 1899.  He made his first film appearance was with The L-KO Kompany in 1914 at the age of forty-six...",
+          "born": {},
+          "bornIn": "San Francisco, California, USA",
+          "degree": 8,
+          "died": {},
+          "imdbId": "0074788",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Henry Bergman",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1vIoHPX8faMuMQJtKrqqrZpGgPQ.jpg",
+          "tmdbId": "14438",
+          "url": "https://themoviedb.org/person/14438"
+        },
+        "id": "9906",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 546883,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0015881",
+          "imdbRating": 7.9,
+          "imdbVotes": 6852,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25753",
+          "plot": "The sudden fortune won from a lottery fans such destructive greed that it ruins the lives of the three people involved.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/6nxQxhrFBX3XRYqtLoCN5PSh8O4.jpg",
+          "released": "1925-01-26",
+          "revenue": 0,
+          "runtime": 140,
+          "title": "Greed",
+          "tmdbId": "1405",
+          "url": "https://themoviedb.org/movie/1405",
+          "year": 1924
+        },
+        "id": "5680",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Zasu Pitts was an American actress who starred in many silent dramas and comedies, transitioning successfully to mostly comedy films with the advent of sound films.  She may be best known for her performance in Erich von Stroheim's epic silent film Greed. \n\nBased on her performance, von Stroheim labeled Pitts \"the greatest dramatic actress\"...",
+          "born": {},
+          "bornIn": "Parsons, Kansas, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0686032",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Zasu Pitts",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/8QdLqPfgbdzR2VJ8GjduBIJhYwP.jpg",
+          "tmdbId": "34746",
+          "url": "https://themoviedb.org/person/34746"
+        },
+        "id": "9907",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia\n\nGibson Gowland (4 January 1877 Spennymoor, Durham, England, UK – 9 September 1951 London, England, UK) was an English film actor. \n\nGowland came to the United States from England, by way of Canada, in 1913 where he met Beatrice Bird, also from England, whom he married.  They moved to Hollywood, working as bit players.  In 1916, his son, actor and photographer Peter Gowland, was born...",
+          "born": {},
+          "bornIn": "Spennymoor, Durham, England, UK",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0332998",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Gibson Gowland",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/tmla3xqOEoXEwL8oczKqNFtD3bH.jpg",
+          "tmdbId": "9097",
+          "url": "https://themoviedb.org/person/9097"
+        },
+        "id": "9908",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nJean Pierre Hersholt (12 July 1886 – 2 June 1956) was a Danish-born actor who lived in the United States, where he was a leading film and radio talent, best known for his 17 years starring on radio in Dr.  Christian and for playing Shirley Temple's grandfather in Heidi.  Asked how to pronounce his name, he told The Literary Digest, \"In English, her'sholt; in Danish, hairs'hult. \" Of his total credits, 75 were silent films and 65 were sound films...",
+          "born": {},
+          "bornIn": "Copenhagen, Denmark",
+          "degree": 9,
+          "died": {},
+          "imdbId": "0380965",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Jean Hersholt",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/9R1oslAoQmjq1sv0wf9oD1WGe5N.jpg",
+          "tmdbId": "32138",
+          "url": "https://themoviedb.org/person/32138"
+        },
+        "id": "9909",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0028988",
+          "imdbRating": 7.3,
+          "imdbVotes": 2950,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "5099",
+          "plot": "A plucky little orphan girl gets dumped abruptly into her gruff, hermit grandfather's care, then later gets retaken and delivered as a companion for an injured girl.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1UPLyPaLtBBlyiuEeXOUprXBI31.jpg",
+          "released": "1937-10-15",
+          "revenue": 0,
+          "runtime": 88,
+          "title": "Heidi",
+          "tmdbId": "28345",
+          "url": "https://themoviedb.org/movie/28345",
+          "year": 1937
+        },
+        "id": "3965",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nDale Fuller (June 17, 1885 – October 14, 1948) was an American actress of the silent era.  She appeared in 67 films between 1915 and 1935.  She was born in Santa Ana, California and died in Los Angeles County, California...",
+          "born": {},
+          "bornIn": "Santa Ana, California, USA ",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0298202",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Dale Fuller",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/7lcEEJj7yigfUWxiE6bTMLpxkdO.jpg",
+          "tmdbId": "35504",
+          "url": "https://themoviedb.org/person/35504"
+        },
+        "id": "9910",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0039169",
+          "imdbRating": 7.3,
+          "imdbVotes": 5880,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " French"
+          ],
+          "movieId": "8695",
+          "plot": "A high school girl falls for a playboy artist with screwball results.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bp2wkO7InDjFHScEgH2M5cMRzHJ.jpg",
+          "released": "1947-09-01",
+          "revenue": 0,
+          "runtime": 95,
+          "title": "Bachelor and the Bobby-Soxer, The",
+          "tmdbId": "27437",
+          "url": "https://themoviedb.org/movie/27437",
+          "year": 1947
+        },
+        "id": "5526",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Shirley Temple was easily the most popular and famous child star of all time.  She got her start in the movies at the age of three and soon progressed to super stardom.  Shirley could do it all: act, sing and dance and all at the age of five! Fans loved her as she was bright, bouncy and cheerful in her films and they ultimately bought millions of dollars worth of products that had her likeness on them...",
+          "born": {},
+          "bornIn": "Santa Monica, California, USA",
+          "degree": 28,
+          "died": {},
+          "imdbId": "0000073",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Shirley Temple",
+          "numberOfMoviesActedIn": 18,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/7GcYKxdt4eRsv9yboVI9zlAKdJd.jpg",
+          "tmdbId": "95624",
+          "url": "https://themoviedb.org/person/95624"
+        },
+        "id": "9911",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0024854",
+          "imdbRating": 6.6,
+          "imdbVotes": 562,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "98458",
+          "plot": "Eddie Ellison is an ex-con who spent time in Sing-Sing prison. Kay marries him as soon as he serves his time. Five years later, Eddie and his ex-convict buddy Larry, have both gone straight...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/e5l9pDPZedJIbb1JxCjX9m7nbfg.jpg",
+          "released": "1934-06-30",
+          "revenue": 0,
+          "runtime": 76,
+          "title": "Baby Take a Bow",
+          "tmdbId": "31621",
+          "url": "https://themoviedb.org/movie/31621",
+          "year": 1934
+        },
+        "id": "8220",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0026252",
+          "imdbRating": 6.9,
+          "imdbVotes": 1130,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "87383",
+          "plot": "Wealthy Edward Morgan becomes charmed with a curly-haired orphan and her pretty older sister Mary and arranges to adopt both under the alias of Mr. Jones. As he spends more time with them, he soon finds himself falling in love with Mary.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/rW0Zz11KJxQKOiRgMj82rZrvgXb.jpg",
+          "released": "1935-07-26",
+          "revenue": 0,
+          "runtime": 75,
+          "title": "Curly Top",
+          "tmdbId": "29877",
+          "url": "https://themoviedb.org/movie/29877",
+          "year": 1935
+        },
+        "id": "7843",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0026641",
+          "imdbRating": 7,
+          "imdbVotes": 894,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8572",
+          "plot": "Shirley Temple's father, a rebel officer, sneaks back to his rundown plantation to see his family and is arrested. A Yankee takes pity and sets up an escape. Everyone is captured and the ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/hUbOi8m7dbO695BX57wj3euR51j.jpg",
+          "released": "1935-12-27",
+          "revenue": 0,
+          "runtime": 73,
+          "title": "Littlest Rebel, The",
+          "tmdbId": "43897",
+          "url": "https://themoviedb.org/movie/43897",
+          "year": 1935
+        },
+        "id": "5474",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0024914",
+          "imdbRating": 7.3,
+          "imdbVotes": 1445,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "5097",
+          "plot": "An orphaned girl is taken in by a snobbish family at the insistence of their rich, crotchety uncle, even as her devoted aviator godfather fights for custody.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/oRzV8HVCJ5EZbnOf5Yn5Ty3aUBD.jpg",
+          "released": "1934-12-28",
+          "revenue": 0,
+          "runtime": 85,
+          "title": "Bright Eyes",
+          "tmdbId": "29887",
+          "url": "https://themoviedb.org/movie/29887",
+          "year": 1934
+        },
+        "id": "3963",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0016029",
+          "imdbRating": 7.1,
+          "imdbVotes": 921,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "91286",
+          "plot": "After Southern belle Elizabeth Lloyd runs off to marry Yankee Jack Sherman, her father, a former Confederate colonel during the Civil War, vows to never speak to her again. Several years ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/gUv4dkPW19fQc6fjCJzhgRJKET8.jpg",
+          "released": "1935-02-22",
+          "revenue": 0,
+          "runtime": 81,
+          "title": "Little Colonel, The",
+          "tmdbId": "29879",
+          "url": "https://themoviedb.org/movie/29879",
+          "year": 1935
+        },
+        "id": "7962",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0031580",
+          "imdbRating": 7.3,
+          "imdbVotes": 4088,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Hindi"
+          ],
+          "movieId": "917",
+          "plot": "A little girl is left by her father in an exclusive seminary for girls, due to her father having to go to Africa with the army.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/cnMSURyv7R6gjmUm5SYdTxXLzIO.jpg",
+          "released": "1939-03-17",
+          "revenue": 0,
+          "runtime": 93,
+          "title": "Little Princess, The",
+          "tmdbId": "26531",
+          "url": "https://themoviedb.org/movie/26531",
+          "year": 1939
+        },
+        "id": "757",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0031995",
+          "imdbRating": 6.7,
+          "imdbVotes": 497,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "99276",
+          "plot": "Shirley is the orphaned survivor of an Indian attack in the Canadian West. A Mountie and his girlfriend take her in. Everybody suffers further Indian attacks and the Mountie is saved from ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/76Xm0DmVlTEFg2Mq1Fr5ah87jwi.jpg",
+          "released": "1939-06-23",
+          "revenue": 0,
+          "runtime": 79,
+          "title": "Susannah of the Mounties",
+          "tmdbId": "38727",
+          "url": "https://themoviedb.org/movie/38727",
+          "year": 1939
+        },
+        "id": "8253",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0030657",
+          "imdbRating": 7.1,
+          "imdbVotes": 958,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "98441",
+          "plot": "Rebecca's Uncle Harry leaves her with Aunt Miranda who forbids her to associate with show people. But neighbor Anthony Kent is a talent scout who secretly set it up for her to broadcast.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/qmSBcS2FGTd5TE3cYyIvcbyrWNO.jpg",
+          "released": "1938-03-18",
+          "revenue": 0,
+          "runtime": 81,
+          "title": "Rebecca of Sunnybrook Farm",
+          "tmdbId": "38716",
+          "url": "https://themoviedb.org/movie/38716",
+          "year": 1938
+        },
+        "id": "8219",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0030371",
+          "imdbRating": 6.6,
+          "imdbVotes": 595,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "98803",
+          "plot": "An orphan is provisionally adopted by the manager of a hotel populated by show business people. The hotel's owner doesn't like the entertainers and wants the girl returned to the orphanage.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/oyV6bO8T4hajNOHUi2ylMqRlnk5.jpg",
+          "released": "1938-07-29",
+          "revenue": 0,
+          "runtime": 72,
+          "title": "Little Miss Broadway",
+          "tmdbId": "38769",
+          "url": "https://themoviedb.org/movie/38769",
+          "year": 1938
+        },
+        "id": "8230",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0030302",
+          "imdbRating": 6.6,
+          "imdbVotes": 369,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "98611",
+          "plot": "Shirley helps her idealistic architect father get his dream of a slum clearance project; The little miss dances with bill Bojangles robinson. Based on paul gerard smith's book, Lucky penny.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/4RvqMgwxjqbTtQcvmINV0cbncJ4.jpg",
+          "released": "1938-11-11",
+          "revenue": 0,
+          "runtime": 70,
+          "title": "Just Around the Corner",
+          "tmdbId": "43157",
+          "url": "https://themoviedb.org/movie/43157",
+          "year": 1938
+        },
+        "id": "8227",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0029751",
+          "imdbRating": 7.1,
+          "imdbVotes": 980,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "60343",
+          "plot": "Priscilla Williams is a young girl traveling with her mother, Joyce, to join her paternal grandfather, a British army colonel, at the post he commands in northern India. Upon arrival, they ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/6eHBtFO26ORm2xoq6zoFUVZyBSL.jpg",
+          "released": "1937-07-30",
+          "revenue": 0,
+          "runtime": 100,
+          "title": "Wee Willie Winkie",
+          "tmdbId": "43869",
+          "url": "https://themoviedb.org/movie/43869",
+          "year": 1937
+        },
+        "id": "7012",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0028315",
+          "imdbRating": 7.2,
+          "imdbVotes": 853,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Mandarin"
+          ],
+          "movieId": "99273",
+          "plot": "Ching-Ching gets lost in Shanghai and is befriended by American playboy Tommy Randall. She falls asleep in his car which winds up on a ship headed for America. Susan Parker, also on the ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/4Ey26v89s1mxqFfLoyZZs2Ii02p.jpg",
+          "released": "1936-12-25",
+          "revenue": 0,
+          "runtime": 87,
+          "title": "Stowaway",
+          "tmdbId": "27597",
+          "url": "https://themoviedb.org/movie/27597",
+          "year": 1936
+        },
+        "id": "8252",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0028118",
+          "imdbRating": 7.1,
+          "imdbVotes": 883,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Italian"
+          ],
+          "movieId": "99089",
+          "plot": "The daughter of a wealthy businessman becomes lost in the city while traveling to a new school, and is taken in by a pair of down-on-their-luck performers.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/rHHCZ03xfE9fSqp9WoeoGGU0I2X.jpg",
+          "released": "1936-07-18",
+          "revenue": 0,
+          "runtime": 79,
+          "title": "Poor Little Rich Girl",
+          "tmdbId": "43268",
+          "url": "https://themoviedb.org/movie/43268",
+          "year": 1936
+        },
+        "id": "8243",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0027421",
+          "imdbRating": 7.2,
+          "imdbVotes": 797,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "47606",
+          "plot": "Shirley lives with a lighthouse keeper who rescued her when her parents drowned. A truant officer decides she should go to boarding school, but she's rescued by relatives. Buddy Ebsen dances At The Codfish Ball with Shirley.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/py2ayH5zrjpItoayrFLfR87ZXZ6.jpg",
+          "released": "1936-04-17",
+          "revenue": 0,
+          "runtime": 77,
+          "title": "Captain January",
+          "tmdbId": "57840",
+          "url": "https://themoviedb.org/movie/57840",
+          "year": 1936
+        },
+        "id": "6523",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0027527",
+          "imdbRating": 6.8,
+          "imdbVotes": 536,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "5098",
+          "plot": "Dimples Appleby lives with the pick-pocket grandfather in 19th century New York City. She entertains the crowds while he works his racket. A rich lady makes it possible for the girl to go legit. Uncle Tom's Cabin is performed.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/nhHjBMLjwZR0p5v04CGCRKPLAtb.jpg",
+          "released": "1936-10-16",
+          "revenue": 0,
+          "runtime": 79,
+          "title": "Dimples",
+          "tmdbId": "32484",
+          "url": "https://themoviedb.org/movie/32484",
+          "year": 1936
+        },
+        "id": "3964",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0026835",
+          "imdbRating": 6.7,
+          "imdbVotes": 291,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "99085",
+          "plot": "Don Middleton is so caught up with his work he neglects his wife Elsa. Lonely Elsa begins to spend more time with Don's best friend and they become attracted to one another. Don and Elsa ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/oAZpkKKguJ6TqRAeXm9O6Lad2r7.jpg",
+          "released": "1935-05-17",
+          "revenue": 0,
+          "runtime": 65,
+          "title": "Our Little Girl",
+          "tmdbId": "43895",
+          "url": "https://themoviedb.org/movie/43895",
+          "year": 1935
+        },
+        "id": "8242",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nLionel Barrymore (born Lionel Herbert Blythe; April 28, 1878 – November 15, 1954) was an American actor of stage, screen and radio as well as a film director.  He won an Academy Award for Best Actor for his performance in A Free Soul (1931), and remains best known to modern audiences for the role of villainous Mr.  Potter in Frank Capra's 1946 film It's a Wonderful Life...",
+          "born": {},
+          "bornIn": "Philadelphia, Pennsylvania, USA",
+          "degree": 15,
+          "died": {},
+          "imdbId": "0000859",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Lionel Barrymore",
+          "numberOfMoviesActedIn": 5,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/4vPzIVCzB21IlWX86VtFuHwMv3v.jpg",
+          "tmdbId": "17753",
+          "url": "https://themoviedb.org/person/17753"
+        },
+        "id": "9912",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 1644736,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0030993",
+          "imdbRating": 8,
+          "imdbVotes": 17344,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Russian"
+          ],
+          "movieId": "1934",
+          "plot": "A man from a family of rich snobs becomes engaged to a woman from a good-natured but decidedly eccentric family.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/ysTiFXwTowOdDOUu9ikE21LPmdy.jpg",
+          "released": "1938-11-03",
+          "revenue": 7433101,
+          "runtime": 126,
+          "title": "You Can't Take It with You",
+          "tmdbId": "34106",
+          "url": "https://themoviedb.org/movie/34106",
+          "year": 1938
+        },
+        "id": "1515",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 3180000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0038650",
+          "imdbRating": 8.6,
+          "imdbVotes": 265900,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "953",
+          "plot": "An angel helps a compassionate but despairingly frustrated businessman by showing what life would have been like if he never existed.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bSqt9rhDZx1Q7UZ86dBPKdNomp2.jpg",
+          "released": "1947-01-07",
+          "revenue": 9644124,
+          "runtime": 130,
+          "title": "It's a Wonderful Life",
+          "tmdbId": "1585",
+          "url": "https://themoviedb.org/movie/1585",
+          "year": 1946
+        },
+        "id": "792",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 6000000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0038499",
+          "imdbRating": 6.9,
+          "imdbVotes": 6151,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3792",
+          "plot": "Beautiful half-breed Pearl Chavez becomes the ward of her dead father's first love and finds herself torn between her sons, one good and the other bad.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/r2UEzfXJPuvveQZxDUuJpoqMIcs.jpg",
+          "released": "1947-09-12",
+          "revenue": 20400000,
+          "runtime": 129,
+          "title": "Duel in the Sun",
+          "tmdbId": "32275",
+          "url": "https://themoviedb.org/movie/32275",
+          "year": 1946
+        },
+        "id": "3051",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0040506",
+          "imdbRating": 7.9,
+          "imdbVotes": 27747,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Italian"
+          ],
+          "movieId": "3334",
+          "plot": "A man visits his old friend's hotel and finds a gangster running things. As a hurricane approaches, the two end up confronting each other.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1WT7az5rvteBNmgJrZoRb6whhuB.jpg",
+          "released": "1948-07-31",
+          "revenue": 0,
+          "runtime": 100,
+          "title": "Key Largo",
+          "tmdbId": "11016",
+          "url": "https://themoviedb.org/movie/11016",
+          "year": 1948
+        },
+        "id": "2688",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nEvelyn Venable (October 18, 1913 – November 15, 1993) was an American actress.  In addition to starring in several films in the 1930s and 1940s, she is notable as the voice and model for the Blue Fairy in the Walt Disney's Pinocchio. \n\nFor her work in motion pictures, Venable has a star on the Hollywood Walk of Fame at 1500 Vine Street...",
+          "born": {},
+          "bornIn": "Cincinnati, Ohio, U.S.",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0892867",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Evelyn Venable",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/n5IvAVQitXYvph1Hj5y2jCZ4BiT.jpg",
+          "tmdbId": "117073",
+          "url": "https://themoviedb.org/person/117073"
+        },
+        "id": "9913",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "degree": 5,
+          "died": {},
+          "imdbId": "0517099",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "John Lodge",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/zN02wJwWyhZid9UanZCTG14MLzX.jpg",
+          "tmdbId": "133470",
+          "url": "https://themoviedb.org/person/133470"
+        },
+        "id": "9914",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 379000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0019729",
+          "imdbRating": 6.4,
+          "imdbVotes": 4343,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "1926",
+          "plot": "Harriet and Queenie Mahoney, a vaudeville act, come to Broadway, where their friend Eddie Kerns needs them for his number in one of Francis Zanfield's shows. Eddie was in love with Harriet,...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/7oaRBmiEjqzLk1j36N8TRSFPebQ.jpg",
+          "released": "1929-06-06",
+          "revenue": 4358000,
+          "runtime": 100,
+          "title": "Broadway Melody, The",
+          "tmdbId": "65203",
+          "url": "https://themoviedb.org/movie/65203",
+          "year": 1929
+        },
+        "id": "1508",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia.   Bessie Love (September 10, 1898 – April 26, 1986) was an American motion picture actress who achieved prominence mainly in the silent films and early talkies.   With a small frame and delicate features, she played innocent young girls, flappers, and wholesome leading ladies.  In addition to her acting career, she wrote the screenplay for the 1919 movie A Yankee Princess...",
+          "born": {},
+          "bornIn": "Midland, Texas, USA",
+          "degree": 11,
+          "died": {},
+          "imdbId": "0522281",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Bessie Love",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/hBz2aeYgPru5xBCLiGc8KmS2cMw.jpg",
+          "tmdbId": "29258",
+          "url": "https://themoviedb.org/person/29258"
+        },
+        "id": "9915",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 1114000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0024481",
+          "imdbRating": 7.9,
+          "imdbVotes": 5350,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Spanish"
+          ],
+          "movieId": "8256",
+          "plot": "Queen Christina of Sweden is a popular monarch who is loyal to her country. However, when she falls in love with a Spanish envoy, she must choose between the throne and the man she loves.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/4icSXTvvQlP9eHc7qt8xG8s6avD.jpg",
+          "released": "1934-02-09",
+          "revenue": 2610000,
+          "runtime": 99,
+          "title": "Queen Christina",
+          "tmdbId": "31526",
+          "url": "https://themoviedb.org/movie/31526",
+          "year": 1933
+        },
+        "id": "5392",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nLewis Shepard Stone (November 15, 1879 – September 12, 1953) was an American actor known for his role as Judge James Hardy in Metro-Goldwyn-Mayer's Andy Hardy film series and as an MGM contract player. \n\nBorn in Worcester, Massachusetts to Bertrand Stone and Philena Heald Ball, Lewis Stone's hair turned gray prematurely (reportedly by age 20).  Lewis served in the United States Army in the Spanish–American War, then returned to a career as a writer...",
+          "born": {},
+          "bornIn": "Worcester, Massachusetts, USA",
+          "degree": 10,
+          "died": {},
+          "imdbId": "0832011",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Lewis Stone",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/nxK5PexEFccYJxBGBTWju4TBAqT.jpg",
+          "tmdbId": "29259",
+          "url": "https://themoviedb.org/person/29259"
+        },
+        "id": "9916",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Lloyd Hughes (October 21, 1897 – June 6, 1958) was an American actor of both the silent and sound film eras...",
+          "born": {},
+          "bornIn": "Bisbee, Arizona, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0400763",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Lloyd Hughes",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/a3bHZyiVkHLP1DjNkyrxcghcb2f.jpg",
+          "tmdbId": "29261",
+          "url": "https://themoviedb.org/person/29261"
+        },
+        "id": "9917",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0016220",
+          "imdbRating": 7.7,
+          "imdbVotes": 11873,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "25755",
+          "plot": "A mad, disfigured composer seeks love with a lovely young opera singer.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/itfhSxbIgsan85iY1NrquIx7qxo.jpg",
+          "released": "1925-11-15",
+          "revenue": 0,
+          "runtime": 93,
+          "title": "Phantom of the Opera, The",
+          "tmdbId": "964",
+          "url": "https://themoviedb.org/movie/964",
+          "year": 1925
+        },
+        "id": "5681",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Lon Chaney (born Leonidas Frank Chaney) - nicknamed \"Man of a Thousand Faces\" - was an American Silent screen star.  He died after completing his only sound film...",
+          "born": {},
+          "bornIn": "Colorado Springs, Colorado, USA",
+          "degree": 8,
+          "died": {},
+          "imdbId": "0151606",
+          "labels": [
+            "Actor",
+            "Director",
+            "Person"
+          ],
+          "name": "Lon Chaney",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/3wZ0n7Yt0JSMju2UAyWYOtLgUzG.jpg",
+          "tmdbId": "14481",
+          "url": "https://themoviedb.org/person/14481"
+        },
+        "id": "9918",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia\n\nMary Loretta Philbin (July 16, 1902 – May 7, 1993) was an American film actress of the silent film era, who is best known for playing the roles of Christine Daaé in the 1925 film The Phantom of the Opera opposite Lon Chaney, and as Dea in The Man Who Laughs.  Both roles cast her as the beauty in Beauty and the Beast type stories...",
+          "born": {},
+          "bornIn": "Chicago, Illinois, USA",
+          "degree": 7,
+          "died": {},
+          "imdbId": "0679907",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Mary Philbin",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1Leb5fBpbSTKlyEDNIumadczb8D.jpg",
+          "tmdbId": "14484",
+          "url": "https://themoviedb.org/person/14484"
+        },
+        "id": "9919",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia\n\nNorman Kerry (born Norman Hussey Kaiser, June 16, 1894 – January 12, 1956) was an American actor whose career in the motion picture industry spanned over twenty-five years beginning in 1916 and peaking during the silent era of the 1920s...",
+          "born": {},
+          "bornIn": "Rochester, New York, USA",
+          "degree": 7,
+          "died": {},
+          "imdbId": "0449908",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Norman Kerry",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/7M4hNqyLcor0Z4T9TMVWZsVBEQH.jpg",
+          "tmdbId": "14485",
+          "url": "https://themoviedb.org/person/14485"
+        },
+        "id": "9920",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Trapzon [Trebizond], Turkey",
+          "degree": 7,
+          "died": {},
+          "imdbId": "0136886",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Arthur Edmund Carewe",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/etzgPT4aqxI4HfMpG8Z8waqIiSS.jpg",
+          "tmdbId": "14486",
+          "url": "https://themoviedb.org/person/14486"
+        },
+        "id": "9921",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Lincolnshire, England, UK",
+          "degree": 3,
+          "died": {},
+          "imdbId": "0055797",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "T. Roy Barnes",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/yrlTOlD9Ve3xp1dbFGjQbslxzC5.jpg",
+          "tmdbId": "99377",
+          "url": "https://themoviedb.org/person/99377"
+        },
+        "id": "9922",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 3,
+          "imdbId": "0245536",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Ruth Dwyer",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "144011",
+          "url": "https://themoviedb.org/person/144011"
+        },
+        "id": "9923",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 3900000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0016641",
+          "imdbRating": 8.1,
+          "imdbVotes": 5919,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "6986",
+          "plot": "A Jewish prince seeks to find his family and revenge himself upon his childhood friend who had him wrongly imprisoned.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/wEXzgdOfW5p6XkNzEK2d8HLibcq.jpg",
+          "released": "1927-10-08",
+          "revenue": 9000000,
+          "runtime": 143,
+          "title": "Ben-Hur: A Tale of the Christ",
+          "tmdbId": "31510",
+          "url": "https://themoviedb.org/movie/31510",
+          "year": 1925
+        },
+        "id": "4930",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Mexico native Ramon Novarro (born Jose Ramon Gil Samaniego) was a Hollywood film and television actor.  He was a major star and matinee idol of 1920s Silent through early 1930s \"talkies\" cinema...",
+          "born": {},
+          "bornIn": "Durango City, Durango, Mexico",
+          "degree": 10,
+          "died": {},
+          "imdbId": "0003895",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Ramon Novarro",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/9jhYW0DAfLQpKaZ0kbS4dZSYVIy.jpg",
+          "tmdbId": "85425",
+          "url": "https://themoviedb.org/person/85425"
+        },
+        "id": "9924",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia.   \n\nFrancis Xavier Bushman (January 10, 1883 – August 23, 1966) was an American actor, film director, and screenwriter.  His matinee idol career started in 1911 in the silent film His Friend's Wife, but it did not survive the silent screen era.  Bushman, like many of his contemporaries, broke into the film business via the stage...",
+          "born": {},
+          "bornIn": "Baltimore, Maryland, USA",
+          "degree": 10,
+          "died": {},
+          "imdbId": "0124279",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Francis X. Bushman",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "50837",
+          "url": "https://themoviedb.org/person/50837"
+        },
+        "id": "9925",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nMay McAvoy (September 8, 1899 – April 26, 1984) was an American actress who worked mainly during the silent film era.  Some of her major roles are Laura Pennington in The Enchanted Cottage, Esther in Ben-Hur: A Tale of the Christ, and Mary Dale in The Jazz Singer. \n\nMcAvoy appeared in her first film, entitled Hate, in 1917.  After appearing in more than three dozen films, she co-starred with Ramón Novarro and Francis X...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 10,
+          "died": {},
+          "imdbId": "0564219",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "May McAvoy",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/mEToUYwMXd1ujIauMaPUaISWLX9.jpg",
+          "tmdbId": "14287",
+          "url": "https://themoviedb.org/person/14287"
+        },
+        "id": "9926",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia:\n\nBetty Bronson (November 17, 1906 – October 19, 1971) was an American television and film actress who began her career during the silent film era.  She was a famous actress in silent and sound films. \n\nDescription above from the Wikipedia article Betty Bronson, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Trenton, New Jersey, USA",
+          "degree": 10,
+          "died": {},
+          "imdbId": "0111503",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Betty Bronson",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/isRDEuw8ITGTuzXf9a23Z9VBsmI.jpg",
+          "tmdbId": "108101",
+          "url": "https://themoviedb.org/person/108101"
+        },
+        "id": "9927",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0016654",
+          "imdbRating": 7.2,
+          "imdbVotes": 1206,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "7309",
+          "plot": "Seeking revenge, an athletic young man joins the pirate band responsible for his father's death.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/841WLSvTRN3TQKxiUjD1TY9dc42.jpg",
+          "released": "1926-03-08",
+          "revenue": 0,
+          "runtime": 88,
+          "title": "Black Pirate, The",
+          "tmdbId": "50075",
+          "url": "https://themoviedb.org/movie/50075",
+          "year": 1926
+        },
+        "id": "5119",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Billie Dove (born Bertha Bohny) was an American star actress of 1920s Silent cinema and of the first few years of the 'talkies' era.  She retired from show business in 1932...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0235521",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Billie Dove",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/27wZv6AD5vqrGVAwBTGUVt1u9ch.jpg",
+          "tmdbId": "34744",
+          "url": "https://themoviedb.org/person/34744"
+        },
+        "id": "9928",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nTempe Pigott (2 February 1884 – 6 October 1962) was an English silent and sound screen, as well as stage, character actress.  Her film appearances were numerous.  She is remembered mainly for playing the mother of Gibson Gowland in Greed (1925) and the landlady Mrs.  Hawkins in Dr.  Jekyll and Mr.  Hyde (1931).  She was born in London, England and died in Woodland Hills, California, USA...",
+          "born": {},
+          "bornIn": "London, England, UK",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0683114",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Tempe Pigott",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bRPwCTNKlWZfNZc3kMjxp8oQAOw.jpg",
+          "tmdbId": "29603",
+          "url": "https://themoviedb.org/person/29603"
+        },
+        "id": "9929",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Donald Crisp was born George William Crisp at the family home in Bow,  London.  Donald's parents were James Crisp and Elizabeth Crisp, his birth  was registered by his mother on 4th September 1882.  Donald's sisters  were Elizabeth, Ann, Alice (known as Louisa) and Eliza and his brothers  were James, John and Mark.  Family memories state that Donald's  brother-in-law James Needham (Louisa's husband) lent/gave Donald the  fare to USA...",
+          "born": {},
+          "bornIn": "Bow, London, England, UK",
+          "degree": 20,
+          "died": {},
+          "imdbId": "0187981",
+          "labels": [
+            "Actor",
+            "Director",
+            "Person"
+          ],
+          "name": "Donald Crisp",
+          "numberOfMoviesActedIn": 9,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/rZHp5vzagKpvCQaf7HLtI9PeHXi.jpg",
+          "tmdbId": "8841",
+          "url": "https://themoviedb.org/person/8841"
+        },
+        "id": "9930",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0057523",
+          "imdbRating": 7,
+          "imdbVotes": 1753,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "6562",
+          "plot": "Clay Spencer is a hard-working man who loves his wife and large family. He is respected by his neighbors and always ready to give them a helping hand. Although not a churchgoer, he even ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/g7vN9ZduHCI5mmFs3jfI0vJxxm3.jpg",
+          "released": "1963-05-16",
+          "revenue": 0,
+          "runtime": 118,
+          "title": "Spencer's Mountain",
+          "tmdbId": "44916",
+          "url": "https://themoviedb.org/movie/44916",
+          "year": 1963
+        },
+        "id": "4720",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 1250000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0033729",
+          "imdbRating": 7.8,
+          "imdbVotes": 15415,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Welsh"
+          ],
+          "movieId": "1935",
+          "plot": "At the turn of the century in a Welsh mining village, the Morgans, he stern, she gentle, raise coal-mining sons and hope their youngest will find a better life.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/zmYNtzq3B17DSpDYkF3JUHBa8Yx.jpg",
+          "released": "1942-04-09",
+          "revenue": 6000000,
+          "runtime": 118,
+          "title": "How Green Was My Valley",
+          "tmdbId": "43266",
+          "url": "https://themoviedb.org/movie/43266",
+          "year": 1941
+        },
+        "id": "1516",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0033553",
+          "imdbRating": 6.9,
+          "imdbVotes": 6193,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "7208",
+          "plot": "Dr. Jekyll allows his dark side to run wild when he drinks a potion that turns him into the evil Mr. Hyde.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/2GDdW84XSX3BYMJ9tmnFkZOGJyB.jpg",
+          "released": "1941-09-01",
+          "revenue": 0,
+          "runtime": 113,
+          "title": "Dr. Jekyll and Mr. Hyde",
+          "tmdbId": "3022",
+          "url": "https://themoviedb.org/movie/3022",
+          "year": 1941
+        },
+        "id": "5076",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0038097",
+          "imdbRating": 6.5,
+          "imdbVotes": 493,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " German"
+          ],
+          "movieId": "61634",
+          "plot": "Laddie (Son of Lassie !) and his master are trapped in Norway during WW2 - has he inherited his mothers famous courage ?",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/ugbrn6v7Q4Z82kxYEVr5FJ2Moxd.jpg",
+          "released": "1945-04-20",
+          "revenue": 0,
+          "runtime": 102,
+          "title": "Son of Lassie",
+          "tmdbId": "43177",
+          "url": "https://themoviedb.org/movie/43177",
+          "year": 1945
+        },
+        "id": "7060",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0037120",
+          "imdbRating": 7.4,
+          "imdbVotes": 4880,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "7059",
+          "plot": "A jaded former jockey helps a young girl prepare a wild but gifted horse for England's Grand National Sweepstakes.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/iUQfP3s967V3SIAbyomNT8z8MIf.jpg",
+          "released": "1945-01-26",
+          "revenue": 0,
+          "runtime": 123,
+          "title": "National Velvet",
+          "tmdbId": "17641",
+          "url": "https://themoviedb.org/movie/17641",
+          "year": 1944
+        },
+        "id": "4981",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0037415",
+          "imdbRating": 7.4,
+          "imdbVotes": 6307,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Spanish"
+          ],
+          "movieId": "33587",
+          "plot": "A composer and his sister discover that the reason they are able to purchase a beautiful gothic seacoast mansion very cheaply is the house's unsavory past.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/ymPV2ToQUfeo3MxRjHz5kkCIuJA.jpg",
+          "released": "1944-09-01",
+          "revenue": 0,
+          "runtime": 99,
+          "title": "Uninvited, The",
+          "tmdbId": "16373",
+          "url": "https://themoviedb.org/movie/16373",
+          "year": 1944
+        },
+        "id": "6162",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0036098",
+          "imdbRating": 7.2,
+          "imdbVotes": 3773,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8612",
+          "plot": "After her destitute family is forced to sell her, a collie named Lassie escapes from her new owner and begins the long trek from Scotland to her Yorkshire home.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/l8teSgTmEbQ4kQtsOFhdy9xbjTg.jpg",
+          "released": "1943-12-01",
+          "revenue": 0,
+          "runtime": 89,
+          "title": "Lassie Come Home",
+          "tmdbId": "2202",
+          "url": "https://themoviedb.org/movie/2202",
+          "year": 1943
+        },
+        "id": "5493",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0041238",
+          "imdbRating": 6.2,
+          "imdbVotes": 374,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "115139",
+          "plot": "When Lassie's master dies, an old friend tries to convince a judge that the dog's life should be spared.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/189H7Ho8wCVgVX11Q6X4reVu6iy.jpg",
+          "released": "1949-10-31",
+          "revenue": 0,
+          "runtime": 76,
+          "title": "Challenge to Lassie",
+          "tmdbId": "43398",
+          "url": "https://themoviedb.org/movie/43398",
+          "year": 1949
+        },
+        "id": "8709",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia\n\nSamuel Alfred De Grasse (June 12, 1875 – November 29, 1953)\n\nwas a Canadian actor.  He was born in Bathurst, New Brunswick, he trained to be\n\na dentist. \n\nHe married Annie McDonnell in 1904.  Their daughter,\n\nClementine Bell, was born in 1906.  Annie died in 1909, probably in childbirth\n\nwith another daughter, Olive...",
+          "born": {},
+          "bornIn": "Bathurst - New Brunswick - Canada",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0208659",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Sam De Grasse",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/qiMJezjBhoygL6UDnGxF1wfqBm1.jpg",
+          "tmdbId": "29952",
+          "url": "https://themoviedb.org/person/29952"
+        },
+        "id": "9931",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Sweden",
+            " Denmark"
+          ],
+          "degree": 0,
+          "imdbId": "0083276",
+          "imdbRating": 6.2,
+          "imdbVotes": 2065,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "Swedish"
+          ],
+          "movieId": "5913",
+          "plot": "The movie begins with the Jönsson gang making a minor burglary. It goes wrong and the gang leader, Sickan, gets caught. After he has spent 10 months in jail, Vanheden and Rocky come to ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/kk21y4awpolYdnYWypL8MdrqAzo.jpg",
+          "released": "1981-12-04",
+          "revenue": 0,
+          "runtime": 89,
+          "title": "Warning for the Joensson Gang (Varning för Jönssonligan)",
+          "tmdbId": "35343",
+          "url": "https://themoviedb.org/movie/35343",
+          "year": 1981
+        },
+        "id": "4394",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nHans Gösta Gustaf Ekman (born July 28, 1939 in Stockholm) was a Swedish actor. \n\nDescription above from the Wikipedia article Gösta Ekman, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Stockholm, Stockholms län, Sweden",
+          "degree": 10,
+          "died": {},
+          "imdbId": "0252473",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Gösta Ekman",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/3B8Q7a7O56Mt865LQzdmjUUp0Zi.jpg",
+          "tmdbId": "66790",
+          "url": "https://themoviedb.org/person/66790"
+        },
+        "id": "9932",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "The daughter of a railroad official, Camilla Horn was educated in Germany and Switzerland.  She initially trained as a dressmaker and received her first job experience in a fashion salon in Erfurt.  This was merely a stepping stone for a performing career which began with dance lessons in Berlin and subsequent acting studies under Lucie Höflich.  The lithe, blond and strikingly beautiful Camilla soon appeared in cabaret revues staged by Rudolf Nelson...",
+          "born": {},
+          "bornIn": "Frankfurt am Main, Germany",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0394806",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Camilla Horn",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/nFqE1c0T2sDy7noZ4J0xeFTuldp.jpg",
+          "tmdbId": "48938",
+          "url": "https://themoviedb.org/person/48938"
+        },
+        "id": "9934",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Vienna, Austria-Hungary [now Austria]",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0723801",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Frida Richard",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "48062",
+          "url": "https://themoviedb.org/person/48062"
+        },
+        "id": "9935",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Warner Leroy Baxter (March 29, 1889 – May 7, 1951) was an American film actor from the 1910s to the 1940s.  Baxter became known for his role as The Cisco Kid in the 1928 film In Old Arizona for which he won the Academy Award for Best Actor at the 2nd Academy Awards.  He frequently played womanizing, charismatic Latin bandit types in westerns, and played The Cisco Kid or a similar character throughout the 1930s, but had a range of other roles throughout his career...",
+          "born": {},
+          "bornIn": "Columbus, Ohio, USA",
+          "degree": 13,
+          "died": {},
+          "imdbId": "0062828",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Warner Baxter",
+          "numberOfMoviesActedIn": 3,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/i77UjwZQW4ZXnIBcbqHj3fNhhYj.jpg",
+          "tmdbId": "29999",
+          "url": "https://themoviedb.org/person/29999"
+        },
+        "id": "9936",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0025829",
+          "imdbRating": 5.7,
+          "imdbVotes": 307,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "99270",
+          "plot": "President Franklin Roosevelt appoints a theatrical producer as the new Secretary of Amusement in order to cheer up an American public still suffering through the Depression. The new ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/3MyQxH6ZnKB3CNRHxHKtUDmiqje.jpg",
+          "released": "1934-05-04",
+          "revenue": 0,
+          "runtime": 68,
+          "title": "Stand Up and Cheer!",
+          "tmdbId": "46159",
+          "url": "https://themoviedb.org/movie/46159",
+          "year": 1934
+        },
+        "id": "8251",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0016938",
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "121618",
+          "plot": "Nick Carraway, a young Midwesterner now living on Long Island, finds himself fascinated by the mysterious past and lavish lifestyle of his neighbour, the nouveau riche Jay Gatsby. He is ...",
+          "released": "1926-08-27",
+          "revenue": 0,
+          "runtime": 80,
+          "title": "The Great Gatsby",
+          "tmdbId": "262176",
+          "url": "https://themoviedb.org/movie/262176",
+          "year": 1926
+        },
+        "id": "8800",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Pittsburgh, Pennsylvania, USA",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0933773",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Lois Wilson",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/uAWHCbZuaI6S0zApa1y5aqC7dCb.jpg",
+          "tmdbId": "148836",
+          "url": "https://themoviedb.org/person/148836"
+        },
+        "id": "9937",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 95,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0025862",
+          "imdbRating": 7.6,
+          "imdbVotes": 3709,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "39779",
+          "plot": "The idyllic life of Tarzan and Jane is challenged by men on safari who come seeking ivory, and come seeking Jane as well.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/rIrFuPVSz2qeGOoJzPwfCvs0cqk.jpg",
+          "released": "1934-04-20",
+          "revenue": 0,
+          "runtime": 104,
+          "title": "Tarzan and His Mate",
+          "tmdbId": "18994",
+          "url": "https://themoviedb.org/movie/18994",
+          "year": 1934
+        },
+        "id": "6295",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Neil Hamilton (born James Neil Hamilton; September 9, 1899 - September 24, 1984) was an American screen, stage, and television actor.  During the 1920s and 1930s he was a popular leading man in films.  Today he is perhaps best known for his portrayal of Commissioner Gordon on the Batman television series of the 1960s...",
+          "born": {},
+          "bornIn": "Lynn, Massachusetts, USA",
+          "degree": 12,
+          "died": {},
+          "imdbId": "0358076",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Neil Hamilton",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/vnSGmbMtpu6maoelN3bKnA8aE79.jpg",
+          "tmdbId": "27733",
+          "url": "https://themoviedb.org/person/27733"
+        },
+        "id": "9938",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "In 1922, Georgia won a beauty contest and went to New York to get a job in the theater.  Unsuccessful, she left New York for Hollywood where she worked as a bit player in a few movies.  Georgia's first break came when she was hired for the film The Salvation Hunters (1925).  It was from this picture that Charlie Chaplin hired her to play the Georgia, the dance-hall girl who wins Charlie's heart, in The Gold Rush (1925)...",
+          "born": {},
+          "bornIn": "St. Joseph, Missouri, U.S.",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0354913",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Georgia Hale",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/8EB0OKtzCr7cQ6bVeDsmtyZ9iNy.jpg",
+          "tmdbId": "14434",
+          "url": "https://themoviedb.org/person/14434"
+        },
+        "id": "9939",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "UK"
+          ],
+          "degree": 0,
+          "imdbId": "0017075",
+          "imdbRating": 7.3,
+          "imdbVotes": 6553,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "2227",
+          "plot": "A landlady suspects her new lodger is the madman killing women in London.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/nnJNa1MwLatWc9phWvZ6AYZjeaC.jpg",
+          "released": "1927-02-14",
+          "revenue": 0,
+          "runtime": 68,
+          "title": "Lodger: A Story of the London Fog, The",
+          "tmdbId": "2760",
+          "url": "https://themoviedb.org/movie/2760",
+          "year": 1927
+        },
+        "id": "1781",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nMarie Ault (2 September 1870 – 9 May 1951) was a British character actress of stage and film. \n\nShe was a star in many British films of the silent era, but is most remembered for her role as Daisy Bunting's mother in The Lodger: A Story of the London Fog (1927) directed by Alfred Hitchcock.  Other notable film work includes the role of Rummy Mitchens in the film of Bernard Shaw's Major Barbara (1941)...",
+          "born": {},
+          "bornIn": "Wigan, Lancashire, England, UK",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0042083",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Marie Ault",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "27911",
+          "url": "https://themoviedb.org/person/27911"
+        },
+        "id": "9940",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Arthur Chesney (born Arthur Kellaway) was a British film and stage actor.  His older brother was screen actor Edmund Gwenn (born Edmund Kellaway)...",
+          "born": {},
+          "bornIn": "Wandsworth, London, England, UK",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0156241",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Arthur Chesney",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "27912",
+          "url": "https://themoviedb.org/person/27912"
+        },
+        "id": "9941",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "degree": 5,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "June",
+          "numberOfMoviesActedIn": 1
+        },
+        "id": "9942",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Malcolm Keen was a British stage, film, and television actor...",
+          "born": {},
+          "bornIn": "Bristol, England, UK",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0444602",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Malcolm Keen",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/kH1sBRZZKh5vBGBzciKGbg4FC4k.jpg",
+          "tmdbId": "27914",
+          "url": "https://themoviedb.org/person/27914"
+        },
+        "id": "9943",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nGustav Fröhlich (21 March 1902 – 22 December 1987) was a German actor and film director.  He landed secondary roles in a number of films and plays before landing his breakthrough role of Freder Fredersen in Fritz Lang's 1927 film Metropolis.  He remained a popular film star in Germany until the 1950s...",
+          "born": {},
+          "bornIn": "Hannover, Germany",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0297054",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Gustav Fröhlich",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/kqUdWJcrdDIbTi8YvLtok5EmYxQ.jpg",
+          "tmdbId": "74",
+          "url": "https://themoviedb.org/person/74"
+        },
+        "id": "9945",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0021818",
+          "imdbRating": 7.4,
+          "imdbVotes": 1381,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "German"
+          ],
+          "movieId": "32280",
+          "plot": "In London at the turn of the century, the bandit Mack the Knife marries Polly without the knowledge of her father, Peachum, the 'king of the beggars'.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/w39cIJWmtLRxyqAE2KdhSuUa0wC.jpg",
+          "released": "1956-10-19",
+          "revenue": 0,
+          "runtime": 112,
+          "title": "The 3 Penny Opera",
+          "tmdbId": "42837",
+          "url": "https://themoviedb.org/movie/42837",
+          "year": 1931
+        },
+        "id": "6098",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nFritz Heinrich Rasp (13 May 1891; Bayreuth – 30 November 1976; Gräfelfing) was a German film actor who appeared in 104 films between 1916 and 1976. \n\nHis most notable film roles were J. J.  Peachum in The Threepenny Opera (1931), as Meinert in Diary of a Lost Girl (1929), and as \"Der Schmale\" (\"The Thin Man\") in Fritz Lang's Metropolis (1927)...",
+          "born": {},
+          "bornIn": "Bayreuth, Germany",
+          "degree": 9,
+          "died": {},
+          "imdbId": "0003248",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Fritz Rasp",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/7vE2alehNfoL4CKqkNkhkTFBHVc.jpg",
+          "tmdbId": "78",
+          "url": "https://themoviedb.org/person/78"
+        },
+        "id": "9947",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Lars Hanson was a Swedish film and stage actor, internationally most remembered for his starring motion picture roles during the Silent film era.  In major Hollywood movies 1926-1928...",
+          "born": {},
+          "bornIn": "Göteborg, Sweden",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0361319",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Lars Hanson",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/r4SGQ8QnV1S0swQ16ukOlnVwWgr.jpg",
+          "tmdbId": "121001",
+          "url": "https://themoviedb.org/person/121001"
+        },
+        "id": "9948",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Copenhagen, Denmark",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0199322",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Karl Dane",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/cc3BzJF5qQf8hnVVwF38DxmEZJ2.jpg",
+          "tmdbId": "29978",
+          "url": "https://themoviedb.org/person/29978"
+        },
+        "id": "9949",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0017416",
+          "imdbRating": 7.5,
+          "imdbVotes": 1391,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3492",
+          "plot": "The son of the sheik and a dancing girl fall in love, but when he is made to believe she has betrayed him he seeks revenge.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/yZib8tHbOHrSTSszif728VwU2L6.jpg",
+          "released": "1926-09-05",
+          "revenue": 0,
+          "runtime": 68,
+          "title": "Son of the Sheik, The",
+          "tmdbId": "85689",
+          "url": "https://themoviedb.org/movie/85689",
+          "year": 1926
+        },
+        "id": "2806",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nRudolph Valentino (May 6, 1895 – August 23, 1926) was an Italian actor, and early pop icon.  A sex symbol of the 1920s, Valentino was known as the \"Latin Lover\".  He starred in several well known silent films including The Four Horsemen of the Apocalypse, The Sheik, Blood and Sand, The Eagle and Son of the Sheik. \n\nHis sudden death at age 31 caused mass hysteria among his female fans, propelling him into icon status...",
+          "born": {},
+          "bornIn": "Castellaneta, Puglia, Italy",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0884388",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Rudolph Valentino",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/eX4g6CfvtqS5lCjua25JItO7puT.jpg",
+          "tmdbId": "116367",
+          "url": "https://themoviedb.org/person/116367"
+        },
+        "id": "9950",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "degree": 5,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Vilma Bánky",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/Wo9GwClcpFDAvlL57kUQTwWAKG.jpg",
+          "tmdbId": "932465",
+          "url": "https://themoviedb.org/person/932465"
+        },
+        "id": "9951",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "George Fawcett was an American stage and screen actor as well as a three-time (in 1920 and 1921) film director.  His screen acting career spanned the years 1915 to 1931...",
+          "born": {},
+          "bornIn": "Alexandria, Virginia, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0269493",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "George Fawcett",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/pZBmcj6XkdBkNKvUIovZMNqg8qU.jpg",
+          "tmdbId": "262394",
+          "url": "https://themoviedb.org/person/262394"
+        },
+        "id": "9952",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nMontagu Love (15 March 1880 – 17 May 1943), also known as Montague Love, was an English screen, stage and vaudeville actor. \n\nBorn Harry Montague Love in Portsmouth, Hampshire, he was the son of Harry Love (b.  1852) and Fanny Louisa Love, née Poad (b.  1856); his father was listed as accountant on the 1881 English Census...",
+          "born": {},
+          "bornIn": "Portsmouth, Hampshire, England, UK",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0002311",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Montagu Love",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/y6thiSUw8nJShbN6fEXNp8yrxGx.jpg",
+          "tmdbId": "92907",
+          "url": "https://themoviedb.org/person/92907"
+        },
+        "id": "9953",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0017668",
+          "imdbRating": 7.8,
+          "imdbVotes": 2691,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "7914",
+          "plot": "This movie shows us one day in Berlin, the rhythm of that time, starting at the earliest morning and ends in the deepest night.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/2IuYWewY6VloddUj5e5kVFuPX7m.jpg",
+          "released": "1928-05-13",
+          "revenue": 0,
+          "runtime": 65,
+          "title": "Berlin: Symphony of a Great City (Berlin: Die Sinfonie der Großstadt)",
+          "tmdbId": "222",
+          "url": "https://themoviedb.org/movie/222",
+          "year": 1927
+        },
+        "id": "5293",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Paul Ludwig Hans Anton von Beneckendorff und von Hindenburg, dit Paul von Hindenburg, né le 2 octobre 1847 à Posen (aujourd'hui en Pologne) et décédé le 2 août 1934 au manoir de Neudeck en Prusse-Occidentale1, fut un militaire, nommé maréchal, et homme d'État allemand qui, du fait de son prestige et de sa longévité, joua un rôle important dans l'Histoire allemande...",
+          "born": {},
+          "bornIn": "Posen",
+          "degree": 2,
+          "died": {},
+          "imdbId": "0902438",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Paul von Hindenburg",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "2797",
+          "url": "https://themoviedb.org/person/2797"
+        },
+        "id": "9954",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nAnne Cornwall (January 17, 1897 – March 2, 1980), was an American actress.  She performed for forty years in many early silent film productions starting in 1918, and later in talkies, until 1959.  She was first married to writer/director Charles Maigne, then later to Los Angeles Engineer Ellis Wing Taylor.  Taylor fathered her only child, Peter. \n\nIn 1925, Anne was one of the WAMPAS Baby Stars...",
+          "born": {},
+          "bornIn": "Brooklyn, New York, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0180465",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Anne Cornwall",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "141304",
+          "url": "https://themoviedb.org/person/141304"
+        },
+        "id": "9955",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nFlora Bramley (1909 – 23 June 1993) was an English-born American actress and comedian. \n\nBorn in London, Bramley started out on stage in musical revues, and in June 1926, while visiting relatives in Hollywood, was signed by United Artists.  Her first film (for Film Booking Offices of America), The Dude Cowboy (1926) was followed by three more films, all for United Artists...",
+          "born": {},
+          "bornIn": "London, England, UK",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0104238",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Flora Bramley",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "143818",
+          "url": "https://themoviedb.org/person/143818"
+        },
+        "id": "9956",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nHarold Goodwin (December 1, 1902 – July 12, 1987) was an American film actor who performed in over 225 films. \n\nBorn in Peoria, Illinois, Goodwin began his film career while still in his teens in the 1915 film short Mike's Elopement.  One of his most popular roles of the silent era was that of Ted Brown in the 1927 Buster Keaton comedy College...",
+          "born": {},
+          "bornIn": "Peoria, Illinois, USA",
+          "degree": 11,
+          "died": {},
+          "imdbId": "0329467",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Harold Goodwin",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/y3RGWvME7g4QrpJQok6WqBQ1aKZ.jpg",
+          "tmdbId": "80545",
+          "url": "https://themoviedb.org/person/80545"
+        },
+        "id": "9957",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "degree": 4,
+          "died": {},
+          "imdbId": "0533045",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Marion Mack",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/wya8hfPbEM6syBOqtTgXfjUWvJa.jpg",
+          "tmdbId": "14417",
+          "url": "https://themoviedb.org/person/14417"
+        },
+        "id": "9958",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nGlen Cavender (September 19, 1883 – February 9, 1962) was an American film actor.  He appeared in 259 films between 1914 and 1949. \n\nThe Spanish–American War soldier was born in Tucson, Arizona, and died in Hollywood, California.  He started his acting career in vaudeville shows.  Cavender belonged to the original Keystone Cops and was a regular in numerous Mack Sennett comedies.  He also worked as a director for three Mack Sennett films between 1914 and 1916...",
+          "born": {},
+          "bornIn": "Tucson, Arizona, USA",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0147070",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Glen Cavender",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/mkCWTmyWtInbtNiSkBaUU20DgXz.jpg",
+          "tmdbId": "14419",
+          "url": "https://themoviedb.org/person/14419"
+        },
+        "id": "9959",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Waldron, Arkansas, USA",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0267650",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Jim Farley",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/fNM5KM1PeDxGIkHffFqXB09i7HW.jpg",
+          "tmdbId": "14420",
+          "url": "https://themoviedb.org/person/14420"
+        },
+        "id": "9960",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Walter James was an American stage and screen actor...",
+          "born": {},
+          "bornIn": "Chattanooga, Tennessee, USA",
+          "degree": 8,
+          "died": {},
+          "imdbId": "0417012",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Walter James",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "97996",
+          "url": "https://themoviedb.org/person/97996"
+        },
+        "id": "9961",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Wapanucka, Oklahoma, USA",
+          "degree": 8,
+          "died": {},
+          "imdbId": "0932381",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Leo Willis",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "141140",
+          "url": "https://themoviedb.org/person/141140"
+        },
+        "id": "9962",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "France"
+          ],
+          "degree": 0,
+          "imdbId": "0018192",
+          "imdbRating": 7.4,
+          "imdbVotes": 5162,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "58649",
+          "plot": "A film about the French Field Marshal's youth and early military career.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/zGupJ1ZO07BWco8YGjBHk90hYWh.jpg",
+          "released": "1929-02-17",
+          "revenue": 39448,
+          "runtime": 240,
+          "title": "Napoléon",
+          "tmdbId": "42536",
+          "url": "https://themoviedb.org/movie/42536",
+          "year": 1927
+        },
+        "id": "6937",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Albert Dieudonné  was a French actor,screenwriter, film director and novelist. \n\nDieudonné was born in Paris, France, and made his acting debut in silent film in 1908 for The Assassination of the Duke of Guise, with musical score by Camille Saint-Saëns.  In 1924, he directed the film drama Catherine, in which he also appeared as a major character.  Jean Renoir acted as his assistant director on the film...",
+          "born": {},
+          "bornIn": "Paris, France",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0226387",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Albert Dieudonné",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1VMqCKPC5KgbziBCWfIZYuoES5D.jpg",
+          "tmdbId": "143356",
+          "url": "https://themoviedb.org/person/143356"
+        },
+        "id": "9963",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Vladimir Roudenko",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "1693168",
+          "url": "https://themoviedb.org/person/1693168"
+        },
+        "id": "9964",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "degree": 5,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Edmond Van Daële",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/UyMRqHMEtS4L8ohmMHH5cmw0L2.jpg",
+          "tmdbId": "150860",
+          "url": "https://themoviedb.org/person/150860"
+        },
+        "id": "9965",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Alexandre Koubitzky",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "1693169",
+          "url": "https://themoviedb.org/person/1693169"
+        },
+        "id": "9966",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0018455",
+          "imdbRating": 8.4,
+          "imdbVotes": 27145,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "8125",
+          "plot": "A married farmer falls under the spell of a slatternly woman from the city, who tries to convince him to drown his wife.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/tyxjxpwr9NiVtSeITtVXuhp84Zl.jpg",
+          "released": "1927-11-04",
+          "revenue": 0,
+          "runtime": 94,
+          "title": "Sunrise: A Song of Two Humans",
+          "tmdbId": "631",
+          "url": "https://themoviedb.org/movie/631",
+          "year": 1927
+        },
+        "id": "5352",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "degree": 5,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "George O'Brien",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/fc960YdabhS8yjLRf4IxETSN4Hu.jpg",
+          "tmdbId": "9087",
+          "url": "https://themoviedb.org/person/9087"
+        },
+        "id": "9967",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0029606",
+          "imdbRating": 7.7,
+          "imdbVotes": 5145,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3217",
+          "plot": "A young woman comes to Hollywood with dreams of stardom, but achieves them only with the help of an alcoholic leading man whose best days are behind him.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/90EfCmXXWOs5dy7rHTNvGT9T8Kz.jpg",
+          "released": "1937-04-27",
+          "revenue": 0,
+          "runtime": 111,
+          "title": "Star Is Born, A",
+          "tmdbId": "22692",
+          "url": "https://themoviedb.org/movie/22692",
+          "year": 1937
+        },
+        "id": "2605",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Janet Gaynor (October 6, 1906 – September 14, 1984) was an American actress and painter. \n\nOne of the most popular actresses of the silent film era, in 1928 Gaynor became the first winner of the Academy Award for Best Actress for her performances in three films: Seventh Heaven (1927), Sunrise: A Song of Two Humans (1927) and Street Angel (1928).  This was the only occasion on which an actress has won for multiple roles.  This rule would be changed three years later by AMPAS...",
+          "born": {},
+          "bornIn": "Philadelphia, Pennsylvania, USA",
+          "degree": 11,
+          "died": {},
+          "imdbId": "0310980",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Janet Gaynor",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/kwyClWei18GOssMPbrs4RL61izG.jpg",
+          "tmdbId": "9088",
+          "url": "https://themoviedb.org/person/9088"
+        },
+        "id": "9968",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Margaret (born Marguerite) Livingston was an American screen actress, in films from 1916 to 1934, most notably during the Silent era...",
+          "born": {},
+          "bornIn": "Salt Lake City, Utah, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0515272",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Margaret Livingston",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/gkLkBJMDjm3AFo8CUmMZDgAKMGD.jpg",
+          "tmdbId": "9089",
+          "url": "https://themoviedb.org/person/9089"
+        },
+        "id": "9969",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Copenhagen, Denmark",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0743017",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Bodil Rosing",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/zNhUo6xA1AAjtshFInTabGct4O9.jpg",
+          "tmdbId": "9090",
+          "url": "https://themoviedb.org/person/9090"
+        },
+        "id": "9970",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nClara Gordon Bow (July 29, 1905 – September 27, 1965) was an American actress who rose to stardom in silent films during the 1920s and successfully made the transition to \"talkies\" after 1927.  Her appearance as a plucky shopgirl in the film It brought her global fame and the nickname \"The It Girl\".  Bow came to personify the Roaring Twenties and is described as its leading sex symbol...",
+          "born": {},
+          "bornIn": "Brooklyn, New York City, New York, USA",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0001966",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Clara Bow",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/gt3m6XcULHedwr3fT8Oaxfwl1QF.jpg",
+          "tmdbId": "102499",
+          "url": "https://themoviedb.org/person/102499"
+        },
+        "id": "9971",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "degree": 6,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Charles 'Buddy' Rogers",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/xWAatpaqEQF5y0HKuYaSbhDuBQO.jpg",
+          "tmdbId": "102500",
+          "url": "https://themoviedb.org/person/102500"
+        },
+        "id": "9972",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0023753",
+          "imdbRating": 6.6,
+          "imdbVotes": 1411,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "80748",
+          "plot": "In Victorian England a bored young girl dreams that she has entered a fantasy world called Wonderland populated by even more fantastic characters.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/fJpgXzFpYSmtIs6GB0zLMOAkOu.jpg",
+          "released": "1933-12-22",
+          "revenue": 0,
+          "runtime": 76,
+          "title": "Alice in Wonderland",
+          "tmdbId": "25694",
+          "url": "https://themoviedb.org/movie/25694",
+          "year": 1933
+        },
+        "id": "7652",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Richard Arlen (born Sylvanus Richard Mattimore) was an American film and television actor.  He served as a pilot in the Royal Canadian Flying Corps during World War I.  After the war, he went to the oilfields of Texas and Oklahoma and found work as a tool boy.  He was thereafter a messenger and sporting editor of a newspaper before going to Los Angeles to act in films, but no producer wanted him...",
+          "born": {},
+          "bornIn": "St. Paul, Minnesota, USA",
+          "degree": 10,
+          "died": {},
+          "imdbId": "0035159",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Richard Arlen",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bsWai47uXHIEInGmobbVpQRTzhJ.jpg",
+          "tmdbId": "29760",
+          "url": "https://themoviedb.org/person/29760"
+        },
+        "id": "9973",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0018737",
+          "imdbRating": 8,
+          "imdbVotes": 7179,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "German"
+          ],
+          "movieId": "25763",
+          "plot": "The rise and inevitable fall of an amoral but naive young woman whose insouciant eroticism inspires lust and violence in those around her.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/keqscEvY0oZqbtiYf8odccmHlll.jpg",
+          "released": "1930-02-22",
+          "revenue": 0,
+          "runtime": 109,
+          "title": "Pandora's Box (Büchse der Pandora, Die)",
+          "tmdbId": "905",
+          "url": "https://themoviedb.org/movie/905",
+          "year": 1929
+        },
+        "id": "5682",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nMary Louise Brooks (November 14, 1906 – August 8, 1985), generally known by her stage name Louise Brooks, was an American dancer, model, showgirl and silent film actress, noted for popularizing the bobbed haircut.  She is best known for the films Pandora's Box (1929), Diary of a Lost Girl (1929), and Prix de Beauté (Miss Europe) (1930).  She starred in 17 silent films and, late in life, authored a memoir, Lulu in Hollywood...",
+          "born": {},
+          "bornIn": "Cherryvale, Kansas, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0000315",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Louise Brooks",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/z5SZ8JIMJxdJC0L3uwz0aSzvQfH.jpg",
+          "tmdbId": "13904",
+          "url": "https://themoviedb.org/person/13904"
+        },
+        "id": "9974",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia.  Fritz Kortner (12 May 1892 – 22 July 1970) was an Austrian-born stage and film actor and theatre director. \n\nKortner was born in Vienna as Fritz Nathan Kohn.  He studied at the Vienna Academy of Music and Dramatic Art.  After graduating, he joined Max Reinhardt in Berlin in 1911 and then Leopold Jessner in 1916.  Also in that year he made his first appearance in a silent film.  He became one of Germany's best known character actors...",
+          "born": {},
+          "bornIn": "Vienna - Austria",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0466776",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Fritz Kortner",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/aah9CtF4RTjPWgFHdICT5Yftpcx.jpg",
+          "tmdbId": "13905",
+          "url": "https://themoviedb.org/person/13905"
+        },
+        "id": "9975",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nFrancis Lederer (November 6, 1899 – May 25, 2000) was a Czech-born film and stage actor with a successful career, first in Europe, then in the United States.  His original name was František Lederer.   Lederer's first American movies were Man of Two Worlds (1934), Romance in Manhattan (1934), with Ginger Rogers, The Gay Deception (1935), with Frances Dee, and One Rainy Afternoon (1936)...",
+          "born": {},
+          "bornIn": "Prague, Bohemia, Austria-Hungary [now Czech Republic]",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0496473",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Francis Lederer",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/7heriGOapJPNxxpWxN0ahg9u1HV.jpg",
+          "tmdbId": "13906",
+          "url": "https://themoviedb.org/person/13906"
+        },
+        "id": "9976",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Vienna, Austria-Hungary (now Austria)",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0324501",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Carl Goetz",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "13907",
+          "url": "https://themoviedb.org/person/13907"
+        },
+        "id": "9977",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Marceline Day (born Marceline Newlin) was an American screen actress who achieved stardom in the mid 1920s, appearing opposite such diverse stars as Harry Langdon, John Barrymore, Ramon Novarro, Lon Chaney, and Buster Keaton.  Her career faltered in the early 1930s and she was soon reduced to appearing in low-budget thrillers and action pictures.  Day retired in the mid 1930s.  She died in 2000...",
+          "born": {},
+          "bornIn": "Colorado Springs, Colorado, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0206496",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Marceline Day",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/nUgZ88hv2zvjJPvmVca7CxgXeGA.jpg",
+          "tmdbId": "122974",
+          "url": "https://themoviedb.org/person/122974"
+        },
+        "id": "9978",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nSidney Bracey (18 December 1877 – 5 August 1942) was an Australian-born American actor.  After a stage career in Australia, on Broadway and in Britain, he appeared in 321 films between 1909 and 1942. \n\nBracey was born in Melbourne, Victoria, with the name Sidney Bracy, later changing the spelling of his last name.  He was the son of Welsh tenor Henry Bracy and English actress Clara T.  Bracy.  His aunt was actress and dancer Lydia Thompson...",
+          "born": {},
+          "bornIn": "Melbourne, Victoria, Australia",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0102718",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Sidney Bracey",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/zwWZ51P10q6fAydhoQk2tkOR8ei.jpg",
+          "tmdbId": "80546",
+          "url": "https://themoviedb.org/person/80546"
+        },
+        "id": "9979",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nAl Ernest Garcia (11 March 1887 – 4 September 1938) was an American actor, best known for his long association with Charlie Chaplin.  He acted with Chaplin in six films between 1921 and 1936, cast mostly in clinical or villainous supporting roles.  Garcia portrayed the brutal circus director in The Circus (1928), the snobbish butler of the millionaire in City Lights (1931), and the factory owner in Modern Times (1936)...",
+          "born": {},
+          "bornIn": "San Francisco, California, USA",
+          "degree": 10,
+          "died": {},
+          "imdbId": "0305087",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Al Ernest Garcia",
+          "numberOfMoviesActedIn": 2,
+          "tmdbId": "13855",
+          "url": "https://themoviedb.org/person/13855"
+        },
+        "id": "9980",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Merna Kennedy (September 7, 1908 - December 20, 1944) was an American actress of the late silent era...",
+          "born": {},
+          "bornIn": "Kankakee, Illinois, USA",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0448224",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Merna Kennedy",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/fRnKwgnclUQ1m1OwWkTtGMPRkrH.jpg",
+          "tmdbId": "147962",
+          "url": "https://themoviedb.org/person/147962"
+        },
+        "id": "9981",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nHarry Crocker (July 2, 1893 - May 23, 1958) was an American film star of the 1920s and who starred in Charlie Chaplin's The Circus in 1928.  He was a Los Angeles Examiner newsman. \n\nDescription above from the Wikipedia article Harry Crocker, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "San Francisco, California, USA",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0188357",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Harry Crocker",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/zU1gFnjgJpBO1Blek4s7FI9iHBj.jpg",
+          "tmdbId": "147963",
+          "url": "https://themoviedb.org/person/147963"
+        },
+        "id": "9982",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia\n\nGeorge Davis (7 November 1889 – 19 April 1965) was a Dutch-born American actor.  He appeared in more than 260 films between 1916 and 1963.  He was born in Amsterdam and died in Los Angeles, California...",
+          "born": {},
+          "bornIn": "Amsterdam, Noord-Holland, Netherlands",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0204639",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "George Davis",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bYZ6eVY8RTYZHuWORH2mKrtQ5RK.jpg",
+          "tmdbId": "120701",
+          "url": "https://themoviedb.org/person/120701"
+        },
+        "id": "9983",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "France"
+          ],
+          "degree": 0,
+          "imdbId": "0019254",
+          "imdbRating": 8.4,
+          "imdbVotes": 24176,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "French"
+          ],
+          "movieId": "6985",
+          "plot": "A chronicle of the trial of Jeanne d'Arc on charges of heresy, and the efforts of her ecclesiastical jurists to force Jeanne to recant her claims of holy visions.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/8OYGtQlO8k9PcOm49apV62eVJQo.jpg",
+          "released": "1928-10-25",
+          "revenue": 0,
+          "runtime": 114,
+          "title": "Passion of Joan of Arc, The (Passion de Jeanne d'Arc, La)",
+          "tmdbId": "780",
+          "url": "https://themoviedb.org/movie/780",
+          "year": 1928
+        },
+        "id": "4929",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia.   \n\nRenée Jeanne Falconetti (July 21, 1892 – December 12, 1946), sometimes credited as Maria Falconetti, Marie Falconetti, Renée Maria Falconetti, or, simply, Falconetti, was a French stage and film actress, notable for her role as Joan of Arc in Carl Theodor Dreyer's 1928 silent film, La Passion de Jeanne d'Arc. \n\nDescription above from the Wikipedia article  Renée Jeanne Falconetti, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Pantin, Seine [now Seine-Saint-Denis], France ",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0266029",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Maria Falconetti",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/gt2p4FrgveCD5qb0uhYH67MIUd5.jpg",
+          "tmdbId": "11589",
+          "url": "https://themoviedb.org/person/11589"
+        },
+        "id": "9984",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "degree": 5,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Eugene Silvain",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/pTe6VvXg6UeYklsdwuALsoaHlax.jpg",
+          "tmdbId": "11590",
+          "url": "https://themoviedb.org/person/11590"
+        },
+        "id": "9985",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Paris - France",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0075551",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "André Berley",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/ckoUscLgTslbUzj293t6mWxCQt9.jpg",
+          "tmdbId": "11591",
+          "url": "https://themoviedb.org/person/11591"
+        },
+        "id": "9986",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Paris, France",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0776914",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Maurice Schutz",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/rAgFu1nz3AUnlupU39fY3WKAoPY.jpg",
+          "tmdbId": "11586",
+          "url": "https://themoviedb.org/person/11586"
+        },
+        "id": "9987",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nTom McGuire (1 September 1873 – 6 May 1954) was an English stage and film actor.  He appeared in about 175 films between 1919 and 1949.  He was born in Lancashire, England and died in Hollywood, California...",
+          "born": {},
+          "bornIn": "Lancashire, England, UK",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0570297",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Tom McGuire",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/vsEHvdahFS06ZkkfLosU3k9C6ex.jpg",
+          "tmdbId": "120811",
+          "url": "https://themoviedb.org/person/120811"
+        },
+        "id": "9988",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "He was the man you loved to hiss.  This towering (6' 4\"), highly imposing  character star with cold, hollow, beady eyes and a huge, protruding  snout would go on to become one of the silent screen's finest arch  villains.  Born Ernest Thayson Torrence-Thompson on June 26, 1878, in  Edinburgh, Scotland, he was, unlikely enough, an exceptional pianist and  operatic baritone...",
+          "born": {},
+          "bornIn": "Edinburgh, Scotland, UK",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0868458",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Ernest Torrence",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/h616zkF9v9dyNkmMspe54sTsFTn.jpg",
+          "tmdbId": "98034",
+          "url": "https://themoviedb.org/person/98034"
+        },
+        "id": "9989",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Tom Lewis",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "1444312",
+          "url": "https://themoviedb.org/person/1444312"
+        },
+        "id": "9990",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0039404",
+          "imdbRating": 6.8,
+          "imdbVotes": 4234,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3759",
+          "plot": "Jiminy Cricket hosts two Disney animated shorts: Bongo, about a circus bear escaping to the wild, and Mickey and the Beanstalk, a take on the famous fairy tale.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/AiwygivICb19KEcbzKQKfMNsivQ.jpg",
+          "released": "1947-09-27",
+          "revenue": 0,
+          "runtime": 70,
+          "title": "Fun and Fancy Free",
+          "tmdbId": "46929",
+          "url": "https://themoviedb.org/movie/46929",
+          "year": 1947
+        },
+        "id": "3026",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia.   \n\nWalter Elias \"Walt\" Disney (December 5, 1901 – December 15, 1966) was an American film producer, director, screenwriter, voice actor, animator, entrepreneur, entertainer, international icon, and philanthropist, well-known for his influence in the field of entertainment during the 20th century.  Along with his brother Roy O...",
+          "born": {},
+          "bornIn": "Hermosa, Chicago, Illinois, USA",
+          "degree": 15,
+          "died": {},
+          "imdbId": "0000370",
+          "labels": [
+            "Actor",
+            "Director",
+            "Person"
+          ],
+          "name": "Walt Disney",
+          "numberOfMoviesActedIn": 4,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/rucTIeVtozKer6TmCYBxFr8Wy2q.jpg",
+          "tmdbId": "2106",
+          "url": "https://themoviedb.org/person/2106"
+        },
+        "id": "9991",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 2280000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0032455",
+          "imdbRating": 7.8,
+          "imdbVotes": 69453,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "1282",
+          "plot": "A collection of animated interpretations of great works of Western classical music.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/mSJgxrTaTgDSOoggIPcj3ZoZswT.jpg",
+          "released": "1940-12-25",
+          "revenue": 83320000,
+          "runtime": 125,
+          "title": "Fantasia",
+          "tmdbId": "756",
+          "url": "https://themoviedb.org/movie/756",
+          "year": 1940
+        },
+        "id": "1055",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0036326",
+          "imdbRating": 6.3,
+          "imdbVotes": 2738,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Portuguese"
+          ],
+          "movieId": "3611",
+          "plot": "Disney animators tour South America and present four animated shorts inspired by their trip.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/jiNSrKpgKdLXEUasOvNaCBgEner.jpg",
+          "released": "1943-02-06",
+          "revenue": 1135000,
+          "runtime": 42,
+          "title": "Saludos Amigos",
+          "tmdbId": "14906",
+          "url": "https://themoviedb.org/movie/14906",
+          "year": 1942
+        },
+        "id": "2900",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 4986,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0019422",
+          "imdbRating": 7.7,
+          "imdbVotes": 4504,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "2102",
+          "plot": "Mickey Mouse, piloting a steamboat, delights his passenger, Minnie, by making musical instruments out of the menagerie on deck.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/tJev6cNihRzUHYvUl113gO715TF.jpg",
+          "released": "1930-08-11",
+          "revenue": 0,
+          "runtime": 8,
+          "title": "Steamboat Willie",
+          "tmdbId": "53565",
+          "url": "https://themoviedb.org/movie/53565",
+          "year": 1928
+        },
+        "id": "1681",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "UK"
+          ],
+          "degree": 0,
+          "imdbId": "0019702",
+          "imdbRating": 7,
+          "imdbVotes": 6915,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "2221",
+          "plot": "After killing a man in self-defence, a young woman is blackmailed by a witness to the killing.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/klilqRJDTANv9XMTBbL51NOsOXZ.jpg",
+          "released": "1929-10-06",
+          "revenue": 0,
+          "runtime": 85,
+          "title": "Blackmail",
+          "tmdbId": "543",
+          "url": "https://themoviedb.org/movie/543",
+          "year": 1929
+        },
+        "id": "1780",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nAnny Ondra (May 15 1903 – February 28 1987) was a Czech film actress.  She was born Anna Sophie Ondráková in Tarnów, Galicia, Austria–Hungary, now Poland, and died in Hollenstedt near Harburg, Germany. \n\nDescription above from the Wikipedia article Anny Ondra, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "degree": 4,
+          "died": {},
+          "imdbId": "0648565",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Anny Ondra",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/qj3Qgd6tldsGwYUe125TD4iIQZh.jpg",
+          "tmdbId": "7380",
+          "url": "https://themoviedb.org/person/7380"
+        },
+        "id": "9992",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia\n\nSara Allgood (October 15, 1879 – September 13, 1950) was an Irish actress. \n\nDescription above from the Wikipedia article Sara Allgood, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Dublin, Ireland",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0021329",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Sara Allgood",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/hgnPW9s348IuRTP6cMryYQZIEWs.jpg",
+          "tmdbId": "7381",
+          "url": "https://themoviedb.org/person/7381"
+        },
+        "id": "9993",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "degree": 4,
+          "died": {},
+          "imdbId": "0665715",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Charles Paton",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/o4bThCQndsD9wMzL5D1K7KkFfKV.jpg",
+          "tmdbId": "7382",
+          "url": "https://themoviedb.org/person/7382"
+        },
+        "id": "9994",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "UK"
+          ],
+          "degree": 0,
+          "imdbId": "0050873",
+          "imdbRating": 7,
+          "imdbVotes": 2377,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3659",
+          "plot": "Professor Quatermass, trying to gather support for his Lunar colonisation project, is intrigued by mysterious traces that have been showing up.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/yE2F5eqmKYySZw1GsJP5FJmkfht.jpg",
+          "released": "1957-09-01",
+          "revenue": 0,
+          "runtime": 85,
+          "title": "Quatermass 2 (Enemy from Space)",
+          "tmdbId": "26278",
+          "url": "https://themoviedb.org/movie/26278",
+          "year": 1957
+        },
+        "id": "2935",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "John Longden was a West Indian-born English screen, stage, and television actor.  He appeared in dozens of films from 1926 to 1964, including five (Blackmail, Juno and the Paycock, The Skin Game, Young and Innocent, Jamaica Inn) directed by Alfred Hitchcock.  Longden appeared in numerous television series...",
+          "born": {},
+          "bornIn": "West Indies",
+          "degree": 10,
+          "died": {},
+          "imdbId": "0519274",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "John Longden",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/9LkSpBSZbC9RcQiTmoi0Yw3X0Xy.jpg",
+          "tmdbId": "7383",
+          "url": "https://themoviedb.org/person/7383"
+        },
+        "id": "9995",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 6,
+          "imdbId": "0454558",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Charles King",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "1516030",
+          "url": "https://themoviedb.org/person/1516030"
+        },
+        "id": "9996",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nAnita Page (August 4, 1910 – September 6, 2008), born Anita Evelyn Pomares, was an American film actress who reached stardom in the last years of the silent film era.  She became a highly popular young star, reportedly receiving the most fan mail of anyone on the MGM lot.  Page was referred to as \"a blond, blue-eyed Latin\" and \"the girl with the most beautiful face in Hollywood\" in the 1920s.  She retired from acting in 1936 at the age of 23...",
+          "born": {},
+          "bornIn": "Flushing, New York, USA",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0656105",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Anita Page",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/mZUSOcjuP7YVtNQvUDrWljcd0aP.jpg",
+          "tmdbId": "98012",
+          "url": "https://themoviedb.org/person/98012"
+        },
+        "id": "9997",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Soviet Union"
+          ],
+          "degree": 0,
+          "imdbId": "0019760",
+          "imdbRating": 8.4,
+          "imdbVotes": 14521,
+          "labels": [
+            "Movie"
+          ],
+          "movieId": "6433",
+          "plot": "A man travels around a city with a camera slung over his shoulder, documenting urban life with dazzling invention.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/wM8NZ8O7zhkcE1GkEbY1f7yldrm.jpg",
+          "released": "1929-05-12",
+          "revenue": 0,
+          "runtime": 68,
+          "title": "Man with the Movie Camera, The (Chelovek s kino-apparatom)",
+          "tmdbId": "26317",
+          "url": "https://themoviedb.org/movie/26317",
+          "year": 1929
+        },
+        "id": "4661",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Bialystok, Grodno Province, Russian Empire (now Poland)",
+          "degree": 2,
+          "died": {},
+          "imdbId": "0442227",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Mikhail Kaufman",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/o2EH1WP2Qu271ToI63okSZwCzTF.jpg",
+          "tmdbId": "1042437",
+          "url": "https://themoviedb.org/person/1042437"
+        },
+        "id": "9999",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0022158",
+          "imdbRating": 7.6,
+          "imdbVotes": 8917,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25777",
+          "plot": "On a transatlantic crossing, the Marx brothers get up to their usual antics and manage to annoy just about everyone on board the ship.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/9iZpFKpp6ZaTahbprypM7ek4HVt.jpg",
+          "released": "1931-09-19",
+          "revenue": 0,
+          "runtime": 77,
+          "title": "Monkey Business",
+          "tmdbId": "13911",
+          "url": "https://themoviedb.org/movie/13911",
+          "year": 1931
+        },
+        "id": "5688",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "degree": 14,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "The Marx Brothers",
+          "numberOfMoviesActedIn": 5
+        },
+        "id": "10000",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0023027",
+          "imdbRating": 7.7,
+          "imdbVotes": 9150,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "7091",
+          "plot": "Quincy Adams Wagstaff, the new president of Huxley University, hires bumblers Baravelli and Pinky to help his school win the big football game against rival Darwin University.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1a4ihIN6rqZawpzQjTFjibpSuKa.jpg",
+          "released": "1932-08-19",
+          "revenue": 0,
+          "runtime": 68,
+          "title": "Horse Feathers",
+          "tmdbId": "13912",
+          "url": "https://themoviedb.org/movie/13912",
+          "year": 1932
+        },
+        "id": "5011",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0023969",
+          "imdbRating": 8,
+          "imdbVotes": 46041,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "1256",
+          "plot": "Rufus T. Firefly is named president/dictator of bankrupt Freedonia and declares war on neighboring Sylvania over the love of wealthy Mrs. Teasdale.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/31t63plEGKHhYuuCpC9bFWO9SBS.jpg",
+          "released": "1933-11-17",
+          "revenue": 0,
+          "runtime": 68,
+          "title": "Duck Soup",
+          "tmdbId": "3063",
+          "url": "https://themoviedb.org/movie/3063",
+          "year": 1933
+        },
+        "id": "1029",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 500000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0019777",
+          "imdbRating": 7.2,
+          "imdbVotes": 5402,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "33312",
+          "plot": "During the Florida land boom, the Marx brothers run a hotel, auction off some land, thwart a jewel robbery, and generally act like themselves.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/whj861kMTcvjw7b1ybASIV6YXiO.jpg",
+          "released": "1929-08-03",
+          "revenue": 1800000,
+          "runtime": 96,
+          "title": "Cocoanuts, The",
+          "tmdbId": "20625",
+          "url": "https://themoviedb.org/movie/20625",
+          "year": 1929
+        },
+        "id": "6154",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0020640",
+          "imdbRating": 7.7,
+          "imdbVotes": 10531,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "7706",
+          "plot": "Mayhem and zaniness ensue when a valuable painting goes missing during a party in honor of famed African explorer Captain Spaulding.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/uSGgF3Lb9ZHLKNcirRpFaZmMUTE.jpg",
+          "released": "1930-08-28",
+          "revenue": 0,
+          "runtime": 97,
+          "title": "Animal Crackers",
+          "tmdbId": "13913",
+          "url": "https://themoviedb.org/movie/13913",
+          "year": 1930
+        },
+        "id": "5230",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Herbert Manfred \"Zeppo\" Marx (February 25, 1901 – November 30, 1979) was an American film star, theatrical agent and businessman.  He was the youngest of the five Marx Brothers.  He appeared in the first five Marx Brothers films, but then left the act to start his second career as a theatrical agent. \n\nDescription above from the Wikipedia article Zeppo Marx, licensed under CC-BY-SA, full list  of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 14,
+          "died": {},
+          "imdbId": "0555688",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Zeppo Marx",
+          "numberOfMoviesActedIn": 5,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/xHuDj6pCGhQTDVpP8QBKV7dFNM7.jpg",
+          "tmdbId": "30014",
+          "url": "https://themoviedb.org/person/30014"
+        },
+        "id": "10001",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0033388",
+          "imdbRating": 6.6,
+          "imdbVotes": 3727,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "32882",
+          "plot": "A detective is hired to protect the life of a singer, who has recently inherited a department store, from the store's crooked manager.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/3lY9bR7a0xc8XMyGkvg7S3DkMEZ.jpg",
+          "released": "1941-06-20",
+          "revenue": 0,
+          "runtime": 83,
+          "title": "Big Store, The",
+          "tmdbId": "26182",
+          "url": "https://themoviedb.org/movie/26182",
+          "year": 1941
+        },
+        "id": "6136",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Julius Henry \"Groucho\" Marx (October 2, 1890 – August 19, 1977) was an American comedian and film star famed as a master of wit.  His rapid-fire delivery of innuendo-laden patter earned him many admirers. He made 13 feature films with his siblings the Marx Brothers, of whom he was the third-born.  He also had a successful solo career, most notably as the host of the radio and television game show You Bet Your Life...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 19,
+          "died": {},
+          "imdbId": "0000050",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Groucho Marx",
+          "numberOfMoviesActedIn": 11,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/mIoLM0MlEAP71ZwU8YeW8VpK268.jpg",
+          "tmdbId": "10798",
+          "url": "https://themoviedb.org/person/10798"
+        },
+        "id": "10002",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0026778",
+          "imdbRating": 8.1,
+          "imdbVotes": 24195,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Italian"
+          ],
+          "movieId": "7132",
+          "plot": "A sly business manager and two wacky friends of two opera singers help them achieve success while humiliating their stuffy and snobbish enemies.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/dzqBOSsUvZfoPU65fofXHJfOyhK.jpg",
+          "released": "1935-11-15",
+          "revenue": 0,
+          "runtime": 96,
+          "title": "Night at the Opera, A",
+          "tmdbId": "37719",
+          "url": "https://themoviedb.org/movie/37719",
+          "year": 1935
+        },
+        "id": "5033",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0032536",
+          "imdbRating": 6.9,
+          "imdbVotes": 3953,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "37211",
+          "plot": "The Marx Brothers come to the rescue in the Wild West when a young man, trying to settle an old family feud so he can marry the girl he loves, runs afoul of crooks.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/di0laTicoduEdp1WS10T8Poss7r.jpg",
+          "released": "1940-12-06",
+          "revenue": 0,
+          "runtime": 80,
+          "title": "Go West",
+          "tmdbId": "22575",
+          "url": "https://themoviedb.org/movie/22575",
+          "year": 1940
+        },
+        "id": "6244",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0030696",
+          "imdbRating": 6.8,
+          "imdbVotes": 3557,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Russian"
+          ],
+          "movieId": "34002",
+          "plot": "A penniless theatrical producer must outwit the hotel efficiency expert trying to evict him from his room, while securing a backer for his new play.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bYLS9xtpZvvr6NNMFXDcqv3D0nl.jpg",
+          "released": "1938-09-30",
+          "revenue": 0,
+          "runtime": 78,
+          "title": "Room Service",
+          "tmdbId": "15938",
+          "url": "https://themoviedb.org/movie/15938",
+          "year": 1938
+        },
+        "id": "6189",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0031060",
+          "imdbRating": 6.9,
+          "imdbVotes": 4279,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "34018",
+          "plot": "The Marx Brothers try to help the owner of a circus recover some stolen funds before he finds himself out of a job.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bmAgUTUwBiFworx2Vt5inY927rM.jpg",
+          "released": "1939-10-20",
+          "revenue": 0,
+          "runtime": 87,
+          "title": "At the Circus",
+          "tmdbId": "22553",
+          "url": "https://themoviedb.org/movie/22553",
+          "year": 1939
+        },
+        "id": "6190",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0028772",
+          "imdbRating": 7.7,
+          "imdbVotes": 10391,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Italian"
+          ],
+          "movieId": "8542",
+          "plot": "A veterinarian posing as a doctor, a race-horse owner and his friends struggle to help keep a sanitarium open with the help of a misfit race-horse.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/lCsoSdDSlEIq5my6fBecpfa6NPB.jpg",
+          "released": "1937-06-11",
+          "revenue": 0,
+          "runtime": 111,
+          "title": "Day at the Races, A",
+          "tmdbId": "11939",
+          "url": "https://themoviedb.org/movie/11939",
+          "year": 1937
+        },
+        "id": "5471",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Arthur Adolph \"Harpo\" Marx (November 23, 1888 – September 28, 1964) was an American comedian and film star.  He was the second oldest of the Marx Brothers.  His comic style was influenced by clown and pantomime traditions.  He wore a curly reddish wig, and never spoke during performances (he blew a horn or whistled to communicate).  Marx frequently used props such as a walking stick with a built-in bulb horn, and he played the harp in most of his films...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 19,
+          "died": {},
+          "imdbId": "0555617",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Harpo Marx",
+          "numberOfMoviesActedIn": 11,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/oD5kj8uHtCi1KLm7uanUICUtDP7.jpg",
+          "tmdbId": "10800",
+          "url": "https://themoviedb.org/person/10800"
+        },
+        "id": "10003",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia\n\nBelle Bennett (April 22, 1891 – November 4, 1932) was a stage and screen actress who started her professional career in vaudeville.  She was born in Milaca, Minnesota. \n\nBennett was working as a film actress by 1913, and was cast in numerous one-reel shorts by small East Coast film companies.  She appeared in minor motion pictures like the western film A Ticket to Red Horse Gulch (Mutual, 1914)...",
+          "born": {},
+          "bornIn": "Milaca, Minnesota, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0071602",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Belle Bennett",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/oYyIWd9goKe9Jql9wOZArQohg1P.jpg",
+          "tmdbId": "587954",
+          "url": "https://themoviedb.org/person/587954"
+        },
+        "id": "10004",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "degree": 5,
+          "died": {},
+          "imdbId": "0720885",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Dorothy Revier",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/8qa37zMOkCZrTeWUXgGQ7DVkVm3.jpg",
+          "tmdbId": "120536",
+          "url": "https://themoviedb.org/person/120536"
+        },
+        "id": "10006",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nVera Lewis (June 10, 1873 – February 8, 1956) was an American film and stage actress, beginning in the silent film era.  She appeared in 183 films between 1915 and 1947.  She was married to actor Ralph Lewis. \n\nShe was born in Manhattan, where she began acting in stage productions.  Her film career started in 1915 with the film Hypocrites, which starred Myrtle Stedman and Courtenay Foote...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0507849",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Vera Lewis",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/q8kMDxClpiT543Ktt5I4gUZ3LkE.jpg",
+          "tmdbId": "29953",
+          "url": "https://themoviedb.org/person/29953"
+        },
+        "id": "10007",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "France"
+          ],
+          "degree": 0,
+          "imdbId": "0020530",
+          "imdbRating": 7.9,
+          "imdbVotes": 32530,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "French"
+          ],
+          "movieId": "25771",
+          "plot": "Luis Buñuel and Salvador Dalí present seventeen minutes of bizarre, surreal imagery.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/aZHDeGBqaPXdKagnmecqqY08vum.jpg",
+          "released": "1929-06-06",
+          "revenue": 0,
+          "runtime": 16,
+          "title": "Andalusian Dog, An (Chien andalou, Un)",
+          "tmdbId": "626",
+          "url": "https://themoviedb.org/movie/626",
+          "year": 1929
+        },
+        "id": "5685",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nSimone Mareuil (25 August 1903 – 24 October 1954) was a French actress best known for appearing in the surrealist film Un chien andalou. \n\nDescription above from the Wikipedia article Simone Mareuil, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Perigueux, Dordogne, Aquitaine, France",
+          "degree": 3,
+          "died": {},
+          "imdbId": "0546540",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Simone Mareuil",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "8993",
+          "url": "https://themoviedb.org/person/8993"
+        },
+        "id": "10008",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nPierre Batcheff (23 June 1907 – 13 April 1932) was a French actor, whose original name was Piotr Bacev (from Russia), born in Harbin, Manchuria.  His best-known film was Un chien andalou (1929) by Luis Buñuel and Salvador Dali.  He was married to French film editor Denise Piazza...",
+          "born": {},
+          "bornIn": "Harbin, Manchuria",
+          "degree": 3,
+          "died": {},
+          "imdbId": "0060715",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Pierre Batcheff",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "8992",
+          "url": "https://themoviedb.org/person/8992"
+        },
+        "id": "10009",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 1448864,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0020629",
+          "imdbRating": 8.1,
+          "imdbVotes": 45915,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " French",
+            " German",
+            " Latin"
+          ],
+          "movieId": "1927",
+          "plot": "A young soldier faces profound disillusionment in the soul-destroying horror of World War I.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/yAU6jklJLUjZot3WyvyJrxVdLKb.jpg",
+          "released": "1930-08-24",
+          "revenue": 3270000,
+          "runtime": 136,
+          "title": "All Quiet on the Western Front",
+          "tmdbId": "143",
+          "url": "https://themoviedb.org/movie/143",
+          "year": 1930
+        },
+        "id": "1509",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "It was Lionel Barrymore who gave Louis Wolheim his start as an actor.  Wolheim had had his face more or less smashed in and his nose nicely fractured while playing on a scrub Cornell football team.  Later as a Cornell Instructor he found life none too easy.  He had worked off and on as an extra in the Wharton studio but never received much attention.  Barrymore had only to look at him once to realize that Wolheim's face was his fortune...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0938464",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Louis Wolheim",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/unc3IbI5KSZDVRS7o7x6aS8T26e.jpg",
+          "tmdbId": "2010",
+          "url": "https://themoviedb.org/person/2010"
+        },
+        "id": "10010",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Lew Ayres was born in Minneapolis, Minnesota and raised in San Diego,  California.  A college dropout, he was found by a talent scout in the  Coconut Grove nightclub in Los Angeles and entered Hollywood as a bit  player.  He was leading man to Greta Garbo in The Kiss (1929), but it was the role of Paul Baumer in All Quiet on the Western Front  (1930) that was his big break.  He was profoundly affected by the  anti-war message of that film, and when, in 1942, the popular star of Young Dr...",
+          "born": {},
+          "bornIn": "Minneapolis, Minnesota, USA",
+          "degree": 12,
+          "died": {},
+          "imdbId": "0000817",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Lew Ayres",
+          "numberOfMoviesActedIn": 3,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/rXT2hHyiQV3Ufb8tHD2iyoCabPC.jpg",
+          "tmdbId": "2007",
+          "url": "https://themoviedb.org/person/2007"
+        },
+        "id": "10011",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0030241",
+          "imdbRating": 7.9,
+          "imdbVotes": 10406,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25850",
+          "plot": "A young man falls in love with a girl from a rich family. His unorthodox plan to go on holiday for the early years of his life is met with skepticism by everyone except for his fiancée's eccentric sister and long suffering brother.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/vXBJh2bjK2jgYvYw67GXlNa23aU.jpg",
+          "released": "1938-06-15",
+          "revenue": 0,
+          "runtime": 95,
+          "title": "Holiday",
+          "tmdbId": "16274",
+          "url": "https://themoviedb.org/movie/16274",
+          "year": 1938
+        },
+        "id": "5702",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0040495",
+          "imdbRating": 7.8,
+          "imdbVotes": 2984,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " American Sign Language"
+          ],
+          "movieId": "8463",
+          "plot": "In post-war Cape Breton, a doctor's efforts to tutor a deaf/mute woman are undermined when she is raped, and the resulting pregnancy causes scandal to swirl.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/tiuuAXYwGmz4zgIL7u6gR3ouxHo.jpg",
+          "released": "1948-09-14",
+          "revenue": 0,
+          "runtime": 102,
+          "title": "Johnny Belinda",
+          "tmdbId": "62000",
+          "url": "https://themoviedb.org/movie/62000",
+          "year": 1948
+        },
+        "id": "5441",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nJohn Wray (13 February 1887 - 5 April 1940) was an American character actor of stage and screen...",
+          "born": {},
+          "bornIn": "Philadelphia, Pennsylvania, USA",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0942046",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "John Wray",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/oNX9BXP9Eu16EvEwgoBp8tzmvJp.jpg",
+          "tmdbId": "2009",
+          "url": "https://themoviedb.org/person/2009"
+        },
+        "id": "10012",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nArnold Lucy was a British actor claimed to have performed on the fabled west-end stage over 1,200 times before making his early film debut in the early 1910s during the Golden Era of the Hollywood system.  Though probably best known for his role as the professor in All Quiet on the Western Front...",
+          "born": {},
+          "bornIn": "Tottenham, London, England, UK",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0524803",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Arnold Lucy",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/jtIFDhtIzckMcbfHpSbU50tIw5.jpg",
+          "tmdbId": "2008",
+          "url": "https://themoviedb.org/person/2008"
+        },
+        "id": "10013",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Leonard \"Chico\" Marx (March 22, 1887 – October 11, 1961) was an American comedian and film star as part of the Marx Brothers.  His persona in the act was that of a dim-witted con artist, seemingly of rural Italian origin, who wore shabby clothes, and sported a curly-haired wig and Tyrolean hat. \n\nDescription above from the Wikipedia article Chico Marx, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 19,
+          "died": {},
+          "imdbId": "0555597",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Chico Marx",
+          "numberOfMoviesActedIn": 11,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/4DSVzN5yokNp7Y8AVK5UedqxB1c.jpg",
+          "tmdbId": "10799",
+          "url": "https://themoviedb.org/person/10799"
+        },
+        "id": "10014",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0031225",
+          "imdbRating": 7.8,
+          "imdbVotes": 7480,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Russian"
+          ],
+          "movieId": "6412",
+          "plot": "Kent, the unscrupulous boss of Bottleneck has Sheriff Keogh killed when he asks one too many questions about a rigged poker game that gives Kent a stranglehold over the local cattle rangers...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/zEycmpHvzi60EJpbZCKbTc32AT7.jpg",
+          "released": "1939-12-29",
+          "revenue": 0,
+          "runtime": 94,
+          "title": "Destry Rides Again",
+          "tmdbId": "43828",
+          "url": "https://themoviedb.org/movie/43828",
+          "year": 1939
+        },
+        "id": "4645",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Marlene Dietrich was a German actress and singer. \n\nDietrich remained popular throughout her long career by continually re-inventing herself.  In 1920s Berlin, she acted on the stage and in silent films.  Her performance as Lola-Lola in The Blue Angel, directed by Josef von Sternberg, brought her international fame and a contract with Paramount Pictures in the US...",
+          "born": {},
+          "bornIn": "Berlin, Germany",
+          "degree": 17,
+          "died": {},
+          "imdbId": "0000017",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Marlene Dietrich",
+          "numberOfMoviesActedIn": 7,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/gQFppqFeUdJDfKsp4Lh2G7UDd0R.jpg",
+          "tmdbId": "2896",
+          "url": "https://themoviedb.org/person/2896"
+        },
+        "id": "10015",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "UK",
+            " USA"
+          ],
+          "degree": 0,
+          "imdbId": "0116992",
+          "imdbRating": 7.1,
+          "imdbVotes": 59,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "769",
+          "plot": "Following the life of Marlene Dietrich through her films (including home movies) and interviews with family, friends, co-workers, acquaintances, and presumed lovers. From the cabaret scene ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/faHxYNlQ7RGDtqmaNBpFf0HKozg.jpg",
+          "released": "1996-04-02",
+          "revenue": 0,
+          "runtime": 52,
+          "title": "Marlene Dietrich: Shadow and Light",
+          "tmdbId": "581579",
+          "url": "https://themoviedb.org/movie/581579",
+          "year": 1996
+        },
+        "id": "659",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 3000000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0055031",
+          "imdbRating": 8.3,
+          "imdbVotes": 41552,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " German"
+          ],
+          "movieId": "6777",
+          "plot": "In 1948, an American court in occupied Germany tries four Nazi judges for war crimes.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/cqumfgd74ftVzOKJpFGOG64WlXL.jpg",
+          "released": "1961-12-18",
+          "revenue": 10000000,
+          "runtime": 186,
+          "title": "Judgment at Nuremberg",
+          "tmdbId": "821",
+          "url": "https://themoviedb.org/movie/821",
+          "year": 1961
+        },
+        "id": "4821",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 3000000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0051201",
+          "imdbRating": 8.4,
+          "imdbVotes": 59652,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " German"
+          ],
+          "movieId": "5008",
+          "plot": "A veteran British barrister must defend his client in a murder trial that has surprise after surprise.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bCj4EfuehAlgBwVd3diyWyhuuau.jpg",
+          "released": "1958-02-06",
+          "revenue": 9000000,
+          "runtime": 116,
+          "title": "Witness for the Prosecution",
+          "tmdbId": "37257",
+          "url": "https://themoviedb.org/movie/37257",
+          "year": 1957
+        },
+        "id": "3901",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "UK"
+          ],
+          "degree": 0,
+          "imdbId": "0042994",
+          "imdbRating": 7.1,
+          "imdbVotes": 9040,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "2187",
+          "plot": "A struggling actress tries to help a friend prove his innocence when he's accused of murdering the husband of a high society entertainer.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/vEys21QtIIah9iYZ37W9BjkaB2U.jpg",
+          "released": "1950-04-15",
+          "revenue": 0,
+          "runtime": 110,
+          "title": "Stage Fright",
+          "tmdbId": "1978",
+          "url": "https://themoviedb.org/movie/1978",
+          "year": 1950
+        },
+        "id": "1757",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "France",
+            " UK",
+            " Germany",
+            " Belgium"
+          ],
+          "degree": 0,
+          "imdbId": "0107472",
+          "imdbRating": 8.1,
+          "imdbVotes": 1235,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "German"
+          ],
+          "movieId": "363",
+          "plot": "A documentary about the life and work of Leni Riefenstahl, a German film director most notorious for making the most effective propaganda films for the Nazis.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/aRmw4NFnLHJSmUKqsMJyr6XXLNI.jpg",
+          "released": "1994-06-01",
+          "revenue": 449707,
+          "runtime": 180,
+          "title": "Wonderful, Horrible Life of Leni Riefenstahl, The (Macht der Bilder: Leni Riefenstahl, Die)",
+          "tmdbId": "41647",
+          "url": "https://themoviedb.org/movie/41647",
+          "year": 1993
+        },
+        "id": "346",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Berlin, Germany",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0314777",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Kurt Gerron",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1dannHvwMGKxqITWP6VNoR3nwIC.jpg",
+          "tmdbId": "2897",
+          "url": "https://themoviedb.org/person/2897"
+        },
+        "id": "10016",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Berlin, Germany",
+          "degree": 6,
+          "died": {},
+          "imdbId": "0884665",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Rosa Valetti",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/6FkyTtJRJJIkHQbU5G6HLnqOtms.jpg",
+          "tmdbId": "2898",
+          "url": "https://themoviedb.org/person/2898"
+        },
+        "id": "10017",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 927262,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0036775",
+          "imdbRating": 8.4,
+          "imdbVotes": 93919,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3435",
+          "plot": "An insurance representative lets himself be talked into a murder/insurance fraud scheme that arouses an insurance investigator's suspicions.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/nW0cCpfuGcR1JG7EinDbdL2Ijf2.jpg",
+          "released": "1944-04-24",
+          "revenue": 2500000,
+          "runtime": 107,
+          "title": "Double Indemnity",
+          "tmdbId": "996",
+          "url": "https://themoviedb.org/movie/996",
+          "year": 1944
+        },
+        "id": "2759",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Edward G.  Robinson (born Emanuel Goldenberg; December 12, 1893 – January 26, 1973) was a Romanian-born American actor.  Although he played a wide range of characters, he is best remembered for his roles as a gangster, most notably in his star-making film Little Caesar. \n\nDescription above from the Wikipedia article Edward G.  Robinson, licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Bucharest, Romania",
+          "degree": 17,
+          "died": {},
+          "imdbId": "0000064",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Edward G. Robinson",
+          "numberOfMoviesActedIn": 7,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/sI3vtDTeGcV0uhumtZmYmfcOBav.jpg",
+          "tmdbId": "13566",
+          "url": "https://themoviedb.org/person/13566"
+        },
+        "id": "10018",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 13000000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0049833",
+          "imdbRating": 7.9,
+          "imdbVotes": 45875,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "7386",
+          "plot": "The Egyptian Prince, Moses, learns of his true heritage as a Hebrew and his divine mission as the deliverer of his people.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/3Ei59AR64x6dMZfWobPCkZjbqTL.jpg",
+          "released": "1956-10-05",
+          "revenue": 122700000,
+          "runtime": 220,
+          "title": "Ten Commandments, The",
+          "tmdbId": "6844",
+          "url": "https://themoviedb.org/movie/6844",
+          "year": 1956
+        },
+        "id": "5161",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0021079",
+          "imdbRating": 7.4,
+          "imdbVotes": 8406,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25773",
+          "plot": "Rico is a small-time hood who knocks off gas stations for whatever he can take. He heads east and signs up with Sam Vettori's mob. A New Year's Eve robbery at Little Arnie Lorch's casino ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/9TSzQm3aE7FdnutXIGmHc3G4llE.jpg",
+          "released": "1931-01-25",
+          "revenue": 0,
+          "runtime": 79,
+          "title": "Little Caesar",
+          "tmdbId": "27899",
+          "url": "https://themoviedb.org/movie/27899",
+          "year": 1931
+        },
+        "id": "5686",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0038991",
+          "imdbRating": 7.4,
+          "imdbVotes": 13202,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Spanish"
+          ],
+          "movieId": "25927",
+          "plot": "An investigator from the War Crimes Commission travels to Connecticut to find an infamous Nazi.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/fg1pNMfunv6JeZwO3xdQr6CEiDz.jpg",
+          "released": "1946-05-25",
+          "revenue": 0,
+          "runtime": 95,
+          "title": "Stranger, The",
+          "tmdbId": "20246",
+          "url": "https://themoviedb.org/movie/20246",
+          "year": 1946
+        },
+        "id": "5719",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 1202007,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0038057",
+          "imdbRating": 7.9,
+          "imdbVotes": 9501,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "5169",
+          "plot": "When a man in mid-life crisis befriends a young woman, her venal fiancé persuades her to con him out of some of the fortune she thinks he has.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/pioF72zZq3Qu3p5DkkAq59ZEb6B.jpg",
+          "released": "1945-12-28",
+          "revenue": 2948386,
+          "runtime": 103,
+          "title": "Scarlet Street",
+          "tmdbId": "17058",
+          "url": "https://themoviedb.org/movie/17058",
+          "year": 1945
+        },
+        "id": "4002",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0037469",
+          "imdbRating": 7.8,
+          "imdbVotes": 9367,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25911",
+          "plot": "When a conservative middle-aged professor engages in a minor dalliance with a femme fatale, he is plunged into a nightmarish quicksand of blackmail and murder.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/l29dk4w8pQt73MCr7Jdj7oFfEVw.jpg",
+          "released": "1944-11-03",
+          "revenue": 0,
+          "runtime": 107,
+          "title": "Woman in the Window, The",
+          "tmdbId": "17136",
+          "url": "https://themoviedb.org/movie/17136",
+          "year": 1944
+        },
+        "id": "5716",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Although he appeared in approximately 100 movies or television shows, Douglas Fairbanks Jr.  never really intended to take up acting as a career.  However, the environment he was born into and the circumstances naturally led him to be a thespian. \n\nThe son of future silent era swashbuckling idol Douglas Fairbanks (born Douglas Elton Thomas Ullman) and Beth Sully - the daughter of a very wealthy cotton mogul - was born in 1909 and soon proved a gifted boy...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 8,
+          "died": {},
+          "imdbId": "0001195",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Douglas Fairbanks Jr.",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/jjb8iJ0d419dVP2VTYzjy38FxXV.jpg",
+          "tmdbId": "51762",
+          "url": "https://themoviedb.org/person/51762"
+        },
+        "id": "10019",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 1915000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0031398",
+          "imdbRating": 7.5,
+          "imdbVotes": 8551,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "7840",
+          "plot": "In 19th century India, three British soldiers and a native waterbearer must stop a secret mass revival of the murderous Thuggee cult before it can rampage across the land.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/rBBLigyMX0G9L9OPqUg80BmV1YK.jpg",
+          "released": "1939-02-17",
+          "revenue": 2807000,
+          "runtime": 117,
+          "title": "Gunga Din",
+          "tmdbId": "24965",
+          "url": "https://themoviedb.org/movie/24965",
+          "year": 1939
+        },
+        "id": "5274",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nGlenda Farrell (June 30, 1904 – May 1, 1971) was an American actress of film, television, and theater.  She is best known for her role as Torchy Blane in the Warner Bros.  Torchy Blane film series and the Academy Award-nominated films Little Caesar (1931), I Am a Fugitive from a Chain Gang (1932), and Lady for a Day (1933).  With a career spanning more than 50 years, Farrell appeared in over 100 films and television series, as well as numerous Broadway plays...",
+          "born": {},
+          "bornIn": "Enid, Oklahoma, USA",
+          "degree": 9,
+          "died": {},
+          "imdbId": "0268225",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Glenda Farrell",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/xZVRc0gR5BdJ7J1TwusxTtgxD6o.jpg",
+          "tmdbId": "29315",
+          "url": "https://themoviedb.org/person/29315"
+        },
+        "id": "10020",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 195845,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0023042",
+          "imdbRating": 8.1,
+          "imdbVotes": 8765,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8044",
+          "plot": "Wrongly convicted James Allen serves in the intolerable conditions of a southern chain gang, which later comes back to haunt him.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/2ibVcaVJ13dlg98C52D8mkPKgdq.jpg",
+          "released": "1932-11-19",
+          "revenue": 0,
+          "runtime": 92,
+          "title": "I Am a Fugitive from a Chain Gang",
+          "tmdbId": "29740",
+          "url": "https://themoviedb.org/movie/29740",
+          "year": 1932
+        },
+        "id": "5343",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nWilliam Collier Jr.  (born Charles F.  Gall Jr. , February 12, 1902 – February 5, 1987) was an American film and stage actor who appeared in 89 films. \n\nWilliam Collier (nicknamed \"Buster\") was born in New York City.  When his parents divorced, his mother, the actress Paula Marr, remarried the actor William Collier Sr.  who adopted Charles (the two did share a resemblance) and gave the boy the new name William Collier Jr...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0171873",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "William Collier Jr.",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/2cIBLXuJOCnfi5S3DA4svDXtibj.jpg",
+          "tmdbId": "128159",
+          "url": "https://themoviedb.org/person/128159"
+        },
+        "id": "10021",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0032701",
+          "imdbRating": 7.7,
+          "imdbVotes": 8209,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25865",
+          "plot": "The wife of a rubber plantation administrator shoots a man to death and claims it was self-defense, but a letter in her own hand may prove her undoing.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/fe43qXp2sRAZbPDKX1puKGEwOon.jpg",
+          "released": "1940-11-23",
+          "revenue": 0,
+          "runtime": 95,
+          "title": "Letter, The",
+          "tmdbId": "17801",
+          "url": "https://themoviedb.org/movie/17801",
+          "year": 1940
+        },
+        "id": "5705",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Herbert Brough Falcon Marshall (23 May 1890 – 22 January 1966) was an English stage, screen and radio actor who, despite losing a leg during the First World War, starred in many popular and well-regarded Hollywood films in the 1930s and 1940s.  After a successful theatrical career in the United Kingdom and North America, he became an in-demand Hollywood leading man, frequently appearing in romantic melodramas and occasional comedies.  In his later years, he turned to character acting...",
+          "born": {},
+          "bornIn": "London, England, UK",
+          "degree": 16,
+          "died": {},
+          "imdbId": "0003339",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Herbert Marshall",
+          "numberOfMoviesActedIn": 6,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/r2DrJ6dxBNSjCtP7PRNBsYjbNI2.jpg",
+          "tmdbId": "2435",
+          "url": "https://themoviedb.org/person/2435"
+        },
+        "id": "10022",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0032484",
+          "imdbRating": 7.6,
+          "imdbVotes": 13167,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Dutch",
+            " Latvian"
+          ],
+          "movieId": "929",
+          "plot": "On the eve of WWII, a young American reporter tries to expose enemy agents in London.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/voiObyqh8LDAOdnBCKD1ZuoPVbL.jpg",
+          "released": "1940-08-16",
+          "revenue": 0,
+          "runtime": 120,
+          "title": "Foreign Correspondent",
+          "tmdbId": "25670",
+          "url": "https://themoviedb.org/movie/25670",
+          "year": 1940
+        },
+        "id": "768",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0033836",
+          "imdbRating": 8.2,
+          "imdbVotes": 7237,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "4801",
+          "plot": "The ruthless, moneyed Hubbard clan lives in, and poisons, their part of the deep South at the turn of the 20th century.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/of0OPENy4HP5PWGtU5hLVpkZqJ3.jpg",
+          "released": "1941-08-29",
+          "revenue": 0,
+          "runtime": 116,
+          "title": "Little Foxes, The",
+          "tmdbId": "43802",
+          "url": "https://themoviedb.org/movie/43802",
+          "year": 1941
+        },
+        "id": "3774",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0023622",
+          "imdbRating": 8.2,
+          "imdbVotes": 9413,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Italian",
+            " Russian",
+            " Spanish",
+            " German"
+          ],
+          "movieId": "3739",
+          "plot": "A gentleman thief and a lady pickpocket join forces to con a beautiful perfume company owner. Romantic entanglements and jealousies confuse the scheme.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/FBxuoLRD3Biyul14unT5m3PYNS.jpg",
+          "released": "1932-10-21",
+          "revenue": 0,
+          "runtime": 83,
+          "title": "Trouble in Paradise",
+          "tmdbId": "195",
+          "url": "https://themoviedb.org/movie/195",
+          "year": 1932
+        },
+        "id": "3010",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 700000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0051622",
+          "imdbRating": 7.1,
+          "imdbVotes": 14848,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " French"
+          ],
+          "movieId": "2454",
+          "plot": "A scientist has a horrific accident when he tries to use his newly invented teleportation device.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/iA8BkPKxAfEruwXXGK2ggduJuO6.jpg",
+          "revenue": 3000000,
+          "runtime": 94,
+          "title": "Fly, The",
+          "tmdbId": "11815",
+          "url": "https://themoviedb.org/movie/11815",
+          "year": 1958
+        },
+        "id": "1980",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "UK"
+          ],
+          "degree": 0,
+          "imdbId": "0021165",
+          "imdbRating": 6.4,
+          "imdbVotes": 4017,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "2219",
+          "plot": "A juror in a murder trial, after voting to convict, has second thoughts and begins to investigate on his own before the execution.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/huuLmXGPCYjGdfUbXEn8bOSqx65.jpg",
+          "released": "1930-11-24",
+          "revenue": 0,
+          "runtime": 92,
+          "title": "Murder!",
+          "tmdbId": "31930",
+          "url": "https://themoviedb.org/movie/31930",
+          "year": 1930
+        },
+        "id": "1779",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nNorah Baring (26 November 1905 – 8 February 1985), born Norah Minnie Baker, was an English film actress most famous for portraying \"Diana Baring\" in the Alfred Hitchcock thriller Murder! (1930).  She is also known for playing the female lead in Anthony Asquith's silent thriller A Cottage on Dartmoor (1929).  Originally she studied art before succumbing to the footlights and soon became well known to London theatre goers...",
+          "born": {},
+          "bornIn": "London,  England",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0054689",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Norah Baring",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "32926",
+          "url": "https://themoviedb.org/person/32926"
+        },
+        "id": "10023",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "degree": 4,
+          "died": {},
+          "imdbId": "0042496",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Phyllis Konstam",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "553482",
+          "url": "https://themoviedb.org/person/553482"
+        },
+        "id": "10024",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nEdward Chapman (13 October 1901 - 9 August 1977) was an English actor who starred in many films and television programmes, but is chiefly remembered as \"Mr.  Wilfred Grimsdale\", the officious superior and comic foil to Norman Wisdom's character of Pitkin in many of his films from the late 1950s and 1960s. \n\nChapman was born in Harrogate, Yorkshire, England...",
+          "born": {},
+          "bornIn": "Harrogate, Yorkshire, England, UK",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0152361",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Edward Chapman",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/ozanx4gVXZoEvCAzMtRwG3A5hNF.jpg",
+          "tmdbId": "33267",
+          "url": "https://themoviedb.org/person/33267"
+        },
+        "id": "10025",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "France"
+          ],
+          "degree": 0,
+          "imdbId": "0021577",
+          "imdbRating": 7.5,
+          "imdbVotes": 9127,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "French"
+          ],
+          "movieId": "25774",
+          "plot": "A surrealist tale of a man and a woman passionately in love with one another, but their attempts to consummate that passion are constantly thwarted by their families, the Church, and bourgeois society.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/eh8DUhYeXjGXMLnBQDkl2qPNmod.jpg",
+          "released": "1979-11-01",
+          "revenue": 7940,
+          "runtime": 63,
+          "title": "Golden Age, The (Âge d'Or, L')",
+          "tmdbId": "5729",
+          "url": "https://themoviedb.org/movie/5729",
+          "year": 1930
+        },
+        "id": "5687",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Paris, France",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0595321",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Gaston Modot",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/2iYNh1NPS21O3Cq5sWzHlOUOFv3.jpg",
+          "tmdbId": "11543",
+          "url": "https://themoviedb.org/person/11543"
+        },
+        "id": "10026",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Berlin, Germany",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0529227",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Lya Lys",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/y17WtVmp9s4r5qDrDv3D3xm7H1r.jpg",
+          "tmdbId": "33023",
+          "url": "https://themoviedb.org/person/33023"
+        },
+        "id": "10027",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 4,
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Caridad de Laberdesque",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "1830629",
+          "url": "https://themoviedb.org/person/1830629"
+        },
+        "id": "10028",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Brühl, Germany",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0259722",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Max Ernst",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "45201",
+          "url": "https://themoviedb.org/person/45201"
+        },
+        "id": "10029",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0021746",
+          "imdbRating": 6,
+          "imdbVotes": 3524,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " French"
+          ],
+          "movieId": "1928",
+          "plot": "A newspaper editor settles in an Oklahoma boom town with his reluctant wife at the end of the nineteenth century.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1houml9MikqpuePiAvt4XdLJVHl.jpg",
+          "released": "1931-02-09",
+          "revenue": 0,
+          "runtime": 123,
+          "title": "Cimarron",
+          "tmdbId": "42861",
+          "url": "https://themoviedb.org/movie/42861",
+          "year": 1931
+        },
+        "id": "1510",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Richard Dix was a major leading man at RKO Radio Pictures from 1929  through 1943.  He was born Ernest Carlton Brimmer July 18, 1893, in St.   Paul, Minnesota.  There he was educated, and at the desires of his  father, studied to be a surgeon.  His obvious acting talent in his school  dramatic club led him to leading roles in most of the school plays.  At  6' 0\" and 180 pounds, Dix excelled in sports, especially football and  baseball...",
+          "born": {},
+          "bornIn": "St. Paul, Minnesota, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0228715",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Richard Dix",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/6ULd271XEtP6nTy11VStE7gq9ae.jpg",
+          "tmdbId": "88671",
+          "url": "https://themoviedb.org/person/88671"
+        },
+        "id": "10030",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0028597",
+          "imdbRating": 8,
+          "imdbVotes": 13157,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " French",
+            " Italian"
+          ],
+          "movieId": "6254",
+          "plot": "Unfounded suspicions lead a married couple to begin divorce proceedings, whereupon they start undermining each other's attempts to find new romance.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/2VtsJoxvjpcMpwh0gweS8IMfHxO.jpg",
+          "released": "1937-10-21",
+          "revenue": 0,
+          "runtime": 91,
+          "title": "Awful Truth, The",
+          "tmdbId": "14675",
+          "url": "https://themoviedb.org/movie/14675",
+          "year": 1937
+        },
+        "id": "4561",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nIrene Dunne (born Irene Marie Dunn, December 20, 1898 – September 4, 1990) was an American film actress and singer of the 1930s, 1940s and early 1950s.  Dunne was nominated five times for the Academy Award for Best Actress, for her performances in Cimarron (1931), Theodora Goes Wild (1936), The Awful Truth (1937), Love Affair (1939) and I Remember Mama (1948).  In 1985, Dunne was given Kennedy Center Honors for her services to the arts...",
+          "born": {},
+          "bornIn": "Louisville, Kentucky, USA",
+          "degree": 16,
+          "died": {},
+          "imdbId": "0002050",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Irene Dunne",
+          "numberOfMoviesActedIn": 6,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/ddzluiSppzKAfUd4g5iAxIDfsav.jpg",
+          "tmdbId": "77158",
+          "url": "https://themoviedb.org/person/77158"
+        },
+        "id": "10031",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0038303",
+          "imdbRating": 7.1,
+          "imdbVotes": 1563,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "33760",
+          "plot": "In 1862, a young Englishwoman becomes royal tutor in Siam and befriends the King.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/qE7t7e20sLdHw9prgzgYkPyDUwd.jpg",
+          "released": "1946-08-11",
+          "revenue": 0,
+          "runtime": 128,
+          "title": "Anna and the King of Siam",
+          "tmdbId": "43471",
+          "url": "https://themoviedb.org/movie/43471",
+          "year": 1946
+        },
+        "id": "6176",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0034012",
+          "imdbRating": 7.2,
+          "imdbVotes": 4450,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "956",
+          "plot": "A couple's big dreams give way to a life full of unexpected sadness and unexpected joy.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/74e4UEyazlGkMUNs1TGQUJ3ujk1.jpg",
+          "released": "1941-04-24",
+          "revenue": 0,
+          "runtime": 119,
+          "title": "Penny Serenade",
+          "tmdbId": "43795",
+          "url": "https://themoviedb.org/movie/43795",
+          "year": 1941
+        },
+        "id": "795",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0029284",
+          "imdbRating": 7.4,
+          "imdbVotes": 6828,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8712",
+          "plot": "Missing for seven years and presumed dead, a woman returns home on the day of her husband's second marriage.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/hX1pmKczVzj38FE2u9UwEmRXwM9.jpg",
+          "released": "1940-05-17",
+          "revenue": 0,
+          "runtime": 88,
+          "title": "My Favorite Wife",
+          "tmdbId": "41463",
+          "url": "https://themoviedb.org/movie/41463",
+          "year": 1940
+        },
+        "id": "5531",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0039566",
+          "imdbRating": 7.3,
+          "imdbVotes": 3256,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " French"
+          ],
+          "movieId": "7058",
+          "plot": "A financier from New York rules his numerous family, consisting of his wife and his four sons, with the meticulousity of a bookkeeper.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/nTn3F19lndEPJAMdnUNlSSgaB8e.jpg",
+          "released": "1947-09-13",
+          "revenue": 0,
+          "runtime": 118,
+          "title": "Life with Father",
+          "tmdbId": "41465",
+          "url": "https://themoviedb.org/movie/41465",
+          "year": 1947
+        },
+        "id": "4980",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nEstelle Taylor (May 20, 1894—April 15, 1958) was an American Hollywood actress whose career was most prominent during the silent film era of the 1920s. \n\nBorn Ida Estelle Taylor in Wilmington, Delaware, the daughter of Harry D Taylor and Ida LaBertha (Barrett) Taylor, Estelle married three times during her lifetime...",
+          "born": {},
+          "bornIn": "Wilmington, Delaware, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0852347",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Estelle Taylor",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "128966",
+          "url": "https://themoviedb.org/person/128966"
+        },
+        "id": "10032",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Nance O'Neil, born Gertrude Lamson, was an American stage and screen actress.  When she decided to become an actress, her religious father, George Lamson, an auctioneer, denounced his daughter in church for going on the stage and asked the congregation to pray for her.  O'Neil's first performance in a professional production was in the role of a nun in Sarah at the Alcazar Theatre in San Francisco on October 16, 1893...",
+          "born": {},
+          "bornIn": "Oakland, California, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0642042",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Nance O'Neil",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/wXolbmlbecvQq7CinMpIrZpE7KU.jpg",
+          "tmdbId": "129038",
+          "url": "https://themoviedb.org/person/129038"
+        },
+        "id": "10033",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia.   \n\nVirginia Cherrill (April 12, 1908 - November 14, 1996) was an American actress best known for her role as the blind flower girl in Charlie Chaplin's City Lights (1931).  She married an English earl in the 1940s, and is also known as Virginia Child-Villiers, Countess of Jersey.  Virginia Cherrill was born on a farm in rural Carthage, Illinois, to James E.  and Blanche (née Wilcox) Cherrill...",
+          "born": {},
+          "bornIn": " Carthage, Illinois",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0156039",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Virginia Cherrill",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/d2Mrbpgi9XYPrtGCFKoYYOwmEE6.jpg",
+          "tmdbId": "13852",
+          "url": "https://themoviedb.org/person/13852"
+        },
+        "id": "10034",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia.   \n\nFlorence Lee (March 12, 1888 – September 1, 1962) was an American actress of the silent era.  She appeared in 99 films between 1911 and 1931.  She was born in Jamaica, Vermont and died in Hollywood, California at the age of 74. \n\nDescription above from the Wikipedia article  Florence Lee licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "Vermont, United States",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0497265",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Florence Lee",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/u2L68ykx3etqVpdI9MvHSy8yvvJ.jpg",
+          "tmdbId": "13853",
+          "url": "https://themoviedb.org/person/13853"
+        },
+        "id": "10035",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia.   \n\nHarry C.  Myers (5 September 1882 – 25 December 1938), sometimes credited as Henry Myers, was an American film actor and director.  He was born in New Haven, Connecticut, and died in Hollywood, California from pneumonia.  He was married to the actress Rosemary Theby. \n\nDescription above from the Wikipedia article Harry C.  Myers   licensed under CC-BY-SA, full list of contributors on Wikipedia...",
+          "born": {},
+          "bornIn": "New Haven, Connecticut, USA",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0616729",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Harry Myers",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/pAr30tmTYCD58KmDdpkzthSI13W.jpg",
+          "tmdbId": "13854",
+          "url": "https://themoviedb.org/person/13854"
+        },
+        "id": "10036",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 95745,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0024894",
+          "imdbRating": 7.2,
+          "imdbVotes": 5878,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Latin",
+            " Hungarian"
+          ],
+          "movieId": "25807",
+          "plot": "American honeymooners in Hungary are trapped in the home of a Satan- worshiping priest when the bride is taken there for medical help following a road accident.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/QTH3dkeDGTBRBmsY0A7STpsNN4.jpg",
+          "released": "1934-05-07",
+          "revenue": 236000,
+          "runtime": 65,
+          "title": "Black Cat, The",
+          "tmdbId": "24106",
+          "url": "https://themoviedb.org/movie/24106",
+          "year": 1934
+        },
+        "id": "5694",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Bela Lugosi (born Bela Ferenc Dezso Blasko) was a Hungarian stage, screen, and television actor.  He is best remembered for his iconic portrayal of Count Dracula in the classic 1931 Dracula film...",
+          "born": {},
+          "bornIn": "Lugos, Kingdom of Hungary, Austria-Hungary [now Lugoj, Timis County, Romania]",
+          "degree": 20,
+          "died": {},
+          "imdbId": "0000509",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Bela Lugosi",
+          "numberOfMoviesActedIn": 10,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/nG5R612STBg6RB7HJ6Aa3He50uD.jpg",
+          "tmdbId": "1547",
+          "url": "https://themoviedb.org/person/1547"
+        },
+        "id": "10038",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 1365000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0031725",
+          "imdbRating": 8,
+          "imdbVotes": 13967,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Russian"
+          ],
+          "movieId": "936",
+          "plot": "A stern Russian woman sent to Paris on official business finds herself attracted to a man who represents everything she is supposed to detest.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/5ZtDgpG12NfMgRZBt7BTHyggjPN.jpg",
+          "released": "1940-02-01",
+          "revenue": 2279000,
+          "runtime": 110,
+          "title": "Ninotchka",
+          "tmdbId": "1859",
+          "url": "https://themoviedb.org/movie/1859",
+          "year": 1939
+        },
+        "id": "775",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 420000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0031951",
+          "imdbRating": 7.2,
+          "imdbVotes": 6102,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "2649",
+          "plot": "One of the sons of Frankenstein finds his father's monster in a coma and revives him, only to find out he is controlled by Ygor who is bent on revenge.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/hop8IKgDYHfFI7uMvZ0gcDYqqXZ.jpg",
+          "released": "1939-01-13",
+          "revenue": 0,
+          "runtime": 99,
+          "title": "Son of Frankenstein",
+          "tmdbId": "3077",
+          "url": "https://themoviedb.org/movie/3077",
+          "year": 1939
+        },
+        "id": "2140",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0037549",
+          "imdbRating": 7.4,
+          "imdbVotes": 5791,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "1337",
+          "plot": "A ruthless doctor and his young prize student find themselves continually harassed by their murderous supplier of illegal cadavers.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1dOCP2ahMVlA95SivxhEdVvcXZE.jpg",
+          "revenue": 0,
+          "runtime": 77,
+          "title": "Body Snatcher, The",
+          "tmdbId": "30346",
+          "url": "https://themoviedb.org/movie/30346",
+          "year": 1945
+        },
+        "id": "1101",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 1200000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0035899",
+          "imdbRating": 6.6,
+          "imdbVotes": 5286,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "2651",
+          "plot": "After being awakened, Larry Talbot chips Frankenstein's Monster out of a block of ice. When Talbot changes to the Wolf Man, the two creatures battle each other.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/jOTN2CiUBeIPg3GNkrx95c5KnSR.jpg",
+          "released": "1943-03-05",
+          "revenue": 0,
+          "runtime": 74,
+          "title": "Frankenstein Meets the Wolf Man",
+          "tmdbId": "3076",
+          "url": "https://themoviedb.org/movie/3076",
+          "year": 1943
+        },
+        "id": "2142",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0040068",
+          "imdbRating": 7.6,
+          "imdbVotes": 10437,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3928",
+          "plot": "Two hapless freight handlers find themselves encountering Dracula, the Frankenstein Monster and the Wolf Man.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/w2tak1UWLGU5hSWbzwnyyjIKGtL.jpg",
+          "released": "1948-06-15",
+          "revenue": 0,
+          "runtime": 83,
+          "title": "Abbott and Costello Meet Frankenstein",
+          "tmdbId": "3073",
+          "url": "https://themoviedb.org/movie/3073",
+          "year": 1948
+        },
+        "id": "3158",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 355000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0021814",
+          "imdbRating": 7.6,
+          "imdbVotes": 31818,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Hungarian",
+            " Latin"
+          ],
+          "movieId": "2644",
+          "plot": "The ancient vampire Count Dracula arrives in England and begins to prey upon the virtuous young Mina.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/aq3lliuEZEgNCTLZokDt4ofCNvP.jpg",
+          "released": "1931-02-14",
+          "revenue": 700000,
+          "runtime": 85,
+          "title": "Dracula",
+          "tmdbId": "138",
+          "url": "https://themoviedb.org/movie/138",
+          "year": 1931
+        },
+        "id": "2137",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 50000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0023694",
+          "imdbRating": 6.5,
+          "imdbVotes": 6544,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "7881",
+          "plot": "A young man turns to a witch doctor to lure the woman he loves away from her fiancé, but instead turns her into a zombie slave.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/s5DnfWHGeCExlweIFF4JOHKyx3H.jpg",
+          "released": "1932-08-04",
+          "revenue": 0,
+          "runtime": 69,
+          "title": "White Zombie",
+          "tmdbId": "26860",
+          "url": "https://themoviedb.org/movie/26860",
+          "year": 1932
+        },
+        "id": "5283",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 70000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0047898",
+          "imdbRating": 4.1,
+          "imdbVotes": 5209,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3340",
+          "plot": "A mad doctor attempts to create atomic supermen.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/aSptrb8D0e5tEdpFbZLQSiQThbE.jpg",
+          "released": "1956-02-01",
+          "revenue": 0,
+          "runtime": 69,
+          "title": "Bride of the Monster",
+          "tmdbId": "36489",
+          "url": "https://themoviedb.org/movie/36489",
+          "year": 1955
+        },
+        "id": "2691",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0045826",
+          "imdbRating": 4.1,
+          "imdbVotes": 6525,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "2362",
+          "plot": "A psychiatrist tells two stories: one of a transvestite (Glen or Glenda), the other of a pseudohermaphrodite (Alan or Anne).",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/11OHFSacx5CEP6lkn12sO6zyaw.jpg",
+          "released": "1953-04-01",
+          "revenue": 0,
+          "runtime": 65,
+          "title": "Glen or Glenda",
+          "tmdbId": "24018",
+          "url": "https://themoviedb.org/movie/24018",
+          "year": 1953
+        },
+        "id": "1891",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Helen Chandler was an American stage and screen actress.  She is today best remembered for her portrayal of Mina in the 1931 classic horror film Dracula...",
+          "born": {},
+          "bornIn": "Charleston, South Carolina, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0151377",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Helen Chandler",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/ofOzVWvIBIURFXwTKpt3Y3EVmhO.jpg",
+          "tmdbId": "1548",
+          "url": "https://themoviedb.org/person/1548"
+        },
+        "id": "10039",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nDavid Joseph Manners (born Rauff de Ryther Duan _[some other sources spell Daun]_ Acklom, April 30, 1900 – December 23, 1998) was a Canadian-American actor who played John Harker in Todd Browning's 1931 horror classic Dracula.  The following year he portrayed the archaeologist Frank Whemple in another pre-Code thriller by Universal Pictures, The Mummy.  Manners abandoned his film career in 1936, and his theatrical career seventeen years later...",
+          "born": {},
+          "bornIn": "Halifax, Nova Scotia, Canada",
+          "degree": 13,
+          "died": {},
+          "imdbId": "0543115",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "David Manners",
+          "numberOfMoviesActedIn": 3,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/pPZvYbYlTYC97yMBDJ4ywMjQ4u1.jpg",
+          "tmdbId": "2125",
+          "url": "https://themoviedb.org/person/2125"
+        },
+        "id": "10040",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 196000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0023245",
+          "imdbRating": 7.2,
+          "imdbVotes": 15300,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Arabic",
+            " French"
+          ],
+          "movieId": "2633",
+          "plot": "A living mummy stalks the beautiful woman he believes is the reincarnation of his lover.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/vSKpbZVvzqQcw6htiyEinbCY9vq.jpg",
+          "released": "1932-12-22",
+          "revenue": 0,
+          "runtime": 73,
+          "title": "Mummy, The",
+          "tmdbId": "15849",
+          "url": "https://themoviedb.org/movie/15849",
+          "year": 1932
+        },
+        "id": "2126",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nDwight Iliff Frye (February 22, 1899 – November 7, 1943) was an American stage and screen actor, noted for his appearances in the classic horror films Dracula, Frankenstein and Bride of Frankenstein. \n\nFrye was born in Salina, Kansas...",
+          "born": {},
+          "bornIn": "Salina, Kansas, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0296859",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Dwight Frye",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/i08HYM8ddyK82fynl7WZy6HFLBI.jpg",
+          "tmdbId": "1549",
+          "url": "https://themoviedb.org/person/1549"
+        },
+        "id": "10041",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Gröbming, Austria-Hungary",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0286993",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Rudolf Forster",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "37675",
+          "url": "https://themoviedb.org/person/37675"
+        },
+        "id": "10042",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Carola Neher was a German stage and screen actress and singer.  In 1926, she went to Berlin to work with Bertolt Brecht, who wrote the role of Polly Peachum in \"The Threepenny Opera\" for her.  While in Berlin, she practiced boxing with Turkish trainer and prizefighter Sabri Mahir at his studio, which opened to women, including Vicki Baum and Marlene Dietrich, in the 1920s.  Carola Neher positioned herself as a \"New Woman\", challenging traditional gender categories...",
+          "born": {},
+          "bornIn": "München, Germany",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0624552",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Carola Neher",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "222228",
+          "url": "https://themoviedb.org/person/222228"
+        },
+        "id": "10043",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Hamburg, Germany",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0778306",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Reinhold Schünzel",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/jT61usHhQHPiWAFluozzjD2ZHvZ.jpg",
+          "tmdbId": "4344",
+          "url": "https://themoviedb.org/person/4344"
+        },
+        "id": "10044",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 393750,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0026138",
+          "imdbRating": 7.9,
+          "imdbVotes": 30888,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "1340",
+          "plot": "Mary Shelley reveals the main characters of her novel survived: Dr. Frankenstein, goaded by an even madder scientist, builds his monster a mate.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/qhbTi2Tzuzuh4m4WFsRtn0SrJN8.jpg",
+          "released": "1935-04-19",
+          "revenue": 2000000,
+          "runtime": 75,
+          "title": "Bride of Frankenstein, The (Bride of Frankenstein)",
+          "tmdbId": "229",
+          "url": "https://themoviedb.org/movie/229",
+          "year": 1935
+        },
+        "id": "1103",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Colin Clive was born to a British colonel and his wife in St.  Malo, France on 20 January 1900.  His schooling was at the Convent of the Holy Cross, Boscombe, and Stonyhurst College, in preparation for entering Sandhurst, the British royal military academy.  Unfortunately, a riding accident shattered the young man's knee and disqualified him for military service.  Clive entered the Royal Academy of Dramatic Arts, making his debut in 1919 as 'Claude' in The Eclipse...",
+          "born": {},
+          "bornIn": "Saint-Malo, Brittany, France",
+          "degree": 9,
+          "died": {},
+          "imdbId": "0166972",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Colin Clive",
+          "numberOfMoviesActedIn": 2,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/msElGi0wyZ3BfUcnyi5UXAQzy00.jpg",
+          "tmdbId": "2923",
+          "url": "https://themoviedb.org/person/2923"
+        },
+        "id": "10045",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 291000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0021884",
+          "imdbRating": 8,
+          "imdbVotes": 46674,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " Latin"
+          ],
+          "movieId": "2648",
+          "plot": "An obsessed scientist assembles a living being from parts of exhumed corpses.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/jFpc9w3RmYeaOXMEfrtgshwVf4u.jpg",
+          "released": "1931-11-21",
+          "revenue": 12000000,
+          "runtime": 70,
+          "title": "Frankenstein",
+          "tmdbId": "3035",
+          "url": "https://themoviedb.org/movie/3035",
+          "year": 1931
+        },
+        "id": "2139",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "Mae Clarke (born Violet Mary Klotz in 1910) was an American stage, screen, and television actress.  She is best known for being the recipient of Jimmy Cagney's half grapefruit in 'The Public Enemy' and for her role in 'Frankenstein'...",
+          "born": {},
+          "bornIn": "Philadelphia, Pennsylvania, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0164883",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Mae Clarke",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/9u2HttpMOejKjrF61eOdjE9uw8c.jpg",
+          "tmdbId": "29814",
+          "url": "https://themoviedb.org/person/29814"
+        },
+        "id": "10046",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nJohn Boles (October 28, 1895 – February 27, 1969) was an American singer and actor best known for playing Victor Moritz in the 1931 film Frankenstein.   He started out in Hollywood in silent movies, but became a huge star with the advent of talkies.  After the war, Boles moved to New York to study music.  He quickly became well known for his talents and was selected to replace the leading man in the 1923 Broadway musical Little Jesse James...",
+          "born": {},
+          "bornIn": "Greenville, Texas, USA",
+          "degree": 14,
+          "died": {},
+          "imdbId": "0092900",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "John Boles",
+          "numberOfMoviesActedIn": 4,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/q9738FvgVVOowYHp3UCWcTuTNcA.jpg",
+          "tmdbId": "29815",
+          "url": "https://themoviedb.org/person/29815"
+        },
+        "id": "10047",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0029608",
+          "imdbRating": 7.5,
+          "imdbVotes": 3126,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "32349",
+          "plot": "A low-class woman is willing to do whatever it takes to give her daughter a socially promising future.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/spcGWnz05deoY7gAl0EvrBelzPa.jpg",
+          "released": "1937-08-06",
+          "revenue": 0,
+          "runtime": 106,
+          "title": "Stella Dallas",
+          "tmdbId": "43865",
+          "url": "https://themoviedb.org/movie/43865",
+          "year": 1937
+        },
+        "id": "6104",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0038343",
+          "imdbRating": 6.9,
+          "imdbVotes": 2446,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8003",
+          "plot": "Nell Bowen, the spirited protege of rich Lord Mortimer, becomes interested in the conditions of notorious St. Mary's of Bethlehem Asylum (Bedlam). Encouraged by the Quaker Hannay, she tries...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/rDYbo7kSkVjdKMAdJwN4pOMO6z1.jpg",
+          "released": "1946-05-10",
+          "revenue": 0,
+          "runtime": 79,
+          "title": "Bedlam",
+          "tmdbId": "24111",
+          "url": "https://themoviedb.org/movie/24111",
+          "year": 1946
+        },
+        "id": "5330",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia\n\nBoris Karloff (23 November 1887 – 2 February 1969), whose real name was William Henry Pratt, was an English-born actor who emigrated to Canada in 1909. \n\nKarloff is best remembered for his roles in horror films and his portrayal of Frankenstein's monster in Frankenstein (1931), Bride of Frankenstein (1935), and Son of Frankenstein (1939)...",
+          "born": {},
+          "bornIn": "Camberwell, London, England, UK",
+          "degree": 19,
+          "died": {},
+          "imdbId": "0000472",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Boris Karloff",
+          "numberOfMoviesActedIn": 14,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/fVi0QkiziavXB8HnWk5NzRcnCO1.jpg",
+          "tmdbId": "2922",
+          "url": "https://themoviedb.org/person/2922"
+        },
+        "id": "10048",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0057569",
+          "imdbRating": 5,
+          "imdbVotes": 5105,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8903",
+          "plot": "A young officer in Napoleon's army pursues a mysterious woman to the castle of an elderly Baron.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/trkZjJ1KJrX6U199qG6slBSKxW0.jpg",
+          "released": "1964-05-16",
+          "revenue": 0,
+          "runtime": 81,
+          "title": "Terror, The",
+          "tmdbId": "31655",
+          "url": "https://themoviedb.org/movie/31655",
+          "year": 1963
+        },
+        "id": "5611",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 315000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0060345",
+          "imdbRating": 8.4,
+          "imdbVotes": 31768,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "52435",
+          "plot": "A grumpy hermit hatches a plan to steal Christmas from the Whos of Whoville.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/7ir0iRuPK9OEuH569cp0nF5CJce.jpg",
+          "released": "1966-12-18",
+          "revenue": 0,
+          "runtime": 26,
+          "title": "How the Grinch Stole Christmas!",
+          "tmdbId": "13377",
+          "url": "https://themoviedb.org/movie/13377",
+          "year": 1966
+        },
+        "id": "6693",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 354000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0036931",
+          "imdbRating": 6.3,
+          "imdbVotes": 4051,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "2647",
+          "plot": "An evil scientist and his hunchbacked assistant escape from prison and encounter Dracula, the Wolf Man and Frankenstein's Monster.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/900UptQvoQzkGHxr8XKe8YnEVQG.jpg",
+          "released": "1944-12-01",
+          "revenue": 0,
+          "runtime": 71,
+          "title": "House of Frankenstein",
+          "tmdbId": "3103",
+          "url": "https://themoviedb.org/movie/3103",
+          "year": 1944
+        },
+        "id": "2138",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 350000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0057449",
+          "imdbRating": 6.7,
+          "imdbVotes": 7423,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "2780",
+          "plot": "A magician who has been turned into a raven turns to a former sorcerer for help.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/tt7m22ki1raa0NrvesawJgsQ4Jn.jpg",
+          "released": "1963-01-25",
+          "revenue": 1499275,
+          "runtime": 86,
+          "title": "Raven, The",
+          "tmdbId": "29056",
+          "url": "https://themoviedb.org/movie/29056",
+          "year": 1963
+        },
+        "id": "2244",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Italy",
+            " France",
+            " USA"
+          ],
+          "degree": 0,
+          "imdbId": "0057603",
+          "imdbRating": 7.2,
+          "imdbVotes": 6586,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "Italian"
+          ],
+          "movieId": "3832",
+          "plot": "A trio of atmospheric horror tales about: A woman terrorized in her apartment by phone calls from an escaped prisoner from her past; a Russian count in the early 1800s who stumbles upon a ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/oHd2kOCwIEsZtre00qQ2n9S3doa.jpg",
+          "released": "1964-05-06",
+          "revenue": 0,
+          "runtime": 92,
+          "title": "Black Sabbath (Tre volti della paura, I)",
+          "tmdbId": "28043",
+          "url": "https://themoviedb.org/movie/28043",
+          "year": 1963
+        },
+        "id": "3082",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0039589",
+          "imdbRating": 7,
+          "imdbVotes": 1658,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3656",
+          "plot": "A serial killer in London is murdering young women whom he meets through the personal columns of newspapers; he announces each of his murders to the police by sending them a cryptic poem. ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/igTIdSuk7xy5hcNgSiKHs3Uew1v.jpg",
+          "released": "1947-09-05",
+          "revenue": 0,
+          "runtime": 102,
+          "title": "Lured",
+          "tmdbId": "30308",
+          "url": "https://themoviedb.org/movie/30308",
+          "year": 1947
+        },
+        "id": "2932",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0039808",
+          "imdbRating": 7.1,
+          "imdbVotes": 4306,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " French",
+            " German"
+          ],
+          "movieId": "7826",
+          "plot": "A clumsy daydreamer gets caught up in a sinister conspiracy.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/usTCAiDicBp05Pfh9PvxNOdbIrK.jpg",
+          "released": "1947-09-01",
+          "revenue": 0,
+          "runtime": 110,
+          "title": "Secret Life of Walter Mitty, The",
+          "tmdbId": "40092",
+          "url": "https://themoviedb.org/movie/40092",
+          "year": 1947
+        },
+        "id": "5266",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Brazil"
+          ],
+          "degree": 0,
+          "imdbId": "0022080",
+          "imdbRating": 7.4,
+          "imdbVotes": 909,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "Portuguese"
+          ],
+          "movieId": "72683",
+          "plot": "Three people sail aimlessly while remembering their past.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/lRx6OsS1PXKs9k6pfUw4DhGkjNZ.jpg",
+          "released": "1931-10-01",
+          "revenue": 0,
+          "runtime": 114,
+          "title": "Limit (Limite)",
+          "tmdbId": "8353",
+          "url": "https://themoviedb.org/movie/8353",
+          "year": 1931
+        },
+        "id": "7417",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Rio de Janeiro, Brazil",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0107539",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Olga Breno",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "55336",
+          "url": "https://themoviedb.org/person/55336"
+        },
+        "id": "10049",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "imdbId": "0721169",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Tatiana Rey",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "55337",
+          "url": "https://themoviedb.org/person/55337"
+        },
+        "id": "10050",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "imdbId": "0774231",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Raul Schnoor",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "55338",
+          "url": "https://themoviedb.org/person/55338"
+        },
+        "id": "10051",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "degree": 5,
+          "imdbId": "0670083",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Brutus Pedreira",
+          "numberOfMoviesActedIn": 1,
+          "tmdbId": "55339",
+          "url": "https://themoviedb.org/person/55339"
+        },
+        "id": "10052",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0050972",
+          "imdbRating": 6.9,
+          "imdbVotes": 2623,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "6390",
+          "plot": "A musical remake of Ninotchka: After three bumbling Soviet agents fail in their mission to retrieve a straying Soviet composer from Paris, the beautiful, ultra-serious Ninotchka is sent to ...",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/kuV34rCOrcDt6Ii3149AlJs9bpM.jpg",
+          "released": "1957-07-18",
+          "revenue": 0,
+          "runtime": 117,
+          "title": "Silk Stockings",
+          "tmdbId": "43239",
+          "url": "https://themoviedb.org/movie/43239",
+          "year": 1957
+        },
+        "id": "4638",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "From Wikipedia, the free encyclopedia. \n\nPeter Lorre (26 June 1904 – 23 March 1964) was an Austrian-American actor frequently typecast as a sinister foreigner. \n\nHe caused an international sensation in 1931 with his portrayal of a serial killer who preys on little girls in the German film M.  Later he became a popular featured player in Hollywood crime films and mysteries, notably alongside Humphrey Bogart and Sydney Greenstreet, and as the star of the successful Mr.  Moto detective series...",
+          "born": {},
+          "bornIn": "Rózsahegy (now Ružomberok), Austria-Hungary (now Slovakia)",
+          "degree": 19,
+          "died": {},
+          "imdbId": "0000048",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Peter Lorre",
+          "numberOfMoviesActedIn": 9,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/elyPDRDyCFGsdyXjxqlS4cdtN8A.jpg",
+          "tmdbId": "2094",
+          "url": "https://themoviedb.org/person/2094"
+        },
+        "id": "10053",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 1580000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0055608",
+          "imdbRating": 6.1,
+          "imdbVotes": 4041,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " French"
+          ],
+          "movieId": "3926",
+          "plot": "When the Earth is threatened by a burning Van Allen Radiation Belt, US Navy Admiral Harriman Nelson plans to shoot a nuclear missile at the Belt using his experimental atomic submarine, the Seaview.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/eBm2BUvRwGwxr3hfAaOJ8kVuuhw.jpg",
+          "released": "1961-07-12",
+          "revenue": 7000000,
+          "runtime": 105,
+          "title": "Voyage to the Bottom of the Sea",
+          "tmdbId": "2160",
+          "url": "https://themoviedb.org/movie/2160",
+          "year": 1961
+        },
+        "id": "3156",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 2500000,
+          "countries": [
+            "UK"
+          ],
+          "degree": 0,
+          "imdbId": "0025452",
+          "imdbRating": 6.9,
+          "imdbVotes": 12241,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " German",
+            " Italian"
+          ],
+          "movieId": "2212",
+          "plot": "A man and his wife receive a clue to an imminent assassination attempt, only to learn that their daughter has been kidnapped to keep them quiet.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bGvun8LBoX6yDkY3cUV3NuaVaIF.jpg",
+          "released": "1935-04-15",
+          "revenue": 10250000,
+          "runtime": 75,
+          "title": "Man Who Knew Too Much, The",
+          "tmdbId": "8208",
+          "url": "https://themoviedb.org/movie/8208",
+          "year": 1934
+        },
+        "id": "1776",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 375000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0033870",
+          "imdbRating": 8.1,
+          "imdbVotes": 109292,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "913",
+          "plot": "A private detective takes on a case that involves him with three eccentric criminals, a gorgeous liar, and their quest for a priceless statuette.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bf4o6Uzw5wqLjdKwRuiDrN1xyvl.jpg",
+          "released": "1941-10-18",
+          "revenue": 1772000,
+          "runtime": 100,
+          "title": "Maltese Falcon, The",
+          "tmdbId": "963",
+          "url": "https://themoviedb.org/movie/963",
+          "year": 1941
+        },
+        "id": "753",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0038360",
+          "imdbRating": 7,
+          "imdbVotes": 1687,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8766",
+          "plot": "When Kirk Bennett is convicted of a singer's murder, his wife tries to prove him innocent...aided by the victim's ex-husband.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/sLPKGEH5jqP5EnghvLTXCASVxzu.jpg",
+          "released": "1946-08-02",
+          "revenue": 0,
+          "runtime": 81,
+          "title": "Black Angel",
+          "tmdbId": "20298",
+          "url": "https://themoviedb.org/movie/20298",
+          "year": 1946
+        },
+        "id": "5549",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0039645",
+          "imdbRating": 6.9,
+          "imdbVotes": 2098,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "5167",
+          "plot": "Shortly before his execution on the death row in San Quentin, amateur sleuth and baby photographer Ronnie Jackson, tells reporters how he got there.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/5e4bdXZKUl1AH755vICEcSiOocL.jpg",
+          "released": "1947-04-04",
+          "revenue": 0,
+          "runtime": 87,
+          "title": "My Favorite Brunette",
+          "tmdbId": "18649",
+          "url": "https://themoviedb.org/movie/18649",
+          "year": 1947
+        },
+        "id": "4000",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 5000000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0046672",
+          "imdbRating": 7.2,
+          "imdbVotes": 21341,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "1019",
+          "plot": "A ship sent to investigate a wave of mysterious sinkings encounters the advanced submarine, the Nautilus, commanded by Captain Nemo.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/heAEH85fdxEgV98LizHbQCL95iZ.jpg",
+          "released": "1954-12-23",
+          "revenue": 28200000,
+          "runtime": 127,
+          "title": "20,000 Leagues Under the Sea",
+          "tmdbId": "173",
+          "url": "https://themoviedb.org/movie/173",
+          "year": 1954
+        },
+        "id": "842",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "Germany"
+          ],
+          "degree": 0,
+          "imdbId": "0022100",
+          "imdbRating": 8.4,
+          "imdbVotes": 94725,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "German"
+          ],
+          "movieId": "1260",
+          "plot": "When the police in a German city are unable to catch a child-murderer, other criminals join in the manhunt.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/6hg2UClwHGnBojemFrLgiF1WK8A.jpg",
+          "released": "1931-08-31",
+          "revenue": 0,
+          "runtime": 99,
+          "title": "M",
+          "tmdbId": "832",
+          "url": "https://themoviedb.org/movie/832",
+          "year": 1931
+        },
+        "id": "1033",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "...",
+          "born": {},
+          "bornIn": "Biel/Bienne, Switzerland Switzerland",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0927145",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Ellen Widmann",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/lYbFnXdGCgyHh2pVnELQVmLgKKu.jpg",
+          "tmdbId": "12322",
+          "url": "https://themoviedb.org/person/12322"
+        },
+        "id": "10054",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Inge Landgut war eine deutsche Schauspielerin und Synchronsprecherin. \n\nDie Tochter des Kraftfahrers Wilhelm Landgut und seiner Ehefrau Gertrud stand bereits im Alter von drei Jahren vor der Kamera und wirkte als Kinderdarstellerin in knapp 30 Stummfilmen sowie frühen Tonfilmen mit.  Hervorzuheben sind dabei ihre Auftritte als Pony Hütchen in der ersten Verfilmung von Emil und die Detektive nach Erich Kästner und als Opfer des Kindermörders in Fritz Langs M...",
+          "born": {},
+          "bornIn": "Berlin - Germany",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0484737",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Inge Landgut",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/zNzk5bvChgVx4tAKpuCJPX5xxMO.jpg",
+          "tmdbId": "12323",
+          "url": "https://themoviedb.org/person/12323"
+        },
+        "id": "10055",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia.   \n\nOtto Karl Robert Wernicke (30 September 1893, Osterode am Harz – 7 November 1965) was a German actor.  He was best known for his role as police inspector Karl Lohmann in the two Fritz Lang films M and The Testament of Dr.  Mabuse.  He was the first one to portray Captain Smith in the first \"official\" Titanic film. \n\nWernicke was married to a Jewish woman.  Only due to a special permit was he allowed to continue his work in Nazi Germany...",
+          "born": {},
+          "bornIn": "Osterode am Harz",
+          "degree": 4,
+          "died": {},
+          "imdbId": "0921532",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Otto Wernicke",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/2jz2sXMeO5LM1DSJs3zeAkNtjj2.jpg",
+          "tmdbId": "12324",
+          "url": "https://themoviedb.org/person/12324"
+        },
+        "id": "10056",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Ricardo Cortez (September 19, 1900 – April 28, 1977) was an American film actor who began his career during the silent film era. \n\nBorn Jacob Krantz in New York City into a Jewish family, he worked on Wall Street in a broker's office and as a boxer before his looks got him into the film business.  Hollywood executives changed his name to Cortez to appeal to film-goers as a \"Latin lover\" to compete with such highly popular actors of the era as Rudolph Valentino, Ramon Novarro and Antonio Moreno...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0007220",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Ricardo Cortez",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/7Q6drcz0brLbgu3zuJuL1naemdu.jpg",
+          "tmdbId": "83476",
+          "url": "https://themoviedb.org/person/83476"
+        },
+        "id": "10058",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia\n\nDudley Digges (June 9, 1879 – October 24, 1947) was an Irish character actor on stage and in motion pictures. \n\nHe was born in Dublin.  He went to America with a group of Irish players in 1904 and became successful both as an actor and producer.  For a time he was stage manager to Charles Frohman and George Arliss.  He went to Hollywood in 1930...",
+          "born": {},
+          "bornIn": "Dublin, Ireland, UK [now Republic of Ireland]",
+          "degree": 5,
+          "died": {},
+          "imdbId": "0226502",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Dudley Digges",
+          "numberOfMoviesActedIn": 1,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/1VCZYSSO7JTrwMLeI1NBp4d7o2x.jpg",
+          "tmdbId": "100243",
+          "url": "https://themoviedb.org/person/100243"
+        },
+        "id": "10059",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "bio": "Southerner Una Merkel was a popular American stage, screen, and television actress.  In movies, while often cast as the female lead, she more typically appeared in prominent supporting roles...",
+          "born": {},
+          "bornIn": "Covington, Kentucky, USA",
+          "degree": 13,
+          "died": {},
+          "imdbId": "0580916",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Una Merkel",
+          "numberOfMoviesActedIn": 3,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/hBDjQyU2xJ9vELw0H63igS7ugSD.jpg",
+          "tmdbId": "13963",
+          "url": "https://themoviedb.org/person/13963"
+        },
+        "id": "10060",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0034116",
+          "imdbRating": 7.2,
+          "imdbVotes": 2256,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " French"
+          ],
+          "movieId": "5234",
+          "plot": "Stranded in Africa, Chuck and his pal Fearless have comic versions of jungle adventures, featuring two attractive con-women.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/7h5Z2Mir7jzVzoNvV60fPA7jKo1.jpg",
+          "released": "1941-04-11",
+          "revenue": 0,
+          "runtime": 91,
+          "title": "Road to Zanzibar",
+          "tmdbId": "31812",
+          "url": "https://themoviedb.org/movie/31812",
+          "year": 1941
+        },
+        "id": "4035",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0048380",
+          "imdbRating": 7.8,
+          "imdbVotes": 12552,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "3035",
+          "plot": "Comedy-drama about life on a not particularly important ship of the US Navy during WW2.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/5B8Gc1N2S3CDWHBzm0VxaMPTyzJ.jpg",
+          "released": "1955-12-04",
+          "revenue": 0,
+          "runtime": 123,
+          "title": "Mister Roberts",
+          "tmdbId": "37853",
+          "url": "https://themoviedb.org/movie/37853",
+          "year": 1955
+        },
+        "id": "2457",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia. \n\nJames Francis Cagney, Jr.  (July 17, 1899 – March 30, 1986) was an American film actor.  Although he won acclaim and major awards for a wide variety of roles, he is best remembered for playing \"tough guys\".  In 1999, the American Film Institute ranked him eighth among the Greatest Male Stars of All Time. \n\nIn his first performing role, Cagney danced dressed as a woman in the chorus line of the 1919 revue Every Sailor...",
+          "born": {},
+          "bornIn": "New York City, New York, USA",
+          "degree": 17,
+          "died": {},
+          "imdbId": "0000010",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "James Cagney",
+          "numberOfMoviesActedIn": 7,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/kcFPx9Xq63AUZ83zMoqqs8Zjrcj.jpg",
+          "tmdbId": "5788",
+          "url": "https://themoviedb.org/person/5788"
+        },
+        "id": "10061",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 3000000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0055256",
+          "imdbRating": 8,
+          "imdbVotes": 14120,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English",
+            " German",
+            " Russian"
+          ],
+          "movieId": "6579",
+          "plot": "Set in West Berlin during the Cold War, a Coca-Cola executive is given the task of taking care of his boss' socialite daughter.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/A2o9SzOgrE9secTLZpYRgiWKofs.jpg",
+          "released": "1961-12-15",
+          "revenue": 4000000,
+          "runtime": 115,
+          "title": "One, Two, Three",
+          "tmdbId": "430",
+          "url": "https://themoviedb.org/movie/430",
+          "year": 1961
+        },
+        "id": "4726",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0082970",
+          "imdbRating": 7.3,
+          "imdbVotes": 6467,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "5847",
+          "plot": "A young black pianist becomes embroiled in the lives of an upper-class white family set among the racial tensions, infidelity, violence, and other nostalgic events in early 1900s New York City.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/29INfj3Tuk4hWDBO41rwJeVRr1n.jpg",
+          "released": "1981-12-25",
+          "revenue": 0,
+          "runtime": 155,
+          "title": "Ragtime",
+          "tmdbId": "25566",
+          "url": "https://themoviedb.org/movie/25566",
+          "year": 1981
+        },
+        "id": "4362",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0022286",
+          "imdbRating": 7.8,
+          "imdbVotes": 12993,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "7056",
+          "plot": "A young hoodlum rises up through the ranks of the Chicago underworld, even as a gangster's accidental death threatens to spark a bloody mob war.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/kFLy1G6XgTo0VSUUXRopYjSpNFT.jpg",
+          "released": "1931-04-23",
+          "revenue": 0,
+          "runtime": 83,
+          "title": "Public Enemy, The",
+          "tmdbId": "17687",
+          "url": "https://themoviedb.org/movie/17687",
+          "year": 1931
+        },
+        "id": "4979",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0029870",
+          "imdbRating": 8,
+          "imdbVotes": 15476,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8600",
+          "plot": "A priest tries to stop a gangster from corrupting a group of street kids.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/wOZtIdDU6nntxTJHUD31ZPupj2W.jpg",
+          "released": "1938-11-26",
+          "revenue": 0,
+          "runtime": 97,
+          "title": "Angels with Dirty Faces",
+          "tmdbId": "13696",
+          "url": "https://themoviedb.org/movie/13696",
+          "year": 1938
+        },
+        "id": "5487",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0035575",
+          "imdbRating": 7.8,
+          "imdbVotes": 10764,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "6856",
+          "plot": "A film of the life of the renowned musical composer, playwright, actor, dancer, and singer George M. Cohan.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/cqLLIyJFjLr6jGOxWVEHG11WGzB.jpg",
+          "released": "1942-06-06",
+          "revenue": 0,
+          "runtime": 126,
+          "title": "Yankee Doodle Dandy",
+          "tmdbId": "3087",
+          "url": "https://themoviedb.org/movie/3087",
+          "year": 1942
+        },
+        "id": "4862",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0042041",
+          "imdbRating": 8.2,
+          "imdbVotes": 19942,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "8491",
+          "plot": "A psychopathic criminal with a mother complex makes a daring break from prison and leads his old gang in a chemical plant payroll heist. Shortly after the plan takes place, events take a crazy turn",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/5aXzapX6P0hCFgBcEuqJeY4eRw6.jpg",
+          "released": "1949-09-03",
+          "revenue": 0,
+          "runtime": 114,
+          "title": "White Heat",
+          "tmdbId": "15794",
+          "url": "https://themoviedb.org/movie/15794",
+          "year": 1949
+        },
+        "id": "5449",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "budget": 0,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0027884",
+          "imdbRating": 7.9,
+          "imdbVotes": 5186,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "25826",
+          "plot": "A newspaper man, his jilted fiancée, and his lawyer hatch an elaborate scheme to turn a false news-story into the truth, before a high-society woman can sue for libel.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/cdrBwZXREAFUNLqTeMPSxdrFXwm.jpg",
+          "released": "1936-10-09",
+          "revenue": 0,
+          "runtime": 98,
+          "title": "Libeled Lady",
+          "tmdbId": "31773",
+          "url": "https://themoviedb.org/movie/31773",
+          "year": 1936
+        },
+        "id": "5696",
+        "label": "Movie"
+      },
+      {
+        "attributes": {
+          "bio": "​From Wikipedia, the free encyclopedia. \n\nJean Harlow (March 3, 1911 – June 7, 1937) was an American film actress and sex symbol of the 1930s.  Known as the \"Blonde Bombshell\" and the \"Platinum Blonde\" (due to her platinum blonde hair), Harlow was ranked one of the greatest movie stars of all time by the American Film Institute...",
+          "born": {},
+          "bornIn": "Kansas City, Missouri, USA",
+          "degree": 14,
+          "died": {},
+          "imdbId": "0001318",
+          "labels": [
+            "Actor",
+            "Person"
+          ],
+          "name": "Jean Harlow",
+          "numberOfMoviesActedIn": 4,
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/bZGHQeMeD6oXqi3373IPYrSB761.jpg",
+          "tmdbId": "82315",
+          "url": "https://themoviedb.org/person/82315"
+        },
+        "id": "10062",
+        "label": "Actor"
+      },
+      {
+        "attributes": {
+          "budget": 408000,
+          "countries": [
+            "USA"
+          ],
+          "degree": 0,
+          "imdbId": "0023382",
+          "imdbRating": 7.4,
+          "imdbVotes": 2653,
+          "labels": [
+            "Movie"
+          ],
+          "languages": [
+            "English"
+          ],
+          "movieId": "53038",
+          "plot": "The owner of a rubber plantation becomes involved with the new wife of one of his employees.",
+          "poster": "https://image.tmdb.org/t/p/w440_and_h660_face/hduMas6casqqytmu7Z4uYxgRAKL.jpg",
+          "released": "1932-10-22",
+          "revenue": 0,
+          "runtime": 83,
+          "title": "Red Dust",
+          "tmdbId": "38077",
+          "url": "https://themoviedb.org/movie/38077",
+          "year": 1932
+        },
+        "id": "6723",
+        "label": "Movie"
+      }
+    ],
+    edges: [
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Officer of the Marines (uncredited)"
+        },
+        "from": "9816",
+        "id": "120344",
+        "to": "6138",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Parade Leader (uncredited)"
+        },
+        "from": "9817",
+        "id": "120345",
+        "to": "6138",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Rachel Cooper"
+        },
+        "from": "9818",
+        "id": "171293",
+        "to": "4953",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Hetty Seibert"
+        },
+        "from": "9818",
+        "id": "171292",
+        "to": "5121",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Woman Who Rocks the Cradle"
+        },
+        "from": "9818",
+        "id": "120354",
+        "to": "5092",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Elsie Stoneman"
+        },
+        "from": "9818",
+        "id": "120346",
+        "to": "4987",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Hester Prynne"
+        },
+        "from": "9818",
+        "id": "120497",
+        "to": "796",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Flora Cameron"
+        },
+        "from": "9819",
+        "id": "120347",
+        "to": "4987",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ben Cameron"
+        },
+        "from": "9820",
+        "id": "120348",
+        "to": "4987",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Roger Prynne aka Roger Chillingworth"
+        },
+        "from": "9820",
+        "id": "120499",
+        "to": "796",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Margaret Cameron"
+        },
+        "from": "9821",
+        "id": "120349",
+        "to": "4987",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Professor Aronnax"
+        },
+        "from": "9822",
+        "id": "120350",
+        "to": "7077",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Aronnax's Daughter"
+        },
+        "from": "9823",
+        "id": "120351",
+        "to": "7077",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ned Land"
+        },
+        "from": "9824",
+        "id": "120352",
+        "to": "7077",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Captain Nemo"
+        },
+        "from": "9825",
+        "id": "120353",
+        "to": "7077",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Brown Eyes' Father (French Story)"
+        },
+        "from": "9826",
+        "id": "120355",
+        "to": "5092",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Uplifter"
+        },
+        "from": "9827",
+        "id": "120356",
+        "to": "5092",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Charles IX"
+        },
+        "from": "9828",
+        "id": "120357",
+        "to": "5092",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9829",
+        "id": "173292",
+        "to": "2672",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9829",
+        "id": "173290",
+        "to": "1054",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9829",
+        "id": "173295",
+        "to": "2670",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9829",
+        "id": "173293",
+        "to": "2917",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9829",
+        "id": "173296",
+        "to": "2669",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9829",
+        "id": "173288",
+        "to": "2863",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9829",
+        "id": "173289",
+        "to": "2783",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9829",
+        "id": "173294",
+        "to": "2673",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9829",
+        "id": "173286",
+        "to": "2925",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9829",
+        "id": "173291",
+        "to": "5457",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9829",
+        "id": "173287",
+        "to": "2918",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9829",
+        "id": "168054",
+        "to": "2673",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9829",
+        "id": "123120",
+        "to": "2925",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9829",
+        "id": "120362",
+        "to": "2672",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9829",
+        "id": "120358",
+        "to": "5457",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9829",
+        "id": "120449",
+        "to": "2917",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9829",
+        "id": "121185",
+        "to": "1054",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9829",
+        "id": "120889",
+        "to": "2783",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9829",
+        "id": "121895",
+        "to": "2918",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9829",
+        "id": "122407",
+        "to": "2863",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Bar Singer"
+        },
+        "from": "9830",
+        "id": "175440",
+        "to": "2672",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Immigrant"
+        },
+        "from": "9830",
+        "id": "120359",
+        "to": "5457",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Woman"
+        },
+        "from": "9830",
+        "id": "120388",
+        "to": "2673",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Head Waiter"
+        },
+        "from": "9831",
+        "id": "120360",
+        "to": "5457",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "A Diner / Immigrant"
+        },
+        "from": "9832",
+        "id": "120361",
+        "to": "5457",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9833",
+        "id": "174816",
+        "to": "5434",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Billy Blazes"
+        },
+        "from": "9833",
+        "id": "120363",
+        "to": "7413",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Freshman"
+        },
+        "from": "9833",
+        "id": "120441",
+        "to": "5679",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Boy - Harold"
+        },
+        "from": "9833",
+        "id": "120414",
+        "to": "5386",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Harold Hickory"
+        },
+        "from": "9833",
+        "id": "120514",
+        "to": "5434",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sheriff 'Gun Shy' Gallagher"
+        },
+        "from": "9834",
+        "id": "120364",
+        "to": "7413",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ruth Wonderly"
+        },
+        "from": "9835",
+        "id": "166780",
+        "to": "5385",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dorothy Brock"
+        },
+        "from": "9835",
+        "id": "120718",
+        "to": "5000",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Nell"
+        },
+        "from": "9835",
+        "id": "120365",
+        "to": "7413",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Caligari"
+        },
+        "from": "9836",
+        "id": "120366",
+        "to": "4931",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Cesare"
+        },
+        "from": "9837",
+        "id": "120367",
+        "to": "4931",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9838",
+        "id": "120368",
+        "to": "4931",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Jane Olsen"
+        },
+        "from": "9839",
+        "id": "120369",
+        "to": "4931",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9840",
+        "id": "174865",
+        "to": "5676",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Golem"
+        },
+        "from": "9840",
+        "id": "120370",
+        "to": "5676",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Rabbi Loew"
+        },
+        "from": "9841",
+        "id": "120371",
+        "to": "5676",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Miriam, the Rabbi's Daughter"
+        },
+        "from": "9842",
+        "id": "120372",
+        "to": "5676",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Rabbi Famulus"
+        },
+        "from": "9843",
+        "id": "120373",
+        "to": "5676",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Constance Bonacieux"
+        },
+        "from": "9844",
+        "id": "172316",
+        "to": "6991",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Lolita Pulido"
+        },
+        "from": "9844",
+        "id": "120374",
+        "to": "6994",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Capt. Juan Ramon"
+        },
+        "from": "9845",
+        "id": "120375",
+        "to": "6994",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sgt. Pedro Gonzales"
+        },
+        "from": "9846",
+        "id": "120376",
+        "to": "6994",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Don Carlos Pulido"
+        },
+        "from": "9847",
+        "id": "120377",
+        "to": "6994",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174856",
+        "to": "5683",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174846",
+        "to": "7730",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174851",
+        "to": "7733",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174853",
+        "to": "7723",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174848",
+        "to": "5401",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174857",
+        "to": "5684",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174855",
+        "to": "7736",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174849",
+        "to": "4995",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174854",
+        "to": "5490",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174852",
+        "to": "7734",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174847",
+        "to": "2447",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9848",
+        "id": "174850",
+        "to": "2543",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED",
+          "role": "Sherlock, Jr."
+        },
+        "from": "9848",
+        "id": "173299",
+        "to": "5678",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED",
+          "role": "The Goat"
+        },
+        "from": "9848",
+        "id": "173297",
+        "to": "7729",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED",
+          "role": "James 'Jimmie' Shannon"
+        },
+        "from": "9848",
+        "id": "173298",
+        "to": "2612",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED",
+          "role": "Friendless"
+        },
+        "from": "9848",
+        "id": "173300",
+        "to": "2538",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9848",
+        "id": "168529",
+        "to": "7646",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Calvero's Partner"
+        },
+        "from": "9848",
+        "id": "168528",
+        "to": "2863",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Erronius"
+        },
+        "from": "9848",
+        "id": "168527",
+        "to": "5561",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Elmer E. Tuttle"
+        },
+        "from": "9848",
+        "id": "120669",
+        "to": "8813",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Bank Clerk"
+        },
+        "from": "9848",
+        "id": "120383",
+        "to": "7723",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Boat Builder"
+        },
+        "from": "9848",
+        "id": "120378",
+        "to": "7730",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Goat"
+        },
+        "from": "9848",
+        "id": "120379",
+        "to": "7729",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Rollo Treadway"
+        },
+        "from": "9848",
+        "id": "120426",
+        "to": "4995",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sherlock, Jr."
+        },
+        "from": "9848",
+        "id": "120429",
+        "to": "5678",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Boy"
+        },
+        "from": "9848",
+        "id": "120418",
+        "to": "2543",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Young man / Jeune homme"
+        },
+        "from": "9848",
+        "id": "120393",
+        "to": "7736",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Audience / Orchestra / Mr. Brown - First Minstrel / Second Minstrel / Interctors / Stagehand"
+        },
+        "from": "9848",
+        "id": "120392",
+        "to": "7733",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Little Chief Paleface"
+        },
+        "from": "9848",
+        "id": "120391",
+        "to": "7734",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Johnny Gray"
+        },
+        "from": "9848",
+        "id": "120510",
+        "to": "2447",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "James 'Jimmie' Shannon"
+        },
+        "from": "9848",
+        "id": "120469",
+        "to": "2612",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "William 'Willie' Canfield Jr."
+        },
+        "from": "9848",
+        "id": "120546",
+        "to": "5684",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Buster"
+        },
+        "from": "9848",
+        "id": "120534",
+        "to": "5683",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Twin (uncredited)"
+        },
+        "from": "9849",
+        "id": "175614",
+        "to": "7733",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Indian Maiden"
+        },
+        "from": "9849",
+        "id": "175297",
+        "to": "7734",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mayor's Daughter / Fille du Maire"
+        },
+        "from": "9849",
+        "id": "175471",
+        "to": "7736",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Police Chief's Daughter"
+        },
+        "from": "9849",
+        "id": "120380",
+        "to": "7729",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Bank President's Daughter"
+        },
+        "from": "9849",
+        "id": "120384",
+        "to": "7723",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Indian Chief"
+        },
+        "from": "9850",
+        "id": "175298",
+        "to": "7734",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Police Chief / Chef de police"
+        },
+        "from": "9850",
+        "id": "175470",
+        "to": "7736",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Joseph Canfield"
+        },
+        "from": "9850",
+        "id": "171460",
+        "to": "5490",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Police Chief"
+        },
+        "from": "9850",
+        "id": "120381",
+        "to": "7729",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Girl's Father"
+        },
+        "from": "9850",
+        "id": "120421",
+        "to": "2543",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Bank Cashier"
+        },
+        "from": "9850",
+        "id": "120385",
+        "to": "7723",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9851",
+        "id": "174912",
+        "to": "7729",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dead Shot Dan"
+        },
+        "from": "9851",
+        "id": "120382",
+        "to": "7729",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Hobo / Vagabond"
+        },
+        "from": "9852",
+        "id": "175472",
+        "to": "7736",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "SOS Receiver"
+        },
+        "from": "9852",
+        "id": "175609",
+        "to": "7730",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Orangutan trainer (uncredited)"
+        },
+        "from": "9852",
+        "id": "175613",
+        "to": "7733",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9852",
+        "id": "173305",
+        "to": "2543",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9852",
+        "id": "173303",
+        "to": "5458",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED",
+          "role": "Hobo / Vagabond"
+        },
+        "from": "9852",
+        "id": "173306",
+        "to": "7736",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9852",
+        "id": "173308",
+        "to": "7734",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED",
+          "role": "Orangutan trainer (uncredited)"
+        },
+        "from": "9852",
+        "id": "173307",
+        "to": "7733",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9852",
+        "id": "173301",
+        "to": "3159",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED",
+          "role": "Customer in Bank"
+        },
+        "from": "9852",
+        "id": "173309",
+        "to": "7723",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED",
+          "role": "SOS Receiver"
+        },
+        "from": "9852",
+        "id": "173304",
+        "to": "7730",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9852",
+        "id": "173302",
+        "to": "5707",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Customer in Bank"
+        },
+        "from": "9852",
+        "id": "120386",
+        "to": "7723",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Man"
+        },
+        "from": "9853",
+        "id": "120387",
+        "to": "2673",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Matthew Basch"
+        },
+        "from": "9854",
+        "id": "125058",
+        "to": "4851",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Kid"
+        },
+        "from": "9854",
+        "id": "120389",
+        "to": "2673",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "C.A. Rotwang"
+        },
+        "from": "9856",
+        "id": "172324",
+        "to": "1591",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Mabuse"
+        },
+        "from": "9856",
+        "id": "120689",
+        "to": "5520",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Mabuse"
+        },
+        "from": "9856",
+        "id": "120394",
+        "to": "3755",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Cara Carozza, the dancer"
+        },
+        "from": "9857",
+        "id": "120395",
+        "to": "3755",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Countess Dusy Told (as Gertrude Welker)"
+        },
+        "from": "9858",
+        "id": "120396",
+        "to": "3755",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Johann 'Joh' Fredersen"
+        },
+        "from": "9859",
+        "id": "167752",
+        "to": "1591",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Count Told / Richard Fleury - US version"
+        },
+        "from": "9859",
+        "id": "120397",
+        "to": "3755",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Witch"
+        },
+        "from": "9860",
+        "id": "120398",
+        "to": "5677",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Nun"
+        },
+        "from": "9861",
+        "id": "120399",
+        "to": "5677",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Young Monk"
+        },
+        "from": "9862",
+        "id": "120400",
+        "to": "5677",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Fat Monk"
+        },
+        "from": "9863",
+        "id": "120401",
+        "to": "5677",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Nanook"
+        },
+        "from": "9864",
+        "id": "120402",
+        "to": "6416",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Nanook's Wife"
+        },
+        "from": "9865",
+        "id": "120403",
+        "to": "6416",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Nanook's Son"
+        },
+        "from": "9866",
+        "id": "120404",
+        "to": "6416",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Nanook's Daughter"
+        },
+        "from": "9867",
+        "id": "120405",
+        "to": "6416",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Graf Orlok"
+        },
+        "from": "9868",
+        "id": "120406",
+        "to": "1111",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Hutter"
+        },
+        "from": "9869",
+        "id": "120407",
+        "to": "1111",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ellen"
+        },
+        "from": "9870",
+        "id": "120408",
+        "to": "1111",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Harding"
+        },
+        "from": "9871",
+        "id": "120409",
+        "to": "1111",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9873",
+        "id": "120751",
+        "to": "7334",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9873",
+        "id": "120411",
+        "to": "5490",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Lee Canfield"
+        },
+        "from": "9874",
+        "id": "120412",
+        "to": "5490",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Parson"
+        },
+        "from": "9875",
+        "id": "120413",
+        "to": "5490",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Girl"
+        },
+        "from": "9876",
+        "id": "120415",
+        "to": "5386",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Pal"
+        },
+        "from": "9877",
+        "id": "120416",
+        "to": "5386",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Law"
+        },
+        "from": "9878",
+        "id": "120417",
+        "to": "5386",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Girl"
+        },
+        "from": "9879",
+        "id": "120419",
+        "to": "2543",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "General Director Preysing"
+        },
+        "from": "9880",
+        "id": "120652",
+        "to": "1511",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dan Packard"
+        },
+        "from": "9880",
+        "id": "120711",
+        "to": "5691",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Villain"
+        },
+        "from": "9880",
+        "id": "120420",
+        "to": "2543",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Prof. Challenger"
+        },
+        "from": "9880",
+        "id": "120463",
+        "to": "3418",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mephisto"
+        },
+        "from": "9881",
+        "id": "169183",
+        "to": "3503",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Professor Immanuel Rath"
+        },
+        "from": "9881",
+        "id": "120577",
+        "to": "3872",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Hotelportier"
+        },
+        "from": "9881",
+        "id": "120422",
+        "to": "3504",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Nichte des Portiers"
+        },
+        "from": "9882",
+        "id": "120423",
+        "to": "3504",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Bräutigam der Nichte"
+        },
+        "from": "9883",
+        "id": "120424",
+        "to": "3504",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Tante"
+        },
+        "from": "9884",
+        "id": "120425",
+        "to": "3504",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Betsy O'Brien"
+        },
+        "from": "9885",
+        "id": "120427",
+        "to": "4995",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Girl"
+        },
+        "from": "9885",
+        "id": "120430",
+        "to": "5678",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "John O'Brien"
+        },
+        "from": "9886",
+        "id": "120428",
+        "to": "4995",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Girl's Father"
+        },
+        "from": "9887",
+        "id": "120431",
+        "to": "5678",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Butler"
+        },
+        "from": "9888",
+        "id": "120432",
+        "to": "5678",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Thief of Bagdad"
+        },
+        "from": "9889",
+        "id": "120433",
+        "to": "5114",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "His Evil Associate"
+        },
+        "from": "9890",
+        "id": "120434",
+        "to": "5114",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Dean"
+        },
+        "from": "9890",
+        "id": "120509",
+        "to": "5401",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Lawyer"
+        },
+        "from": "9890",
+        "id": "120471",
+        "to": "2612",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Holy Man"
+        },
+        "from": "9891",
+        "id": "120435",
+        "to": "5114",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Princess"
+        },
+        "from": "9892",
+        "id": "120436",
+        "to": "5114",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Grigory Vakulinchuk"
+        },
+        "from": "9893",
+        "id": "120437",
+        "to": "3013",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Commander Golikov"
+        },
+        "from": "9894",
+        "id": "120438",
+        "to": "3013",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Chief Officer Giliarovsky"
+        },
+        "from": "9895",
+        "id": "120439",
+        "to": "3013",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Young Sailor Flogged While Sleeping"
+        },
+        "from": "9896",
+        "id": "120440",
+        "to": "3013",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Peggy"
+        },
+        "from": "9897",
+        "id": "120442",
+        "to": "5679",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mary Powers"
+        },
+        "from": "9897",
+        "id": "120515",
+        "to": "5434",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sylvia Lewis"
+        },
+        "from": "9897",
+        "id": "120529",
+        "to": "1507",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The College Cad"
+        },
+        "from": "9898",
+        "id": "120443",
+        "to": "5679",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Chet Trask"
+        },
+        "from": "9899",
+        "id": "120444",
+        "to": "5679",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Owner of the Diamond Bar Ranch"
+        },
+        "from": "9900",
+        "id": "120445",
+        "to": "2538",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "His Daughter"
+        },
+        "from": "9901",
+        "id": "120446",
+        "to": "2538",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Foreman"
+        },
+        "from": "9902",
+        "id": "120447",
+        "to": "2538",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Herself"
+        },
+        "from": "9903",
+        "id": "120448",
+        "to": "2538",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Big Jim McKay"
+        },
+        "from": "9904",
+        "id": "120450",
+        "to": "2917",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Black Larsen"
+        },
+        "from": "9905",
+        "id": "120451",
+        "to": "2917",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Hank Curtis"
+        },
+        "from": "9906",
+        "id": "120452",
+        "to": "2917",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Cafe proprietor"
+        },
+        "from": "9906",
+        "id": "120891",
+        "to": "2783",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Trina"
+        },
+        "from": "9907",
+        "id": "120453",
+        "to": "5680",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "John McTeague"
+        },
+        "from": "9908",
+        "id": "120454",
+        "to": "5680",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Marcus"
+        },
+        "from": "9909",
+        "id": "120455",
+        "to": "5680",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Adolph Kramer"
+        },
+        "from": "9909",
+        "id": "120946",
+        "to": "3965",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Maria"
+        },
+        "from": "9910",
+        "id": "120456",
+        "to": "5680",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Susan Turner"
+        },
+        "from": "9911",
+        "id": "167500",
+        "to": "5526",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Shirley Ellison"
+        },
+        "from": "9911",
+        "id": "120765",
+        "to": "8220",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Elizabeth Blair"
+        },
+        "from": "9911",
+        "id": "120821",
+        "to": "7843",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Virginia 'Virgie' Cary"
+        },
+        "from": "9911",
+        "id": "120825",
+        "to": "5474",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Shirley Blake"
+        },
+        "from": "9911",
+        "id": "120773",
+        "to": "3963",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Lloyd Sherman"
+        },
+        "from": "9911",
+        "id": "120457",
+        "to": "7962",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sara Crewe"
+        },
+        "from": "9911",
+        "id": "121107",
+        "to": "757",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Susannah 'Sue' Sheldon"
+        },
+        "from": "9911",
+        "id": "121143",
+        "to": "8253",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Rebecca Winstead"
+        },
+        "from": "9911",
+        "id": "121049",
+        "to": "8219",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Betsy Brown Shea"
+        },
+        "from": "9911",
+        "id": "121041",
+        "to": "8230",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Penny Hale"
+        },
+        "from": "9911",
+        "id": "121033",
+        "to": "8227",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Priscilla 'Winkie' Williams"
+        },
+        "from": "9911",
+        "id": "121001",
+        "to": "7012",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Barbara 'Ching-Ching' Stewart"
+        },
+        "from": "9911",
+        "id": "120913",
+        "to": "8252",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Barbara Barry"
+        },
+        "from": "9911",
+        "id": "120905",
+        "to": "8243",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Heidi Kramer"
+        },
+        "from": "9911",
+        "id": "120945",
+        "to": "3965",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Helen 'Star' Mason"
+        },
+        "from": "9911",
+        "id": "120853",
+        "to": "6523",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dimples Appleby"
+        },
+        "from": "9911",
+        "id": "120857",
+        "to": "3964",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Molly Middleton"
+        },
+        "from": "9911",
+        "id": "120837",
+        "to": "8242",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Colonel Lloyd"
+        },
+        "from": "9912",
+        "id": "120458",
+        "to": "7962",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Grandpa Martin Vanderhof"
+        },
+        "from": "9912",
+        "id": "121058",
+        "to": "1515",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Henry F. Potter"
+        },
+        "from": "9912",
+        "id": "121769",
+        "to": "792",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sen. Jackson Tilt McCanles"
+        },
+        "from": "9912",
+        "id": "121754",
+        "to": "3051",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "James Temple"
+        },
+        "from": "9912",
+        "id": "121990",
+        "to": "2688",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Elizabeth Lloyd Sherman"
+        },
+        "from": "9913",
+        "id": "120459",
+        "to": "7962",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Jack Sherman"
+        },
+        "from": "9914",
+        "id": "120460",
+        "to": "7962",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Hank Mahoney"
+        },
+        "from": "9915",
+        "id": "171351",
+        "to": "1508",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Paula White"
+        },
+        "from": "9915",
+        "id": "120461",
+        "to": "3418",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Oxenstierna"
+        },
+        "from": "9916",
+        "id": "120744",
+        "to": "5392",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sir John Roxton"
+        },
+        "from": "9916",
+        "id": "120462",
+        "to": "3418",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Edward E. Malone"
+        },
+        "from": "9917",
+        "id": "120464",
+        "to": "3418",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9918",
+        "id": "174927",
+        "to": "5681",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Erik, The Phantom"
+        },
+        "from": "9918",
+        "id": "120465",
+        "to": "5681",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Christine Daaé"
+        },
+        "from": "9919",
+        "id": "120466",
+        "to": "5681",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Vicomte Raoul de Chagny"
+        },
+        "from": "9920",
+        "id": "120467",
+        "to": "5681",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ledoux"
+        },
+        "from": "9921",
+        "id": "120468",
+        "to": "5681",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Billy Meekin"
+        },
+        "from": "9922",
+        "id": "120470",
+        "to": "2612",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mary Jones"
+        },
+        "from": "9923",
+        "id": "120472",
+        "to": "2612",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Judah Ben-Hur"
+        },
+        "from": "9924",
+        "id": "120473",
+        "to": "4930",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Messala"
+        },
+        "from": "9925",
+        "id": "120474",
+        "to": "4930",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Esther"
+        },
+        "from": "9926",
+        "id": "120475",
+        "to": "4930",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mary"
+        },
+        "from": "9927",
+        "id": "120476",
+        "to": "4930",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Princess Isobel"
+        },
+        "from": "9928",
+        "id": "120477",
+        "to": "5119",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Duenna (as Tempe Pigett)"
+        },
+        "from": "9929",
+        "id": "120478",
+        "to": "5119",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9930",
+        "id": "173310",
+        "to": "4995",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Grandpa Spencer"
+        },
+        "from": "9930",
+        "id": "124146",
+        "to": "4720",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "MacTavish"
+        },
+        "from": "9930",
+        "id": "120479",
+        "to": "5119",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mr. Morgan"
+        },
+        "from": "9930",
+        "id": "121280",
+        "to": "1516",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sir Charles Emery"
+        },
+        "from": "9930",
+        "id": "121264",
+        "to": "5076",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sam Carraclough"
+        },
+        "from": "9930",
+        "id": "121692",
+        "to": "7060",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Herbert Brown"
+        },
+        "from": "9930",
+        "id": "121608",
+        "to": "4981",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Commander Beech"
+        },
+        "from": "9930",
+        "id": "121621",
+        "to": "6162",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sam Carraclough"
+        },
+        "from": "9930",
+        "id": "121486",
+        "to": "5493",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "'Jock' Gray"
+        },
+        "from": "9930",
+        "id": "122080",
+        "to": "8709",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Pirate Lieutenant"
+        },
+        "from": "9931",
+        "id": "120480",
+        "to": "5119",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Charles-Ingvar \"Sickan\" Jönsson"
+        },
+        "from": "9932",
+        "id": "128189",
+        "to": "4394",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Faust"
+        },
+        "from": "9932",
+        "id": "120481",
+        "to": "3503",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Gretchen/ Marguerite"
+        },
+        "from": "9934",
+        "id": "120483",
+        "to": "3503",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Gretchens Mutter/ Marguerite's mother"
+        },
+        "from": "9935",
+        "id": "120484",
+        "to": "3503",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Julian Marsh"
+        },
+        "from": "9936",
+        "id": "120717",
+        "to": "5000",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Lawrence Cromwell"
+        },
+        "from": "9936",
+        "id": "120789",
+        "to": "8251",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Jay Gatsby"
+        },
+        "from": "9936",
+        "id": "120485",
+        "to": "8800",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Daisy Buchanan"
+        },
+        "from": "9937",
+        "id": "120486",
+        "to": "8800",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Harry Holt"
+        },
+        "from": "9938",
+        "id": "120794",
+        "to": "6295",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Nick Carraway"
+        },
+        "from": "9938",
+        "id": "120487",
+        "to": "8800",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Myrtle Wilson"
+        },
+        "from": "9939",
+        "id": "120488",
+        "to": "8800",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Landlady - Daisy's Mother"
+        },
+        "from": "9940",
+        "id": "120489",
+        "to": "1781",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Daisy's Father"
+        },
+        "from": "9941",
+        "id": "120490",
+        "to": "1781",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9942",
+        "id": "120491",
+        "to": "1781",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Joe Chandler"
+        },
+        "from": "9943",
+        "id": "120492",
+        "to": "1781",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Freder Fredersen"
+        },
+        "from": "9945",
+        "id": "120494",
+        "to": "1591",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Peachum"
+        },
+        "from": "9947",
+        "id": "120608",
+        "to": "6098",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Thin Man"
+        },
+        "from": "9947",
+        "id": "120496",
+        "to": "1591",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Rev. Arthur Dimmesdale"
+        },
+        "from": "9948",
+        "id": "120498",
+        "to": "796",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Giles"
+        },
+        "from": "9949",
+        "id": "120500",
+        "to": "796",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ahmed, the Sheik's Son / Sheik Ahmed Ben Hassan"
+        },
+        "from": "9950",
+        "id": "120501",
+        "to": "2806",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9951",
+        "id": "120502",
+        "to": "2806",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "André Romez"
+        },
+        "from": "9952",
+        "id": "120503",
+        "to": "2806",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ghabah"
+        },
+        "from": "9953",
+        "id": "120504",
+        "to": "2806",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": ""
+        },
+        "from": "9954",
+        "id": "120505",
+        "to": "5293",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mary Haynes, The Girl"
+        },
+        "from": "9955",
+        "id": "120506",
+        "to": "5401",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mary's friend"
+        },
+        "from": "9956",
+        "id": "120507",
+        "to": "5401",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Jeff Brown, A rival"
+        },
+        "from": "9957",
+        "id": "120508",
+        "to": "5401",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Stagg"
+        },
+        "from": "9957",
+        "id": "120536",
+        "to": "5683",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Annabelle Lee"
+        },
+        "from": "9958",
+        "id": "120511",
+        "to": "2447",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Captain Anderson"
+        },
+        "from": "9959",
+        "id": "120512",
+        "to": "2447",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "General Thatcher"
+        },
+        "from": "9960",
+        "id": "120513",
+        "to": "2447",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Jim Hickory"
+        },
+        "from": "9961",
+        "id": "120516",
+        "to": "5434",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Leo Hickory"
+        },
+        "from": "9962",
+        "id": "120517",
+        "to": "5434",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Napoléon Bonaparte"
+        },
+        "from": "9963",
+        "id": "120518",
+        "to": "6937",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Napoléon Bonaparte (Child)"
+        },
+        "from": "9964",
+        "id": "120519",
+        "to": "6937",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9965",
+        "id": "120520",
+        "to": "6937",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Georges Jacques Danton"
+        },
+        "from": "9966",
+        "id": "120521",
+        "to": "6937",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9967",
+        "id": "120522",
+        "to": "5352",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Esther Blodgett aka Vicki Lester"
+        },
+        "from": "9968",
+        "id": "166849",
+        "to": "2605",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Wife (Indre)"
+        },
+        "from": "9968",
+        "id": "120523",
+        "to": "5352",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Woman from the City"
+        },
+        "from": "9969",
+        "id": "120524",
+        "to": "5352",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Maid"
+        },
+        "from": "9970",
+        "id": "120525",
+        "to": "5352",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mary Preston"
+        },
+        "from": "9971",
+        "id": "120526",
+        "to": "1507",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9972",
+        "id": "120527",
+        "to": "1507",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Cheshire Cat"
+        },
+        "from": "9973",
+        "id": "168751",
+        "to": "7652",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "David Armstrong"
+        },
+        "from": "9973",
+        "id": "120528",
+        "to": "1507",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Lulu"
+        },
+        "from": "9974",
+        "id": "120530",
+        "to": "5682",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Ludwig Schön"
+        },
+        "from": "9975",
+        "id": "120531",
+        "to": "5682",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Alwa Schön"
+        },
+        "from": "9976",
+        "id": "120532",
+        "to": "5682",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Schigolch"
+        },
+        "from": "9977",
+        "id": "120533",
+        "to": "5682",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sally"
+        },
+        "from": "9978",
+        "id": "120535",
+        "to": "5683",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Editor"
+        },
+        "from": "9979",
+        "id": "120537",
+        "to": "5683",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Eccentric Millionaire's Butler"
+        },
+        "from": "9980",
+        "id": "171252",
+        "to": "2670",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Circus Proprietor and Ring Master"
+        },
+        "from": "9980",
+        "id": "120538",
+        "to": "2669",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "His Step-daughter, A Circus Rider"
+        },
+        "from": "9981",
+        "id": "120539",
+        "to": "2669",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Rex, A Tight Rope Walker / Disgruntled Property Man / Clown"
+        },
+        "from": "9982",
+        "id": "120540",
+        "to": "2669",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "A Magician"
+        },
+        "from": "9983",
+        "id": "120541",
+        "to": "2669",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Jeanne d'Arc"
+        },
+        "from": "9984",
+        "id": "120542",
+        "to": "4929",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "9985",
+        "id": "120543",
+        "to": "4929",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Jean d'Estivet"
+        },
+        "from": "9986",
+        "id": "120544",
+        "to": "4929",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Nicolas Loyseleur"
+        },
+        "from": "9987",
+        "id": "120545",
+        "to": "4929",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "John James 'J.J.' King"
+        },
+        "from": "9988",
+        "id": "120547",
+        "to": "5684",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "William 'Steamboat Bill' Canfield Sr."
+        },
+        "from": "9989",
+        "id": "120548",
+        "to": "5684",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "First and Last Mate Tom Carter"
+        },
+        "from": "9990",
+        "id": "120549",
+        "to": "5684",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mickey Mouse (voice) (uncredited)"
+        },
+        "from": "9991",
+        "id": "175583",
+        "to": "3026",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mickey Mouse (segment 'The Sorcerer's Apprentice') (voice)"
+        },
+        "from": "9991",
+        "id": "175746",
+        "to": "1055",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "self"
+        },
+        "from": "9991",
+        "id": "175059",
+        "to": "2900",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "DIRECTED"
+        },
+        "from": "9991",
+        "id": "174913",
+        "to": "1681",
+        "label": "DIRECTED"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mickey Mouse (voice)"
+        },
+        "from": "9991",
+        "id": "120550",
+        "to": "1681",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Alice White"
+        },
+        "from": "9992",
+        "id": "120551",
+        "to": "1780",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mrs. White"
+        },
+        "from": "9993",
+        "id": "120552",
+        "to": "1780",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mr. White"
+        },
+        "from": "9994",
+        "id": "120553",
+        "to": "1780",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Chief Inspector Lomax"
+        },
+        "from": "9995",
+        "id": "123181",
+        "to": "2935",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Detective Frank Webber"
+        },
+        "from": "9995",
+        "id": "120554",
+        "to": "1780",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Eddie Kearns"
+        },
+        "from": "9996",
+        "id": "120555",
+        "to": "1508",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Queenie Mahoney"
+        },
+        "from": "9997",
+        "id": "120556",
+        "to": "1508",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Cameraman"
+        },
+        "from": "9999",
+        "id": "120558",
+        "to": "4661",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "10000",
+        "id": "120625",
+        "to": "5688",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "10000",
+        "id": "120653",
+        "to": "5011",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "10000",
+        "id": "120713",
+        "to": "1029",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "10000",
+        "id": "120559",
+        "to": "6154",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "10000",
+        "id": "120573",
+        "to": "5230",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Frank Wagstaff"
+        },
+        "from": "10001",
+        "id": "175006",
+        "to": "5011",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Horatio Jamison"
+        },
+        "from": "10001",
+        "id": "175007",
+        "to": "5230",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Zeppo"
+        },
+        "from": "10001",
+        "id": "175005",
+        "to": "5688",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Bob Roland"
+        },
+        "from": "10001",
+        "id": "175381",
+        "to": "1029",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Jamison"
+        },
+        "from": "10001",
+        "id": "120560",
+        "to": "6154",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Wolf J. Flywheel"
+        },
+        "from": "10002",
+        "id": "171583",
+        "to": "6136",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Otis B. Driftwood"
+        },
+        "from": "10002",
+        "id": "171588",
+        "to": "5033",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "S. Quentin Quale"
+        },
+        "from": "10002",
+        "id": "171584",
+        "to": "6244",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Gordon Miller"
+        },
+        "from": "10002",
+        "id": "171585",
+        "to": "6189",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Attorney J. Cheever Loophole"
+        },
+        "from": "10002",
+        "id": "171586",
+        "to": "6190",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Hugo Z. Hackenbush"
+        },
+        "from": "10002",
+        "id": "171587",
+        "to": "5471",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Groucho"
+        },
+        "from": "10002",
+        "id": "120626",
+        "to": "5688",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Quincy Adams Wagstaff"
+        },
+        "from": "10002",
+        "id": "120654",
+        "to": "5011",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Rufus T. Firefly"
+        },
+        "from": "10002",
+        "id": "120714",
+        "to": "1029",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Hammer"
+        },
+        "from": "10002",
+        "id": "120561",
+        "to": "6154",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Captain Jeffrey T. Spaulding"
+        },
+        "from": "10002",
+        "id": "120574",
+        "to": "5230",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Harpo"
+        },
+        "from": "10003",
+        "id": "120627",
+        "to": "5688",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Pinky"
+        },
+        "from": "10003",
+        "id": "120655",
+        "to": "5011",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Pinky"
+        },
+        "from": "10003",
+        "id": "120715",
+        "to": "1029",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Harpo"
+        },
+        "from": "10003",
+        "id": "120562",
+        "to": "6154",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Professor"
+        },
+        "from": "10003",
+        "id": "120575",
+        "to": "5230",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Wacky"
+        },
+        "from": "10003",
+        "id": "121255",
+        "to": "6136",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "'Rusty' Panello"
+        },
+        "from": "10003",
+        "id": "121179",
+        "to": "6244",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Faker Englund"
+        },
+        "from": "10003",
+        "id": "121055",
+        "to": "6189",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "'Punchy'"
+        },
+        "from": "10003",
+        "id": "121067",
+        "to": "6190",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Stuffy"
+        },
+        "from": "10003",
+        "id": "120935",
+        "to": "5471",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Tomasso"
+        },
+        "from": "10003",
+        "id": "120835",
+        "to": "5033",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Queen Mother, Anne of Austria"
+        },
+        "from": "10004",
+        "id": "120563",
+        "to": "6991",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Milady de Winter"
+        },
+        "from": "10006",
+        "id": "120565",
+        "to": "6991",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Madame Peronne"
+        },
+        "from": "10007",
+        "id": "120566",
+        "to": "6991",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Young Girl"
+        },
+        "from": "10008",
+        "id": "120567",
+        "to": "5685",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Man"
+        },
+        "from": "10009",
+        "id": "120568",
+        "to": "5685",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Stanislas 'Kat' Katczinsky"
+        },
+        "from": "10010",
+        "id": "120569",
+        "to": "1509",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Paul Bäumer"
+        },
+        "from": "10011",
+        "id": "120570",
+        "to": "1509",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ned Seton"
+        },
+        "from": "10011",
+        "id": "121028",
+        "to": "5702",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Robert Richardson"
+        },
+        "from": "10011",
+        "id": "121984",
+        "to": "5441",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Himmelstoss"
+        },
+        "from": "10012",
+        "id": "120571",
+        "to": "1509",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Kantorek"
+        },
+        "from": "10013",
+        "id": "120572",
+        "to": "1509",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Chico"
+        },
+        "from": "10014",
+        "id": "175207",
+        "to": "6154",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Chico"
+        },
+        "from": "10014",
+        "id": "120628",
+        "to": "5688",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Signor Emanuel Ravelli"
+        },
+        "from": "10014",
+        "id": "120576",
+        "to": "5230",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Baravelli"
+        },
+        "from": "10014",
+        "id": "120656",
+        "to": "5011",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Chicolini"
+        },
+        "from": "10014",
+        "id": "120716",
+        "to": "1029",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ravelli"
+        },
+        "from": "10014",
+        "id": "121254",
+        "to": "6136",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Joe Panello"
+        },
+        "from": "10014",
+        "id": "121178",
+        "to": "6244",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Harry Binelli"
+        },
+        "from": "10014",
+        "id": "121054",
+        "to": "6189",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Antonio Pirelli"
+        },
+        "from": "10014",
+        "id": "121066",
+        "to": "6190",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Tony"
+        },
+        "from": "10014",
+        "id": "120934",
+        "to": "5471",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Fiorello"
+        },
+        "from": "10014",
+        "id": "120834",
+        "to": "5033",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Frenchy"
+        },
+        "from": "10015",
+        "id": "172257",
+        "to": "4645",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "10015",
+        "id": "172258",
+        "to": "659",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mrs. Bertholt"
+        },
+        "from": "10015",
+        "id": "123739",
+        "to": "4821",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Christine Vole"
+        },
+        "from": "10015",
+        "id": "123213",
+        "to": "3901",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Lola Lola"
+        },
+        "from": "10015",
+        "id": "120578",
+        "to": "3872",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Charlotte Inwood"
+        },
+        "from": "10015",
+        "id": "122240",
+        "to": "1757",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN"
+        },
+        "from": "10015",
+        "id": "134180",
+        "to": "346",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Kiepert, the Magician"
+        },
+        "from": "10016",
+        "id": "120579",
+        "to": "3872",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Guste, His Wife"
+        },
+        "from": "10017",
+        "id": "120580",
+        "to": "3872",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Barton Keyes"
+        },
+        "from": "10018",
+        "id": "168937",
+        "to": "2759",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dathan"
+        },
+        "from": "10018",
+        "id": "168936",
+        "to": "5161",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Johnny Rocco"
+        },
+        "from": "10018",
+        "id": "168938",
+        "to": "2688",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Caesar Enrico 'Rico' Bandello aka 'Little Caesar'"
+        },
+        "from": "10018",
+        "id": "120581",
+        "to": "5686",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Federal Agent Wilson"
+        },
+        "from": "10018",
+        "id": "121815",
+        "to": "5719",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Christopher Cross"
+        },
+        "from": "10018",
+        "id": "121687",
+        "to": "4002",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Professor Richard Wanley"
+        },
+        "from": "10018",
+        "id": "121623",
+        "to": "5716",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Joe Massara"
+        },
+        "from": "10019",
+        "id": "120582",
+        "to": "5686",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ballantine"
+        },
+        "from": "10019",
+        "id": "121093",
+        "to": "5274",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Olga Stassoff"
+        },
+        "from": "10020",
+        "id": "120583",
+        "to": "5686",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Marie Woods"
+        },
+        "from": "10020",
+        "id": "120658",
+        "to": "5343",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Tony Passa"
+        },
+        "from": "10021",
+        "id": "120584",
+        "to": "5686",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Robert Crosbie"
+        },
+        "from": "10022",
+        "id": "168680",
+        "to": "5705",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Stephen Fisher"
+        },
+        "from": "10022",
+        "id": "168679",
+        "to": "768",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Horace Giddens"
+        },
+        "from": "10022",
+        "id": "168678",
+        "to": "3774",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Gaston Monescu"
+        },
+        "from": "10022",
+        "id": "168677",
+        "to": "3010",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Insp. Charas"
+        },
+        "from": "10022",
+        "id": "168676",
+        "to": "1980",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sir John Menier"
+        },
+        "from": "10022",
+        "id": "120585",
+        "to": "1779",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Diana Baring"
+        },
+        "from": "10023",
+        "id": "120586",
+        "to": "1779",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Doucie Markham"
+        },
+        "from": "10024",
+        "id": "120587",
+        "to": "1779",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ted Markham"
+        },
+        "from": "10025",
+        "id": "120588",
+        "to": "1779",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Man"
+        },
+        "from": "10026",
+        "id": "120589",
+        "to": "5687",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Woman"
+        },
+        "from": "10027",
+        "id": "120590",
+        "to": "5687",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Marquise' Chambermaid / Girl at Blangis' Castle"
+        },
+        "from": "10028",
+        "id": "120591",
+        "to": "5687",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Bandit Leader in the Hut"
+        },
+        "from": "10029",
+        "id": "120592",
+        "to": "5687",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Yancey Cravat"
+        },
+        "from": "10030",
+        "id": "120593",
+        "to": "1510",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Lucy Warriner"
+        },
+        "from": "10031",
+        "id": "171012",
+        "to": "4561",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Anna Owens"
+        },
+        "from": "10031",
+        "id": "171013",
+        "to": "6176",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Julie Gardiner Adams"
+        },
+        "from": "10031",
+        "id": "171010",
+        "to": "795",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ellen Wagstaff Arden"
+        },
+        "from": "10031",
+        "id": "171011",
+        "to": "5531",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sabra Cravat"
+        },
+        "from": "10031",
+        "id": "120594",
+        "to": "1510",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Vinnie Day"
+        },
+        "from": "10031",
+        "id": "121884",
+        "to": "4980",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dixie Lee"
+        },
+        "from": "10032",
+        "id": "120595",
+        "to": "1510",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Felice Venable"
+        },
+        "from": "10033",
+        "id": "120596",
+        "to": "1510",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "A Blind Girl"
+        },
+        "from": "10034",
+        "id": "120597",
+        "to": "2670",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Blind Girl's Grandmother"
+        },
+        "from": "10035",
+        "id": "120598",
+        "to": "2670",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "An Eccentric Millionaire"
+        },
+        "from": "10036",
+        "id": "120599",
+        "to": "2670",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Vitus Werdegast"
+        },
+        "from": "10038",
+        "id": "166710",
+        "to": "5694",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Commissar Razinin"
+        },
+        "from": "10038",
+        "id": "166711",
+        "to": "775",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Ygor"
+        },
+        "from": "10038",
+        "id": "166712",
+        "to": "2140",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Joseph"
+        },
+        "from": "10038",
+        "id": "166713",
+        "to": "1101",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Frankenstein Monster"
+        },
+        "from": "10038",
+        "id": "166714",
+        "to": "2142",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Count Dracula"
+        },
+        "from": "10038",
+        "id": "166715",
+        "to": "3158",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Count Dracula"
+        },
+        "from": "10038",
+        "id": "120601",
+        "to": "2137",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Legendre"
+        },
+        "from": "10038",
+        "id": "120701",
+        "to": "5283",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Eric Vornoff"
+        },
+        "from": "10038",
+        "id": "122784",
+        "to": "2691",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Scientist"
+        },
+        "from": "10038",
+        "id": "122500",
+        "to": "1891",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mina Seward"
+        },
+        "from": "10039",
+        "id": "120602",
+        "to": "2137",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "John Harker"
+        },
+        "from": "10040",
+        "id": "120603",
+        "to": "2137",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Frank Whemple"
+        },
+        "from": "10040",
+        "id": "120663",
+        "to": "2126",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Peter Alison"
+        },
+        "from": "10040",
+        "id": "120771",
+        "to": "5694",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Renfield"
+        },
+        "from": "10041",
+        "id": "120604",
+        "to": "2137",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Mackie Messer"
+        },
+        "from": "10042",
+        "id": "120605",
+        "to": "6098",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Polly"
+        },
+        "from": "10043",
+        "id": "120606",
+        "to": "6098",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Tiger-Brown"
+        },
+        "from": "10044",
+        "id": "120607",
+        "to": "6098",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Henry Frankenstein"
+        },
+        "from": "10045",
+        "id": "166432",
+        "to": "1103",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Henry Frankenstein"
+        },
+        "from": "10045",
+        "id": "120609",
+        "to": "2139",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Elizabeth"
+        },
+        "from": "10046",
+        "id": "120610",
+        "to": "2139",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Victor Moritz"
+        },
+        "from": "10047",
+        "id": "120611",
+        "to": "2139",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Edward Morgan"
+        },
+        "from": "10047",
+        "id": "120822",
+        "to": "7843",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Capt. Herbert Cary"
+        },
+        "from": "10047",
+        "id": "120826",
+        "to": "5474",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Stephen Dallas"
+        },
+        "from": "10047",
+        "id": "120994",
+        "to": "6104",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "George Sims"
+        },
+        "from": "10048",
+        "id": "168782",
+        "to": "5330",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "John Gray"
+        },
+        "from": "10048",
+        "id": "168783",
+        "to": "1101",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Monster"
+        },
+        "from": "10048",
+        "id": "168780",
+        "to": "1103",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Hjalmar Poelzig"
+        },
+        "from": "10048",
+        "id": "168781",
+        "to": "5694",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Baron Victor Frederick Von Leppe"
+        },
+        "from": "10048",
+        "id": "168778",
+        "to": "5611",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Imhotep / Ardath Bey"
+        },
+        "from": "10048",
+        "id": "168779",
+        "to": "2126",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Narrator / The Grinch (voice)"
+        },
+        "from": "10048",
+        "id": "168777",
+        "to": "6693",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Niemann"
+        },
+        "from": "10048",
+        "id": "168784",
+        "to": "2138",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Scarabus"
+        },
+        "from": "10048",
+        "id": "124129",
+        "to": "2244",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Himself / Gorca"
+        },
+        "from": "10048",
+        "id": "124173",
+        "to": "3082",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Monster"
+        },
+        "from": "10048",
+        "id": "120612",
+        "to": "2139",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "The Monster"
+        },
+        "from": "10048",
+        "id": "121136",
+        "to": "2140",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Charles van Druten"
+        },
+        "from": "10048",
+        "id": "121890",
+        "to": "2932",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Hugo Hollingshead"
+        },
+        "from": "10048",
+        "id": "121937",
+        "to": "5266",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "First woman"
+        },
+        "from": "10049",
+        "id": "120613",
+        "to": "7417",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Second woman"
+        },
+        "from": "10050",
+        "id": "120614",
+        "to": "7417",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "First man"
+        },
+        "from": "10051",
+        "id": "120615",
+        "to": "7417",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Second man"
+        },
+        "from": "10052",
+        "id": "120616",
+        "to": "7417",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Brankov, Commisar"
+        },
+        "from": "10053",
+        "id": "166477",
+        "to": "4638",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Comm. Lucius Emery"
+        },
+        "from": "10053",
+        "id": "166476",
+        "to": "3156",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Abbott"
+        },
+        "from": "10053",
+        "id": "166479",
+        "to": "1776",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Dr. Adolphus Bedlo"
+        },
+        "from": "10053",
+        "id": "166478",
+        "to": "2244",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Joel Cairo"
+        },
+        "from": "10053",
+        "id": "166480",
+        "to": "753",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Marko"
+        },
+        "from": "10053",
+        "id": "166481",
+        "to": "5549",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Kismet"
+        },
+        "from": "10053",
+        "id": "166482",
+        "to": "4000",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Conseil"
+        },
+        "from": "10053",
+        "id": "166483",
+        "to": "842",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Hans Beckert"
+        },
+        "from": "10053",
+        "id": "120617",
+        "to": "1033",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Frau Beckmann"
+        },
+        "from": "10054",
+        "id": "120618",
+        "to": "1033",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Elsie Beckmann"
+        },
+        "from": "10055",
+        "id": "120619",
+        "to": "1033",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Inspector Karl Lohmann"
+        },
+        "from": "10056",
+        "id": "120620",
+        "to": "1033",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Sam Spade"
+        },
+        "from": "10058",
+        "id": "120622",
+        "to": "5385",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Casper Gutman"
+        },
+        "from": "10059",
+        "id": "120623",
+        "to": "5385",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Effie Perrine"
+        },
+        "from": "10060",
+        "id": "120624",
+        "to": "5385",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Julia Quimby"
+        },
+        "from": "10060",
+        "id": "121320",
+        "to": "4035",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Myrtle Sousé"
+        },
+        "from": "10060",
+        "id": "121169",
+        "to": "3159",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Captain Morton"
+        },
+        "from": "10061",
+        "id": "167254",
+        "to": "2457",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "C.R. MacNamara"
+        },
+        "from": "10061",
+        "id": "123772",
+        "to": "4726",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Police Commissioner Rhinelander Waldo"
+        },
+        "from": "10061",
+        "id": "128125",
+        "to": "4362",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Tom Powers"
+        },
+        "from": "10061",
+        "id": "120629",
+        "to": "4979",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Rocky Sullivan"
+        },
+        "from": "10061",
+        "id": "121013",
+        "to": "5487",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "George M. Cohan"
+        },
+        "from": "10061",
+        "id": "121449",
+        "to": "4862",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Arthur 'Cody' Jarrett"
+        },
+        "from": "10061",
+        "id": "122155",
+        "to": "5449",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Gladys Benton"
+        },
+        "from": "10062",
+        "id": "170210",
+        "to": "5696",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Gwen Allen"
+        },
+        "from": "10062",
+        "id": "120630",
+        "to": "4979",
+        "label": "ACTED_IN"
+      },
+      {
+        "attributes": {
+          "Type": "ACTED_IN",
+          "role": "Vantine"
+        },
+        "from": "10062",
+        "id": "120678",
+        "to": "6723",
+        "label": "ACTED_IN"
+      }
+    ],
+    "nodeTypes": [
+      "Movie",
+      "Actor"
+    ]
+  }
\ No newline at end of file
diff --git a/libs/shared/lib/mock-data/schema/big2ndChamberSchemaRaw.ts b/libs/shared/lib/mock-data/schema/big2ndChamberSchemaRaw.ts
index 88cc8ddfb93a64ea348f0abcfc4356eb59e91383..9dc05f217821fc5a203483787488e06307fb59a8 100644
--- a/libs/shared/lib/mock-data/schema/big2ndChamberSchemaRaw.ts
+++ b/libs/shared/lib/mock-data/schema/big2ndChamberSchemaRaw.ts
@@ -18,6 +18,10 @@ export const big2ndChamberSchemaRaw: SchemaFromBackend = {
           name: 'leeftijd',
           type: 'int',
         },
+        {
+          name: 'height',
+          type: 'int',
+        },
         {
           name: 'naam',
           type: 'string',
@@ -39,6 +43,14 @@ export const big2ndChamberSchemaRaw: SchemaFromBackend = {
           name: 'naam',
           type: 'string',
         },
+        {
+          name: 'year',
+          type: 'int',
+        },
+        {
+          name: 'topic',
+          type: 'string',
+        },
       ],
     },
   ],
diff --git a/libs/shared/lib/mock-data/schema/index.ts b/libs/shared/lib/mock-data/schema/index.ts
index 733bdfd4d26d7adaea7e9e716c558019b3aacc3f..fa890e7ced8db80ce48db9d713b5711ab86baab2 100644
--- a/libs/shared/lib/mock-data/schema/index.ts
+++ b/libs/shared/lib/mock-data/schema/index.ts
@@ -5,8 +5,12 @@ export * from './northwindSchemaRaw';
 export * from './twitterSchemaRaw';
 export * from './big2ndChamberSchemaRaw';
 export * from './typesMockSchemaRaw';
-export * from './recommendationsWithAttributes'
-export * from './northwindWithAttributes'
-export * from './slackWithAttributes'
-export * from './fincenWithAttributes'
+export * from './simpleAirportRaw';
+export * from './recommendationsWithAttributes';
+export * from './northwindWithAttributes';
+export * from './slackWithAttributes';
+export * from './fincenWithAttributes';
 
+export * from './marieBoucherSampleSchemaRaw';
+export * from './marieBoucherSampleSchemaRaw';
+export * from './simpleAirportRaw';
diff --git a/libs/shared/lib/mock-data/schema/marieBoucherSampleSchemaRaw.ts b/libs/shared/lib/mock-data/schema/marieBoucherSampleSchemaRaw.ts
new file mode 100644
index 0000000000000000000000000000000000000000..29dd424bbf09541bde25c0ce3c9480a59e47b715
--- /dev/null
+++ b/libs/shared/lib/mock-data/schema/marieBoucherSampleSchemaRaw.ts
@@ -0,0 +1,26 @@
+import { SchemaFromBackend } from '../../schema';
+import { SchemaUtils } from '../../schema/schema-utils';
+
+export const marieBoucherSampleSchemaRaw: SchemaFromBackend = {
+  nodes: [
+    {
+      name: 'merchant',
+      attributes: [
+        { name: 'name', type: 'string' },
+        { name: 'data', type: 'int' },
+      ],
+    },
+  ],
+  edges: [
+    {
+      name: 'transaction',
+      label: 'transaction',
+      from: 'merchant',
+      to: 'merchant',
+      collection: 'transaction',
+      attributes: [{ name: 'time', type: 'int' }],
+    },
+  ],
+};
+
+export const marieBoucherSampleSchema = SchemaUtils.schemaBackend2Graphology(marieBoucherSampleSchemaRaw);
diff --git a/libs/shared/lib/schema/schema-utils/flow-utils.ts b/libs/shared/lib/schema/schema-utils/flow-utils.ts
index 5aca28f86ddeb5707a3e8ce2df9617328a9ab041..284fb7a105ef96f76986d1c08e9715caffea75fd 100644
--- a/libs/shared/lib/schema/schema-utils/flow-utils.ts
+++ b/libs/shared/lib/schema/schema-utils/flow-utils.ts
@@ -72,8 +72,6 @@ export const getCenter = ({
 export const getWidthOfText = (text: string, fontname: string, fontsize: string, fontWeight = 'normal'): number => {
   let canvas = document.createElement('canvas');
   let canvasText = canvas.getContext('2d') as CanvasRenderingContext2D;
-  let fontSpecs = fontWeight + ' ' + fontsize + ' ' + fontname;
-  canvasText.font = fontSpecs;
   return canvasText.measureText(text).width;
 };
 
diff --git a/libs/shared/lib/vis/visualizationManager.tsx b/libs/shared/lib/vis/visualizationManager.tsx
index f9a963ddffcabf219deeadbd8431d30eecbe8ce3..1167e74a4b0c370458bb0517234ed9458b5c94f5 100644
--- a/libs/shared/lib/vis/visualizationManager.tsx
+++ b/libs/shared/lib/vis/visualizationManager.tsx
@@ -11,6 +11,7 @@ export const Visualizations: Record<string, Function> = {
   NodeLinkVis: () => import('./visualizations/nodelinkvis/nodelinkvis'),
   // MapVis: () => import('./visualizations/mapvis/mapvis'),
   MatrixVis: () => import('./visualizations/matrixvis/matrixvis'),
+  SemSubstrVis: () => import('./visualizations/semanticsubstratesvis/semanticsubstratesvis'),
 };
 
 export const VisualizationManager = () => {
diff --git a/libs/shared/lib/vis/visualizations/index.tsx b/libs/shared/lib/vis/visualizations/index.tsx
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5fa9f4221646eb5641dbec2409966e947a61c7a8 100644
--- a/libs/shared/lib/vis/visualizations/index.tsx
+++ b/libs/shared/lib/vis/visualizations/index.tsx
@@ -0,0 +1,6 @@
+export * from './rawjsonvis';
+export * from './nodelinkvis/nodelinkvis';
+export * from './paohvis/paohvis';
+export * from './tablevis/tablevis';
+export * from './matrixvis/matrixvis';
+export * from './semanticsubstratesvis/semanticsubstratesvis';
diff --git a/libs/shared/lib/vis/visualizations/paohvis/Types.tsx b/libs/shared/lib/vis/visualizations/paohvis/Types.tsx
index 2192b5612ed1b71b71451c966dd86d053ddcada2..6ff227f956130a8ca86e0d7a2cc6f3e1c188bbd4 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/Types.tsx
+++ b/libs/shared/lib/vis/visualizations/paohvis/Types.tsx
@@ -3,10 +3,12 @@
  * Utrecht University within the Software Project course.
  * © Copyright Utrecht University (Department of Information and Computing Sciences)
  */
+import { NodeAttributes } from '@graphpolaris/shared/lib/data-access/store/graphQueryResultSlice';
 
 /** The data that is needed to make the complete Paohvis table. */
 export type PaohvisData = {
   rowLabels: string[];
+  rowLabelsList: string[];
   hyperEdgeRanges: HyperEdgeRange[];
   maxRowLabelWidth: number;
 };
@@ -95,6 +97,7 @@ export type AttributeNames = {
 export enum NodeOrder {
   alphabetical = 'Alphabetical',
   degree = 'Degree (amount of hyperedges)',
+  byGroup = 'By Group',
 }
 
 /** All information on the ordering of PAOHvis. */
@@ -129,3 +132,32 @@ export enum EntityOrigin {
   from = 'From',
   to = 'To',
 }
+
+export interface AugmentedEdgeAttributes {
+  attributes: NodeAttributes;
+  from: string;
+  to: string;
+  id: string;
+  label: string;
+}
+
+export interface GraphData {
+  name?: string;
+  nodes: AugmentedNodeAttributesGraph[];
+  edges: AugmentedNodeAttributesGraph[];
+}
+
+export interface AugmentedNodeAttributesGraph {
+  id: string;
+  attributes: NodeAttributes;
+  label: string;
+}
+
+export interface connectionFromTo {
+  to: string;
+  from: string;
+  attributes: NodeAttributes;
+}
+export interface idConnections {
+  [key: string]: string[];
+}
diff --git a/libs/shared/lib/vis/visualizations/paohvis/components/CustomLine.tsx b/libs/shared/lib/vis/visualizations/paohvis/components/CustomLine.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..7ff6d6ccf70fc64aa1491414074c0889d022bfa1
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/paohvis/components/CustomLine.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+
+interface LineProps {
+  x1: number;
+  x2: number;
+  y1: number;
+  y2: number;
+  strokeWidth: number;
+}
+
+const CustomLine: React.FC<LineProps> = (props) => {
+  return <line x1={props.x1} x2={props.x2} y1={props.y1} y2={props.y2} strokeWidth={props.strokeWidth} fill={'hsl(var(--clr-pri--600))'} />;
+};
+
+export default CustomLine;
diff --git a/libs/shared/lib/vis/visualizations/paohvis/components/HyperEdgesRange.tsx b/libs/shared/lib/vis/visualizations/paohvis/components/HyperEdgesRange.tsx
index d360922292426e9db757b0533944d6a4008d6274..c525b545e8809459eda9b57eb33909de52f48586 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/components/HyperEdgesRange.tsx
+++ b/libs/shared/lib/vis/visualizations/paohvis/components/HyperEdgesRange.tsx
@@ -10,22 +10,23 @@
  * See testing plan for more details.*/
 import { select } from 'd3';
 import React, { useEffect, useRef } from 'react';
-// import style from './PaohvisComponent.module.scss';
 import { HyperEdgeI } from '../Types';
+import CustomLine from './CustomLine';
 
 type HyperEdgeRangeProps = {
   index: number;
   text: string;
   hyperEdges: HyperEdgeI[];
   nRows: number;
+  nCols: number;
   colOffset: number;
   xOffset: number;
   yOffset: number;
   rowHeight: number;
   hyperedgeColumnWidth: number;
   gapBetweenRanges: number;
-
-  onMouseEnter: (col: number, nameToShow: string) => void;
+  textBothMargins: number;
+  onMouseEnter: (col: number, nameToShow: string, colTable: number) => void;
   onMouseLeave: (col: number) => void;
 };
 export const HyperEdgeRange = (props: HyperEdgeRangeProps) => {
@@ -41,14 +42,21 @@ export const HyperEdgeRange = (props: HyperEdgeRangeProps) => {
           y={i * props.rowHeight}
           width={rectWidth}
           height={props.rowHeight}
-          fill={i % 2 === 0 ? '#e6e6e6' : '#f5f5f5'}
+          fill={i % 2 === 0 ? 'hsl(var(--clr-sec--50))' : 'hsl(var(--clr-sec--0))'}
+          stroke={'white'}
+          strokeWidth={0}
           style={{ zIndex: -1 }}
         />
-      </g>
+        {i === 0 && <CustomLine x1={0} x2={rectWidth} y1={0} y2={0} strokeWidth={1} />}
+
+        <CustomLine x1={0} x2={rectWidth} y1={(i + 1) * props.rowHeight} y2={(i + 1) * props.rowHeight} strokeWidth={1} />
+        <CustomLine x1={rectWidth} x2={rectWidth} y1={i * props.rowHeight} y2={(i + 1) * props.rowHeight} strokeWidth={1} />
+      </g>,
     );
 
   let hyperedges = props.hyperEdges.map((hyperEdge, i) => (
     <HyperEdge
+      colTable={props.index}
       key={i}
       col={i + props.colOffset}
       connectedRows={hyperEdge.indices}
@@ -56,30 +64,40 @@ export const HyperEdgeRange = (props: HyperEdgeRangeProps) => {
       nameToShow={hyperEdge.nameToShow}
       rowHeight={props.rowHeight}
       xOffset={props.hyperedgeColumnWidth / 2 + i * props.hyperedgeColumnWidth + props.gapBetweenRanges}
-      radius={8}
+      radius={0.227 * props.rowHeight}
       onMouseEnter={props.onMouseEnter}
       onMouseLeave={props.onMouseLeave}
     />
   ));
 
-  // * 3 because we have a gapBetweenRanges as padding
   const xOffset = props.xOffset + (props.index * 3 + 1) * props.gapBetweenRanges + props.colOffset * props.hyperedgeColumnWidth;
-
   return (
     <g transform={'translate(' + xOffset + ', +' + props.yOffset + ')'}>
-      <text
-        textDecoration={'underline'}
-        x="10"
-        y={props.rowHeight / 2}
-        dy=".35em"
-        style={{
-          fontWeight: 600,
-          transform: 'translate3d(-10px, 15px, 0px) rotate(-30deg)',
-        }}
+      <g
+        className={'text-columns text-col-' + props.index}
+        transform={`translate(${rectWidth / 2}, ${0 * props.rowHeight})rotate(-90, ${0}, ${0})`}
       >
-        {props.text}
-      </text>
-      <g transform={'translate(0,' + props.rowHeight + ')'}>
+        {/* vertical line */}
+        <CustomLine x1={0} x2={props.yOffset} y1={-rectWidth / 2} y2={-rectWidth / 2} strokeWidth={1} />
+        {props.index === props.nCols - 1 && (
+          <CustomLine x1={0} x2={props.yOffset} y1={(1 * rectWidth) / 2} y2={(1 * rectWidth) / 2} strokeWidth={1} />
+        )}
+        {/* horizontal */}
+        <CustomLine x1={props.yOffset} x2={props.yOffset} y1={-rectWidth / 2} y2={rectWidth / 2} strokeWidth={1} />
+        <text
+          x={props.textBothMargins}
+          textAnchor="start"
+          dominantBaseline="middle"
+          className="font-sans font-black font-semibold"
+          fill="hsl(var(--clr-sec--800))"
+          style={{
+            stroke: 'none',
+          }}
+        >
+          {props.text !== 'No attribute' && props.text}
+        </text>
+      </g>
+      <g className={'hyperEdgeBlock hyperEdge-col-' + props.index} transform={'translate(0,' + 0 + ')'}>
         {rows}
         {hyperedges}
       </g>
@@ -88,6 +106,7 @@ export const HyperEdgeRange = (props: HyperEdgeRangeProps) => {
 };
 
 type HyperEdgeProps = {
+  colTable: number;
   col: number;
   connectedRows: number[];
   numbersOnRows: number[];
@@ -95,7 +114,7 @@ type HyperEdgeProps = {
   xOffset: number;
   radius: number;
   nameToShow: string;
-  onMouseEnter: (col: number, nameToShow: string) => void;
+  onMouseEnter: (col: number, nameToShow: string, colTable: number) => void;
   onMouseLeave: (col: number) => void;
 };
 
@@ -104,29 +123,34 @@ const HyperEdge = (props: HyperEdgeProps) => {
 
   useEffect(() => {
     if (ref.current) {
-      /** Adds mouse events when the user hovers over and out of a hyperedge. */
       select(ref.current)
-        .on('mouseover', () => props.onMouseEnter(props.col, props.nameToShow))
+        .on('mouseover', () => props.onMouseEnter(props.col, props.nameToShow, props.colTable))
         .on('mouseout', () => props.onMouseLeave(props.col));
     }
   }, [ref.current]);
 
-  // render all circles on the correct position.
   const circles = props.connectedRows.map((row, i) => {
     return (
       <g key={'row' + row + ' col' + i}>
-        <circle cx={0} cy={row * props.rowHeight} r={props.radius} fill={'white'} stroke={'black'} strokeWidth={1} />
+        <circle
+          className={'hyperEdge-col' + props.colTable}
+          cx={0}
+          cy={row * props.rowHeight}
+          r={props.radius}
+          fill="hsl(var(--clr-white))"
+          stroke="hsl(var(--clr-black))"
+          strokeWidth={1}
+        />
       </g>
     );
   });
 
-  // create a line between two circles.
   const lines: JSX.Element[] = [];
   let y1 = props.connectedRows[0] * props.rowHeight + props.radius;
   let y2;
   for (let i = 1; i < props.connectedRows.length; i++) {
     y2 = props.connectedRows[i] * props.rowHeight - props.radius;
-    lines.push(<line key={'line' + i} x1={0} y1={y1} x2={0} y2={y2} stroke={'black'} strokeWidth={1} />);
+    lines.push(<line key={'line' + i} x1={0} y1={y1} x2={0} y2={y2} stroke="hsl(var(--clr-black))" strokeWidth={props.rowHeight / 30} />);
     y1 = props.connectedRows[i] * props.rowHeight + props.radius;
   }
 
diff --git a/libs/shared/lib/vis/visualizations/paohvis/components/MakePaohvisMenu.tsx b/libs/shared/lib/vis/visualizations/paohvis/components/MakePaohvisMenu.tsx
index 0f676c0fa2e0617c393173464e26bcc71cc86337..6ceac15732c47a3fd2e02814d32c2a4c8cb7e950 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/components/MakePaohvisMenu.tsx
+++ b/libs/shared/lib/vis/visualizations/paohvis/components/MakePaohvisMenu.tsx
@@ -35,10 +35,11 @@ type MakePaohvisMenuProps = {
   makePaohvis: (
     entityVertical: string,
     entityHorizontal: string,
+    entityVerticalListed: string,
     relationName: string,
     isEntityFromRelationFrom: boolean,
     chosenAttribute: Attribute,
-    nodeOrder: PaohvisNodeOrder
+    nodeOrder: PaohvisNodeOrder,
   ) => void;
 };
 
@@ -46,6 +47,7 @@ type MakePaohvisMenuProps = {
 type MakePaohvisMenuState = {
   entityVertical: string;
   entityHorizontal: string;
+  entityVerticalListed: string;
   relationName: string;
   isEntityVerticalEqualToRelationFrom: boolean;
   attributeNameAndOrigin: string;
@@ -70,6 +72,7 @@ export const MakePaohvisMenu = (props: MakePaohvisMenuProps) => {
   const schema = useSchemaGraph();
   const [state, setState] = useImmer<MakePaohvisMenuState>({
     entityVertical: '',
+    entityVerticalListed: '',
     entityHorizontal: '',
     relationName: '',
     isEntityVerticalEqualToRelationFrom: true,
@@ -110,24 +113,21 @@ export const MakePaohvisMenu = (props: MakePaohvisMenuProps) => {
    * It has the value of the entity you clicked on.
    */
   function onChangeEntity(newEntity: string): void {
-    console.log(newEntity, state.entitiesFromSchema.relationsPerEntity);
-
     setState((draft) => {
       draft.relationNameOptions = [];
       const relationNames: string[] = state.entitiesFromSchema.relationsPerEntity[newEntity];
-
       // check if there are any relations
       if (relationNames) {
         // push all relation options to relationNameOptions
         relationNames.forEach((relation) => {
           let relationSplit = state.relationsFromSchema.relationNames[relation].split(':');
 
-          //check if relation is valid
           if (draft.entitiesFromQueryResult.includes(relationSplit[0]) && draft.entitiesFromQueryResult.includes(relationSplit[1])) {
             // check if relation is selfedge
             if (relationSplit[0] == relationSplit[1]) {
               const relationFrom = `${relation}:${EntityOrigin.from}`;
               const relationTo = `${relation}:${EntityOrigin.to}`;
+
               if (!draft.relationNameOptions.includes(relationFrom) && !draft.relationNameOptions.includes(relationTo)) {
                 draft.relationNameOptions.push(relationFrom);
                 draft.relationNameOptions.push(relationTo);
@@ -148,13 +148,12 @@ export const MakePaohvisMenu = (props: MakePaohvisMenuProps) => {
       draft.attributeNameAndOrigin = '';
       draft.isButtonEnabled = false;
       draft.attributeNameOptions = {};
+
       return draft;
     });
   }
 
   useEffect(() => {
-    console.log(state.relationName, state.relationNameOptions);
-
     if (state.relationName) onChangeRelationName(state.relationName);
   }, [state.relationName, state.relationNameOptions, state.entityVertical]);
   /**
@@ -164,7 +163,6 @@ export const MakePaohvisMenu = (props: MakePaohvisMenuProps) => {
    * It has the value of the relation you clicked on.
    */
   function onChangeRelationName(relationName: string): void {
-    console.log('onChangeRelationName');
     setState((draft) => {
       draft.attributeValue = '';
       draft.attributeNameAndOrigin = '';
@@ -319,13 +317,14 @@ export const MakePaohvisMenu = (props: MakePaohvisMenuProps) => {
       props.makePaohvis(
         state.entityVertical,
         state.entityHorizontal,
+        state.entityVerticalListed,
         relationName,
         state.isEntityVerticalEqualToRelationFrom,
         chosenAttribute,
         {
           orderBy: state.sortOrder,
           isReverseOrder: state.isReverseOrder,
-        }
+        },
       );
     } else {
       setState((draft) => {
@@ -445,49 +444,56 @@ export const MakePaohvisMenu = (props: MakePaohvisMenuProps) => {
   // Retrieve the possible entity options. If none available, set helper message.
   let entityMenuItems: ReactElement[] = useMemo(() => {
     if (state.entitiesFromQueryResult.length > 0) {
-      return state.entitiesFromQueryResult.map((entity) => (
-        <option key={entity} value={entity}>
+      return state.entitiesFromQueryResult.map((entity, index) => (
+        <option key={`entity-${index}`} value={entity}>
           {entity}
         </option>
       ));
     } else
       return [
-        <option key="placeholder" value="" disabled>
+        <option key="entity-placeholder" value="" disabled>
           No query data available
         </option>,
       ];
   }, [state.entitiesFromQueryResult]);
 
-  // Retrieve the possible relationName options. If none available, set helper message.
-  let relationNameMenuItems: ReactElement[] = useMemo(() => {
-    if (state.relationNameOptions.length > 0)
-      return state.relationNameOptions.map((relation) => (
-        <option key={relation} value={relation}>
-          {relation}
+  let attributeNameMenuListingEntity: ReactElement[] = [];
+  if (state.entityVertical) {
+    attributeNameMenuListingEntity = state.entitiesFromSchema.attributesPerEntity[state.entityVertical].textAttributeNames.map(
+      (attribute, index) => (
+        <option key={`attribute-${index}`} value={`${attribute}`}>
+          {`${attribute}`}
         </option>
-      ));
-    else return [];
-  }, [state.relationNameOptions]);
+      ),
+    );
+
+    attributeNameMenuListingEntity.push(
+      <option key={`attribute-id`} value={`id`}>
+        {`Node ID`}
+      </option>,
+    );
+  } else attributeNameMenuListingEntity = [];
 
   // Retrieve all the possible attributeName options. If none available, set helper message.
   let attributeNameMenuItems: ReactElement[] = [];
   let attributeNameMenuItemsNoAttribute: ReactElement[] = [];
   let attributeNameMenuItemsEntity: ReactElement[] = [];
   let attributeNameMenuItemsRelation: ReactElement[] = [];
+
   if (state.attributeNameOptions['Entity'] && state.attributeNameOptions['Relation']) {
-    attributeNameMenuItemsNoAttribute = state.attributeNameOptions['No attribute'].map((attribute) => (
-      <option key={attribute} value={`${attribute}:NoAttribute`}>
+    attributeNameMenuItemsNoAttribute = state.attributeNameOptions['No attribute'].map((attribute, index) => (
+      <option key={`${attribute}-attribute-${index}`} value={`${attribute}:NoAttribute`}>
         {attribute}
       </option>
     ));
-    attributeNameMenuItemsEntity = state.attributeNameOptions['Entity'].map((attribute) => (
-      <option key={`${attribute}:Entity`} value={`${attribute}:Entity`}>
-        {`${attribute} : Entity`}
+    attributeNameMenuItemsEntity = state.attributeNameOptions['Entity'].map((attribute, index) => (
+      <option key={`${attribute}:Entity ${index}`} value={`${attribute}:Entity`}>
+        {`${state.entityHorizontal} : ${attribute}`}
       </option>
     ));
-    attributeNameMenuItemsRelation = state.attributeNameOptions['Relation'].map((attribute) => (
-      <option key={`${attribute}:Relation`} value={`${attribute}:Relation`}>
-        {`${attribute} : Relation`}
+    attributeNameMenuItemsRelation = state.attributeNameOptions['Relation'].map((attribute, index) => (
+      <option key={`${attribute}:Relation ${index}`} value={`${attribute}:Relation`}>
+        {`${state.entityVertical} : ${attribute}`}
       </option>
     ));
 
@@ -495,9 +501,9 @@ export const MakePaohvisMenu = (props: MakePaohvisMenuProps) => {
   } else attributeNameMenuItems = [];
 
   // make sort order menu items
-  const sortOrderMenuItems: ReactElement[] = Object.values(NodeOrder).map((nodeOrder) => {
+  const sortOrderMenuItems: ReactElement[] = Object.values(NodeOrder).map((nodeOrder, index) => {
     return (
-      <option key={nodeOrder} value={nodeOrder}>
+      <option key={`${nodeOrder}:${index}`} value={nodeOrder}>
         {nodeOrder}
       </option>
     );
@@ -513,30 +519,35 @@ export const MakePaohvisMenu = (props: MakePaohvisMenuProps) => {
       reverseIcon = <Sort className={'reverseSortIcon'} />;
       break;
   }
-
-  // return the whole MakePaohvisMenu
-  // TODO! fix inputs to select
   return (
     <div className="nav card">
-      <div className="card-body flex flex-row overflow-y-auto max-w-[60vw]">
+      <div className="card-body flex flex-row overflow-y-auto self-center items-center">
         <select
           className="select"
           id="standard-select-entity"
           value={state.entityVertical}
           onChange={(e) => setState({ ...state, entityVertical: e.target.value })}
         >
+          <option value="" disabled>
+            Select an entity
+          </option>
           {entityMenuItems}
         </select>
+
         <select
-          className={`select ${relationNameMenuItems.length === 0 ? 'select-disabled' : ''}`}
+          className={`select ${attributeNameMenuListingEntity.length === 0 ? 'select-disabled' : ''}`}
           id="standard-select-relation"
-          value={state.relationName}
-          onChange={(e) => setState({ ...state, relationName: e.target.value })}
+          value={state.entityVerticalListed}
+          onChange={(e) => setState({ ...state, entityVerticalListed: e.target.value })}
         >
-          {relationNameMenuItems}
+          <option value="" disabled>
+            Select an entity listing
+          </option>
+          {attributeNameMenuListingEntity}
         </select>
+
         <select
-          className={`select ${attributeNameMenuItems.length === 0 ? 'select-disabled' : ''}`}
+          className={`select min-w-[15rem] ${attributeNameMenuItems.length === 0 ? 'select-disabled' : ''}`}
           id="standard-select-attribute"
           value={state.attributeNameAndOrigin}
           onChange={(e) => setState({ ...state, attributeValue: e.target.value })}
diff --git a/libs/shared/lib/vis/visualizations/paohvis/components/PaohvisFilterComponent.tsx b/libs/shared/lib/vis/visualizations/paohvis/components/PaohvisFilterComponent.tsx
index de427444589e55e3cdbbfc3b9539bd643a05ec09..1856512535ed0d58a98d8d7c5e4685082c8178ee 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/components/PaohvisFilterComponent.tsx
+++ b/libs/shared/lib/vis/visualizations/paohvis/components/PaohvisFilterComponent.tsx
@@ -9,7 +9,6 @@
  * We do not test components/renderfunctions/styling files.
  * See testing plan for more details.*/
 import React, { ChangeEventHandler, ReactElement, useState, MouseEventHandler, useEffect, useMemo } from 'react';
-import styles from './PaohvisFilterComponent.module.scss';
 import { AttributeNames, FilterType } from '../Types';
 import { useImmer } from 'use-immer';
 import { useGraphQueryResult, useSchemaGraph } from '@graphpolaris/shared/lib/data-access';
@@ -77,19 +76,19 @@ export const PaohvisFilterComponent = (props: PaohvisFilterProps) => {
       // check all text attributes
       if (attributesPerEntityOrRelation[filterTarget].textAttributeNames.length > 0)
         attributesPerEntityOrRelation[filterTarget].textAttributeNames.map((attributeName) =>
-          draft.attributeNamesOptions.push(`${attributeName}:text`)
+          draft.attributeNamesOptions.push(`${attributeName}:text`),
         );
 
       // check all number attributes
       if (attributesPerEntityOrRelation[filterTarget].numberAttributeNames.length > 0)
         attributesPerEntityOrRelation[filterTarget].numberAttributeNames.map((attributeName) =>
-          draft.attributeNamesOptions.push(`${attributeName}:number`)
+          draft.attributeNamesOptions.push(`${attributeName}:number`),
         );
 
       // check all bool attributes
       if (attributesPerEntityOrRelation[filterTarget].boolAttributeNames.length > 0)
         attributesPerEntityOrRelation[filterTarget].boolAttributeNames.map((attributeName) =>
-          draft.attributeNamesOptions.push(`${attributeName}:bool`)
+          draft.attributeNamesOptions.push(`${attributeName}:bool`),
         );
       return draft;
     });
@@ -156,11 +155,6 @@ export const PaohvisFilterComponent = (props: PaohvisFilterProps) => {
   function onChangeCompareValue(event: React.ChangeEvent<HTMLInputElement>): void {
     setState((draft) => {
       draft.compareValue = event.target.value;
-      console.log(
-        containsFilterTargetChosenAttribute(draft.attributeNameAndType),
-        isPredicateValid(draft.predicate),
-        isCompareValueTypeValid(draft.compareValue)
-      );
 
       draft.isFilterButtonEnabled = isFilterConfigurationValid(draft);
       return draft;
@@ -299,9 +293,6 @@ export const PaohvisFilterComponent = (props: PaohvisFilterProps) => {
       draft.attributeNamesOptions = [];
       return draft;
     });
-    // } else {
-    //   console.error('Invalid schema!')
-    // }
   }, [schema]);
 
   useEffect(() => {
diff --git a/libs/shared/lib/vis/visualizations/paohvis/components/RowLabelColumn.tsx b/libs/shared/lib/vis/visualizations/paohvis/components/RowLabelColumn.tsx
index 29322ea969bdcac13079b3e19d5163c220af71fe..b2df114688b57930e383a702b06d7b5992850733 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/components/RowLabelColumn.tsx
+++ b/libs/shared/lib/vis/visualizations/paohvis/components/RowLabelColumn.tsx
@@ -11,6 +11,7 @@
 
 import { select } from 'd3';
 import React, { useEffect, useRef } from 'react';
+import CustomLine from './CustomLine';
 
 type RowLabelColumnProps = {
   onMouseEnter: (row: number) => void;
@@ -35,7 +36,21 @@ export const RowLabelColumn = (props: RowLabelColumnProps) => {
     />
   ));
 
-  return <g>{titleRows}</g>;
+  return (
+    <g>
+      {titleRows}
+      <g>
+        <CustomLine x1={0} x2={0} y1={props.yOffset} y2={props.titles.length * props.rowHeight + props.yOffset} strokeWidth={1} />
+        <CustomLine
+          x1={props.width}
+          x2={props.width}
+          y1={props.yOffset}
+          y2={props.titles.length * props.rowHeight + props.yOffset}
+          strokeWidth={1}
+        />
+      </g>
+    </g>
+  );
 };
 
 type RowLabelProps = {
@@ -62,11 +77,25 @@ const RowLabel = (props: RowLabelProps) => {
   return (
     <g
       ref={ref}
-      className={'row-' + props.index}
-      transform={'translate(0,' + (props.yOffset + props.rowHeight + props.index * props.rowHeight) + ')'}
+      className={'rowsLabel row-' + props.index}
+      transform={'translate(0,' + (props.yOffset + props.index * props.rowHeight) + ')'}
     >
-      <rect width={props.width} height={props.rowHeight} fill={props.index % 2 === 0 ? '#e6e6e6' : '#f5f5f5'}></rect>
-      <text x="10" y={props.rowHeight / 2} dy=".35em" style={{ fontWeight: 600 }}>
+      <rect
+        width={props.width}
+        height={props.rowHeight}
+        fill={props.index % 2 === 0 ? 'hsl(var(--clr-sec--50))' : 'hsl(var(--clr-sec--0))'}
+        strokeWidth={0}
+      ></rect>
+      {props.index === 0 && <CustomLine x1={0} x2={props.width} y1={0} y2={0} strokeWidth={1} />}
+      <CustomLine x1={0} x2={props.width} y1={props.rowHeight} y2={props.rowHeight} strokeWidth={1} />
+      <text
+        x={props.width * 0.1}
+        y={props.rowHeight / 2}
+        dy="0"
+        fill="hsl(var(--clr-sec--800))"
+        dominantBaseline="middle"
+        style={{ stroke: 'none' }}
+      >
         {props.title}
       </text>
     </g>
diff --git a/libs/shared/lib/vis/visualizations/paohvis/components/Tooltip.scss b/libs/shared/lib/vis/visualizations/paohvis/components/Tooltip.scss
deleted file mode 100644
index d62ff563ba2a837caf68b4232bfa9878a2fd1513..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/paohvis/components/Tooltip.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-
-/* istanbul ignore file */
-
-
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-
-.tooltip {
-  visibility: 'hidden';
-  position: 'absolute';
-  padding: 10px;
-  font-weight: 'bold';
-}
\ No newline at end of file
diff --git a/libs/shared/lib/vis/visualizations/paohvis/components/Tooltip.tsx b/libs/shared/lib/vis/visualizations/paohvis/components/Tooltip.tsx
deleted file mode 100644
index 2ee467411bac3c92fd860d47e5001b01670697fb..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/paohvis/components/Tooltip.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-
-import React from 'react';
-import './Tooltip.scss';
-import { pointer, select } from 'd3';
-
-export const Tooltip = () => {
-  function onMouseOver(e: any) {
-    select('.tooltip')
-      .style('top', pointer(e)[1])
-      .style('left', pointer(e)[0] + 5);
-  }
-
-  return (
-    <div style={{ position: 'absolute' }} className="tooltip">
-      {' '}
-    </div>
-  );
-};
-
-export default Tooltip;
diff --git a/libs/shared/lib/vis/visualizations/paohvis/docs.mdx b/libs/shared/lib/vis/visualizations/paohvis/docs.mdx
new file mode 100644
index 0000000000000000000000000000000000000000..f6601950532a4117fe058747cd7e564721eb03ba
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/paohvis/docs.mdx
@@ -0,0 +1,45 @@
+import { Meta, Unstyled } from '@storybook/blocks';
+
+<Meta title="Visualizations/Paohvis" />
+
+# Paohvis documentation
+
+## Components
+
+1. [MakePaohvisMenu](#MakePaohvisMenu)
+2. [RowLabelColumn](#RowLabelColumn)
+3. [HyperEdgesRange](#HyperEdgesRange)
+4. [PaohvisFilterComponent](#PaohvisFilterComponent)
+5. [Important functions](#Importantfunctions)
+
+## MakePaohvisMenu
+
+Renders the menu to configure PAOHvis
+
+## RowLabelColumn
+
+Renders the left column with row labels
+
+## HyperEdgesRange
+
+Renders the table and the hyperedges
+
+## PaohvisFilterComponent
+
+Manage the filtering of the hyperedges
+
+# Important functions: toPaohvisDataParserUsercase
+
+toPaohvisDataParserUsercase(): Given a paohvis configuration and a queryResult it creates a data structure to make the paohvis visualization.
+
+1: parseQueryResult(PaohvisAxisInfo, nodeOrder: PaohvisNodeOrder)
+
+# Important functions: SortUseCase
+
+Responsible for sorting the data for the ToPaohvisDataParser. Given:
+
+- nodeOrder: [ alphabetical = 'Alphabetical', degree = 'Degree (amount of hyperedges)', byGroup = 'By Group' ]
+- rowNodes: array nodes
+- hyperEdgeDegree: nodes with its hyperedge degrees
+
+SortUseCase.sortNodes(nodeOrder, rowNodes, hyperEdgeDegree) does not return anything, just sorts the nodes array.
diff --git a/libs/shared/lib/vis/visualizations/paohvis/paohvis.module.scss b/libs/shared/lib/vis/visualizations/paohvis/paohvis.module.scss
index b69ef02e3f6c6008cfe84e1a52385c293ec40354..054dc7e935945f3015fd299de45eb573780ce71d 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/paohvis.module.scss
+++ b/libs/shared/lib/vis/visualizations/paohvis/paohvis.module.scss
@@ -10,15 +10,9 @@
  * We do not test components/renderfunctions/styling files.
  * See testing plan for more details.*/
 
-$expandButtonSize: 13px;
-
-:export {
-  expandButtonSize: $expandButtonSize;
-}
-
-$tableFontFamily: Arial, Helvetica, sans-serif;
-$tableFontSize: 0.875rem;
-$tableFontWeight: 600;
+$tableFontFamily: 'Inter';
+$tableFontSize: 1rem;
+$tableFontWeight: 700;
 :export {
   tableFontFamily: $tableFontFamily;
   tableFontSize: $tableFontSize;
@@ -30,38 +24,17 @@ $tableFontWeight: 600;
   position: relative;
   .visContainer {
     height: 100%;
-    margin-right: 1em;
     overflow: hidden;
-    /** 
-    * this fixes the horizontal scrollbar to the bottom of the visContainer,
-    * the transform of the visContainer and the transform of the child div should both be removed for it to work
-    * but the position of the svgs and paohvis are not good, so don't use it yet
-    * overflow-x: auto;
-    * width: 100%;
-    * display: flex;
-    */
   }
   .full {
-    height: 100%;
-    // overflow: hidden;
-    // max-height: fit-content;
-    // width: 100%;
-    // max-width: 100vw;
   }
   .visContainerSvg {
-    height: calc(100% - 6em);
+    height: calc(100%);
     width: 100%;
     overflow: auto;
   }
   text {
-    font-family: $tableFontFamily;
     font-size: $tableFontSize;
     font-weight: $tableFontWeight;
   }
-  .tableMessage {
-    margin: 1em;
-  }
-  .configPanelMessage {
-    margin: 1em;
-  }
 }
diff --git a/libs/shared/lib/vis/visualizations/paohvis/paohvis.module.scss.d.ts b/libs/shared/lib/vis/visualizations/paohvis/paohvis.module.scss.d.ts
index cebc85c3f7d20544de57312f165ada2c75a685a5..e1343bc9b8f183908218fa5722227da6a425526d 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/paohvis.module.scss.d.ts
+++ b/libs/shared/lib/vis/visualizations/paohvis/paohvis.module.scss.d.ts
@@ -1,13 +1,9 @@
 declare const classNames: {
-  readonly expandButtonSize: 'expandButtonSize';
   readonly tableFontFamily: 'tableFontFamily';
   readonly tableFontSize: 'tableFontSize';
   readonly tableFontWeight: 'tableFontWeight';
   readonly container: 'container';
   readonly visContainer: 'visContainer';
-  readonly full: 'full';
   readonly visContainerSvg: 'visContainerSvg';
-  readonly tableMessage: 'tableMessage';
-  readonly configPanelMessage: 'configPanelMessage';
 };
 export = classNames;
diff --git a/libs/shared/lib/vis/visualizations/paohvis/paohvis.stories.tsx b/libs/shared/lib/vis/visualizations/paohvis/paohvis.stories.tsx
index b6252719dfe1d4ceeb5f6e85a28a7d0e15c2e369..397058c02fed6b55192086b8a915b7b48089bc64 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/paohvis.stories.tsx
+++ b/libs/shared/lib/vis/visualizations/paohvis/paohvis.stories.tsx
@@ -11,7 +11,14 @@ import { Meta } from '@storybook/react';
 import { VisualizationPanel } from '../../visualizationPanel';
 import { Provider } from 'react-redux';
 import { SchemaUtils } from '../../../schema/schema-utils';
-import { bigMockQueryResults, simpleSchemaRaw, smallFlightsQueryResults } from '../../../mock-data';
+import {
+  bigMockQueryResults,
+  big2ndChamberSchemaRaw,
+  big2ndChamberQueryResult,
+  marieBoucherSampleSchemaRaw,
+  marieBoucherSample,
+  mockRecommendationsActorMovie,
+} from '../../../mock-data';
 import { simpleSchemaAirportRaw } from '../../../mock-data/schema/simpleAirportRaw';
 import { setActiveVisualization } from '@graphpolaris/shared/lib/data-access/store/visualizationSlice';
 
@@ -80,9 +87,8 @@ export const TestWithData = {
             ],
             edges: [
               { id: '1c/z1', label: 'z1', from: '1/b1', to: '1/a', attributes: { a: 's1' } },
-              // { from: 'b2', to: 'a', attributes: {} },
-              // { from: 'b3', to: 'a', attributes: {} },
-              { id: '1c/z1', label: 'z1', from: '1/a', to: '1/b1', attributes: { a: 's1' } },
+              { id: '1c/z2', label: 'z2', from: '1/a', to: '1/b1', attributes: { a: 's1' } },
+              { id: '1c/z3', label: 'z3', from: '1/b2', to: '1/b3', attributes: { a: 's2' } },
             ],
           },
         },
@@ -92,13 +98,23 @@ export const TestWithData = {
   },
 };
 
-export const TestWithAirportSimple = {
+export const TestWithMarieBoucherSample = {
   play: async () => {
     const dispatch = Mockstore.dispatch;
-    const schema = SchemaUtils.schemaBackend2Graphology(simpleSchemaRaw);
+    const schema = SchemaUtils.schemaBackend2Graphology(marieBoucherSampleSchemaRaw);
+
+    dispatch(setSchema(schema.export()));
+    dispatch(assignNewGraphQueryResult({ queryID: '1', result: { type: 'nodelink', payload: marieBoucherSample } }));
+    dispatch(setActiveVisualization('PaohVis'));
+  },
+};
 
+export const TestWithBig2ndChamber = {
+  play: async () => {
+    const dispatch = Mockstore.dispatch;
+    const schema = SchemaUtils.schemaBackend2Graphology(big2ndChamberSchemaRaw);
     dispatch(setSchema(schema.export()));
-    dispatch(assignNewGraphQueryResult({ queryID: '1', result: { type: 'nodelink', payload: smallFlightsQueryResults } }));
+    dispatch(assignNewGraphQueryResult({ queryID: '1', result: { type: 'nodelink', payload: big2ndChamberQueryResult } }));
     dispatch(setActiveVisualization('PaohVis'));
   },
 };
@@ -114,4 +130,14 @@ export const TestWithAirport = {
   },
 };
 
+export const TestWithRecommendationsActorMovie = {
+  play: async () => {
+    const dispatch = Mockstore.dispatch;
+    const schema = SchemaUtils.schemaBackend2Graphology(marieBoucherSampleSchemaRaw);
+    dispatch(setSchema(schema.export()));
+    dispatch(assignNewGraphQueryResult({ queryID: '1', result: { type: 'nodelink', payload: mockRecommendationsActorMovie } }));
+    dispatch(setActiveVisualization('PaohVis'));
+  },
+};
+
 export default Component;
diff --git a/libs/shared/lib/vis/visualizations/paohvis/paohvis.tsx b/libs/shared/lib/vis/visualizations/paohvis/paohvis.tsx
index 90544d35de4d2f627d6cc66c5add48507556694c..f889bee9d767ab3f277641d81b868b65b8628117 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/paohvis.tsx
+++ b/libs/shared/lib/vis/visualizations/paohvis/paohvis.tsx
@@ -1,4 +1,6 @@
-import { useEffect, useRef, useState } from 'react';
+import { useEffect, useRef, useState, useMemo } from 'react';
+import SortByAlphaIcon from '@mui/icons-material/SortByAlpha';
+import SortIcon from '@mui/icons-material/Sort';
 import styles from './paohvis.module.scss';
 import {
   Attribute,
@@ -6,7 +8,6 @@ import {
   AttributeOrigin,
   EntitiesFromSchema,
   FilterInfo,
-  FilterType,
   NodeOrder,
   PaohvisData,
   PaohvisNodeOrder,
@@ -18,21 +19,26 @@ import { useImmer } from 'use-immer';
 import { getWidthOfText } from '../../../schema/schema-utils';
 import { useGraphQueryResult, useSchemaGraph } from '../../../data-access';
 import { isNodeLinkResult } from '../../shared/ResultNodeLinkParserUseCase';
-import { calculateAttributesAndRelations, calculateAttributesFromRelation } from './utils/utils';
+import { calculateAttributesAndRelations, calculateAttributesFromRelation, calcTextWidthAndStringText } from './utils/utils';
+import { processDataColumn } from './utils/processAttributes';
 import VisConfigPanelComponent from '../../shared/VisConfigPanel/VisConfigPanel';
 import { PaohvisFilterComponent } from './components/PaohvisFilterComponent';
-import Tooltip from './components/Tooltip';
-import { pointer, select, selectAll } from 'd3';
+import { pointer, select, selectAll, scaleOrdinal } from 'd3';
 import { HyperEdgeRange } from './components/HyperEdgesRange';
 import ToPaohvisDataParserUseCase from './utils/ToPaohvisDataParserUsecase';
 import MakePaohvisMenu from './components/MakePaohvisMenu';
 import { RowLabelColumn } from './components/RowLabelColumn';
-import { VISComponentType } from '../../types';
+import { VISComponentType, VisualizationPropTypes } from '../../types';
+import { categoricalColors } from '../../../../../config/src/colors.js';
+import { NodeAttributes, Node } from '@graphpolaris/shared/lib/data-access/store/graphQueryResultSlice';
+import { SchemaAttributeTypes } from '@graphpolaris/shared/lib/schema';
+import { SchemaAttribute } from '../../../schema';
+import Graph, { MultiGraph } from 'graphology';
 
 type PaohvisViewModelState = {
-  rowHeight: number;
-  hyperedgeColumnWidth: number;
-  gapBetweenRanges: number;
+  //rowHeight: number;
+  //hyperedgeColumnWidth: number;
+  //gapBetweenRanges: number;
 
   hyperedgesOnRow: number[][];
   allHyperEdges: number[][];
@@ -40,6 +46,7 @@ type PaohvisViewModelState = {
   entitiesFromSchema: EntitiesFromSchema;
   relationsFromSchema: RelationsFromSchema;
   entityVertical: string;
+  entityVerticalListed: string;
   entityHorizontal: string;
   chosenRelation: string;
   isEntityVerticalEqualToRelationFrom: boolean;
@@ -57,26 +64,141 @@ type PaohvisViewModelState = {
 };
 
 export type PaohVisProps = {
-  rowHeight: number;
-  hyperedgeColumnWidth: number;
-  gapBetweenRanges: number;
-  data?: PaohvisData;
+  //rowHeight: number;
+  //hyperedgeColumnWidth: number;
+  //gapBetweenRanges: number;
+  //data?: PaohvisData;
+  showColor: boolean;
 };
 
-export const PaohVis = (props: PaohVisProps) => {
-  const svgRef = useRef<SVGSVGElement>(null);
-  const graphQueryResult = useGraphQueryResult();
-  const schema = useSchemaGraph();
+const displayName = 'PaohVis';
+export const PaohVis = ({ data, schema, settings }: VisualizationPropTypes) => {
+  //export const PaohVis = ({ settings }: VisualizationPropTypes<typeof displayName>) => {
+  const graphQueryResult = data;
+  //const schema = useSchemaGraph();
+
+  const [isButtonPressed, setIsButtonPressed] = useState(false);
 
-  const [data, setData] = useState<PaohvisData>({
+  const svgRef = useRef<SVGSVGElement>(null);
+  const secondContainerRef = useRef<HTMLDivElement | null>(null);
+  const dimensions = useRef({ width: 0, height: 0 });
+  const [dataModel, setDataModel] = useState<PaohvisData>({
+    rowLabelsList: [],
     rowLabels: [],
     hyperEdgeRanges: [],
     maxRowLabelWidth: 0,
   });
-  const [viewModel, setViewModel] = useImmer<PaohvisViewModelState>({
+
+  const maxSizeTextColumns = 150;
+
+  const colorRowsRef = useRef<{ [key: string]: string[] }>({});
+
+  const getSecondContainerSize = () => {
+    if (secondContainerRef.current) {
+      const { offsetWidth, offsetHeight } = secondContainerRef.current;
+      dimensions.current = { width: offsetWidth, height: offsetHeight };
+    }
+  };
+  useEffect(() => {
+    if (!svgRef.current) return;
+
+    getSecondContainerSize();
+  });
+
+  // For each attribute that has less than a max of unique variables (number of colors available)
+  // compute a color label for each row. So when the user needs it, that color can be applied.
+  //const processedData = useMemo(() => {
+  useMemo(() => {
+    const attributesArray = graphQueryResult.nodes.map((node) => {
+      const types =
+        schema.nodes.find((n) => n.key === node.label)?.attributes?.attributes ??
+        schema.edges.find((r) => r.key === node.label)?.attributes?.attributes ??
+        [];
+
+      return {
+        attribute: node.attributes,
+        type: Object.fromEntries(types.map((t: { name: string; type: string }) => [t.name, t.type])),
+      };
+    });
+
+    const data2Render = Object.keys(attributesArray[0].attribute).map((dataColumn: string, i) => {
+      return processDataColumn(39, dataColumn, attributesArray[0], attributesArray);
+    });
+
+    const numColorsAvailable = Object.keys(categoricalColors.lightMode).length;
+    const colorsAvailable = Object.values(categoricalColors.lightMode);
+
+    const filteredArray = data2Render.filter((obj) => obj.numUniqueElements < numColorsAvailable);
+    const colorMappings: { [name: string]: string[] } = {};
+
+    filteredArray.forEach(({ name }) => {
+      // gets categories for that object instance
+      const dataExtracted = (data2Render.find((item) => item.name === name)?.data?.map((entry) => entry.category) || []) as any[];
+
+      // assign that category to the node instance
+      const nodeLabeled = dataModel.rowLabels.map(
+        (id) => (graphQueryResult.nodes.find((item) => item.id === id) || {}).attributes?.[name] as string,
+      );
+
+      //const colorBase = scaleOrdinal<string>().domain(dataExtracted).range(['green', 'blue']); // use the defined colors
+      const colorBase = scaleOrdinal<string>().domain(dataExtracted).range(colorsAvailable); // to test things
+      const colorArray = nodeLabeled.map((value) => colorBase(value));
+      colorMappings[name] = colorArray;
+    });
+
+    // add color base
+    const resultArray = dataModel.rowLabels.map((_, index) => (index % 2 === 0 ? 'hsl(var(--clr-sec--300))' : 'hsl(var(--clr-sec--200))'));
+    colorMappings['originalColor'] = resultArray;
+    colorRowsRef.current = colorMappings;
+  }, []);
+
+  useEffect(() => {
+    //console.log(colorRowsRef.current);
+    if (settings.showColor) {
+      selectAll('.rowsLabel')
+        .select('rect')
+        .data(colorRowsRef.current.vip)
+        //.attr('stroke', (d: string) => d)
+        .attr('fill', (d: string) => d);
+
+      selectAll('.hyperEdgeBlock')
+        .selectAll('rect')
+        .data(colorRowsRef.current.vip)
+        //.attr('stroke', (d: string) => d)
+        .attr('fill', (d: string) => d);
+    } else {
+      selectAll('.rowsLabel')
+        .select('rect')
+        .data(colorRowsRef.current.originalColor)
+        //.attr('stroke', (d: string) => d)
+        .attr('fill', (d: string) => d);
+
+      selectAll('.hyperEdgeBlock')
+        .selectAll('rect')
+        .data(colorRowsRef.current.originalColor)
+        //.attr('stroke', (d: string) => d)
+        .attr('fill', (d: string) => d);
+    }
+
+    //
+  }, [settings.showColor]);
+
+  // old props
+  /*
     rowHeight: 30,
-    hyperedgeColumnWidth: 20,
-    gapBetweenRanges: 5,
+    hyperedgeColumnWidth: 30,
+    gapBetweenRanges: 3,
+  */
+
+  // Change old props by configuration parameters. As percentages
+  const props_rowHeight = Math.round(0.055 * dimensions.current.height * 10) / 10; //Math.round(0.03375 * dimensions.current.height * 10) / 10;
+  const props_hyperedgeColumnWidth = Math.round(0.04 * dimensions.current.width * 10) / 10; //Math.round(0.01793 * dimensions.current.width * 10) / 10;
+  const props_gapBetweenRanges = 0.0; //Math.round(0.001793 * dimensions.current.width * 10) / 10;
+
+  const [viewModel, setViewModel] = useImmer<PaohvisViewModelState>({
+    //rowHeight: 30,
+    //hyperedgeColumnWidth: 20,
+    //gapBetweenRanges: 5,
 
     hyperedgesOnRow: [],
     allHyperEdges: [],
@@ -93,6 +215,7 @@ export const PaohVis = (props: PaohVisProps) => {
 
     entityVertical: '',
     entityHorizontal: '',
+    entityVerticalListed: '',
     chosenRelation: '',
     isEntityVerticalEqualToRelationFrom: true,
     nodeOrder: { orderBy: NodeOrder.degree, isReverseOrder: false },
@@ -107,7 +230,6 @@ export const PaohVis = (props: PaohVisProps) => {
       isYAxisEntityEqualToRelationFrom: true,
     },
   });
-
   // const [state, setState] = useState({
   //   entityVertical: '',
   //   entityHorizontal: '',
@@ -132,12 +254,13 @@ export const PaohVis = (props: PaohVisProps) => {
     entityOrRelationType: string,
     attribute: string,
     predicate: string,
-    compareValue: string
+    compareValue: string,
   ): void {
     const attributeName: string = attribute.split(':')[0];
     const attributeType: string = attribute.split(':')[1];
     const lowerCaseCompareValue = compareValue.toLowerCase();
     let compareValueTyped: any;
+
     // the compareValue must be typed based on the type of the attribute.
     switch (attributeType) {
       case ValueType.number:
@@ -191,36 +314,33 @@ export const PaohVis = (props: PaohVisProps) => {
     });
   }
 
-  /**
-   * SHOULD NOT BE HERE: move to tooltip
-   * This calculates a new position based on the current position of the mouse.
-   * @param {React.MouseEvent} e This is the position of the mouse.
-   */
-  function onMouseMoveToolTip(e: React.MouseEvent) {
-    select('.tooltip')
-      .style('top', pointer(e)[1] - 25 + 'px')
-      .style('left', pointer(e)[0] + 5 + 'px');
-  }
-
   /**
    * Handles the visual changes when you enter a certain hyperEdge on hovering.
    * @param colIndex This is the index which states in which column you are hovering.
    * @param nameToShow This is the name of the entity which must be shown when you are hovering on this certain hyperEdge.
    */
-  function onMouseEnterHyperEdge(colIndex: number, nameToShow: string): void {
-    highlightAndFadeHyperEdges([colIndex]);
-    highlightAndFadeRows(new Set(viewModel.allHyperEdges[colIndex]));
-    showColName(nameToShow);
-  }
 
+  function onMouseEnterHyperEdge(colIndex: number, nameToShow: string, colTable: number): void {
+    setViewModel((prevViewModel) => {
+      // Calculate the changes using the latest state
+      highlightAndFadeHyperEdges([colIndex]);
+      highlightAndFadeRows(new Set(prevViewModel.allHyperEdges[colIndex]));
+      showColName(colTable);
+
+      // Return the new state
+      return prevViewModel;
+    });
+  }
   /**
    * Handles the visual changes when you leave a certain hyperEdge on hovering.
    * @param colIndex This is the index which states in which column you were hovering.
    */
   function onMouseLeaveHyperEdge(colIndex: number): void {
-    unHighlightAndUnFadeHyperEdges([colIndex]);
-    unHighlightAndUnFadeRows(new Set(viewModel.allHyperEdges[colIndex]));
-    hideColName();
+    setViewModel((prevViewModel) => {
+      unHighlightAndUnFadeHyperEdges([colIndex]);
+      unHighlightAndUnFadeRows(new Set(prevViewModel.allHyperEdges[colIndex]));
+      hideColName(colIndex);
+    });
   }
 
   /**
@@ -231,7 +351,7 @@ export const PaohVis = (props: PaohVisProps) => {
     rows.forEach((row) => highlightRow(row));
 
     const rowsToFade = [];
-    for (let i = 0; i < data.rowLabels.length; i++) if (!rows.has(i)) rowsToFade.push(i);
+    for (let i = 0; i < dataModel.rowLabels.length; i++) if (!rows.has(i)) rowsToFade.push(i);
     rowsToFade.forEach((row) => fadeRow(row));
   }
 
@@ -243,7 +363,7 @@ export const PaohVis = (props: PaohVisProps) => {
     rows.forEach((row) => unHighlightRow(row));
 
     const rowsToUnFade = [];
-    for (let i = 0; i < data.rowLabels.length; i++) if (!rows.has(i)) rowsToUnFade.push(i);
+    for (let i = 0; i < dataModel.rowLabels.length; i++) if (!rows.has(i)) rowsToUnFade.push(i);
     rowsToUnFade.forEach((row) => unFadeRow(row));
   }
 
@@ -277,7 +397,6 @@ export const PaohVis = (props: PaohVisProps) => {
    */
   function highlightRow(rowIndex: number) {
     const row = selectAll('.row-' + rowIndex);
-    row.select('text').transition().duration(120).style('font-size', '15px');
   }
 
   /**
@@ -286,7 +405,6 @@ export const PaohVis = (props: PaohVisProps) => {
    */
   function unHighlightRow(rowIndex: number) {
     const row = selectAll('.row-' + rowIndex);
-    row.select('text').transition().duration(120).style('font-size', '14px');
   }
 
   /**
@@ -295,7 +413,7 @@ export const PaohVis = (props: PaohVisProps) => {
    */
   function highlightHyperedge(columnIndex: number) {
     const hyperedge = select('.col-' + columnIndex);
-    hyperedge.selectAll('circle').transition().duration(120).style('fill', 'orange');
+    hyperedge.selectAll('circle').style('fill', 'hsl(var(--a))');
   }
 
   /**
@@ -304,7 +422,7 @@ export const PaohVis = (props: PaohVisProps) => {
    */
   function unHighlightHyperedge(columnIndex: number) {
     const hyperedge = select('.col-' + columnIndex);
-    hyperedge.selectAll('circle').transition().duration(120).style('fill', 'white');
+    hyperedge.selectAll('circle').style('fill', 'hsl(var(--clr-white))');
   }
 
   /**
@@ -313,7 +431,7 @@ export const PaohVis = (props: PaohVisProps) => {
    */
   function fadeRow(rowIndex: number) {
     const row = selectAll('.row-' + rowIndex);
-    row.select('text').attr('opacity', '.3');
+    row.select('text').attr('fill', 'hsl(var(--clr-sec--400))');
   }
 
   /**
@@ -322,7 +440,7 @@ export const PaohVis = (props: PaohVisProps) => {
    */
   function unFadeRow(rowIndex: number) {
     const row = selectAll('.row-' + rowIndex);
-    row.select('text').attr('opacity', '1');
+    row.select('text').attr('fill', 'hsl(var(--clr-sec--800))'); //.attr('opacity', '1');
   }
 
   /**
@@ -349,13 +467,20 @@ export const PaohVis = (props: PaohVisProps) => {
    * This shows the name when hovering on a hyperEdge.
    * @param {string} nameToShow This is the name that must be shown.
    */
-  function showColName(nameToShow: string): void {
-    select('.tooltip').text(nameToShow).style('visibility', 'visible');
+  function showColName(colNumber: number): void {
+    //selectAll('.text-columns').select('text').attr('opacity', '.3');
+    selectAll('.text-columns').select('text').attr('fill', 'hsl(var(--clr-sec--300))');
+    // hsl(var(--clr-sec--800))
+
+    select('.text-col-' + colNumber)
+      .select('text')
+      //.attr('opacity', '1');
+      .attr('fill', 'hsl(var(--clr-sec--800))');
   }
 
   /** This hides the name when leaving a hyperEdge. */
-  function hideColName(): void {
-    select('.tooltip').style('visibility', 'hidden');
+  function hideColName(colNumber: number): void {
+    selectAll('.text-columns').select('text').attr('fill', 'hsl(var(--clr-sec--800))');
   }
 
   /**
@@ -370,21 +495,24 @@ export const PaohVis = (props: PaohVisProps) => {
   function onClickMakeButton(
     entityVertical: string,
     entityHorizontal: string,
+    entityVerticalListed: string,
     relationName: string,
     isEntityVerticalEqualToRelationFrom: boolean,
     chosenAttribute: Attribute,
-    nodeOrder: PaohvisNodeOrder
+    nodeOrder: PaohvisNodeOrder,
   ): void {
     setViewModel((draft) => {
       draft.entityVertical = entityVertical;
+      draft.entityVerticalListed = entityVerticalListed;
       draft.entityHorizontal = entityHorizontal;
       draft.chosenRelation = relationName;
-      draft.isEntityVerticalEqualToRelationFrom = isEntityVerticalEqualToRelationFrom;
+      draft.isEntityVerticalEqualToRelationFrom = true; //isEntityVerticalEqualToRelationFrom;
       draft.nodeOrder = nodeOrder;
 
       return draft;
     });
     setAxisInfo(relationName, isEntityVerticalEqualToRelationFrom, chosenAttribute);
+    setIsButtonPressed(true);
   }
 
   /**
@@ -392,10 +520,15 @@ export const PaohVis = (props: PaohVisProps) => {
    */
   function makePaohvisTable() {
     // set new data
-    const newData = new ToPaohvisDataParserUseCase(graphQueryResult).parseQueryResult(viewModel.axisInfo, viewModel.nodeOrder);
-    console.log(newData, graphQueryResult, viewModel);
-
-    setData(newData);
+    const newData = new ToPaohvisDataParserUseCase(graphQueryResult).parseQueryResult(
+      viewModel.axisInfo,
+      viewModel.nodeOrder,
+      dimensions,
+      viewModel.entityVerticalListed,
+      viewModel.entityHorizontal,
+      viewModel.entityVertical,
+    );
+    setDataModel(newData);
   }
 
   /**
@@ -417,7 +550,7 @@ export const PaohVis = (props: PaohVisProps) => {
       draft.axisInfo = {
         selectedAttribute: chosenAttribute,
         relation: relation,
-        isYAxisEntityEqualToRelationFrom: isEntityVerticalEqualToRelationFrom,
+        isYAxisEntityEqualToRelationFrom: true, //isEntityVerticalEqualToRelationFrom,
       };
       return draft;
     });
@@ -427,37 +560,54 @@ export const PaohVis = (props: PaohVisProps) => {
    * Handles the visual changes when you enter a certain row on hovering.
    * @param {number} rowIndex This is the index which states in which row you are hovering.
    */
+
   function onMouseEnterRow(rowIndex: number): void {
-    const rowsToHighlight = new Set<number>();
-    const colsToHighlight: number[] = [];
-    viewModel.hyperedgesOnRow[rowIndex].forEach((hyperedge) => {
-      colsToHighlight.push(hyperedge);
+    setViewModel((prevViewModel) => {
+      const rowsToHighlight = new Set<number>();
+      const colsToHighlight: number[] = [];
+
+      prevViewModel.hyperedgesOnRow[rowIndex].forEach((hyperedge) => {
+        colsToHighlight.push(hyperedge);
 
-      viewModel.allHyperEdges[hyperedge].forEach((row) => {
-        rowsToHighlight.add(row);
+        prevViewModel.allHyperEdges[hyperedge].forEach((row) => {
+          rowsToHighlight.add(row);
+        });
       });
-    });
 
-    highlightAndFadeRows(rowsToHighlight);
-    highlightAndFadeHyperEdges(colsToHighlight);
+      // Use the latest state to calculate the changes
+      highlightAndFadeRows(rowsToHighlight);
+      highlightAndFadeHyperEdges(colsToHighlight);
+
+      // Return the new state
+      return prevViewModel;
+    });
   }
 
   /**
    * Handles the visual changes when you leave a certain row on hovering.
    * @param {number} rowIndex This is the index which states in which row you were hovering.
    */
+
   function onMouseLeaveRow(rowIndex: number): void {
-    const rowsToUnHighlight = new Set<number>();
-    const colsToUnHighlight: number[] = [];
-    viewModel.hyperedgesOnRow[rowIndex].forEach((hyperedge) => {
-      colsToUnHighlight.push(hyperedge);
+    setViewModel((prevViewModel) => {
+      const rowsToUnHighlight = new Set<number>();
+      const colsToUnHighlight: number[] = [];
+
+      prevViewModel.hyperedgesOnRow[rowIndex].forEach((hyperedge) => {
+        colsToUnHighlight.push(hyperedge);
 
-      viewModel.allHyperEdges[hyperedge].forEach((row) => {
-        rowsToUnHighlight.add(row);
+        prevViewModel.allHyperEdges[hyperedge].forEach((row) => {
+          rowsToUnHighlight.add(row);
+        });
       });
+
+      // Use the latest state to calculate the changes
+      unHighlightAndUnFadeRows(rowsToUnHighlight);
+      unHighlightAndUnFadeHyperEdges(colsToUnHighlight);
+
+      // Return the new state
+      return prevViewModel;
     });
-    unHighlightAndUnFadeRows(rowsToUnHighlight);
-    unHighlightAndUnFadeHyperEdges(colsToUnHighlight);
   }
 
   //
@@ -490,13 +640,13 @@ export const PaohVis = (props: PaohVisProps) => {
       // Create connecteHyperedgesInColumns, to quickly lookup which hyperedges are on a row
       draft.allHyperEdges = [];
 
-      data.hyperEdgeRanges.forEach((hyperEdgeRange) => {
+      dataModel.hyperEdgeRanges.forEach((hyperEdgeRange) => {
         hyperEdgeRange.hyperEdges.forEach((hyperEdge) => {
           draft.allHyperEdges.push(hyperEdge.indices);
         });
       });
 
-      draft.hyperedgesOnRow = data.rowLabels.map(() => []);
+      draft.hyperedgesOnRow = dataModel.rowLabels.map(() => []);
       draft.allHyperEdges.forEach((hyperedge, i) => {
         hyperedge.forEach((row) => {
           draft.hyperedgesOnRow[row].push(i);
@@ -504,35 +654,46 @@ export const PaohVis = (props: PaohVisProps) => {
       });
       return draft;
     });
-  }, [data]);
+  }, [dataModel]);
 
   //
   // RENDER
   //
+  //
+  const hyperEdgeRanges = dataModel.hyperEdgeRanges; // hyperedges dataModelset
+  const rowLabelColumnWidth = dataModel.maxRowLabelWidth; // max width of the rows
+  const hyperedgeColumnWidth = props_hyperedgeColumnWidth; // column width from user defined
 
-  const hyperEdgeRanges = data.hyperEdgeRanges;
-  const rowLabelColumnWidth = data.maxRowLabelWidth;
-  const hyperedgeColumnWidth = props.hyperedgeColumnWidth;
-
-  //calculate yOffset
+  //calculate yOffset - hyperedges
+  /*
   let maxColWidth = 0;
   hyperEdgeRanges.forEach((hyperEdgeRange) => {
     const textLength = getWidthOfText(hyperEdgeRange.rangeText, styles.tableFontFamily, styles.tableFontSize, styles.tableFontWeight);
+    console.log(textLength, hyperEdgeRange.rangeText);
     if (textLength > maxColWidth) maxColWidth = textLength;
   });
-  const columnLabelAngleInRadians = Math.PI / 6;
-  const yOffset = Math.sin(columnLabelAngleInRadians) * maxColWidth;
-  const expandButtonWidth = parseFloat(styles.expandButtonSize.split('px')[0]);
-  const margin = 5;
+  */
+  const yOffset = maxSizeTextColumns;
+  const expandButtonWidth = 0.0; //parseFloat(styles.expandButtonSize.split('px')[0]);
+  const margin = 0.0; //Math.round(100 * 0.00298 * dimensions.current.width) / 100; //5;
+
+  // text
+  const classTopTextColums = 'font-inter font-secondary font-semibold font-base';
+  const textTopColumns = hyperEdgeRanges.map((item) => item.rangeText);
+  const textTopColumnModifiedAndWidth = calcTextWidthAndStringText(textTopColumns, 0.8 * maxSizeTextColumns, classTopTextColums);
+  const textTopColumnModified = textTopColumnModifiedAndWidth.map((item) => item.truncatedText);
 
   //calc table width
   let tableWidth = 0;
   let tableWidthWithExtraColumnLabelWidth = 0;
   hyperEdgeRanges.forEach((hyperEdgeRange) => {
+    // size text
     const columnLabelWidth =
-      Math.cos(columnLabelAngleInRadians) *
+      /*Math.cos(columnLabelAngleInRadians) * */
       getWidthOfText(hyperEdgeRange.rangeText, styles.tableFontFamily, styles.tableFontSize, styles.tableFontWeight);
-    const columnWidth = hyperEdgeRange.hyperEdges.length * hyperedgeColumnWidth + props.gapBetweenRanges * 3;
+
+    const columnWidth = hyperEdgeRange.hyperEdges.length * hyperedgeColumnWidth + props_gapBetweenRanges * 3;
+    // new text compute
 
     tableWidth += columnWidth;
 
@@ -544,7 +705,6 @@ export const PaohVis = (props: PaohVisProps) => {
     if (tableWidth > tableWidthWithExtraColumnLabelWidth) tableWidthWithExtraColumnLabelWidth = tableWidth;
   });
   tableWidthWithExtraColumnLabelWidth += rowLabelColumnWidth + expandButtonWidth + margin;
-
   //make  all hyperEdgeRanges
   let colOffset = 0;
   let hyperEdgeRangeColumns: JSX.Element[] = [];
@@ -553,91 +713,119 @@ export const PaohVis = (props: PaohVisProps) => {
       <HyperEdgeRange
         key={i}
         index={i}
-        text={hyperEdgeRange.rangeText}
+        text={textTopColumnModified[i]}
         hyperEdges={hyperEdgeRange.hyperEdges}
-        nRows={data.rowLabels.length}
+        nRows={dataModel.rowLabels.length}
+        nCols={dataModel.hyperEdgeRanges.length}
         colOffset={colOffset}
         xOffset={rowLabelColumnWidth}
         yOffset={yOffset}
-        rowHeight={props.rowHeight}
+        rowHeight={props_rowHeight}
+        textBothMargins={0.1 * maxSizeTextColumns}
         hyperedgeColumnWidth={hyperedgeColumnWidth}
-        gapBetweenRanges={props.gapBetweenRanges}
+        gapBetweenRanges={props_gapBetweenRanges}
         onMouseEnter={onMouseEnterHyperEdge}
         onMouseLeave={onMouseLeaveHyperEdge}
-      />
+      />,
     );
     colOffset += hyperEdgeRange.hyperEdges.length;
   });
 
-  //display message when there is no Paohvis table to display
-  let tableMessage = <span></span>;
-  let configPanelMessage = <div></div>;
-  if (data.rowLabels.length === 0) {
-    tableMessage = <div id={styles.tableMessage}> Please choose a valid PAOHvis configuration </div>;
-    configPanelMessage = <div id={styles.configPanelMessage}> Please make a PAOHvis table first </div>;
-  }
-
   // returns the whole PAOHvis visualisation panel
   return (
     <div className={styles.container}>
-      <MakePaohvisMenu // render the MakePAOHvisMenu
-        makePaohvis={onClickMakeButton}
-      />
+      <MakePaohvisMenu makePaohvis={onClickMakeButton} />
       <div className="w-full h-full">
-        <div className="w-full h-full" onMouseMove={onMouseMoveToolTip}>
-          {tableMessage}
-          <div className="w-full h-full">
+        <div className="w-full h-full">
+          <div className="w-full h-full flex flex-row justify-center" ref={secondContainerRef}>
             <svg
               ref={svgRef}
               style={{
                 width: tableWidthWithExtraColumnLabelWidth,
-                height: yOffset + (data.rowLabels.length + 1) * props.rowHeight,
+                height: yOffset + (dataModel.rowLabels.length + 1) * props_rowHeight,
               }}
             >
-              <RowLabelColumn // render the PAOHvis itself
+              <RowLabelColumn
                 onMouseEnter={onMouseEnterRow}
                 onMouseLeave={onMouseLeaveRow}
-                titles={data.rowLabels}
+                titles={dataModel.rowLabels}
                 width={rowLabelColumnWidth}
-                rowHeight={props.rowHeight} // viewModel.rowHeight?
+                rowHeight={props_rowHeight}
                 yOffset={yOffset}
               />
               {hyperEdgeRangeColumns}
             </svg>
           </div>
-          <Tooltip />
         </div>
-        <VisConfigPanelComponent>
-          <PaohvisFilterComponent // render the PaohvisFilterComponent with all three different filter options
-            axis={FilterType.yaxis}
-            filterPaohvis={onClickFilterButton}
-            resetFilter={onClickResetButton}
-            entityVertical={viewModel.entityVertical}
-            entityHorizontal={viewModel.entityHorizontal}
-            relationName={viewModel.chosenRelation}
-          />
-          <PaohvisFilterComponent
-            axis={FilterType.xaxis}
-            filterPaohvis={onClickFilterButton}
-            resetFilter={onClickResetButton}
-            entityVertical={viewModel.entityVertical}
-            entityHorizontal={viewModel.entityHorizontal}
-            relationName={viewModel.chosenRelation}
-          />
-          <PaohvisFilterComponent
-            axis={FilterType.edge}
-            filterPaohvis={onClickFilterButton}
-            resetFilter={onClickResetButton}
-            entityVertical={viewModel.entityVertical}
-            entityHorizontal={viewModel.entityHorizontal}
-            relationName={viewModel.chosenRelation}
-          />
-        </VisConfigPanelComponent>
       </div>
     </div>
   );
 };
-
+/*
+const localConfigSchema: localConfigSchemaType = {
+  
+  showColor: {
+    value: false,
+    type: 'boolean',
+    label: 'Color rows!',
+  },
+  entitySelected: {
+    // data driven
+    value: '',
+    type: 'dropdown',
+    label: 'Entity:',
+    options: ['merchant'],
+  },
+  attributeSelected: {
+    // data driven. After select entity, it updates this one
+    value: '',
+    type: 'dropdown',
+    label: 'Attribute:',
+    options: ['no attribute', 'name: Entity', 'time: Relation'],
+  },
+  sortMethodSelected: {
+    // no data driven
+    value: '',
+    type: 'dropdown',
+    label: 'Sort by:',
+    options: ['Alphabetical', 'Degree (Amount of hyperedges)', 'By Group'],
+  },
+
+  sortMethodAscDscSelected: {
+    // no data driven. Depends on sortMethodSelected.
+    // if sortMethodSelected == "Alphabetical" this:
+
+    value: 'A-Z',
+    type: 'dropdown',
+    label: 'Short method:',
+    options: [<SortIcon />, <SortByAlphaIcon />],
+    // else: sortMethodSelected == "Degree" this:
+
+    value: 'A-Z',
+    type: 'dropdown',
+    label: 'Ascending/Descending:',
+    options: ['A-Z', 'Z-A'],
+
+  },
+  sortMethodRowsSelected: {
+    // Data driven. It should only appear when sortMethodSelected == Group
+    // Show categorical node's attribute. No limitation of nodes.
+    value: '',
+    type: 'dropdown',
+    label: 'Group By:',
+    options: ['city', 'country', 'state', 'name'],
+  },
+  colorRowsBySelected: {
+    // Data driven.
+    // Show categorical node's attribute with less categories than colors availabe.
+    value: '',
+    type: 'dropdown',
+    label: 'Color Rows by:',
+    options: ['city', 'country', 'state', 'name'],
+  },
+  
+};
+*/
 export const PaohVisComponent: VISComponentType = {
   displayName: 'PaohVis',
   VIS: PaohVis,
diff --git a/libs/shared/lib/vis/visualizations/paohvis/utils/AttributesFilterUseCase.tsx b/libs/shared/lib/vis/visualizations/paohvis/utils/AttributesFilterUseCase.tsx
index 685d7d2597de366cae81d50bd6a5afd896e912a5..193c898cc94411658fdd26b69fba1e595a0ef69d 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/utils/AttributesFilterUseCase.tsx
+++ b/libs/shared/lib/vis/visualizations/paohvis/utils/AttributesFilterUseCase.tsx
@@ -91,6 +91,13 @@ function filterTextAttributes<T extends Node | Edge>(axisNodesOrEdges: T[], filt
 export function getIds(nodesOrEdges: AxisType[]): string[] {
   const result: string[] = [];
   nodesOrEdges.forEach((nodeOrEdge) => result.push(nodeOrEdge.id || 'unknown id'));
+
+  return result;
+}
+
+export function getAttrListing(nodesOrEdges: AxisType[]): string[] {
+  const result: string[] = [];
+  nodesOrEdges.forEach((nodeOrEdge) => result.push(nodeOrEdge.id || 'unknown id'));
   return result;
 }
 
diff --git a/libs/shared/lib/vis/visualizations/paohvis/utils/SortUseCase.tsx b/libs/shared/lib/vis/visualizations/paohvis/utils/SortUseCase.tsx
index 2976b7ba551cb24f51b03c4c722f4e66a44aeef7..85686eca501f35892d116a7162e5d5ef9712198e 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/utils/SortUseCase.tsx
+++ b/libs/shared/lib/vis/visualizations/paohvis/utils/SortUseCase.tsx
@@ -6,6 +6,7 @@
 
 import { HyperEdgeI, HyperEdgeRange, NodeOrder, PaohvisNodeOrder, ValueType } from '../Types';
 import { Node } from '@graphpolaris/shared/lib/data-access';
+import { NodeAttributes } from '@graphpolaris/shared/lib/data-access/store/graphQueryResultSlice';
 
 /**
  * This class is responsible for sorting the data for the ToPaohvisDataParser.
@@ -16,7 +17,7 @@ export default class SortUseCase {
    * @param hyperEdgeRanges that should be sorted.
    * @param type of the HyperEdgeRange labels.
    */
-  public static sortHyperEdgeRanges(hyperEdgeRanges: HyperEdgeRange[], type: ValueType): void {
+  public static sortHyperEdgeRanges(hyperEdgeRanges: HyperEdgeRange[], type: ValueType, entityVerticalListed: string): void {
     this.sortHyperEdgeIndices(hyperEdgeRanges);
     this.sortHyperEdgeRangesByLabels(hyperEdgeRanges, type);
   }
@@ -50,12 +51,18 @@ export default class SortUseCase {
   }
 
   /**
+   * Does not return anything, just modifies the positioning of nodes array
    * Sort the nodes in the given order.
    * @param nodeOrder is the order in which the nodes should be sorted.
    * @param nodes are the nodes that will be sorted
    * @param hyperEdgeDegree is the dictionary where you can find how many edges connected from the node.
    */
-  public static sortNodes(nodeOrder: PaohvisNodeOrder, nodes: Node[], hyperEdgeDegree: Record<string, number>): void {
+  public static sortNodes(
+    nodeOrder: PaohvisNodeOrder,
+    nodes: Node[],
+    hyperEdgeDegree: Record<string, number>,
+    entityVerticalListed: string
+  ): void {
     switch (nodeOrder.orderBy) {
       //sort nodes on their degree (# number of hyperedges) (entities with most hyperedges first)
       case NodeOrder.degree:
@@ -65,9 +72,54 @@ export default class SortUseCase {
         });
         break;
       //sort nodes on their id alphabetically
+      /*
       case NodeOrder.alphabetical:
-        nodes.sort((node1, node2) => node1.id.localeCompare(node2.id));
+        //nodes.sort((node1, node2) => node1.id.localeCompare(node2.id));
+
+        console.log('nodes ', nodes);
+        nodes.sort((node1, node2) => {
+          // Extract numeric parts of ids
+          const numA = parseInt(node1.id.split('/')[1]);
+          const numB = parseInt(node2.id.split('/')[1]);
+
+          // If both ids contain numbers, compare numerically
+          if (!isNaN(numA) && !isNaN(numB)) {
+            return numA - numB;
+          }
+          // If one or both ids don't contain numbers, compare lexicographically
+          return node1.id.localeCompare(node2.id);
+        });
         break;
+      */
+      case NodeOrder.alphabetical:
+        if (entityVerticalListed == 'id') {
+          nodes.sort((node1, node2) => {
+            // Extract numeric parts of ids
+            const numA = parseInt(node1.id.split('/')[1]);
+            const numB = parseInt(node2.id.split('/')[1]);
+
+            // If both ids contain numbers, compare numerically
+            if (!isNaN(numA) && !isNaN(numB)) {
+              return numA - numB;
+            }
+            // If one or both ids don't contain numbers, compare lexicographically
+            return node1.id.localeCompare(node2.id);
+          });
+          break;
+        } else {
+          nodes.sort((node1, node2) => {
+            const attr1 = node1.attributes[entityVerticalListed] as string;
+            const attr2 = node2.attributes[entityVerticalListed] as string;
+            return attr1.localeCompare(attr2);
+          });
+          break;
+        }
+
+      //sort nodes based on their group - alphabetically
+      case NodeOrder.byGroup:
+        SortUseCase.sortNodesByGroupAlphabetically(nodes, 'state');
+        break;
+
       default:
         throw new Error('This node order does not exist');
     }
@@ -114,6 +166,37 @@ export default class SortUseCase {
     const start2 = hyperEdge2.indices[0];
     return start1 - start2;
   }
+
+  /**
+   ** Use to sort according the group from a category given
+   * @param node array of nodes
+   * @param attributeSort sorting attribute
+   * @returns nodesArry.
+   */
+
+  public static sortNodesByGroupAlphabetically(nodes: Node[], attributeSort: string): void {
+    const groupBy = (array: Node[], keyFunc: (item: Node) => string) => {
+      return array.reduce((result, item) => {
+        const key = keyFunc(item);
+        (result[key] = result[key] || []).push(item);
+        return result;
+      }, {} as { [key: string]: Node[] });
+    };
+
+    // Groups nodes according attributeSort
+
+    const groupedResult = groupBy(nodes, ({ attributes }: { attributes: NodeAttributes }) => attributes[attributeSort] as string);
+
+    // Sort the groups alphabetically and modify the original array in-place
+    const sortedResult = Object.keys(groupedResult)
+      .sort()
+      .map((group) => groupedResult[group])
+      .flat();
+
+    // Update the order of nodes in the original array
+    nodes.length = 0; // Clear the original array
+    nodes.push(...sortedResult); // Push the sorted nodes back to the original array
+  }
 }
 
 /**
diff --git a/libs/shared/lib/vis/visualizations/paohvis/utils/ToPaohvisDataParserUsecase.tsx b/libs/shared/lib/vis/visualizations/paohvis/utils/ToPaohvisDataParserUsecase.tsx
index 63d1303023cae44cd7c1de9c6fd443dad8d447f5..6004bbcc4ff3eb198200ab98b1e5272b55006a34 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/utils/ToPaohvisDataParserUsecase.tsx
+++ b/libs/shared/lib/vis/visualizations/paohvis/utils/ToPaohvisDataParserUsecase.tsx
@@ -6,6 +6,7 @@
 
 import { AxisType, getGroupName } from '../../../shared/ResultNodeLinkParserUseCase';
 import { Edge, GraphQueryResult, Node } from '@graphpolaris/shared/lib/data-access';
+import Graph, { MultiGraph } from 'graphology';
 
 import {
   AttributeOrigin,
@@ -18,11 +19,17 @@ import {
   PaohvisNodeOrder,
   Relation,
   ValueType,
+  GraphData,
+  AugmentedEdgeAttributes,
+  AugmentedNodeAttributesGraph,
+  connectionFromTo,
 } from '../Types';
 import AttributeFilterUsecase, { filterUnusedEdges, getIds } from './AttributesFilterUseCase';
 import SortUseCase from './SortUseCase';
-import { getWidthOfText, uniq } from './utils';
+import { getWidthOfText, getUniqueArrays, findConnectionsNodes, buildGraphology } from './utils';
 import style from '../paohvis.module.scss';
+import { ConstructionOutlined } from '@mui/icons-material';
+//import { CropLandscapeOutlined } from '@mui/icons-material';
 
 type Index = number;
 
@@ -36,7 +43,14 @@ export default class ToPaohvisDataParserUseCase {
   private paohvisFilters: PaohvisFilters;
 
   public constructor(queryResult: GraphQueryResult) {
+    let limitedQueryResult: GraphQueryResult = {
+      ...queryResult,
+      nodes: queryResult.nodes.slice(0, 50),
+      edges: queryResult.edges,
+    };
+    //this.queryResult = limitedQueryResult;
     this.queryResult = queryResult;
+
     this.xAxisNodeGroup = '';
     this.yAxisNodeGroup = '';
     this.paohvisFilters = { nodeFilters: [], edgeFilters: [] };
@@ -47,26 +61,63 @@ export default class ToPaohvisDataParserUseCase {
    * @param nodeOrder is the order in which the nodes should be parsed.
    * @returns the information that's needed to make a Paohvis table.
    */
-  public parseQueryResult(axisInfo: PaohvisAxisInfo, nodeOrder: PaohvisNodeOrder): PaohvisData {
-    this.setAxesNodeGroups(axisInfo);
-
+  public parseQueryResult(
+    axisInfo: PaohvisAxisInfo,
+    nodeOrder: PaohvisNodeOrder,
+    dimensions: {
+      current: any;
+      //width: number;
+      //heigth: number;
+    },
+    entityVerticalListed: string,
+    entityHorizontal: string,
+    entityVertical: string,
+    //graphStructure: MultiGraph
+  ): PaohvisData {
+    this.setAxesNodeGroups(axisInfo, entityHorizontal, entityVertical);
+    /*
+    console.log('nodeOrder: ', nodeOrder);
+    console.log('axisInfo ', axisInfo);
+    console.log('entityHorizontal', entityHorizontal);
+    console.log('entityVertical', entityVertical);
+    */
+    const augmentedNodes: AugmentedNodeAttributesGraph[] = this.queryResult.nodes.map((node: Node) => ({
+      id: node.id,
+      attributes: node.attributes,
+      label: node.label,
+    }));
+
+    const augmentedEdges: AugmentedEdgeAttributes[] = this.queryResult.edges.map((edge: any) => ({
+      id: edge.id,
+      to: edge.to,
+      from: edge.from,
+      attributes: edge.attributes,
+      label: edge.label,
+    }));
+
+    const graphStruc: MultiGraph = buildGraphology({ nodes: Object.values(augmentedNodes), edges: Object.values(augmentedEdges) });
+
+    // potentially remove
     const filteredData = AttributeFilterUsecase.applyFilters(this.queryResult, this.paohvisFilters);
 
     // filter unnecessary node groups and relations
     const nodes = filteredData.nodes.filter((node) => {
       const nodeType = getGroupName(node);
-      return nodeType === this.xAxisNodeGroup || nodeType === this.yAxisNodeGroup;
+      //return nodeType === this.xAxisNodeGroup || nodeType === this.yAxisNodeGroup;
+      return nodeType === this.yAxisNodeGroup;
     });
 
-    console.log(axisInfo.relation.collection, filteredData.edges);
-
+    //const nodeListAttr: any[] = nodes.map((node) => node.attributes[entityVerticalListed]);
+    //console.log(nodeListAttr);
+    const nodesID: string[] = nodes.map((node) => node.id);
     const edges = filteredData.edges.filter((edge) => edge.label === axisInfo.relation.collection);
+    const edgesConnection = findConnectionsNodes(nodesID, nodesID, graphStruc, this.yAxisNodeGroup, edges);
 
     // get hyperEdgeDegree
     const hyperEdgeDegree: Record<string, number> = ToPaohvisDataParserUseCase.GetHyperEdgeDegreeDict(
       nodes,
       edges,
-      axisInfo.isYAxisEntityEqualToRelationFrom
+      axisInfo.isYAxisEntityEqualToRelationFrom,
     );
 
     //parse nodes
@@ -75,17 +126,48 @@ export default class ToPaohvisDataParserUseCase {
       hyperEdgeDegree,
       nodeOrder,
       this.yAxisNodeGroup,
-      this.xAxisNodeGroup
+      this.xAxisNodeGroup,
+      entityVerticalListed,
     );
-    const maxLabelWidth = calcMaxRowLabelWidth(rowInfo.rowLabels);
 
+    //rowInfo.rowLabels[0] = 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm';
+    const maxSizeAllowed = Math.round(0.17931 * dimensions.current.width);
+    let nodeListAttr: any[] = [];
+
+    if (entityVerticalListed == 'id') {
+      nodeListAttr = nodes.map((node) => node.id);
+    } else {
+      nodeListAttr = nodes.map((node) => node.attributes[entityVerticalListed]);
+    }
+
+    // loops over the rowColumn text, gets the text width and computes the maximum length.
+    //let maxLabelWidth = calcMaxRowLabelWidth(rowInfo.rowLabels, maxSizeAllowed);
+    let maxLabelWidth = calcMaxRowLabelWidth(nodeListAttr, maxSizeAllowed);
     //parse hyperEdges
-    const filteredEdges = filterUnusedEdges(getIds(nodes), edges);
-    const resultHyperEdgeRanges = ToPaohvisDataParserUseCase.parseHyperEdgeRanges(nodes, filteredEdges, axisInfo, rowInfo);
+    //const filteredEdges = filterUnusedEdges(getIds(nodes), edges);
+    const resultHyperEdgeRanges = ToPaohvisDataParserUseCase.parseHyperEdgeRanges(
+      nodes,
+      edgesConnection,
+      axisInfo,
+      rowInfo,
+      entityVerticalListed,
+    );
+    //const resultHyperEdgeRanges = ToPaohvisDataParserUseCase.parseHyperEdgeRanges(nodes, filteredEdges, axisInfo, rowInfo);
+
+    let rowLabelOutput = [];
+
+    if (entityVerticalListed == 'id') {
+      rowLabelOutput = rowInfo.rowLabels;
+    } else {
+      rowLabelOutput = nodeListAttr;
+    }
+
     SortUseCase.sortHyperEdges(resultHyperEdgeRanges);
 
     return {
-      rowLabels: rowInfo.rowLabels,
+      rowLabelsList: rowLabelOutput,
+      //rowLabels: rowInfo.rowLabels,
+      rowLabels: rowLabelOutput,
       hyperEdgeRanges: resultHyperEdgeRanges,
       maxRowLabelWidth: maxLabelWidth,
     };
@@ -95,8 +177,15 @@ export default class ToPaohvisDataParserUseCase {
    * Sets the x-axis and y-axis node groups from the given PaohvisAxisInfo in the parser.
    * @param axisInfo is the new PaohvisAxisInfo that will be used.
    */
-  private setAxesNodeGroups(axisInfo: PaohvisAxisInfo): void {
+  private setAxesNodeGroups(axisInfo: PaohvisAxisInfo, entityHorizontal: string, entityVertical: string): void {
     const relation: Relation = axisInfo.relation;
+
+    //this.xAxisNodeGroup = relation.to;
+    //this.yAxisNodeGroup = relation.from;
+
+    this.xAxisNodeGroup = entityHorizontal;
+    this.yAxisNodeGroup = entityVertical;
+    /*
     if (axisInfo.isYAxisEntityEqualToRelationFrom) {
       this.xAxisNodeGroup = relation.to;
       this.yAxisNodeGroup = relation.from;
@@ -104,6 +193,7 @@ export default class ToPaohvisDataParserUseCase {
       this.xAxisNodeGroup = relation.from;
       this.yAxisNodeGroup = relation.to;
     }
+    */
   }
 
   /**
@@ -120,10 +210,14 @@ export default class ToPaohvisDataParserUseCase {
     hyperEdgeDegree: Record<string, number>,
     nodeOrder: PaohvisNodeOrder,
     yAxisNodeType: string,
-    xAxisNodeType: string
+    xAxisNodeType: string,
+    entityVerticalListed: string,
   ): PaohvisNodeInfo {
-    const rowNodes = filterRowNodes(nodes, hyperEdgeDegree, yAxisNodeType);
-    SortUseCase.sortNodes(nodeOrder, rowNodes, hyperEdgeDegree);
+    //const rowNodes = filterRowNodes(nodes, hyperEdgeDegree, yAxisNodeType);
+    const rowNodes = nodes; // to list all nodes available, even if they do not have connections
+
+    SortUseCase.sortNodes(nodeOrder, rowNodes, hyperEdgeDegree, entityVerticalListed);
+
     const rowLabels = getIds(rowNodes);
 
     //make dictionary for finding the index of a row
@@ -135,6 +229,7 @@ export default class ToPaohvisDataParserUseCase {
     }
 
     const xNodesAttributesDict: Record<string, any> = getXNodesAttributesDict(yAxisNodeType, xAxisNodeType, nodes);
+
     return {
       rowLabels: rowLabels,
       xNodesAttributesDict: xNodesAttributesDict,
@@ -149,7 +244,7 @@ export default class ToPaohvisDataParserUseCase {
    * @param isEntityRelationFrom is to decide if you need to count the from's or the to's of the edge.
    * @returns a dictionary where you can find how many edges are connected to the nodes.
    */
-  private static GetHyperEdgeDegreeDict(nodes: Node[], edges: Edge[], isEntityRelationFrom: boolean): Record<string, number> {
+  private static GetHyperEdgeDegreeDict(nodes: Node[], edges: connectionFromTo[], isEntityRelationFrom: boolean): Record<string, number> {
     const hyperEdgeDegreeDict: Record<string, number> = {};
 
     //initialize dictionary
@@ -157,7 +252,6 @@ export default class ToPaohvisDataParserUseCase {
 
     //count node appearance frequencies
     edges.forEach((edge) => {
-      // console.log(isEntityRelationFrom, edge.from, edge.to);
       if (isEntityRelationFrom) hyperEdgeDegreeDict[edge.from]++;
       else hyperEdgeDegreeDict[edge.to]++;
     });
@@ -173,7 +267,15 @@ export default class ToPaohvisDataParserUseCase {
    * @param rowInfo is the information about the nodes that's needed to parse the edges to their respective hyperedge range.
    * @returns the hyperedge ranges that will be used by the Paohvis table.
    */
-  private static parseHyperEdgeRanges(nodes: Node[], edges: Edge[], axisInfo: PaohvisAxisInfo, rowInfo: PaohvisNodeInfo): HyperEdgeRange[] {
+
+  private static parseHyperEdgeRanges(
+    nodes: Node[],
+    //edges: connectionFromTo[],
+    edges: connectionFromTo[],
+    axisInfo: PaohvisAxisInfo,
+    rowInfo: PaohvisNodeInfo,
+    entityVerticalListed: string,
+  ): HyperEdgeRange[] {
     if (nodes.length == 0 || edges.length == 0) return [];
 
     const resultHyperEdgeRanges: HyperEdgeRange[] = [];
@@ -187,6 +289,7 @@ export default class ToPaohvisDataParserUseCase {
     const hyperEdgesDict: Record<string, Record<string, Index>> = {};
 
     const xAxisAttributeType: string = axisInfo.selectedAttribute.name;
+    //const xAxisAttributeType: string = 'No attribute was selected';
 
     //is used to find the node attributes for the x-axis
     const xNodesAttributesDict: Record<string, any> = rowInfo.xNodesAttributesDict;
@@ -196,28 +299,92 @@ export default class ToPaohvisDataParserUseCase {
 
     let edgeDirection: string;
     let edgeDirectionOpposite: string;
-    const isFromOnYAxis = axisInfo.isYAxisEntityEqualToRelationFrom;
-    const collection = axisInfo.relation.collection;
 
+    /*
+      Building paohvis data structure for rendering
+      Check DEV331
+      Option1: if two nodes have same connection, creates an fake hyperedge on paohvis - const isFromOnYAxis = false;
+      Option2: there is no artificial hyperedge - const isFromOnYAxis = true;
+
+    */
+
+    //const isFromOnYAxis = axisInfo.isYAxisEntityEqualToRelationFrom; // boolean to decide whether: from (true) or to (false)
+    const isFromOnYAxis = true;
+    //const collection = axisInfo.relation.collection;
+    /*
+    console.log('nodes ', nodes);
+    console.log('edges ', edges);
+    console.log('axisInfo.selectedAttribute ', axisInfo.selectedAttribute);
+    console.log(' rowInfo.xNodesAttributesDict ', rowInfo.xNodesAttributesDict);
+    */
+    /*
+      Create resultHyperEdgeRanges.hyperEdges structure
+        for each attribute creates a matrix:
+      hyperedgesXnodes
+      [ 0: [0,0,1,1]]
+      [ 1: [0,1,0,1]]
+      [ 2: [1,0,0,1]]
+    */
+    // loop through all edges - and creates hyperedge structure - does not fill it
     for (let i = 0; i < edges.length; i++) {
       const edge = edges[i];
-      ({ edgeDirection, edgeDirectionOpposite } = getEdgeDirections(isFromOnYAxis, edge));
 
+      //console.log('iteration ', i, xAxisAttributeType, edge);
+
+      ({ edgeDirection, edgeDirectionOpposite } = getEdgeDirections(isFromOnYAxis, edge));
       let edgeIndexInResult: number = yNodesIndexDict[edgeDirection];
+      let edgeIndexInResultOpposite: number = yNodesIndexDict[edgeDirectionOpposite];
 
       // check if the chosen attribute is an attribute of the edge or the node
-      let attribute: any;
+      let attribute: any; // attribute selected on the panel
+
+      /*
+      console.log(
+        'inf: ',
+        axisInfo.selectedAttribute.origin,
+        AttributeOrigin.relation,
+        xAxisAttributeType
+        //edge.attributes[xAxisAttributeType]
+      );
+
+      console.log(
+        'cond1 ',
+        axisInfo.selectedAttribute.origin,
+        AttributeOrigin.relation,
+        axisInfo.selectedAttribute.origin == AttributeOrigin.relation
+      );
+      */
+      //console.log('cond2 ', xNodesAttributesDict);
+
+      attribute = edge.attributes[xAxisAttributeType];
+      /*
       if (axisInfo.selectedAttribute.origin == AttributeOrigin.relation) attribute = edge.attributes[xAxisAttributeType];
       else attribute = xNodesAttributesDict[edgeDirectionOpposite][xAxisAttributeType];
-
+        */
+      //console.log('xAxisAttributeType ', xAxisAttributeType, attribute);
+      /*
+      // look this for allowing characteristics
+      if (axisInfo.selectedAttribute.origin == AttributeOrigin.relation) {
+        //console.log('1 ');
+        attribute = edge.attributes[xAxisAttributeType];
+      } else {
+        //console.log('2 ', edgeDirectionOpposite, xAxisAttributeType);
+        attribute = xNodesAttributesDict[edgeDirectionOpposite][xAxisAttributeType];
+      }
+      */
       // if no edge attribute was selected, then all edges will be placed in one big hyperEdgeRange
       if (attribute == undefined) attribute = ValueType.noAttribute;
+      //console.log('attributeRangesIndexDict ', attributeRangesIndexDict);
 
+      // for grouping on the attributes
       if (attribute in attributeRangesIndexDict) {
-        const rangeIndex = attributeRangesIndexDict[attribute];
-        const targetHyperEdges = resultHyperEdgeRanges[rangeIndex].hyperEdges;
+        const rangeIndex = attributeRangesIndexDict[attribute]; // index of attribute
+        const targetHyperEdges = resultHyperEdgeRanges[rangeIndex].hyperEdges; // specific hyperedge
         const targetHyperEdgeIndex = hyperEdgesDict[attribute][edgeDirectionOpposite];
 
+        //console.log('rangeIndex ', rangeIndex, targetHyperEdges, ' hyperEdgesDict ', hyperEdgesDict);
+        //console.log('hyperEdgesDict ', hyperEdgesDict);
+
         if (targetHyperEdgeIndex != undefined) {
           // hyperedge group already exists so add edge to group
           targetHyperEdges[targetHyperEdgeIndex].indices.push(edgeIndexInResult);
@@ -227,7 +394,7 @@ export default class ToPaohvisDataParserUseCase {
 
           // 'add edge to new hyperedge group'
           targetHyperEdges.push({
-            indices: [edgeIndexInResult],
+            indices: [edgeIndexInResult, edgeIndexInResultOpposite],
             frequencies: newFrequencies(rowInfo.rowLabels),
             nameToShow: edgeDirectionOpposite,
           });
@@ -242,9 +409,9 @@ export default class ToPaohvisDataParserUseCase {
 
         let label: string;
         if (xAxisAttributeType != ValueType.noAttribute && xAxisAttributeType != '') label = attribute.toString();
-        else label = 'No attribute was selected';
+        else label = 'No Attr';
         const hyperEdge: HyperEdgeI = {
-          indices: [edgeIndexInResult],
+          indices: [edgeIndexInResult, edgeIndexInResultOpposite],
           frequencies: newFrequencies(rowInfo.rowLabels),
           nameToShow: edgeDirectionOpposite,
         };
@@ -256,25 +423,44 @@ export default class ToPaohvisDataParserUseCase {
       }
     }
 
-    SortUseCase.sortHyperEdgeRanges(resultHyperEdgeRanges, axisInfo.selectedAttribute.type);
+    // filter hyperedges.
+    //console.log('resultHyperEdgeRanges ', resultHyperEdgeRanges);
 
-    //calc how many duplicate edges are in each hyperedge
-    resultHyperEdgeRanges.forEach((hyperEdgeRange) => {
-      hyperEdgeRange.hyperEdges.forEach((hyperedge) => {
-        hyperedge.indices.forEach((index) => {
-          hyperedge.frequencies[index] += 1;
-        });
-      });
-    });
+    let resultHyperEdgeRanges2: any = [];
 
-    //filter out duplicate indices from all hyperedges
-    resultHyperEdgeRanges.forEach((hyperEdgeRange) => {
-      hyperEdgeRange.hyperEdges.forEach((hyperedge) => {
-        hyperedge.indices = uniq(hyperedge.indices);
-      });
-    });
+    for (let indexGroups = 0; indexGroups < resultHyperEdgeRanges.length; indexGroups++) {
+      const arrayCheckFrequencies: number[][] = [];
+      const arrayCheckIndices: number[][] = [];
+      for (let indexHyperEdge = 0; indexHyperEdge < resultHyperEdgeRanges[indexGroups].hyperEdges.length; indexHyperEdge++) {
+        arrayCheckFrequencies.push(resultHyperEdgeRanges[indexGroups].hyperEdges[indexHyperEdge].frequencies);
+        arrayCheckIndices.push(resultHyperEdgeRanges[indexGroups].hyperEdges[indexHyperEdge].indices);
+      }
+
+      const { uniqueArrays, indicesUnique } = getUniqueArrays(arrayCheckFrequencies);
+
+      const hyperEdges: HyperEdgeI[] = [];
+
+      for (let indexUniqueFrequencies = 0; indexUniqueFrequencies < uniqueArrays.length; indexUniqueFrequencies++) {
+        const hyperEdge: HyperEdgeI = {
+          indices: arrayCheckIndices[indicesUnique[indexUniqueFrequencies]],
+          frequencies: uniqueArrays[indexUniqueFrequencies],
+          nameToShow: 'NDY',
+        };
+        hyperEdges.push(hyperEdge);
+      }
+
+      const hyperEdgeRange: HyperEdgeRange = {
+        rangeText: resultHyperEdgeRanges[indexGroups].rangeText,
+        hyperEdges: hyperEdges,
+      };
 
-    return resultHyperEdgeRanges;
+      resultHyperEdgeRanges2.push(hyperEdgeRange);
+    }
+    //console.log('resultHyperEdgeRanges2 ', resultHyperEdgeRanges2);
+    //console.log('axisInfo.selectedAttribute.type ', axisInfo.selectedAttribute.type);
+    SortUseCase.sortHyperEdgeRanges(resultHyperEdgeRanges2, axisInfo.selectedAttribute.type, entityVerticalListed);
+
+    return resultHyperEdgeRanges2;
   }
 
   /** Sets new PaohvisFilters. */
@@ -284,20 +470,71 @@ export default class ToPaohvisDataParserUseCase {
 }
 
 /** Calculates the width that's needed for the rowlabels. */
-function calcMaxRowLabelWidth(rowLabels: string[]) {
+function calcMaxRowLabelWidth2(rowLabels: string[]) {
   const margin = 10;
   let maxLabelWidth = 0;
   rowLabels.forEach((rowLabel) => {
     const textWidth: number = getWidthOfText(rowLabel + '   ', style.tableFontFamily, style.tableFontSize, style.tableFontWeight);
+    //console.log(rowLabel, textWidth);
     if (textWidth > maxLabelWidth) maxLabelWidth = textWidth;
   });
   return maxLabelWidth + margin;
 }
 
+function calcMaxRowLabelWidth(rowLabels: string[], maxLenthAllowed: number) {
+  //const maxLenthAllowed = 200;
+  //const margin = maxLenthAllowed * 0.05;
+  let isMaxLengthAllowedOver = false;
+  let maxLabelWidth = 0;
+  rowLabels.forEach((rowLabel) => {
+    //const textWidth: number = getWidthOfText(rowLabel + '   ', style.tableFontFamily, style.tableFontSize, style.tableFontWeight);
+
+    let c = document.createElement('canvas');
+    let ctx = c.getContext('2d') as CanvasRenderingContext2D;
+    //console.log('style.tableFontSize ', style.tableFontSize);
+    let fontspec = style.tableFontWeight + ' ' + style.tableFontSize + ' ' + style.tableFontFamily;
+    //console.log(fontspec);
+    if (ctx.font !== fontspec) ctx.font = fontspec;
+
+    // Measure the width of the text
+    let textWidth = ctx.measureText(rowLabel).width;
+
+    if (textWidth >= maxLenthAllowed) {
+      isMaxLengthAllowedOver = true;
+      maxLabelWidth = maxLenthAllowed;
+      // Short text
+
+      let truncatedText = '';
+      let ellipsisWidth = ctx.measureText('...').width;
+      for (let i = 0; i < rowLabel.length; i++) {
+        let truncatedWidth = ctx.measureText(truncatedText + rowLabel[i]).width + ellipsisWidth;
+        if (truncatedWidth > maxLenthAllowed) {
+          // Text exceeded maximum width, break the loop
+          break;
+        }
+        truncatedText += rowLabel[i];
+      }
+      //rowLabel = truncatedText + '...'; // Update txt to contain truncated text with three dots added
+      rowLabels[rowLabels.indexOf(rowLabel)] = truncatedText + '...'; //add truncated element
+    } else {
+      if (!isMaxLengthAllowedOver) {
+        if (textWidth > maxLabelWidth) maxLabelWidth = textWidth;
+      }
+    }
+
+    //console.log(rowLabel, textWidth);
+    //if (textWidth > maxLabelWidth) maxLabelWidth = textWidth;
+  });
+  //return margin + maxLabelWidth + margin;
+  return maxLabelWidth * 1.2;
+}
+
 /** Gets a dictionary where you can find the attributes that belong to the nodes on teh x-axis.  */
 function getXNodesAttributesDict(yAxisNodeType: string, xAxisNodeType: string, nodes: Node[]) {
   const resultXNodesAttributesDict: Record<string, any> = {};
+  // it goes to case1:
   if (yAxisNodeType == xAxisNodeType) nodes.forEach((node) => (resultXNodesAttributesDict[node!.id] = node.attributes));
+  //console.log('cas2 ', yAxisNodeType == xAxisNodeType);
   else
     nodes.forEach((node) => {
       if (getGroupName(node) == xAxisNodeType) resultXNodesAttributesDict[node.id] = node.attributes;
@@ -309,7 +546,7 @@ function getXNodesAttributesDict(yAxisNodeType: string, xAxisNodeType: string, n
  * Gets which direction the edge will be read from. The direction can be read from:
  * 'from => to' or 'to => from'.
  */
-function getEdgeDirections(isFromToRelation: boolean, edge: Edge) {
+function getEdgeDirections(isFromToRelation: boolean, edge: connectionFromTo) {
   let edgeDirection: string;
   let edgeDirectionOpposite: string;
   if (isFromToRelation) {
diff --git a/libs/shared/lib/vis/visualizations/paohvis/utils/processAttributes.tsx b/libs/shared/lib/vis/visualizations/paohvis/utils/processAttributes.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..1beed91e59caac2081b185acf88605c593ff5035
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/paohvis/utils/processAttributes.tsx
@@ -0,0 +1,70 @@
+import { ConstructionOutlined } from '@mui/icons-material';
+import * as d3 from 'd3';
+
+// Define the interface if not already defined
+
+interface Data2RenderI {
+  name: string;
+  typeData: string;
+  data: { category: string; count: number }[];
+  numUniqueElements: number;
+}
+
+// Define the function to process each column
+export const processDataColumn = (maxUniqueValues: number, dataColumn: string, firstRowData: any, data: any[]): Data2RenderI => {
+  const newData2Render: Data2RenderI = {
+    name: dataColumn,
+    typeData: firstRowData.type[dataColumn] || 'string',
+    data: [],
+    numUniqueElements: 0,
+  };
+
+  let categoryCounts;
+
+  if (
+    newData2Render.typeData === 'string' ||
+    newData2Render.typeData === 'date' ||
+    newData2Render.typeData === 'duration' ||
+    newData2Render.typeData === 'datetime' ||
+    newData2Render.typeData === 'time'
+  ) {
+    const groupedData = d3.group(data, (d) => d.attribute[dataColumn]);
+    categoryCounts = Array.from(groupedData, ([category, items]) => ({
+      category: category as string,
+      count: items.length,
+    }));
+
+    newData2Render.numUniqueElements = categoryCounts.length;
+    newData2Render.data = categoryCounts;
+  } else if (newData2Render.typeData === 'bool') {
+    const groupedData = d3.group(data, (d) => d.attribute[dataColumn]);
+
+    categoryCounts = Array.from(groupedData, ([category, items]) => ({
+      category: category as string,
+      count: items.length,
+    }));
+
+    newData2Render.numUniqueElements = categoryCounts.length;
+    newData2Render.data = categoryCounts;
+  } else if (newData2Render.typeData === 'int' || newData2Render.typeData === 'float') {
+    categoryCounts = data.map((obj) => ({
+      category: 'placeholder', // add something
+      count: obj.attribute[dataColumn] as number, // fill values of data
+    }));
+
+    newData2Render.numUniqueElements = categoryCounts.length;
+    newData2Render.data = categoryCounts;
+  } else {
+    // there is also array type, when considering labels
+    const groupedData = d3.group(data, (d) => (d.attribute[dataColumn] as any)?.[0]);
+
+    categoryCounts = Array.from(groupedData, ([category, items]) => ({
+      category: category as string,
+      count: items.length,
+    }));
+
+    newData2Render.numUniqueElements = categoryCounts.length;
+  }
+
+  return newData2Render;
+};
diff --git a/libs/shared/lib/vis/visualizations/paohvis/utils/utils.tsx b/libs/shared/lib/vis/visualizations/paohvis/utils/utils.tsx
index 669494fe175cb2ece5e4516506de90e70af05043..6871bbc6789cc9a0d372dddae18b1252a43d241a 100644
--- a/libs/shared/lib/vis/visualizations/paohvis/utils/utils.tsx
+++ b/libs/shared/lib/vis/visualizations/paohvis/utils/utils.tsx
@@ -1,6 +1,15 @@
 import { log } from 'console';
 import { SchemaAttribute, SchemaGraph, SchemaGraphologyEdge, SchemaGraphologyNode } from '../../../../schema';
-import { AttributeNames, EntitiesFromSchema, RelationsFromSchema } from '../Types';
+import {
+  AttributeNames,
+  EntitiesFromSchema,
+  RelationsFromSchema,
+  connectionFromTo,
+  idConnections,
+  GraphData,
+  AugmentedNodeAttributesGraph,
+} from '../Types';
+import Graph, { MultiGraph } from 'graphology';
 
 /**
  * Takes a schema result and calculates all the entity names, and relation names and attribute names per entity.
@@ -61,7 +70,6 @@ export function calculateAttributes(schemaResult: SchemaGraph): Record<string, A
  */
 export function calculateRelations(schemaResult: SchemaGraph): Record<string, string[]> {
   const relationsPerEntity: Record<string, string[]> = {};
-  // Go through each relation.
   schemaResult.edges.forEach((edge) => {
     if (edge?.attributes === undefined) {
       console.error('ERROR: Edge has no attribute.', edge);
@@ -146,5 +154,156 @@ export const getWidthOfText = (txt: string, fontname: string, fontsize: string,
   let ctx = c.getContext('2d') as CanvasRenderingContext2D;
   let fontspec = fontWeight + ' ' + fontsize + ' ' + fontname;
   if (ctx.font !== fontspec) ctx.font = fontspec;
+  let textWidth = ctx.measureText(txt).width;
+  console.log('text: ', textWidth);
+  //return [ctx.measureText(txt).width, textWidth];
   return ctx.measureText(txt).width;
 };
+
+export function getUniqueArrays(arrays: number[][]): { uniqueArrays: number[][]; indicesUnique: number[] } {
+  const uniqueArrays: number[][] = [];
+  const uniqueArrayStrings: Set<string> = new Set();
+  const indicesUnique: number[] = [];
+
+  for (let i = 0; i < arrays.length; i++) {
+    const array = arrays[i];
+    const arrayString = array.join(',');
+    if (!uniqueArrayStrings.has(arrayString)) {
+      uniqueArrayStrings.add(arrayString);
+      uniqueArrays.push(array);
+      indicesUnique.push(i);
+    }
+  }
+
+  return { uniqueArrays, indicesUnique };
+}
+
+export function findConnectionsNodes(
+  queryIDs: string[],
+  originIDs: string[],
+  graphStructure: MultiGraph,
+  labelNode: string,
+  edges: AugmentedNodeAttributesGraph[],
+): connectionFromTo[] {
+  const neighborMap: idConnections = {};
+  const neighborMapNo: idConnections = {};
+
+  let tempSetAttributes: any = [];
+  let tempSetAttributesSs: any = [];
+  originIDs.forEach((nodeId) => {
+    const tempSet: Set<string> = new Set();
+    const tempSetNo: any = [];
+    graphStructure.forEachNeighbor(nodeId, (neighbor, attributes) => {
+      if (attributes.label != labelNode) {
+        graphStructure.forEachNeighbor(neighbor, (neighbor2, attributes2) => {
+          if (queryIDs.includes(neighbor2) && neighbor2 !== nodeId) {
+            if (!tempSet.has(neighbor2)) {
+              tempSet.add(neighbor2);
+              tempSetNo.push(neighbor2);
+              tempSetAttributesSs.push({ from: nodeId, to: neighbor2, attributes });
+              tempSetAttributes.push(attributes);
+            }
+          }
+        });
+      } else {
+        if (queryIDs.includes(neighbor) && neighbor !== nodeId) {
+          tempSet.add(neighbor);
+          tempSetNo.push(neighbor);
+          tempSetAttributes.push(attributes);
+          tempSetAttributesSs.push({ from: nodeId, to: neighbor, attributes });
+        }
+      }
+    });
+    neighborMap[nodeId] = Array.from(tempSet);
+    neighborMapNo[nodeId] = tempSetNo;
+  });
+
+  return tempSetAttributesSs;
+}
+
+export function calcTextWidthAndStringText(
+  textArray: string | string[],
+  maxLengthAllowed: number,
+  tailwindStyle: string,
+): { truncatedText: string; truncatedWidth: number }[] {
+  const labels = Array.isArray(textArray) ? textArray : [textArray];
+
+  const truncatedLabels: { truncatedText: string; truncatedWidth: number }[] = [];
+
+  labels.forEach((rowLabel, index) => {
+    let truncatedText = rowLabel;
+    let truncatedWidth = 0;
+
+    while (truncatedText.length > 0) {
+      const tempElement = document.createElement('span');
+      tempElement.style.position = 'absolute';
+      tempElement.style.visibility = 'hidden';
+      tempElement.style.pointerEvents = 'none';
+      tempElement.style.whiteSpace = 'nowrap';
+      tempElement.style.font = getComputedStyle(document.body).font;
+
+      tempElement.className = tailwindStyle;
+
+      tempElement.textContent = truncatedText + '...';
+      document.body.appendChild(tempElement);
+
+      truncatedWidth = tempElement.getBoundingClientRect().width;
+      document.body.removeChild(tempElement);
+
+      if (truncatedWidth <= maxLengthAllowed) {
+        break;
+      }
+
+      truncatedText = truncatedText.slice(0, -1);
+    }
+
+    if (truncatedText !== rowLabel) {
+      truncatedLabels.push({ truncatedText: truncatedText + '...', truncatedWidth });
+    } else {
+      truncatedLabels.push({ truncatedText, truncatedWidth });
+    }
+  });
+
+  return truncatedLabels;
+}
+
+export function wrapperForEdge(data: idConnections, attributes: any): connectionFromTo[] {
+  const keysData = Object.keys(data);
+  const resultsDas: connectionFromTo[] = [];
+  const results = keysData.forEach((item, index) => {
+    const r = data[item].forEach((itemConnected) => {
+      resultsDas.push({ from: item, to: itemConnected, attributes: attributes[index] });
+    });
+  });
+  return resultsDas;
+}
+
+export const buildGraphology = (data: GraphData): MultiGraph => {
+  const graph = new MultiGraph();
+
+  const nodeMap = new Map<string, Node>();
+  data.nodes.forEach((node: any) => {
+    nodeMap.set(node.id, node);
+  });
+
+  const nodeEntries = data.nodes.map((node) => ({
+    key: node.id,
+    attributes: {
+      ...node.attributes,
+      label: node.label,
+    },
+  }));
+
+  graph.import({ nodes: nodeEntries });
+
+  const validEdgeEntries = data.edges
+    .filter((edge: any) => nodeMap.has(edge.from) && nodeMap.has(edge.to))
+    .map((edge: any) => ({
+      source: edge.from,
+      target: edge.to,
+    }));
+
+  graph.import({ edges: validEdgeEntries });
+
+  return graph;
+};
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/Types.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/Types.tsx
deleted file mode 100644
index 226319c65aa899049a907f8ae54fe1752d762f4f..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/Types.tsx
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-import { XYPosition } from 'reactflow';
-
-/** Stores the minimum and maximum of the data. */
-export type MinMaxType = {
-  min: number;
-  max: number;
-};
-
-/** The data of a node. */
-export type NodeData = {
-  text: string;
-};
-
-/** The from and to index of a relation. */
-export type RelationType = {
-  fromIndex: number;
-  toIndex: number;
-  value?: number;
-  colour?: string;
-};
-
-/** Used as input for calculating the min max values and scale the position. */
-export type PlotInputData = {
-  title: string;
-  nodes: InputNodeType[];
-  width: number;
-  height: number;
-};
-
-/** The nodes for inputdata for plot generation. */
-export interface InputNodeType {
-  id: string;
-  data: NodeData;
-  originalPosition: XYPosition;
-  attributes: Record<string, any>;
-}
-
-/** The node type for nodes in plots. */
-export interface NodeType extends InputNodeType {
-  scaledPosition: XYPosition;
-}
-
-/** Used for semantic substrate components as input. */
-export type PlotType = {
-  title: string;
-  nodes: NodeType[];
-  minmaxXAxis: { min: number; max: number };
-  minmaxYAxis: { min: number; max: number };
-  selectedAttributeNumerical: string;
-  selectedAttributeCatecorigal: string;
-  scaleCalculation: (x: number) => number;
-  colourCalculation: (x: string) => string;
-  width: number;
-  height: number;
-  yOffset: number;
-
-  //Used for autocompleting the attribute value in a plot title/filter
-  possibleTitleAttributeValues: string[];
-};
-
-/** The entities with names and attribute parameters from the schema. */
-export type EntitiesFromSchema = {
-  entityNames: string[];
-  attributesPerEntity: Record<string, AttributeNames>;
-};
-
-/** The names of attributes per datatype. */
-export type AttributeNames = {
-  textAttributeNames: string[];
-  numberAttributeNames: string[];
-  boolAttributeNames: string[];
-};
-
-/** The specifications for filtering nodes and scaling a plot. */
-export type PlotSpecifications = {
-  entity: string;
-
-  labelAttributeType: string;
-  labelAttributeValue: string;
-
-  xAxis: AxisLabel;
-  yAxis: AxisLabel;
-
-  // If the axisPositioning is attributeType, this will be used to index the attributes of a node
-  xAxisAttributeType: string;
-  yAxisAttributeType: string;
-
-  width: number;
-  height: number;
-};
-
-/** The default possible options for an axis label. */
-export enum AxisLabel {
-  evenlySpaced = 'evenly spaced',
-  outboundConnections = '# outbound connections',
-  inboundConnections = '# inbound connections',
-  byAttribute = 'byAttribute',
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/SemanticSubstrateConfigPanel.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/SemanticSubstrateConfigPanel.tsx
deleted file mode 100644
index 1f680d78ab9d3ce9565314095ecdc7981d6269ee..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/SemanticSubstrateConfigPanel.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-import React, { useRef, useState } from 'react';
-import styles from '../semanticsubstrates.module.scss';
-import { EntityWithAttributes, FSSConfigPanelProps } from './Types';
-import SemanticSubstratesConfigPanelViewModelImpl from './SemanticSubstratesConfigPanelViewModel';
-import SemanticSubstratesConfigPanelViewModel from './SemanticSubstratesConfigPanelViewModel';
-
-/** Component for rendering config input fields for Faceted Semantic Subrate attributes. */
-export default function FSSConfigPanel(props: FSSConfigPanelProps) {
-  let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModel = new SemanticSubstratesConfigPanelViewModelImpl(props);
-
-  FSSConfigPanelViewModel.makeNodeTypes();
-  FSSConfigPanelViewModel.makeRelationTypes();
-
-  return (
-    <div className={styles.container}>
-      <p className={styles.title}>Semantic Substrates Settings:</p>
-
-      {/* Experimental options implementation */}
-      <p className={styles.subtitle}>- Visual Assignment</p>
-      <div className={styles.subContainer}>
-        <p>Node: </p>
-        <select onChange={(e) => FSSConfigPanelViewModel.onNodeChange(e.target.value)}>
-          {FSSConfigPanelViewModel.nodes.map((n) => (
-            <option key={n.name} value={n.name}>
-              {n.name}
-            </option>
-          ))}
-        </select>
-      </div>
-
-      {/* NODE ATTRIBUTES */}
-      <div className={styles.subContainer}>
-        <p>Attribute: </p>
-        <select
-          id="attribute-select"
-          onChange={(e) => {
-            FSSConfigPanelViewModel.onAttributeChange(e.target.value);
-          }}
-        >
-          {FSSConfigPanelViewModel.getUniqueNodeAttributes().map((name) => (
-            <option key={name} value={name}>
-              {name}
-            </option>
-          ))}
-        </select>
-      </div>
-
-      {/* RELATION ATTRIBUTES */}
-      <div className={styles.subContainer}>
-        <p>Relation Attribute: </p>
-        <select
-          id="relation-attribute-select"
-          onChange={(e) => {
-            FSSConfigPanelViewModel.onRelationAttributeChange(e.target.value);
-          }}
-        >
-          {FSSConfigPanelViewModel.getUniqueRelationAttributes().map((name) => (
-            <option key={name} value={name}>
-              {name}
-            </option>
-          ))}
-        </select>
-      </div>
-    </div>
-  );
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/SemanticSubstratesConfigPanelViewModel.t b/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/SemanticSubstratesConfigPanelViewModel.t
deleted file mode 100644
index 3cf928252166db2e5028931a53cff81a91d265bf..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/SemanticSubstratesConfigPanelViewModel.t
+++ /dev/null
@@ -1,280 +0,0 @@
-import SemanticSubstratesConfigPanelViewModelImpl from './SemanticSubstratesConfigPanelViewModel';
-import SemanticSubstratesViewModelImpl from '../SemanticSubstratesViewModel';
-import big2ndChamberQueryResult from '../../../../../data/mock-data/query-result/big2ndChamberQueryResult';
-import smallFlightsQueryResults from '../../../../../data/mock-data/query-result/smallFlightsQueryResults';
-
-jest.mock('../../../view/result-visualisations/semantic-substrates/SemanticSubstratesStylesheet');
-
-let parties = ['BIJ1', 'VVD', 'PvdA', 'PVV', 'BBB', 'D66', 'GL'];
-
-describe('SemanticSubstratesConfigPanelViewModelImpl: unique attribute creation', () => {
-  it('Should consume result corectly to generate the correct unique node attributes.', () => {
-    let mockProperties = {
-      fssViewModel: new SemanticSubstratesViewModelImpl(),
-      graph: big2ndChamberQueryResult,
-    };
-
-    let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModelImpl =
-      new SemanticSubstratesConfigPanelViewModelImpl(mockProperties);
-
-    FSSConfigPanelViewModel.makeNodeTypes();
-    FSSConfigPanelViewModel.onNodeChange('kamerleden');
-    expect(FSSConfigPanelViewModel.getUniqueNodeAttributes()).toEqual([
-      'anc',
-      'img',
-      'leeftijd',
-      'naam',
-      'partij',
-      'woonplaats',
-    ]);
-  });
-
-  it('Should consume result corectly to generate the correct unique relation attributes.', () => {
-    let mockProperties = {
-      fssViewModel: new SemanticSubstratesViewModelImpl(),
-      graph: big2ndChamberQueryResult,
-    };
-
-    let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModelImpl =
-      new SemanticSubstratesConfigPanelViewModelImpl(mockProperties);
-
-    FSSConfigPanelViewModel.makeRelationTypes();
-    expect(FSSConfigPanelViewModel.getUniqueRelationAttributes()).toEqual([]);
-  });
-});
-
-describe('SemanticSubstratesConfigPanelViewModelImpl: unique attribute creation', () => {
-  it('Should consume result corectly to generate the correct unique node attributes.', () => {
-    let mockProperties = {
-      fssViewModel: new SemanticSubstratesViewModelImpl(),
-      graph: smallFlightsQueryResults,
-    };
-
-    let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModelImpl =
-      new SemanticSubstratesConfigPanelViewModelImpl(mockProperties);
-
-    FSSConfigPanelViewModel.makeNodeTypes();
-    FSSConfigPanelViewModel.onNodeChange('airports');
-    expect(FSSConfigPanelViewModel.getUniqueNodeAttributes()).toEqual([
-      'city',
-      'country',
-      'lat',
-      'long',
-      'name',
-      'state',
-      'vip',
-    ]);
-  });
-
-  it('Should consume result corectly to generate the correct unique relation attributes.', () => {
-    let mockProperties = {
-      fssViewModel: new SemanticSubstratesViewModelImpl(),
-      graph: smallFlightsQueryResults,
-    };
-
-    let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModelImpl =
-      new SemanticSubstratesConfigPanelViewModelImpl(mockProperties);
-
-    FSSConfigPanelViewModel.makeRelationTypes();
-    expect(FSSConfigPanelViewModel.getUniqueRelationAttributes()).toEqual([
-      'Year',
-      'Month',
-      'Day',
-      'DayOfWeek',
-      'DepTime',
-      'ArrTime',
-      'DepTimeUTC',
-      'ArrTimeUTC',
-      'UniqueCarrier',
-      'FlightNum',
-      'TailNum',
-      'Distance',
-    ]);
-  });
-});
-
-describe('SemanticSubstratesConfigPanelViewModelImpl: Correct values should be set', () => {
-  it("Should consume result corectly and get the calculations for the numerical attribute 'leeftijd' ", () => {
-    let attributeToSelect = 'leeftijd';
-    let nodeToSelect = 'kamerleden';
-    let maxAgeInParlement = 69;
-    let minAgeInParlement = 23;
-    let minSize = 1;
-    let maxSize = 10;
-    let mockProperties = {
-      fssViewModel: new SemanticSubstratesViewModelImpl(),
-      graph: big2ndChamberQueryResult,
-    };
-
-    let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModelImpl =
-      new SemanticSubstratesConfigPanelViewModelImpl(mockProperties);
-
-    FSSConfigPanelViewModel.makeRelationTypes();
-    FSSConfigPanelViewModel.makeNodeTypes();
-    FSSConfigPanelViewModel.onNodeChange(nodeToSelect);
-
-    expect(FSSConfigPanelViewModel.currentNode).toEqual(nodeToSelect);
-    expect(FSSConfigPanelViewModel.isNodeAttributeNumber(attributeToSelect)).toEqual(true);
-
-    let calculationF = FSSConfigPanelViewModel.getTheScaleCalculationForNodes(
-      attributeToSelect,
-      minSize,
-      maxSize,
-    );
-    expect(calculationF(maxAgeInParlement)).toEqual(maxSize);
-    expect(calculationF((maxAgeInParlement + minAgeInParlement) / 2)).toEqual(
-      (maxSize + minSize) / 2,
-    );
-    expect(calculationF(minAgeInParlement)).toEqual(minSize);
-  });
-
-  it("Should consume result corectly and get the calculations for the catecorigal attribute 'partij' ", () => {
-    let attributeToSelect = 'partij';
-    let nodeToSelect = 'kamerleden';
-    let mockProperties = {
-      fssViewModel: new SemanticSubstratesViewModelImpl(),
-      graph: big2ndChamberQueryResult,
-    };
-
-    let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModelImpl =
-      new SemanticSubstratesConfigPanelViewModelImpl(mockProperties);
-
-    FSSConfigPanelViewModel.makeRelationTypes();
-    FSSConfigPanelViewModel.makeNodeTypes();
-    FSSConfigPanelViewModel.onNodeChange(nodeToSelect);
-
-    expect(FSSConfigPanelViewModel.currentNode).toEqual(nodeToSelect);
-    expect(FSSConfigPanelViewModel.isNodeAttributeNumber(attributeToSelect)).toEqual(false);
-
-    let calculationF = FSSConfigPanelViewModel.getTheColourCalculationForNodes(attributeToSelect);
-    parties.forEach((party) => expect(calculationF(party)).toBeDefined());
-    expect(calculationF('Not a party')).toBeUndefined();
-  });
-});
-
-describe('SemanticSubstratesConfigPanelViewModelImpl: Correct values should be set for smallFlightsQueryResults', () => {
-  it("Should consume result corectly and get the calculations for the numerical attribute 'distance' ", () => {
-    let attributeToSelect = 'Distance';
-    let maxDistance = 487;
-    let minDistance = 200;
-    let minSize = 1;
-    let maxSize = 10;
-    let mockProperties = {
-      fssViewModel: new SemanticSubstratesViewModelImpl(),
-      graph: smallFlightsQueryResults,
-    };
-
-    let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModelImpl =
-      new SemanticSubstratesConfigPanelViewModelImpl(mockProperties);
-
-    FSSConfigPanelViewModel.makeRelationTypes();
-    FSSConfigPanelViewModel.makeNodeTypes();
-
-    expect(FSSConfigPanelViewModel.isRelationAttributeNumber(attributeToSelect)).toEqual(true);
-
-    let calculationF = FSSConfigPanelViewModel.getTheScaleCalculationForRelations(
-      attributeToSelect,
-      minSize,
-      maxSize,
-    );
-    expect(calculationF(maxDistance)).toEqual(maxSize);
-    expect(calculationF((maxDistance + minDistance) / 2)).toEqual((maxSize + minSize) / 2);
-    expect(calculationF(minDistance)).toEqual(minSize);
-  });
-
-  it("Should consume result corectly and get the calculations for the catecorigal attribute 'UniqueCarrier' ", () => {
-    let attributeToSelect = 'UniqueCarrier';
-    let mockProperties = {
-      fssViewModel: new SemanticSubstratesViewModelImpl(),
-      graph: smallFlightsQueryResults,
-    };
-
-    let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModelImpl =
-      new SemanticSubstratesConfigPanelViewModelImpl(mockProperties);
-
-    FSSConfigPanelViewModel.makeRelationTypes();
-    FSSConfigPanelViewModel.makeNodeTypes();
-
-    expect(FSSConfigPanelViewModel.isRelationAttributeNumber(attributeToSelect)).toEqual(false);
-
-    let calculationF =
-      FSSConfigPanelViewModel.getTheColourCalculationForRelations(attributeToSelect);
-    expect(calculationF('NW')).toBeDefined();
-    expect(calculationF('WN')).toBeDefined();
-    expect(calculationF('Not a UniqueCarrier')).toBeUndefined();
-  });
-
-  it("Should consume result corectly and get the calculations for the catecorigal attribute 'state' ", () => {
-    let attributeToSelect = 'state';
-    let nodeToSelect = 'airports';
-    let mockProperties = {
-      fssViewModel: new SemanticSubstratesViewModelImpl(),
-      graph: smallFlightsQueryResults,
-    };
-
-    let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModelImpl =
-      new SemanticSubstratesConfigPanelViewModelImpl(mockProperties);
-
-    FSSConfigPanelViewModel.makeRelationTypes();
-    FSSConfigPanelViewModel.makeNodeTypes();
-    FSSConfigPanelViewModel.onNodeChange(nodeToSelect);
-
-    expect(FSSConfigPanelViewModel.currentNode).toEqual(nodeToSelect);
-    expect(FSSConfigPanelViewModel.isNodeAttributeNumber(attributeToSelect)).toEqual(false);
-
-    let calculationF = FSSConfigPanelViewModel.getTheColourCalculationForNodes(attributeToSelect);
-    expect(calculationF('CA')).toBeDefined();
-    expect(calculationF('NY')).toBeDefined();
-    expect(calculationF('Not a state')).toBeUndefined();
-  });
-
-  it('Should update the visualisation when the attribute changes', () => {
-    let attributeToSelect = 'state';
-    let attributeToSelect2 = 'lat';
-    let nodeToSelect = 'airports';
-    let mockProperties = {
-      fssViewModel: new SemanticSubstratesViewModelImpl(),
-      graph: smallFlightsQueryResults,
-    };
-
-    let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModelImpl =
-      new SemanticSubstratesConfigPanelViewModelImpl(mockProperties);
-
-    FSSConfigPanelViewModel.makeRelationTypes();
-    FSSConfigPanelViewModel.makeNodeTypes();
-    FSSConfigPanelViewModel.onNodeChange(nodeToSelect);
-
-    // change the attribute for the first time
-    FSSConfigPanelViewModel.onAttributeChange(attributeToSelect);
-    expect(FSSConfigPanelViewModel.currentAttribute).toEqual(attributeToSelect);
-
-    // change the attribute for the second time, this time with an attribute that has numbers as values
-    FSSConfigPanelViewModel.onAttributeChange(attributeToSelect2);
-    expect(FSSConfigPanelViewModel.currentAttribute).toEqual(attributeToSelect2);
-  });
-
-  it('Should update the visualisation when the relation attribute changes', () => {
-    let attributeToSelect = 'TailNum';
-    let attributeToSelect2 = 'Distance';
-    let nodeToSelect = 'airports';
-    let mockProperties = {
-      fssViewModel: new SemanticSubstratesViewModelImpl(),
-      graph: smallFlightsQueryResults,
-    };
-
-    let FSSConfigPanelViewModel: SemanticSubstratesConfigPanelViewModelImpl =
-      new SemanticSubstratesConfigPanelViewModelImpl(mockProperties);
-
-    FSSConfigPanelViewModel.makeRelationTypes();
-    FSSConfigPanelViewModel.makeNodeTypes();
-    FSSConfigPanelViewModel.onNodeChange(nodeToSelect);
-
-    // change the attribute for the first time
-    FSSConfigPanelViewModel.onRelationAttributeChange(attributeToSelect);
-    expect(FSSConfigPanelViewModel.currentRelationAttribute).toEqual(attributeToSelect);
-
-    // change the attribute for the second time, this time with an attribute that has numbers as values
-    FSSConfigPanelViewModel.onRelationAttributeChange(attributeToSelect2);
-    expect(FSSConfigPanelViewModel.currentRelationAttribute).toEqual(attributeToSelect2);
-  });
-});
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/SemanticSubstratesConfigPanelViewModel.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/SemanticSubstratesConfigPanelViewModel.tsx
deleted file mode 100644
index 9e0d1fce2b17d98c1d2e22b2cab662a12ab6ffc9..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/SemanticSubstratesConfigPanelViewModel.tsx
+++ /dev/null
@@ -1,332 +0,0 @@
-import { range } from 'd3';
-
-import { EntityWithAttributes, FSSConfigPanelProps } from './Types';
-import { Edge, Node } from '@graphpolaris/shared/lib/data-access';
-
-/** Viewmodel for rendering config input fields for Faceted Semantic Substrate attributes. */
-export default class SemanticSubstratesConfigPanelViewModel {
-  public nodes: EntityWithAttributes[];
-  public relations: EntityWithAttributes[];
-
-  minimalNodeSize = 2;
-  maximalNodeSize = 10;
-
-  minimalRelationWidth = 0.05;
-  maximalRelationWidth = 4;
-
-  nodesloaded: Node[];
-  relationsloaded: Edge[];
-  public currentNode = '';
-  currentRelation = '';
-  currentAttribute = '';
-  currentRelationAttribute = '';
-
-  /**
-   * The constructor for the FSSConfigPanelViewModelImpl (FacetedSemanticSubstratesConfigPanelViewModelImpl).
-   * This handles the view for changing how to display the attributes of the nodes and relations
-   * in the FSS view.
-   * @param props The properties for the FacetedSemanticSubstratesConfigPanel. These define how the
-   * fss ViewModel is generated.
-   */
-  public constructor(props: FSSConfigPanelProps) {
-    let graph = props.graph;
-
-    this.nodes = [];
-    this.relations = [];
-
-    this.nodesloaded = graph.nodes;
-    this.relationsloaded = graph.edges;
-  }
-
-  /**
-   * Creates a list of unique node types based on the current list of nodes.
-   */
-  public makeNodeTypes() {
-    // this.nodes = MakeTypesFromGraphUseCase.makeNodeTypes(this.nodesloaded);
-    if (!this.isNodeSet()) {
-      if (this.nodes[0]) {
-        this.currentNode = this.nodes[0].name;
-      }
-    }
-  }
-
-  /**
-   * Creates a list of unique relation types based on the current list of relations.
-   */
-  public makeRelationTypes() {
-    // this.relations = MakeTypesFromGraphUseCase.makeRelationTypes(this.relationsloaded);
-    if (!this.isRelationSet()) {
-      if (this.relations[0]) {
-        this.currentRelation = this.relations[0].name;
-      }
-    }
-  }
-
-  /**
-   * Checks if the current node type exists in the types list.
-   * @returns True if the node has been set.
-   */
-  private isNodeSet() {
-    for (let i in range(this.nodes.length)) {
-      let node = this.nodes[i];
-      if (this.currentNode == node.name) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  /**
-   * Checks if the current relation type exists in the types list.
-   * @returns True if the function has been set.
-   */
-  private isRelationSet() {
-    for (let i in range(this.relations.length)) {
-      let relation = this.relations[i];
-      if (this.currentRelation == relation.name) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  /**
-   * Updates the state variables and dropdowns. Should be triggered on switching nodes in the dropdown.
-   * @param newCurrentNode The new node type that has been selected.
-   */
-  public onNodeChange(newCurrentNode: string) {
-    this.currentNode = newCurrentNode;
-    this.makeNodeTypes();
-  }
-
-  /**
-   * Tells the FSSViewModel what node attributes have been changed, when something has changed.
-   */
-  public onAttributeChange(attributeSelected: string) {
-    //Retrieve the current visualisation and set the vis dropdown to this.
-    this.currentAttribute = attributeSelected;
-    if (this.isNodeAttributeNumber(attributeSelected)) {
-      // this.fssViewModel.selectedAttributeNumerical = attributeSelected;
-      // this.fssViewModel.changeSelectedAttributeNumerical(
-      //   this.getTheScaleCalculationForNodes(attributeSelected, this.minimalNodeSize, this.maximalNodeSize)
-      // );
-    } else {
-      // this.fssViewModel.selectedAttributeCatecorigal = attributeSelected;
-      // this.fssViewModel.changeSelectedAttributeCatecorigal(this.getTheColourCalculationForNodes(attributeSelected));
-    }
-  }
-
-  /**
-   * Tells the FSSViewModel what relation attributes have been changed, when something has changed.
-   */
-  public onRelationAttributeChange(attributeSelected: string) {
-    //Retrieve the current visualisation and set the vis dropdown to this.
-    this.currentRelationAttribute = attributeSelected;
-    if (this.isRelationAttributeNumber(attributeSelected)) {
-      // this.fssViewModel.relationSelectedAttributeNumerical = attributeSelected;
-      // this.fssViewModel.changeRelationSelectedAttributeNumerical(
-      // this.getTheScaleCalculationForRelations(
-      //   this.fssViewModel.relationSelectedAttributeNumerical,
-      //   this.minimalRelationWidth,
-      //   this.maximalRelationWidth
-      // )
-      // );
-    } else {
-      // this.fssViewModel.relationSelectedAttributeCatecorigal = attributeSelected;
-      // this.fssViewModel.changeRelationSelectedAttributeCatecorigal(
-      //   this.getTheColourCalculationForRelations(this.fssViewModel.relationSelectedAttributeCatecorigal)
-      // );
-    }
-  }
-
-  /**
-   * Gets a list of all different attributes that are present in the loaded nodes list.
-   * @returns List of strings that each represent an attribute.
-   */
-  public getUniqueNodeAttributes() {
-    let uniqueValues: string[] = [];
-    this.nodesloaded.forEach((node) => {
-      if (node.attributes) {
-        for (const attribute in node.attributes) {
-          if (uniqueValues.find((x) => x == attribute) == undefined) {
-            uniqueValues.push(attribute);
-          }
-        }
-      }
-    });
-    return uniqueValues;
-  }
-
-  /**
-   * Gets a list with unique relation attributes that are presented in the loaded relations list.
-   * @returns List of string that each represent an attribute.
-   */
-  public getUniqueRelationAttributes() {
-    let uniqueValues: string[] = [];
-    this.relationsloaded.forEach((relation) => {
-      if (relation.attributes) {
-        for (const attribute in relation.attributes) {
-          if (uniqueValues.find((x) => x == attribute) == undefined) {
-            uniqueValues.push(attribute);
-          }
-        }
-      }
-    });
-    return uniqueValues;
-  }
-
-  /**
-   * Checks if the attribute is a numerical value.
-   * @param attribute The attribute of the nodes to check for.
-   * @returns True if all values of that attribute are numbers. Returns false
-   * if one or more values for this attribute are not a number
-   */
-  public isNodeAttributeNumber(attribute: string): boolean {
-    let values: number[] = [];
-    for (const node of this.nodesloaded) {
-      if (node.attributes) {
-        if (node.attributes[attribute] != undefined) {
-          // if (isNaN(node.attributes[attribute])) return false;
-        }
-      }
-    }
-    return true;
-  }
-
-  /**
-   * Checks if all values of an attribute of the list of relations are a number.
-   * @param attribute The attribute of the relations to check for
-   * @returns True if all values of that attribute are numbers. Returns false
-   * if one or more values for this attribute are not a number
-   */
-  public isRelationAttributeNumber(attribute: string): boolean {
-    for (const relation of this.relationsloaded) {
-      if (relation.attributes) {
-        if (relation.attributes[attribute] != undefined) {
-          // if (isNaN(relation.attributes[attribute])) return false;
-        }
-      }
-    }
-    return true;
-  }
-
-  /**
-   * Gets the scaling value for pixel sizes.
-   * @param attribute The selected attribute.
-   * @param minP Minimum node size.
-   * @param maxP Maximum node size.
-   * @returns Scaling value as a number.
-   */
-  public getTheScaleCalculationForNodes(attribute: string, minP: number, maxP: number): (x: number) => number {
-    let values: number[] = [];
-    this.nodesloaded.forEach((node) => {
-      if (node.attributes) {
-        if (node.attributes[attribute] != undefined) {
-          // values.push(node.attributes[attribute]);
-        }
-      }
-    });
-
-    //value min/max
-    let minX = Math.min(...values);
-    let maxX = Math.max(...values);
-
-    let a = (maxP - minP) / (maxX - minX);
-    let b = maxP - a * maxX;
-
-    //linear scaling between minP and maxP
-    return (x: number) => a * x + b; // - minX;
-  }
-
-  /**
-   * Creates a function to get the colours for each value of a given attribute of a relation.
-   * @param attribute The attribute to generate a colour calculation for.
-   * @returns Returns colourisation fucntion for each different attribute value
-   */
-  public getTheColourCalculationForNodes(attribute: string): (x: string) => string {
-    let uniqueValues: string[] = [];
-    this.nodesloaded.forEach((node) => {
-      if (node.attributes) {
-        if (node.attributes[attribute] != undefined) {
-          // uniqueValues.push(node.attributes[attribute]);
-        }
-      }
-    });
-
-    // let colours = ColourPalettes['default'].nodes;
-
-    // Create the key value pairs.
-    let valueToColour: Record<string, string> = {};
-    let i = 0;
-    uniqueValues.forEach((uniqueValue) => {
-      // valueToColour[uniqueValue] = '#' + colours[i];
-      // i++;
-      // if (i > colours.length) {
-      //   i = 0;
-      // }
-    });
-
-    //Get a colour for each attribute
-    return (x: string) => valueToColour[x];
-  }
-
-  /**
-   * returns the scaling function for relations. (Can be used in pixel size.)
-   * @param attribute Attribute to generate a size calculation for.
-   * @param minP Minimal width
-   * @param maxP Maximum width
-   * @returns
-   */
-  public getTheScaleCalculationForRelations(attribute: string, minP: number, maxP: number): (x: number) => number {
-    let values: number[] = [];
-    this.relationsloaded.forEach((relation) => {
-      if (relation.attributes) {
-        if (relation.attributes[attribute] != undefined) {
-          // values.push(relation.attributes[attribute]);
-        }
-      }
-    });
-
-    //value min/max
-    let minX = Math.min(...values);
-    let maxX = Math.max(...values);
-
-    let a = (maxP - minP) / (maxX - minX);
-    let b = maxP - a * maxX;
-
-    //linear scaling between minP and maxP
-    return (x: number) => a * x + b; // - minX;
-  }
-
-  /**
-   * Generates a function that returns a value for each given possible value of an attribute.
-   * @param attribute The attribute to generate the function for.
-   * @returns A function to get the correct colour for a relation attribute.
-   */
-  public getTheColourCalculationForRelations(attribute: string): (x: string) => string {
-    let uniqueValues: string[] = [];
-    this.relationsloaded.forEach((relation) => {
-      if (relation.attributes) {
-        if (relation.attributes[attribute] != undefined) {
-          // uniqueValues.push(relation.attributes[attribute]);
-        }
-      }
-    });
-
-    // let colours = ColourPalettes['default'].elements.relation;
-
-    // Create the key value pairs.
-    let valueToColour: Record<string, string> = {};
-    let i = 0;
-    uniqueValues.forEach((uniqueValue) => {
-      // valueToColour[uniqueValue] = '#' + colours[i];
-      // i++;
-      // if (i > colours.length) {
-      //   i = 0;
-      // }
-    });
-
-    //Get a colour for each attribute
-    return (x: string) => valueToColour[x];
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/Types.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/Types.tsx
deleted file mode 100644
index 58e7f4dcc78a7ca0b2c6fb5e80edb2045d030052..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/configpanel/Types.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-import { GraphQueryResult } from '@graphpolaris/shared/lib/data-access';
-
-/* An entity that has an attribute (Either a node with attributes or an edges with attributes)
-  For the config-panel of semantic-substrates.*/
-export type EntityWithAttributes = {
-  name: string;
-  attributes: string[];
-  group: number;
-};
-
-/** Props for this component */
-export type FSSConfigPanelProps = {
-  graph: GraphQueryResult;
-  // currentColours: any;
-};
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/index.ts b/libs/shared/lib/vis/visualizations/semanticsubstrates/index.ts
deleted file mode 100644
index 7b24906f9a11525787f209f2b65e75293105464f..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './semanticsubstrates';
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.module.scss b/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.module.scss
deleted file mode 100644
index 3784b6597965313ec3b952d0945f1fccf5d820c9..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.module.scss
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-
-.container {
-  font-family: 'Open Sans', sans-serif;
-  display: flex;
-  flex-direction: column;
-  p {
-    margin: 0.5rem 0;
-    font-size: 13px;
-    font-weight: 600;
-    color: #2d2d2d;
-  }
-  .title {
-    color: #212020;
-    font-weight: 800;
-    line-height: 1.6em;
-    font-size: 16px;
-    text-align: center;
-    margin-bottom: 1rem;
-    margin-top: 0;
-  }
-  .subtitle {
-    color: #212020;
-    font-weight: 700;
-    font-size: 14px;
-    margin-top: 1.5rem;
-  }
-  .subsubtitle {
-    font-weight: 700;
-    margin-top: 0.9rem;
-  }
-  .subContainer {
-    .rulesContainer {
-      margin-top: 0.5rem;
-      .subsubtitle {
-        text-align: center;
-      }
-    }
-  }
-}
-
-.selectContainer {
-  display: flex;
-  align-items: center;
-  justify-content: space-around;
-  select {
-    width: 6rem;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    option {
-      width: 35px;
-      text-overflow: ellipsis;
-    }
-  }
-}
-
-.container {
-  // @global TODO FIX
-  .selection {
-    fill-opacity: 0.1;
-    stroke: lightgrey;
-  }
-
-  .delete-plot-icon {
-    & path {
-      opacity: 0.4;
-      transition: 0.1s;
-
-      transform-box: fill-box;
-    }
-    &:hover {
-      & path {
-        opacity: 0.8;
-        fill: #d00;
-        transform: scale(1.1);
-      }
-      & .lid {
-        transform: rotate(-15deg) scale(1.1);
-      }
-    }
-  }
-
-  display: flex;
-  flex-direction: row;
-
-  width: 100%;
-
-  margin-top: 10px;
-  margin-left: 30px;
-  overflow-y: auto;
-}
-
-.checkboxGroup {
-  display: flex;
-  flex-direction: column;
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.module.scss.d.ts b/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.module.scss.d.ts
deleted file mode 100644
index 1e99e35702b7241ffb7e3cf1132a12d9367a0fdb..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.module.scss.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-declare const classNames: {
-  readonly container: 'container';
-  readonly title: 'title';
-  readonly subtitle: 'subtitle';
-  readonly subsubtitle: 'subsubtitle';
-  readonly subContainer: 'subContainer';
-  readonly rulesContainer: 'rulesContainer';
-  readonly selectContainer: 'selectContainer';
-  readonly selection: 'selection';
-  readonly 'delete-plot-icon': 'delete-plot-icon';
-  readonly lid: 'lid';
-  readonly checkboxGroup: 'checkboxGroup';
-};
-export = classNames;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.stories.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.stories.tsx
deleted file mode 100644
index 8984fc8b91d855ed52dbb288abf4d4e006c577f2..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.stories.tsx
+++ /dev/null
@@ -1,98 +0,0 @@
-import {
-  assignNewGraphQueryResult,
-  graphQueryResultSlice,
-  querybuilderSlice,
-  schemaSlice,
-  setSchema,
-  visualizationSlice,
-} from '../../../data-access/store';
-import { configureStore } from '@reduxjs/toolkit';
-import { Meta } from '@storybook/react';
-import { Provider } from 'react-redux';
-import { VisualizationPanel } from '../../visualizationPanel';
-import { SchemaUtils } from '../../../schema/schema-utils';
-import { simpleSchemaAirportRaw } from '../../../mock-data/schema/simpleAirportRaw';
-import { bigMockQueryResults } from '../../../mock-data';
-import { setActiveVisualization } from '@graphpolaris/shared/lib/data-access/store/visualizationSlice';
-
-const Component: Meta<typeof VisualizationPanel> = {
-  title: 'Visualizations/SemanticSubstrates',
-  component: VisualizationPanel,
-  decorators: [(story) => <Provider store={Mockstore}>{story()}</Provider>],
-};
-
-const Mockstore = configureStore({
-  reducer: {
-    schema: schemaSlice.reducer,
-    graphQueryResult: graphQueryResultSlice.reducer,
-    visualize: visualizationSlice.reducer,
-    querybuilder: querybuilderSlice.reducer,
-  },
-});
-
-export const TestWithData = {
-  play: async () => {
-    const dispatch = Mockstore.dispatch;
-    const schema = SchemaUtils.schemaBackend2Graphology({
-      nodes: [
-        {
-          name: '1',
-          attributes: [{ name: 'a', type: 'string' }],
-        },
-      ],
-      edges: [
-        {
-          name: '12',
-          label: '12',
-          from: '1',
-          to: '1',
-          collection: '1c',
-          attributes: [{ name: 'a', type: 'string' }],
-        },
-      ],
-    });
-
-    dispatch(setSchema(schema.export()));
-    dispatch(
-      assignNewGraphQueryResult({
-        queryID: '1',
-        result: {
-          type: 'nodelink',
-          payload: {
-            nodes: [
-              { id: '1/a', attributes: { a: 's1' } },
-              { id: '1/b1', attributes: { a: 's1' } },
-              { id: '1/b2', attributes: { a: 's1' } },
-              { id: '1/b3', attributes: { a: 's1' } },
-            ],
-            edges: [
-              { id: '12/z1', from: '1/b1', to: '1/a', attributes: { a: 's1' } },
-              // { from: 'b2', to: 'a', attributes: {} },
-              // { from: 'b3', to: 'a', attributes: {} },
-              { id: '12/z1', from: '1/a', to: '1/b1', attributes: { a: 's1' } },
-            ],
-          },
-        },
-      }),
-    );
-    // dispatch(setActiveVisualization(Visualizations.SemanticSubstrates));
-  },
-};
-
-export const TestWithAirport = {
-  play: async () => {
-    const dispatch = Mockstore.dispatch;
-    const schema = SchemaUtils.schemaBackend2Graphology(simpleSchemaAirportRaw);
-
-    dispatch(setSchema(schema.export()));
-    dispatch(
-      assignNewGraphQueryResult({
-        queryID: '1',
-        result: { type: 'nodelink', payload: bigMockQueryResults },
-      }),
-    );
-    // dispatch(setActiveVisualization(Visualizations.SemanticSubstrates));
-  },
-};
-
-export default Component;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.tsx
deleted file mode 100644
index 5fd46c775164393a22959e91380b0ff7c7316bf2..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/semanticsubstrates.tsx
+++ /dev/null
@@ -1,496 +0,0 @@
-import { useAppDispatch, useGraphQueryResult, useSchemaGraph } from '@graphpolaris/shared/lib/data-access/store';
-import { useEffect, useRef, useState } from 'react';
-import { AxisLabel, EntitiesFromSchema, MinMaxType, PlotSpecifications, PlotType, RelationType } from './Types';
-import { isNodeLinkResult } from '../../shared/ResultNodeLinkParserUseCase';
-import styles from './semanticsubstrates.module.scss';
-import AddPlotButtonComponent from './subcomponents/AddPlotButtonComponent';
-import SVGCheckboxesWithSemanticSubstrLabel from './subcomponents/SVGCheckBoxComponent';
-import AddPlotPopup from './subcomponents/AddPlotPopup';
-import VisConfigPanelComponent from '../../shared/VisConfigPanel/VisConfigPanel';
-import Plot from './subcomponents/PlotComponent';
-import LinesBetweenPlots from './subcomponents/LinesBetweenPlotsComponent';
-import Color from 'color';
-import CalcEntityAttrNamesFromResultUseCase from './utils/CalcEntityAttrNamesFromResultUseCase';
-import CalcEntityAttrNamesFromSchemaUseCase from './utils/CalcEntityAttrNamesFromSchemaUseCase';
-import CalcDefaultPlotSpecsUseCase from './utils/CalcDefaultPlotSpecsUseCase';
-import ToPlotDataParserUseCase from './utils/ToPlotDataParserUseCase';
-import CalcXYMinMaxUseCase from './utils/CalcXYMinMaxUseCase';
-import CalcScaledPosUseCase from './utils/CalcScaledPositionsUseCase';
-import { useImmer } from 'use-immer';
-import FilterUseCase from './utils/FilterUseCase';
-
-export type SemanticSubstrateState = {
-  plotSpecifications: PlotSpecifications[];
-
-  nodeRadius: number;
-  nodeColors: string[];
-
-  gapBetweenPlots: number;
-
-  entitiesFromSchemaPruned: EntitiesFromSchema;
-
-  selectedAttributeNumerical: string;
-  selectedAttributeCatecorigal: string;
-  relationSelectedAttributeNumerical: string;
-  relationSelectedAttributeCatecorigal: string;
-  scaleCalculation: (x: number) => number;
-  colourCalculation: (x: string) => string;
-
-  relationScaleCalculation: (x: number) => number;
-  relationColourCalculation: (x: string) => string;
-
-  addPlotButtonAnchor: (EventTarget & SVGRectElement) | null;
-};
-
-export type SemanticSubstratePlotState = {
-  plots: PlotType[];
-
-  // Relations is a 3d array, with the first array denoting the outbound plot, the second array denotes the inbound plot
-  // For example, [plot1][plot2] will give all edges which are outbound from plot1 and ingoing to plot2
-  allRelations: RelationType[][][];
-  filteredRelations: RelationType[][][];
-
-  // Determines if connections [fromPlotIndex][toPlotIndex] will be shown
-  visibleRelations: boolean[][];
-
-  // Used for filtering the relations when brushing (brush is the square selection tool)
-  filtersPerPlot: { x: MinMaxType; y: MinMaxType }[];
-};
-
-/**
- * These functions are mock function for now, but can be properly implemented later down the line.
- */
-const scaleCalculation: (x: number) => number = (x: number) => {
-  return 3;
-};
-const colourCalculation: (x: string) => string = (x: string) => {
-  return '#d56a50';
-};
-const relationColourCalculation: (x: string) => string = (x: string) => {
-  return '#d49350';
-};
-const relationScaleCalculation: (x: number) => number = (x: number) => {
-  return 1;
-};
-
-export type SemanticSubstratesProps = {};
-
-export const SemanticSubstrates = ({}: SemanticSubstratesProps) => {
-  const graphQueryResult = useGraphQueryResult();
-  const schema = useSchemaGraph();
-  const [entitiesFromSchema, setEntitiesFromSchema] = useState<EntitiesFromSchema>({ entityNames: [], attributesPerEntity: {} });
-
-  const [state, setState] = useImmer<SemanticSubstrateState>({
-    plotSpecifications: [],
-    entitiesFromSchemaPruned: { entityNames: [], attributesPerEntity: {} },
-    selectedAttributeNumerical: 'long',
-    selectedAttributeCatecorigal: 'state',
-    relationSelectedAttributeNumerical: 'Distance',
-    relationSelectedAttributeCatecorigal: 'Day',
-    nodeRadius: 3,
-    nodeColors: ['#D56A50', '#1E9797', '#d49350', '#1e974a', '#D49350'],
-    gapBetweenPlots: 50,
-    scaleCalculation: scaleCalculation,
-    colourCalculation: colourCalculation,
-    relationScaleCalculation: relationScaleCalculation,
-    relationColourCalculation: relationColourCalculation,
-
-    addPlotButtonAnchor: null,
-  });
-
-  const [plotState, setPlotState] = useImmer<SemanticSubstratePlotState>({
-    allRelations: [],
-    filteredRelations: [],
-    plots: [],
-    filtersPerPlot: [],
-    visibleRelations: [],
-  });
-
-  useEffect(() => {
-    const ret = CalcEntityAttrNamesFromSchemaUseCase.calculate(schema);
-    setEntitiesFromSchema(ret);
-  }, [schema]);
-
-  useEffect(() => {
-    if (isNodeLinkResult(graphQueryResult)) {
-      // Only apply new result if we have a valid schema
-      if (entitiesFromSchema.entityNames.length === 0) {
-        console.log('Semantic substrates: No valid schema available.');
-        return;
-      }
-
-      setState((draft) => {
-        draft.entitiesFromSchemaPruned = CalcEntityAttrNamesFromResultUseCase.CalcEntityAttrNamesFromResult(
-          graphQueryResult,
-          entitiesFromSchema
-        );
-
-        // Generate default plots, if there aren't any currently
-        if (state.plotSpecifications.length == 0) {
-          draft.plotSpecifications = CalcDefaultPlotSpecsUseCase.calculate(graphQueryResult);
-        }
-
-        return draft;
-      });
-    } else {
-      console.error('Invalid query result!');
-    }
-
-    applyNewPlotSpecifications();
-  }, [graphQueryResult, entitiesFromSchema]);
-
-  useEffect(() => {
-    applyNewPlotSpecifications();
-  }, [state]);
-
-  /**
-   * Update the scaling of the nodes after a new attribute has been selected. This function is called when the new attribute has numbers as values.
-   * @param scale The scaling function provided by the config panel ViewModel.
-   */
-  function changeSelectedAttributeNumerical(scale: (x: number) => number): void {
-    setState({ ...state, scaleCalculation: scale });
-  }
-
-  /**
-   * Update the colours of the nodes after a new attribute has been selected. This function is called when the new attribute has NaNs as values.
-   * @param getColour The colouring function provided by the config panel ViewModel.
-   */
-  function changeSelectedAttributeCatecorigal(getColour: (x: string) => string): void {
-    setState({ ...state, colourCalculation: getColour });
-  }
-
-  /**
-   * Update the scaling of the nodes after a new relation attribute has been selected. This function is called when the new relation attribute has numbers as values.
-   * @param scale The scaling function provided by the config panel ViewModel.
-   */
-  function changeRelationSelectedAttributeNumerical(scale: (x: number) => number): void {
-    setState({ ...state, relationScaleCalculation: scale });
-  }
-
-  /**
-   * Update the colours of the nodes after a new relation attribute has been selected. This function is called when the new relation attribute has NaNs as values.
-   * @param getColour The colouring function provided by the config panel ViewModel.
-   */
-  function changeRelationSelectedAttributeCatecorigal(getColour: (x: string) => string): void {
-    setState({ ...state, relationColourCalculation: getColour });
-  }
-
-  /**
-   * Apply plot specifications to a node link query result. Calculates the plots and relations using the provided plot specs.
-   * @param {PlotSpecifications[]} plotSpecs The plotspecs to filter the new plots with.
-   * @param {NodeLinkResultType} queryResult The query result to apply the plot specs to.
-   */
-  function applyNewPlotSpecifications(): void {
-    // Parse the incoming data to plotdata with the auto generated plot specifications
-    const { plots, relations } = ToPlotDataParserUseCase.parseQueryResult(
-      graphQueryResult,
-      state.plotSpecifications,
-      state.relationSelectedAttributeNumerical,
-      state.relationSelectedAttributeCatecorigal,
-      state.relationScaleCalculation,
-      state.relationColourCalculation
-    );
-
-    setPlotState((draft) => {
-      draft.allRelations = relations;
-      // Clone relations to filteredRelations, because the filters are initialized with no constraints
-      draft.filteredRelations = relations.map((i) => i.map((j) => j.map((v) => v)));
-
-      // Calculate the scaled positions to the width and height of a plot
-      let yOffset = 0;
-      draft.plots = plots.map((plot, i) => {
-        const minmaxAxis = CalcXYMinMaxUseCase.calculate(plot);
-        const scaledPositions = CalcScaledPosUseCase.calculate(plot, minmaxAxis.x, minmaxAxis.y);
-
-        // Collect all possible values for a certain attribute, used for the autocomplete title field
-        const possibleTitleAttributeValues = graphQueryResult.nodes.reduce((values: Set<string>, node) => {
-          // Filter on nodes which are of the entity type in the plotspec
-          // Use a Set so we only collect unique values
-          if (node.label == state.plotSpecifications[i].entity && state.plotSpecifications[i].labelAttributeType in node.attributes)
-            values.add(node.attributes[state.plotSpecifications[i].labelAttributeType] as string);
-          return values;
-        }, new Set<string>());
-
-        // Accumulate the yOffset for each plot, with the width and gapbetweenplots
-        const thisYOffset = yOffset;
-        yOffset += plot.height + state.gapBetweenPlots;
-        return {
-          title: plot.title,
-          nodes: plot.nodes.map((node, i) => {
-            return { ...node, scaledPosition: scaledPositions[i] };
-          }),
-          selectedAttributeNumerical: state.selectedAttributeNumerical,
-          scaleCalculation: state.scaleCalculation,
-          selectedAttributeCatecorigal: state.selectedAttributeCatecorigal,
-          colourCalculation: state.colourCalculation,
-          minmaxXAxis: minmaxAxis.x,
-          minmaxYAxis: minmaxAxis.y,
-          width: plot.width,
-          height: plot.height,
-          yOffset: thisYOffset,
-          possibleTitleAttributeValues: Array.from(possibleTitleAttributeValues),
-        };
-      });
-
-      // Initialize filters with no constraints
-      draft.filtersPerPlot = plotState.plots.map((plot) => {
-        return {
-          x: { min: plot.minmaxXAxis.min, max: plot.minmaxXAxis.max },
-          y: { min: plot.minmaxYAxis.min, max: plot.minmaxYAxis.max },
-        };
-      });
-
-      // Initialize the visible relations with all false values
-      if (draft.visibleRelations.length !== draft.plots.length) {
-        draft.visibleRelations = new Array(draft.plots.length).fill([]).map(() => new Array(draft.plots.length).fill(false));
-      }
-
-      return draft;
-    });
-  }
-
-  /**
-   * Updates the visualisation when a checkbox is pressed.
-   * @param fromPlotIndex Which plot the connections should come from.
-   * @param toPlotIndex Which plot the connections should go to.
-   * @param value Whether the box has been checked or not.
-   */
-  function onCheckboxChanged(fromPlotIndex: number, toPlotIndex: number, value: boolean): void {
-    setPlotState((draft) => {
-      draft.visibleRelations[fromPlotIndex][toPlotIndex] = value;
-      return draft;
-    });
-  }
-
-  /** Callback for the square selection tool on the plots.
-   * Changes the filter of the plot index and applies this new filter.
-   * @param {number} plotIndex The index of the plot where there is brushed.
-   * @param {MinMaxType} xRange The min and max x values of the selection.
-   * @param {MinMaxType} yRange The min and max y values of the selection.
-   */
-  function onBrush(plotIndex: number, xRange: MinMaxType, yRange: MinMaxType) {
-    setPlotState((draft) => {
-      // Change the filter of the corresponding plot
-      draft.filtersPerPlot[plotIndex] = {
-        x: xRange,
-        y: yRange,
-      };
-
-      // Apply the new filter to the relations
-      FilterUseCase.filterRelations(draft.allRelations, draft.filteredRelations, draft.plots, draft.filtersPerPlot, plotIndex);
-      return draft;
-    });
-  }
-
-  /**
-   * Prepends a new plot specifications and re-applies this to the current nodelink query result.
-   * @param {string} entity The entity filter for the new plot.
-   * @param {string} attributeName The attribute to filter on for the new plot.
-   * @param {string} attributeValue The value for the attributeto filter on for the new plot.
-   */
-  function addPlot(entity: string, attributeName: string, attributeValue: string): void {
-    setState((draft) => {
-      draft.plotSpecifications = [
-        {
-          entity: entity,
-          labelAttributeType: attributeName,
-          labelAttributeValue: attributeValue,
-          xAxis: AxisLabel.evenlySpaced, // Use default evenly spaced and # outbound connections on the x and y axis
-          yAxis: AxisLabel.outboundConnections,
-          xAxisAttributeType: '',
-          yAxisAttributeType: '',
-          width: 800, // The default width and height are 800x200
-          height: 200,
-        },
-        ...state.plotSpecifications,
-      ];
-
-      return draft;
-    });
-  }
-
-  /**
-   * Callback when the delete button of a plot is pressed.
-   * Will remove values at plotIndex from the `plotSpecifications`, `plots` , `filtersPerPlot` , `relations` , `filteredRelations` and `visibleRelations`.
-   * @param {number} plotIndex The index for the plot that needs to be deleted.
-   */
-  function onDelete(plotIndex: number): void {
-    setState((draft) => {
-      draft.plotSpecifications.splice(plotIndex, 1);
-      return draft;
-    });
-
-    setPlotState((draft) => {
-      // Recalculate the plot y offsets with this plot removed.
-      for (let i = plotIndex + 1; i < draft.plots.length; i++)
-        draft.plots[i].yOffset -= draft.plots[plotIndex].height + state.gapBetweenPlots;
-
-      draft.plots.splice(plotIndex, 1);
-      draft.filtersPerPlot.splice(plotIndex, 1);
-
-      draft.allRelations.splice(plotIndex, 1);
-      draft.allRelations = draft.allRelations.map((r) => r.filter((_, i) => i != plotIndex));
-      draft.filteredRelations.splice(plotIndex, 1);
-      draft.filteredRelations = draft.filteredRelations.map((r) => r.filter((_, i) => i != plotIndex));
-      draft.visibleRelations.splice(plotIndex, 1);
-      draft.visibleRelations = draft.visibleRelations.map((r) => r.filter((_, i) => i != plotIndex));
-
-      return draft;
-    });
-  }
-
-  /**
-   * Changes the axislabel of a plot.
-   * @param {number} plotIndex The plot number for which to change an axis.
-   * @param {'x' | 'y'} axis The axis to change. Can only be 'x' or 'y'.
-   * @param {string} newLabel The axis label.
-   */
-  function onAxisLabelChanged(plotIndex: number, axis: 'x' | 'y', newLabel: string): void {
-    setState((draft) => {
-      const axisLabels: string[] = Object.values(AxisLabel);
-      if (axisLabels.includes(newLabel) && newLabel != AxisLabel.byAttribute) {
-        // If the new axis label is one of "# outbound conn", "# inbound conn" or "evenly spaced"
-        if (axis === 'x') draft.plotSpecifications[plotIndex].xAxis = newLabel as AxisLabel;
-        else if (axis === 'y') draft.plotSpecifications[plotIndex].yAxis = newLabel as AxisLabel;
-      } else {
-        // Else it is an attribute of the entity
-        if (axis === 'x') {
-          draft.plotSpecifications[plotIndex].xAxis = AxisLabel.byAttribute;
-          draft.plotSpecifications[plotIndex].xAxisAttributeType = newLabel;
-        } else if (axis === 'y') {
-          draft.plotSpecifications[plotIndex].yAxis = AxisLabel.byAttribute;
-          draft.plotSpecifications[plotIndex].yAxisAttributeType = newLabel;
-        }
-      }
-
-      return draft;
-    });
-  }
-
-  /**
-   * Applies the new plot filter. Called when the user changes the plot title/filter.
-   * @param {number} plotIndex The plotindex of which the title is changed.
-   * @param {string} entity The new entity value for the plot filter, might be unchanged.
-   * @param {string} attrName The new attribute name for the plot filter, might be unchanged.
-   * @param {string} attrValue The new attribute value for the plot filter.
-   */
-  function onPlotTitleChanged(plotIndex: number, entity: string, attrName: string, attrValue: string): void {
-    // If the entity or the attrName changed, auto select a default attrValue
-    if (
-      (entity != state.plotSpecifications[plotIndex].entity || attrName != state.plotSpecifications[plotIndex].labelAttributeType) &&
-      attrValue == state.plotSpecifications[plotIndex].labelAttributeValue
-    ) {
-      const firstValidNode = graphQueryResult.nodes.find((node) => node.label == entity && attrName in node.attributes);
-      if (firstValidNode != undefined) attrValue = firstValidNode.attributes[attrName] as string;
-    }
-
-    setState((draft) => {
-      draft.plotSpecifications[plotIndex] = {
-        ...draft.plotSpecifications[plotIndex],
-        entity,
-        labelAttributeType: attrName,
-        labelAttributeValue: attrValue,
-      };
-
-      return draft;
-    });
-  }
-
-  const plotElements: JSX.Element[] = [];
-  for (let i = 0; i < plotState.plots.length; i++) {
-    if (!state.plotSpecifications?.[i]) continue;
-
-    plotElements.push(
-      <Plot
-        key={plotState.plots[i].title + i}
-        plotData={plotState.plots[i]}
-        plotSpecification={state.plotSpecifications[i]}
-        entitiesFromSchema={entitiesFromSchema}
-        nodeColor={state.nodeColors[i]}
-        nodeRadius={state.nodeRadius}
-        width={plotState.plots[i].width}
-        height={plotState.plots[i].height}
-        selectedAttributeNumerical={plotState.plots[i].selectedAttributeNumerical}
-        selectedAttributeCatecorigal={plotState.plots[i].selectedAttributeCatecorigal}
-        scaleCalculation={plotState.plots[i].scaleCalculation}
-        colourCalculation={plotState.plots[i].colourCalculation}
-        onBrush={(xRange: MinMaxType, yRange: MinMaxType) =>
-          // Call the onBrush method with the index of this plot
-          onBrush(i, xRange, yRange)
-        }
-        onDelete={() => onDelete(i)}
-        onAxisLabelChanged={(axis: 'x' | 'y', value: string) => onAxisLabelChanged(i, axis, value)}
-        onTitleChanged={(entity: string, attrName: string, attrValue: string) => onPlotTitleChanged(i, entity, attrName, attrValue)}
-      />
-    );
-  }
-
-  // Create the arrow-lines between the plots.
-  const linesBetween: JSX.Element[] = [];
-  for (let i = 0; i < plotState.filteredRelations.length; i++) {
-    for (let j = 0; j < plotState.filteredRelations[i].length; j++) {
-      let color = Color(state.nodeColors[i]);
-      color = i == j ? color.lighten(0.3) : color.darken(0.3);
-      if (plotState.visibleRelations?.[i]?.[j]) {
-        // Only create the lines if the checkbox is ticked
-        linesBetween.push(
-          <LinesBetweenPlots
-            key={plotState.plots[i].title + i + '-' + plotState.plots[j].title + j}
-            fromPlot={plotState.plots[i]}
-            toPlot={plotState.plots[j]}
-            relations={plotState.filteredRelations[i][j]}
-            color={color.hex()}
-            nodeRadius={state.nodeRadius}
-          />
-        );
-      }
-    }
-  }
-
-  useEffect(() => {}, [state]);
-
-  const heightOfAllPlots =
-    plotState.plots.length > 0
-      ? plotState.plots[plotState.plots.length - 1].yOffset + plotState.plots[plotState.plots.length - 1].height + 50
-      : 0;
-  return (
-    <div className={styles.container}>
-      <div style={{ width: '100%', height: '100%' }}>
-        <svg style={{ width: '100%', height: heightOfAllPlots + 60 }}>
-          <AddPlotButtonComponent
-            x={750}
-            onClick={(event: React.MouseEvent<SVGRectElement>) => setState({ ...state, addPlotButtonAnchor: event.currentTarget })}
-          />
-          <g transform={'translate(60,60)'}>
-            <SVGCheckboxesWithSemanticSubstrLabel
-              plots={plotState.plots}
-              relations={plotState.allRelations}
-              visibleRelations={plotState.visibleRelations}
-              nodeColors={state.nodeColors}
-              onCheckboxChanged={(fromPlot: number, toPlot: number, value: boolean) => onCheckboxChanged(fromPlot, toPlot, value)}
-            />
-            {plotElements}
-            {linesBetween},
-          </g>
-        </svg>
-      </div>
-      <AddPlotPopup
-        open={Boolean(state.addPlotButtonAnchor)}
-        anchorEl={state.addPlotButtonAnchor}
-        entitiesFromSchema={entitiesFromSchema}
-        nodeLinkResultNodes={graphQueryResult.nodes}
-        handleClose={() => setState({ ...state, addPlotButtonAnchor: null })}
-        addPlot={(entity: string, attributeName: string, attributeValue: string) => addPlot(entity, attributeName, attributeValue)}
-      />
-      <VisConfigPanelComponent>
-        {/* <FSSConfigPanel
-          fssViewModel={semanticSubstratesViewModel.current}
-          graph={state.nodeLinkQueryResult}
-        // currentColours={currentColours}
-        /> */}
-      </VisConfigPanelComponent>
-    </div>
-  );
-};
-
-export default SemanticSubstrates;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotButtonComponent.module.scss b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotButtonComponent.module.scss
deleted file mode 100644
index 52b6ee9144fdb85611b120a80e97dd5aa288babf..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotButtonComponent.module.scss
+++ /dev/null
@@ -1,63 +0,0 @@
-.root {
-  &:hover {
-    & .display {
-      & .background {
-        fill: '#009100';
-        transition-delay: 0s;
-      }
-      & .plus {
-        transform: translate(-4px, 0);
-        transition-delay: 0s;
-
-        & line {
-          transition: 0.2s;
-          transition-delay: 0s;
-          stroke-width: 3;
-        }
-        & .xAxis {
-          transform: translate(0, 0) scale(1, 1);
-        }
-        & .yAxis {
-          transform: translate(0, 0);
-        }
-        & .nodes {
-          opacity: 0;
-          transition-delay: 0s;
-        }
-      }
-    }
-  }
-}
-
-.background {
-  transition: 0.1s;
-  transition-delay: 0.1s;
-}
-
-.plus {
-  transform-box: fill-box;
-  transform-origin: center center;
-  transition: 0.2s;
-  transition-delay: 0.1s;
-  transform: translate(0, 0);
-
-  & line {
-    transition: 0.2s;
-    transition-delay: 0.1s;
-    stroke-width: 1;
-  }
-
-  & .nodes {
-    transition-delay: 0.1s;
-  }
-}
-
-.xAxis {
-  transform-box: fill-box;
-  transform-origin: center right;
-  transform: translate(0, 5px) scale(1.4, 1);
-}
-
-.yAxis {
-  transform: translate(-11px, 0);
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotButtonComponent.module.scss.d.ts b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotButtonComponent.module.scss.d.ts
deleted file mode 100644
index 022b03b83bb5e7f5680405e10e6a111e5db37c11..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotButtonComponent.module.scss.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-declare const classNames: {
-  readonly root: 'root';
-  readonly display: 'display';
-  readonly background: 'background';
-  readonly plus: 'plus';
-  readonly xAxis: 'xAxis';
-  readonly yAxis: 'yAxis';
-  readonly nodes: 'nodes';
-};
-export = classNames;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotButtonComponent.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotButtonComponent.tsx
deleted file mode 100644
index ee8f9803a02effdc9f6257743e793967ecaef5fc..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotButtonComponent.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-import React from 'react';
-import styles from './AddPlotButtonComponent.module.scss';
-
-/**
- * Contains a component that renders the "add plot" button with SVG elements for semantic substrates.
- * @param props The x and y, and an on click event function.
- */
-export default function AddPlotButtonComponent(props: { x?: number; y?: number; onClick(event: React.MouseEvent<SVGRectElement>): void }) {
-  return (
-    <g transform={`translate(${props.x || 0},${props.y || 0})`} className={styles.root}>
-      <g className={'display'}>
-        <rect className={styles.background} x="5" y="1" width="108" height="29" rx="3" fill="green" />
-        <path
-          d="M20.986 18.264H17.318L16.73 20H14.224L17.78 10.172H20.552L24.108 20H21.574L20.986 18.264ZM20.37 16.416L19.152 12.818L17.948 16.416H20.37ZM24.7143 16.08C24.7143 15.2773 24.8636 14.5727 25.1623 13.966C25.4703 13.3593 25.8856 12.8927 26.4083 12.566C26.9309 12.2393 27.5143 12.076 28.1583 12.076C28.6716 12.076 29.1383 12.1833 29.5583 12.398C29.9876 12.6127 30.3236 12.902 30.5663 13.266V9.64H32.9603V20H30.5663V18.88C30.3423 19.2533 30.0203 19.552 29.6003 19.776C29.1896 20 28.7089 20.112 28.1583 20.112C27.5143 20.112 26.9309 19.9487 26.4083 19.622C25.8856 19.286 25.4703 18.8147 25.1623 18.208C24.8636 17.592 24.7143 16.8827 24.7143 16.08ZM30.5663 16.094C30.5663 15.4967 30.3983 15.0253 30.0623 14.68C29.7356 14.3347 29.3343 14.162 28.8583 14.162C28.3823 14.162 27.9763 14.3347 27.6403 14.68C27.3136 15.016 27.1503 15.4827 27.1503 16.08C27.1503 16.6773 27.3136 17.1533 27.6403 17.508C27.9763 17.8533 28.3823 18.026 28.8583 18.026C29.3343 18.026 29.7356 17.8533 30.0623 17.508C30.3983 17.1627 30.5663 16.6913 30.5663 16.094ZM34.2162 16.08C34.2162 15.2773 34.3656 14.5727 34.6642 13.966C34.9722 13.3593 35.3876 12.8927 35.9102 12.566C36.4329 12.2393 37.0162 12.076 37.6602 12.076C38.1736 12.076 38.6402 12.1833 39.0602 12.398C39.4896 12.6127 39.8256 12.902 40.0682 13.266V9.64H42.4622V20H40.0682V18.88C39.8442 19.2533 39.5222 19.552 39.1022 19.776C38.6916 20 38.2109 20.112 37.6602 20.112C37.0162 20.112 36.4329 19.9487 35.9102 19.622C35.3876 19.286 34.9722 18.8147 34.6642 18.208C34.3656 17.592 34.2162 16.8827 34.2162 16.08ZM40.0682 16.094C40.0682 15.4967 39.9002 15.0253 39.5642 14.68C39.2376 14.3347 38.8362 14.162 38.3602 14.162C37.8842 14.162 37.4782 14.3347 37.1422 14.68C36.8156 15.016 36.6522 15.4827 36.6522 16.08C36.6522 16.6773 36.8156 17.1533 37.1422 17.508C37.4782 17.8533 37.8842 18.026 38.3602 18.026C38.8362 18.026 39.2376 17.8533 39.5642 17.508C39.9002 17.1627 40.0682 16.6913 40.0682 16.094ZM49.555 13.294C49.7883 12.93 50.1103 12.636 50.521 12.412C50.9316 12.188 51.4123 12.076 51.963 12.076C52.607 12.076 53.1903 12.2393 53.713 12.566C54.2356 12.8927 54.6463 13.3593 54.945 13.966C55.253 14.5727 55.407 15.2773 55.407 16.08C55.407 16.8827 55.253 17.592 54.945 18.208C54.6463 18.8147 54.2356 19.286 53.713 19.622C53.1903 19.9487 52.607 20.112 51.963 20.112C51.4216 20.112 50.941 20 50.521 19.776C50.1103 19.552 49.7883 19.2627 49.555 18.908V23.724H47.161V12.188H49.555V13.294ZM52.971 16.08C52.971 15.4827 52.803 15.016 52.467 14.68C52.1403 14.3347 51.7343 14.162 51.249 14.162C50.773 14.162 50.367 14.3347 50.031 14.68C49.7043 15.0253 49.541 15.4967 49.541 16.094C49.541 16.6913 49.7043 17.1627 50.031 17.508C50.367 17.8533 50.773 18.026 51.249 18.026C51.725 18.026 52.131 17.8533 52.467 17.508C52.803 17.1533 52.971 16.6773 52.971 16.08ZM59.0569 9.64V20H56.6629V9.64H59.0569ZM64.3478 20.112C63.5825 20.112 62.8918 19.9487 62.2758 19.622C61.6692 19.2953 61.1885 18.8287 60.8338 18.222C60.4885 17.6153 60.3158 16.906 60.3158 16.094C60.3158 15.2913 60.4932 14.5867 60.8478 13.98C61.2025 13.364 61.6878 12.8927 62.3038 12.566C62.9198 12.2393 63.6105 12.076 64.3758 12.076C65.1412 12.076 65.8318 12.2393 66.4478 12.566C67.0638 12.8927 67.5492 13.364 67.9038 13.98C68.2585 14.5867 68.4358 15.2913 68.4358 16.094C68.4358 16.8967 68.2538 17.606 67.8898 18.222C67.5352 18.8287 67.0452 19.2953 66.4198 19.622C65.8038 19.9487 65.1132 20.112 64.3478 20.112ZM64.3478 18.04C64.8052 18.04 65.1925 17.872 65.5098 17.536C65.8365 17.2 65.9998 16.7193 65.9998 16.094C65.9998 15.4687 65.8412 14.988 65.5238 14.652C65.2158 14.316 64.8332 14.148 64.3758 14.148C63.9092 14.148 63.5218 14.316 63.2138 14.652C62.9058 14.9787 62.7518 15.4593 62.7518 16.094C62.7518 16.7193 62.9012 17.2 63.1998 17.536C63.5078 17.872 63.8905 18.04 64.3478 18.04ZM74.0599 17.97V20H72.8419C71.9739 20 71.2972 19.79 70.8119 19.37C70.3266 18.9407 70.0839 18.2453 70.0839 17.284V14.176H69.1319V12.188H70.0839V10.284H72.4779V12.188H74.0459V14.176H72.4779V17.312C72.4779 17.5453 72.5339 17.7133 72.6459 17.816C72.7579 17.9187 72.9446 17.97 73.2059 17.97H74.0599Z"
-          fill="white"
-        />
-        <g className={styles.plus}>
-          <line className={styles.xAxis} x1="103.987" y1="15.6278" x2="88.9872" y2="15.5" stroke="white" strokeWidth="3" />
-          <line className={styles.yAxis} x1="96.5" y1="8" x2="96.5" y2="23" stroke="white" strokeWidth="3" />
-          <g className={'nodes'}>
-            <circle cx="89" cy="16" r="1" fill="white" />
-            <circle cx="94" cy="14" r="1" fill="white" />
-            <circle cx="99" cy="14" r="1" fill="white" />
-          </g>
-        </g>
-      </g>
-      <g>
-        <rect x="5" y="1" width="108" height="29" rx="3" fill="transparent" onClick={(e) => props.onClick(e)} />
-      </g>
-    </g>
-  );
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotPopup.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotPopup.tsx
deleted file mode 100644
index 0ea7c200d330d16ef13302a8bf3124b4e1d0292d..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/AddPlotPopup.tsx
+++ /dev/null
@@ -1,190 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-import React, { ReactElement } from 'react';
-import { EntitiesFromSchema } from '../Types';
-import OptimizedAutocomplete from './OptimizedAutocomplete';
-import { Node } from '@graphpolaris/shared/lib/data-access';
-
-/** The typing for the props of the plot popups */
-type AddPlotPopupProps = {
-  anchorEl: Element | null;
-  open: boolean;
-  entitiesFromSchema: EntitiesFromSchema;
-  nodeLinkResultNodes: Node[];
-
-  // Called when the the popup should close.
-  handleClose(): void;
-  // Called when the has filled in the required field and pressed the "add" button.
-  addPlot(entity: string, attributeName: string, attributeValue: string): void;
-};
-
-/** The variables in the state of the plot popups */
-type AddPlotPopupState = {
-  entity: string;
-  attributeName: string;
-  isButtonEnabled: boolean;
-};
-
-/** React component that renders a popup with input fields for adding a plot. */
-export default class AddPlotPopup extends React.Component<AddPlotPopupProps, AddPlotPopupState> {
-  classes: any;
-  possibleAttrValues: string[] = [];
-  attributeNameOptions: string[] = [];
-  attributeValue = '?';
-
-  constructor(props: AddPlotPopupProps) {
-    super(props);
-
-    this.state = {
-      entity: '',
-      attributeName: '',
-      isButtonEnabled: false,
-    };
-  }
-
-  /**
-   * Called when the entity field is changed.
-   * Sets the `attributeNameOptions`, resets the `attributeValue` and sets the state.
-   * @param {React.ChangeEvent<HTMLInputElement>} event The event that is given by the input field when a change event is fired.
-   */
-  private entityChanged = (event: React.ChangeEvent<HTMLInputElement>) => {
-    const newEntity = event.target.value;
-
-    this.attributeNameOptions = [];
-    if (this.props.entitiesFromSchema.attributesPerEntity[newEntity])
-      this.attributeNameOptions = this.props.entitiesFromSchema.attributesPerEntity[newEntity].textAttributeNames;
-
-    this.attributeValue = '';
-    this.setState({
-      ...this.state,
-      entity: newEntity,
-      attributeName: '',
-      isButtonEnabled: false,
-    });
-  };
-
-  /**
-   * Called when the attribute name field is changed.
-   * Sets the possible attribute values, resets the `attributeValue`, enables the "Add" button if all fields valid and sets the state.
-   * @param {React.ChangeEvent<HTMLInputElement>} event The event that is given by the input field when a change event is fired.
-   */
-  private attrNameChanged = (event: React.ChangeEvent<HTMLInputElement>) => {
-    const newAttrName = event.target.value;
-
-    this.possibleAttrValues = Array.from(
-      this.props.nodeLinkResultNodes.reduce((values: Set<string>, node) => {
-        if (this.state.entity == node.label && newAttrName in node.attributes) values.add(node.attributes[newAttrName] as string);
-        return values;
-      }, new Set<string>())
-    );
-
-    // Reset attribute value.
-    this.attributeValue = '';
-    // Filter the possible attribute values from the entity attributes from the schema.
-    const isButtonDisabled =
-      this.props.entitiesFromSchema.entityNames.includes(this.state.entity) &&
-      this.props.entitiesFromSchema.attributesPerEntity[this.state.entity].textAttributeNames.includes(newAttrName);
-    this.setState({
-      ...this.state,
-      attributeName: newAttrName,
-      isButtonEnabled: isButtonDisabled,
-    });
-  };
-
-  /**
-   * Called when the user clicks the "Add" button.
-   * Checks if all fields are valid before calling `handleClose()` and `addPlot()`.
-   */
-  private addPlotButtonClicked = () => {
-    if (
-      this.props.entitiesFromSchema.entityNames.includes(this.state.entity) &&
-      this.props.entitiesFromSchema.attributesPerEntity[this.state.entity].textAttributeNames.includes(this.state.attributeName)
-    ) {
-      this.props.handleClose();
-      this.props.addPlot(this.state.entity, this.state.attributeName, this.attributeValue == '' ? '?' : this.attributeValue);
-    } else
-      this.setState({
-        ...this.state,
-        isButtonEnabled: false,
-      });
-  };
-
-  render(): ReactElement {
-    const { open, anchorEl, entitiesFromSchema, handleClose } = this.props;
-
-    // Retrieve the possible entity options. If none available, set helper message.
-    let entityMenuItems: ReactElement[];
-    if (this.props.entitiesFromSchema.entityNames.length > 0)
-      entityMenuItems = entitiesFromSchema.entityNames.map((entity) => (
-        <option key={entity} value={entity}>
-          {entity}
-        </option>
-      ));
-    else
-      entityMenuItems = [
-        <option key="placeholder" value="" disabled>
-          No schema data available
-        </option>,
-      ];
-
-    // Retrieve the possible attributeName options. If none available, set helper message.
-    let attributeNameMenuItems: ReactElement[];
-    if (this.attributeNameOptions.length > 0)
-      attributeNameMenuItems = this.attributeNameOptions.map((attribute) => (
-        <option key={attribute} value={attribute}>
-          {attribute}
-        </option>
-      ));
-    else
-      attributeNameMenuItems = [
-        <option key="placeholder" value="" disabled>
-          First select an entity
-        </option>,
-      ];
-
-    return (
-      <div>
-        <dialog open={open} onClose={handleClose} id={'simple-addplot-popover'}>
-          <div style={{ padding: 20, paddingTop: 10, display: 'flex' }}>
-            <div>
-              <label>Entity</label>
-              <input id="standard-select-entity" style={{ minWidth: 120 }} value={this.state.entity} onChange={this.entityChanged}>
-                {entityMenuItems}
-              </input>
-            </div>
-            <div>
-              <label>Attribute</label>
-              <input
-                id="standard-select-attribute"
-                style={{ minWidth: 120, marginLeft: 20, marginRight: 20 }}
-                value={this.state.attributeName}
-                onChange={this.attrNameChanged}
-              >
-                {attributeNameMenuItems}
-              </input>
-            </div>
-            <OptimizedAutocomplete
-              currentValue={this.attributeValue}
-              options={this.possibleAttrValues}
-              onChange={(v) => (this.attributeValue = v)}
-              useMaterialStyle={{ label: 'Value', helperText: '' }}
-            />
-            <div style={{ height: 40, paddingTop: 10, marginLeft: 30 }}>
-              <button className="btn btn-outline" disabled={!this.state.isButtonEnabled} onClick={this.addPlotButtonClicked}>
-                <span style={{ fontWeight: 'bold' }}>Add</span>
-              </button>
-            </div>
-          </div>
-        </dialog>
-      </div>
-    );
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/BrushComponent.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/BrushComponent.tsx
deleted file mode 100644
index 839f6e6af6276fde10288bdae46a5cd7b8c81d6a..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/BrushComponent.tsx
+++ /dev/null
@@ -1,224 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-import React, { ReactElement } from 'react';
-import { AxisLabel, MinMaxType } from '../Types';
-import { ScaleLinear, brush, scaleLinear, select } from 'd3';
-
-/** The variables in the props of the brush component*/
-type BrushProps = {
-  width: number;
-  height: number;
-
-  xAxisDomain: MinMaxType;
-  yAxisDomain: MinMaxType;
-
-  xAxisLabel: AxisLabel;
-  yAxisLabel: AxisLabel;
-
-  onBrush(xRange: MinMaxType, yRange: MinMaxType): void;
-};
-
-/** The variables in the state of the brush component*/
-type BrushState = {
-  xBrushRange: MinMaxType;
-  yBrushRange: MinMaxType;
-  brushActive: boolean;
-};
-
-/**
- * Takes care of the brush (square selection) functionality for a plot.
- * Also renders the x y selections ticks with their values.
- */
-export default class BrushComponent extends React.Component<BrushProps, BrushState> {
-  ref = React.createRef<SVGGElement>();
-
-  xAxisScale: ScaleLinear<number, number, never> = scaleLinear();
-  yAxisScale: ScaleLinear<number, number, never> = scaleLinear();
-
-  constructor(props: BrushProps) {
-    super(props);
-    this.state = {
-      xBrushRange: { min: 0, max: this.props.width },
-      yBrushRange: { min: 0, max: this.props.height },
-      brushActive: false,
-    };
-
-    this.updateXYAxisScaleFunctions();
-  }
-
-  public componentDidMount(): void {
-    const d3Selected = select(this.ref.current);
-
-    // Add square selection tool to this plot with the width and height. Also called brush.
-    d3Selected.append('g').call(
-      brush()
-        .extent([
-          [0, 0],
-          [this.props.width, this.props.height],
-        ])
-        .on('brush', (e) => {
-          this.onBrush(e.selection);
-        })
-        .on('end', (e) => {
-          this.onBrushEnd(e.selection);
-        })
-    );
-  }
-
-  public componentDidUpdate(prevProps: BrushProps): void {
-    if (this.props.xAxisDomain != prevProps.xAxisDomain || this.props.yAxisDomain != prevProps.yAxisDomain) {
-      this.updateXYAxisScaleFunctions();
-    }
-  }
-
-  /** Updates the X Y axis scale for the plots */
-  private updateXYAxisScaleFunctions(): void {
-    // Create the x axis scale funtion with d3
-    const xAxisDomain = [this.props.xAxisDomain.min, this.props.xAxisDomain.max];
-    this.xAxisScale = scaleLinear().domain(xAxisDomain).range([0, this.props.width]);
-
-    // Create the y axis scale funtion with d3
-    const yAxisDomain = [this.props.yAxisDomain.max, this.props.yAxisDomain.min];
-    this.yAxisScale = scaleLinear().domain(yAxisDomain).range([0, this.props.height]);
-  }
-
-  /**
-   * Called when brushing. Brush will be displayed and the props callback gets called.
-   * @param {number[][]} selection A 2D array where the first row is the topleft coordinates and the second bottomright.
-   */
-  private onBrush(selection: number[][] | undefined): void {
-    if (selection != undefined) {
-      // Set the state with the inverted selection, this will give us the original positions, (the values)
-      const newState: BrushState = {
-        xBrushRange: {
-          min: this.xAxisScale.invert(selection[0][0]),
-          max: this.xAxisScale.invert(selection[1][0]),
-        },
-        yBrushRange: {
-          min: this.yAxisScale.invert(selection[1][1]),
-          max: this.yAxisScale.invert(selection[0][1]),
-        },
-        brushActive: true,
-      };
-      this.setState(newState);
-
-      // Add event when brushing, call the onBrush with start and end positions
-      this.props.onBrush(newState.xBrushRange, newState.yBrushRange);
-    }
-  }
-
-  /**
-   * Called when brush ends. If the selection was empty reset selection to cover whole plot and notify viewmodel.
-   * @param {number[][]} selection A 2D array where the first row is the topleft coordinates and the second bottomright.
-   */
-  private onBrushEnd(selection: number[][] | undefined): void {
-    if (selection == undefined) {
-      // Set the state with the inverted selection, this will give us the original positions, (the values)
-      const newState: BrushState = {
-        xBrushRange: {
-          min: this.xAxisScale.invert(0),
-          max: this.xAxisScale.invert(this.props.width),
-        },
-        yBrushRange: {
-          min: this.yAxisScale.invert(this.props.height),
-          max: this.yAxisScale.invert(0),
-        },
-        brushActive: false,
-      };
-      this.setState(newState);
-
-      // Add event when brushing, call the onBrush with start and end positions
-      this.props.onBrush(newState.xBrushRange, newState.yBrushRange);
-    }
-  }
-
-  /**
-   * Renders the X axis brush ticks depending on the brushActive state.
-   * @param xRangePositions The x positions of the brush ticks.
-   */
-  private renderXAxisBrushTicks(xRangePositions: MinMaxType): ReactElement {
-    if (this.state.brushActive && this.props.xAxisLabel != AxisLabel.evenlySpaced) {
-      return (
-        <g>
-          <line
-            x1={xRangePositions.min}
-            y1={this.props.height - 5}
-            x2={xRangePositions.min}
-            y2={this.props.height}
-            stroke={'red'}
-            strokeWidth={1}
-            fill={'transparent'}
-          />
-          <text x={xRangePositions.min} y={this.props.height - 8} textAnchor="middle" fontSize={10}>
-            {+this.state.xBrushRange.min.toFixed(2)}
-          </text>
-          <line
-            x1={xRangePositions.max}
-            y1={this.props.height - 5}
-            x2={xRangePositions.max}
-            y2={this.props.height}
-            stroke={'red'}
-            strokeWidth={1}
-            fill={'transparent'}
-          />
-          <text x={xRangePositions.max} y={this.props.height - 8} textAnchor="middle" fontSize={10}>
-            {+this.state.xBrushRange.max.toFixed(2)}
-          </text>
-        </g>
-      );
-    }
-
-    return <></>;
-  }
-
-  /**
-   * Renders the Y axis brush ticks depending on the brushActive state.
-   * @param yRangePositions The y positions of the brush ticks.
-   */
-  private renderYAxisBrushTicks(yRangePositions: MinMaxType): ReactElement {
-    if (this.state.brushActive && this.props.yAxisLabel != AxisLabel.evenlySpaced) {
-      return (
-        <g>
-          <line x1={0} y1={yRangePositions.min} x2={5} y2={yRangePositions.min} stroke={'red'} strokeWidth={1} fill={'transparent'} />
-          <text x={8} y={yRangePositions.min + 3} fontSize={10}>
-            {+this.state.yBrushRange.min.toFixed(2)}
-          </text>
-          <line x1={0} y1={yRangePositions.max} x2={5} y2={yRangePositions.max} stroke={'red'} strokeWidth={1} fill={'transparent'} />
-          <text x={8} y={yRangePositions.max + 3} fontSize={10}>
-            {+this.state.yBrushRange.max.toFixed(2)}
-          </text>
-        </g>
-      );
-    }
-
-    return <></>;
-  }
-
-  public render(): ReactElement {
-    // Scale the brush to the scaled range
-    // Used for rendering the positions of the x and y axis brush ticks
-    const xRangePositions: MinMaxType = {
-      min: this.xAxisScale(this.state.xBrushRange.min),
-      max: this.xAxisScale(this.state.xBrushRange.max),
-    };
-    const yRangePositions: MinMaxType = {
-      min: this.yAxisScale(this.state.yBrushRange.min),
-      max: this.yAxisScale(this.state.yBrushRange.max),
-    };
-
-    return (
-      <g ref={this.ref}>
-        {this.renderXAxisBrushTicks(xRangePositions)}
-        {this.renderYAxisBrushTicks(yRangePositions)}
-      </g>
-    );
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/LinesBetweenPlotsComponent.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/LinesBetweenPlotsComponent.tsx
deleted file mode 100644
index eb40935b0a7d67eb5cdab730a2d3ad4effc65746..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/LinesBetweenPlotsComponent.tsx
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-import React, { ReactElement } from 'react';
-import { NodeType, PlotType, RelationType } from '../Types';
-import { XYPosition } from 'reactflow';
-import CalcConnectionLinePositionsUseCase from '../utils/CalcConnectionLinePositionsUseCase';
-
-/** Props of the lines between the plots component */
-type LinesBetweenPlotsProps = {
-  fromPlot: PlotType;
-  toPlot: PlotType;
-  relations: RelationType[];
-  nodeRadius: number;
-  color: string;
-};
-/** Renders all the connection lines between nodes from two plots. */
-export default class LinesBetweenPlots extends React.Component<LinesBetweenPlotsProps> {
-  render(): JSX.Element {
-    const { fromPlot, toPlot, relations, nodeRadius, color } = this.props;
-
-    // The JSX elements to render a connection line with arrow
-    const lines = relations.map((relation) => (
-      <LineBetweenNodesComponent
-        key={fromPlot.nodes[relation.fromIndex].data.text + toPlot.nodes[relation.toIndex].data.text}
-        fromNode={fromPlot.nodes[relation.fromIndex]}
-        fromPlotYOffset={fromPlot.yOffset}
-        toNode={toPlot.nodes[relation.toIndex]}
-        toPlotYOffset={toPlot.yOffset}
-        width={relation.value ?? 1}
-        nodeRadius={nodeRadius}
-        color={relation.colour ?? color}
-      />
-    ));
-
-    return <g>{lines}</g>;
-  }
-}
-
-/** Props of the nodes between the plots component. */
-type LineBetweenNodesProps = {
-  fromNode: NodeType;
-  fromPlotYOffset: number;
-
-  toNode: NodeType;
-  toPlotYOffset: number;
-
-  width: number;
-  color: string;
-  nodeRadius: number;
-};
-/** React component for drawing a single connectionline between nodes for semantic substrates. */
-class LineBetweenNodesComponent extends React.Component<LineBetweenNodesProps> {
-  render(): ReactElement {
-    const { fromNode, toNode, fromPlotYOffset, toPlotYOffset, width, color, nodeRadius } = this.props;
-
-    // The start and end position with their plot offset
-    const startNodePos: XYPosition = {
-      x: fromNode.scaledPosition.x,
-      y: fromNode.scaledPosition.y + fromPlotYOffset,
-    };
-
-    const endNodePos: XYPosition = {
-      x: toNode.scaledPosition.x,
-      y: toNode.scaledPosition.y + toPlotYOffset,
-    };
-
-    // Get the positions to draw the arrow
-    const { start, end, controlPoint, arrowRStart, arrowLStart } = CalcConnectionLinePositionsUseCase.calculatePositions(
-      startNodePos,
-      endNodePos,
-      nodeRadius
-    );
-
-    // Create the curved line path
-    const path = `M ${start.x} ${start.y} Q ${controlPoint.x} ${controlPoint.y} ${end.x} ${end.y}`;
-
-    return (
-      <g pointerEvents={'none'}>
-        <path d={path} stroke={color} strokeWidth={width} fill="transparent" />
-        <line x1={arrowRStart.x} y1={arrowRStart.y} x2={end.x} y2={end.y} stroke={color} strokeWidth={width} fill="transparent" />
-        <line x1={arrowLStart.x} y1={arrowLStart.y} x2={end.x} y2={end.y} stroke={color} strokeWidth={width} fill="transparent" />
-      </g>
-    );
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/OptimizedAutocomplete.module.scss b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/OptimizedAutocomplete.module.scss
deleted file mode 100644
index 8b0df8b37c0235624b49309d1b533ee75d4c0dbc..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/OptimizedAutocomplete.module.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-.listbox {
-  box-sizing: border-box;
-  & ul {
-    padding: 0;
-    margin: 0;
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/OptimizedAutocomplete.module.scss.d.ts b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/OptimizedAutocomplete.module.scss.d.ts
deleted file mode 100644
index 83092e29c47d14efbdaef7a929a911335b0d2925..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/OptimizedAutocomplete.module.scss.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-declare const classNames: {
-  readonly listbox: 'listbox';
-};
-export = classNames;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotAxisLabelStyles.module.css b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotAxisLabelStyles.module.css
deleted file mode 100644
index 5ee3cdfe965cb2d8004be81b7a1c031ce00efb97..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotAxisLabelStyles.module.css
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-
-/* Contains styling for the plot axis labels. */
-.xLabelText,
-.yLabelText {
-  text-anchor: end;
-  cursor: pointer;
-}
-
-.xLabelText:hover {
-  /* filter: drop-shadow(1px 1px 0.4px #80808078); */
-  text-decoration: underline;
-}
-.yLabelText:hover {
-  /* filter: drop-shadow(1px 1px 0.4px #80808000); */
-  text-decoration: underline;
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotAxisLabelStyles.module.css.d.ts b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotAxisLabelStyles.module.css.d.ts
deleted file mode 100644
index 8dcb2518e41cca01863ef88ab026d9dea6f051c1..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotAxisLabelStyles.module.css.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-declare const classNames: {
-  readonly xLabelText: 'xLabelText';
-  readonly yLabelText: 'yLabelText';
-};
-export = classNames;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotAxisLabelsComponent.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotAxisLabelsComponent.tsx
deleted file mode 100644
index 7a8693d3980d5ee92e63be9a6d5c0861d927e58f..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotAxisLabelsComponent.tsx
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-import React, { ReactElement } from 'react';
-import styles from './PlotAxisLabelStyles.module.css';
-
-/** Props of the axis labels component. */
-type PlotAxisLabelsProps = {
-  xAxisLabel: string;
-  yAxisLabel: string;
-  axisLabelOptions: string[];
-
-  width: number;
-  height: number;
-
-  // Callback when an axis label changed
-  onAxisLabelChanged(axis: 'x' | 'y', value: string): void;
-};
-type PlotAxisLabelsState = {
-  menuAnchor: Element | null;
-  menuOpenForAxis: 'x' | 'y';
-};
-/** Component for rendering the axis labels of an semantic substrates plot.
- * With functionality to edit the labels.
- */
-export default class PlotAxisLabelsComponent extends React.Component<PlotAxisLabelsProps, PlotAxisLabelsState> {
-  constructor(props: PlotAxisLabelsProps) {
-    super(props);
-    this.state = { menuAnchor: null, menuOpenForAxis: 'x' };
-  }
-
-  render(): ReactElement {
-    const { width, height, xAxisLabel, yAxisLabel, axisLabelOptions } = this.props;
-
-    return (
-      <g>
-        <text
-          className={styles.xLabelText}
-          x={width - 10}
-          y={height + 35}
-          onClick={(event: React.MouseEvent<SVGTextElement>) => {
-            this.setState({
-              menuAnchor: event.currentTarget,
-              menuOpenForAxis: 'x',
-            });
-          }}
-        >
-          {xAxisLabel}
-        </text>
-        <text
-          className={styles.yLabelText}
-          x={-10}
-          y={-50}
-          transform={'rotate(-90)'}
-          onClick={(event: React.MouseEvent<SVGTextElement>) => {
-            this.setState({
-              menuAnchor: event.currentTarget,
-              menuOpenForAxis: 'y',
-            });
-          }}
-        >
-          {yAxisLabel}
-        </text>
-        <div
-          id="simple-menu"
-          // getContentAnchorEl={null}
-        >
-          {axisLabelOptions.map((option) => (
-            <label
-              key={option}
-              onClick={() => {
-                this.setState({ menuAnchor: null });
-
-                this.props.onAxisLabelChanged(this.state.menuOpenForAxis, option);
-              }}
-            >
-              {option}
-            </label>
-          ))}
-        </div>
-      </g>
-    );
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotComponent.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotComponent.tsx
deleted file mode 100644
index 5e546c2d8b599c249803e2dac12f54ed3373042e..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotComponent.tsx
+++ /dev/null
@@ -1,207 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-import React, { ReactElement } from 'react';
-import { EntitiesFromSchema, MinMaxType, PlotType, AxisLabel, PlotSpecifications, NodeType } from '../Types';
-import BrushComponent from './BrushComponent';
-import PlotTitleComponent from './PlotTitleComponent';
-import PlotAxisLabelsComponent from './PlotAxisLabelsComponent';
-import { axisBottom, axisLeft, ScaleLinear, scaleLinear, select, Selection } from 'd3';
-
-/** Props of the plots component */
-type PlotProps = {
-  plotData: PlotType;
-  plotSpecification: PlotSpecifications;
-  entitiesFromSchema: EntitiesFromSchema;
-  nodeColor: string;
-  nodeRadius: number;
-
-  selectedAttributeNumerical: string;
-  selectedAttributeCatecorigal: string;
-  scaleCalculation: (x: number) => number;
-  colourCalculation: (x: string) => string;
-
-  width: number;
-  height: number;
-
-  onBrush(xRange: MinMaxType, yRange: MinMaxType): void;
-  onDelete(): void;
-  onAxisLabelChanged(axis: 'x' | 'y', value: string): void;
-
-  onTitleChanged(entity: string, attrName: string, attrValue: string): void;
-};
-
-/** State for the plots component */
-type PlotState = {
-  menuAnchor: Element | null;
-};
-
-/** React component to render a plot with axis and square selection tool. */
-export default class Plot extends React.Component<PlotProps, PlotState> {
-  ref = React.createRef<SVGGElement>();
-
-  xAxisScale: ScaleLinear<number, number, never> = scaleLinear();
-  yAxisScale: ScaleLinear<number, number, never> = scaleLinear();
-
-  d3XAxis: Selection<SVGGElement, unknown, null, undefined> | undefined;
-  d3YAxis: Selection<SVGGElement, unknown, null, undefined> | undefined;
-
-  constructor(props: PlotProps) {
-    super(props);
-    this.state = {
-      menuAnchor: null,
-    };
-
-    this.updateXYAxisScaleFunctions();
-  }
-
-  public componentDidMount(): void {
-    const d3Selected = select(this.ref.current);
-
-    // Add x axis ticks
-    this.d3XAxis = d3Selected
-      .append('g')
-      .attr('transform', 'translate(0,' + this.props.height + ')')
-      .call(axisBottom(this.xAxisScale));
-
-    // Add y axis ticks
-    this.d3YAxis = d3Selected.append('g').call(axisLeft(this.yAxisScale));
-  }
-
-  public componentDidUpdate(prevProps: PlotProps): void {
-    if (
-      this.props.plotData.minmaxXAxis != prevProps.plotData.minmaxXAxis ||
-      this.props.plotData.minmaxYAxis != prevProps.plotData.minmaxYAxis
-    ) {
-      this.updateXYAxisScaleFunctions();
-
-      // Update x axis ticks
-      if (this.d3XAxis) {
-        this.d3XAxis.transition().duration(1000).call(axisBottom(this.xAxisScale));
-      }
-
-      // Update y axis ticks
-      if (this.d3YAxis) {
-        this.d3YAxis.transition().duration(1000).call(axisLeft(this.yAxisScale));
-      }
-    }
-  }
-
-  /** Update the x and y axis scale functions with the new axis domains. */
-  private updateXYAxisScaleFunctions(): void {
-    // Create the x axis scale funtion with d3
-    if (this.props.plotSpecification.xAxis == AxisLabel.evenlySpaced)
-      this.xAxisScale = scaleLinear().domain([]).range([this.props.width, 0]);
-    else
-      this.xAxisScale = scaleLinear()
-        .domain([this.props.plotData.minmaxXAxis.max, this.props.plotData.minmaxXAxis.min])
-        .range([this.props.width, 0]);
-
-    // Create the y axis scale funtion with d3
-    if (this.props.plotSpecification.yAxis == AxisLabel.evenlySpaced)
-      this.yAxisScale = scaleLinear().domain([]).range([0, this.props.height]);
-    else
-      this.yAxisScale = scaleLinear()
-        .domain([this.props.plotData.minmaxYAxis.max, this.props.plotData.minmaxYAxis.min])
-        .range([0, this.props.height]);
-  }
-
-  public render(): ReactElement {
-    const {
-      width,
-      height,
-      // yOffset,
-      plotData,
-      nodeColor,
-      nodeRadius,
-      entitiesFromSchema,
-      plotSpecification,
-      selectedAttributeNumerical,
-      selectedAttributeCatecorigal,
-      scaleCalculation,
-      colourCalculation,
-      onDelete,
-      onBrush,
-      onAxisLabelChanged,
-      onTitleChanged,
-    } = this.props;
-
-    const circles = plotData.nodes.map((node) => (
-      <circle
-        key={node.data.text}
-        cx={node.scaledPosition.x}
-        cy={node.scaledPosition.y}
-        r={Math.abs(IfAttributeIsNumber(nodeRadius, node))}
-        fill={colourCalculation(node.attributes[selectedAttributeCatecorigal])}
-      />
-    ));
-
-    function IfAttributeIsNumber(nodeRadius: number, node: NodeType): number {
-      let possibleRadius = Number(node.attributes[selectedAttributeNumerical]);
-      if (!isNaN(possibleRadius)) {
-        return scaleCalculation(possibleRadius);
-      }
-      return nodeRadius;
-    }
-
-    // Determine the x y axis label, if it's byAttribute, give it the attribute type.
-    let xAxisLabel: string;
-    if (plotSpecification.xAxis == AxisLabel.byAttribute) xAxisLabel = plotSpecification.xAxisAttributeType;
-    else xAxisLabel = plotSpecification.xAxis;
-    let yAxisLabel: string;
-    if (plotSpecification.yAxis == AxisLabel.byAttribute) yAxisLabel = plotSpecification.yAxisAttributeType;
-    else yAxisLabel = plotSpecification.yAxis;
-
-    const axisLabelOptions = [
-      ...entitiesFromSchema.attributesPerEntity[plotSpecification.entity].numberAttributeNames,
-      AxisLabel.inboundConnections,
-      AxisLabel.outboundConnections,
-      AxisLabel.evenlySpaced,
-    ];
-
-    return (
-      <g ref={this.ref} transform={'translate(0,' + plotData.yOffset + ')'}>
-        <PlotTitleComponent
-          pos={{ x: 0, y: -5 }}
-          nodeColor={nodeColor}
-          entity={plotSpecification.entity}
-          attributeName={plotSpecification.labelAttributeType}
-          attributeValue={plotSpecification.labelAttributeValue}
-          entitiesFromSchema={entitiesFromSchema}
-          onTitleChanged={onTitleChanged}
-          possibleAttrValues={plotData.possibleTitleAttributeValues}
-        />
-        {circles}
-        <PlotAxisLabelsComponent
-          width={width}
-          height={height}
-          xAxisLabel={xAxisLabel}
-          yAxisLabel={yAxisLabel}
-          axisLabelOptions={axisLabelOptions}
-          onAxisLabelChanged={onAxisLabelChanged}
-        />
-        <g onClick={() => onDelete()} transform={`translate(${width + 3},${height - 30})`} className="delete-plot-icon">
-          <rect x1="-1" y1="-1" width="26" height="26" fill="transparent" />
-          <path d="M3,6V24H21V6ZM8,20a1,1,0,0,1-2,0V10a1,1,0,0,1,2,0Zm5,0a1,1,0,0,1-2,0V10a1,1,0,0,1,2,0Zm5,0a1,1,0,0,1-2,0V10a1,1,0,0,1,2,0Z" />
-          <path className="lid" d="M22,2V4H2V2H7.711c.9,0,1.631-1.1,1.631-2h5.315c0,.9.73,2,1.631,2Z" />
-        </g>
-        <BrushComponent
-          width={width}
-          height={height}
-          xAxisDomain={plotData.minmaxXAxis}
-          yAxisDomain={plotData.minmaxYAxis}
-          xAxisLabel={plotSpecification.xAxis}
-          yAxisLabel={plotSpecification.yAxis}
-          onBrush={onBrush}
-        />
-      </g>
-    );
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotTitleComponent.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotTitleComponent.tsx
deleted file mode 100644
index c69f9e5e569a66851c88ba81d6ef1d8106b9817a..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotTitleComponent.tsx
+++ /dev/null
@@ -1,194 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-import Color from 'color';
-import React, { ReactElement, useState } from 'react';
-import { EntitiesFromSchema } from '../Types';
-import styles from './PlotTitleStyles.module.css';
-import { XYPosition } from 'reactflow';
-import { getWidthOfText } from '@graphpolaris/shared/lib/schema/schema-utils';
-import OptimizedAutocomplete from './OptimizedAutocomplete';
-
-/** Props of the plots title component. */
-type PlotTitleProps = {
-  entity: string;
-  attributeName: string;
-  attributeValue: string;
-  entitiesFromSchema: EntitiesFromSchema;
-  nodeColor: string;
-  pos: XYPosition;
-  possibleAttrValues: string[];
-  onTitleChanged(entity: string, attrName: string, attrValue: string): void;
-};
-
-/** State of the plots title component. */
-type PlotTitleState = {
-  isEditingAttrValue: boolean;
-
-  // Dropdown when editing entity or attributeName
-  menuAnchor: Element | null;
-  menuItems: string[];
-  menuItemsOnClick(value: string): void;
-};
-/**
- * A semantic substrates React component for rendering a plot title.
- * With functionality to change the entity, attributeType and attributeName.
- */
-export default function PlotTitleComponent(props: PlotTitleProps) {
-  const [state, setState] = useState<PlotTitleState>({
-    isEditingAttrValue: false,
-    menuAnchor: null,
-    menuItems: [],
-    menuItemsOnClick: () => true,
-  });
-
-  /**
-   * Will be called when the value of the entity changes.
-   * @param {string} value The new entity value.
-   */
-  function onEntityChanged(value: string): void {
-    // Get the first attribute name for this entity.
-    const attrName =
-      props.entitiesFromSchema.attributesPerEntity[value].textAttributeNames.length > 0
-        ? props.entitiesFromSchema.attributesPerEntity[value].textAttributeNames[0]
-        : '?';
-
-    props.onTitleChanged(value, attrName, '?');
-  }
-
-  /**
-   * Will be called when the attribute name changes.
-   * @param {string} value The new attribute name value.
-   */
-  function onAttrNameChanged(value: string): void {
-    props.onTitleChanged(props.entity, value, '?');
-  }
-
-  /**
-   * Will be called when the attribute value changes.
-   * @param {string} value The new value of the attribute value.
-   */
-  function onAttrValueChanged(value: string): void {
-    if (value == '') value = '?';
-
-    // only update the state if the attribute value didn't change
-    // If the attribute value did change, this component will be rerendered anyway
-    if (value != props.attributeValue) props.onTitleChanged(props.entity, props.attributeName, value);
-    else
-      setState({
-        ...state,
-        isEditingAttrValue: false,
-      });
-  }
-
-  /**
-   * Renders the attribute value, either plain svg <text> element or, <input> if the user is editing this field.
-   * @param {number} xOffset The x position offset.
-   * @returns {ReactElement} The svg elements to render for the attribute value.
-   */
-  function renderAttributeValue(xOffset: number): ReactElement {
-    if (state.isEditingAttrValue)
-      return (
-        <foreignObject x={xOffset} y="-16" width="200" height="150">
-          <div>
-            <OptimizedAutocomplete
-              options={props.possibleAttrValues}
-              currentValue={props.attributeValue}
-              onLeave={(v: string) => onAttrValueChanged(v)}
-            />
-          </div>
-        </foreignObject>
-      );
-    else
-      return (
-        <text
-          x={xOffset}
-          className={styles.clickable}
-          onClick={() =>
-            setState({
-              ...state,
-              isEditingAttrValue: true,
-            })
-          }
-        >
-          {props.attributeValue}
-        </text>
-      );
-  }
-
-  const { entity, attributeName, entitiesFromSchema, pos, nodeColor } = props;
-
-  const withOffset = getWidthOfText(entity + ' ', 'arial', '15px', 'bold');
-  const attrNameOffset = getWidthOfText('with ', 'arial', '15px') + withOffset;
-  const colonOffset = getWidthOfText(attributeName + ' ', 'arial', '15px', 'bold') + attrNameOffset;
-  const attrValueOffset = getWidthOfText(': ', 'arial', '15px', 'bold') + colonOffset;
-
-  const nodeColorDarkened = Color(nodeColor).darken(0.3).hex();
-
-  return (
-    <g transform={`translate(${pos.x},${pos.y})`}>
-      <text
-        className={styles.clickable}
-        fill={nodeColorDarkened}
-        onClick={(event: React.MouseEvent<SVGTextElement>) => {
-          setState({
-            ...state,
-            menuAnchor: event.currentTarget,
-            menuItems: entitiesFromSchema.entityNames,
-            menuItemsOnClick: (v: string) => onEntityChanged(v),
-          });
-        }}
-      >
-        {entity}
-      </text>
-      <text x={withOffset} fontSize={15}>
-        with
-      </text>
-      <text
-        className={styles.clickable}
-        x={attrNameOffset}
-        onClick={(event: React.MouseEvent<SVGTextElement>) => {
-          setState({
-            ...state,
-            menuAnchor: event.currentTarget,
-            menuItems: entitiesFromSchema.attributesPerEntity[entity].textAttributeNames,
-            menuItemsOnClick: (v: string) => onAttrNameChanged(v),
-          });
-        }}
-      >
-        {attributeName}
-      </text>
-      <text x={colonOffset} fontWeight="bold" fontSize={15}>
-        :
-      </text>
-
-      {renderAttributeValue(attrValueOffset)}
-
-      <div id="simple-menu">
-        {state.menuItems.map((option) => (
-          <label
-            key={option}
-            onClick={() => {
-              setState({
-                ...state,
-                menuAnchor: null,
-                menuItems: [],
-              });
-
-              state.menuItemsOnClick(option);
-            }}
-          >
-            {option}
-          </label>
-        ))}
-      </div>
-    </g>
-  );
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotTitleStyles.module.css b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotTitleStyles.module.css
deleted file mode 100644
index 35a50d6d96f000588f412cab7ae74ce2fd823fbd..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotTitleStyles.module.css
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-
-/* Contains styling for the plot title text. */
-.clickable {
-  font-weight: bold;
-  cursor: pointer;
-  font-size: 15px;
-  transition: 2s;
-}
-.clickable:hover {
-  /* filter: drop-shadow(1px 1px 0.4px #80808078); */
-  text-decoration: underline;
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotTitleStyles.module.css.d.ts b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotTitleStyles.module.css.d.ts
deleted file mode 100644
index 59be279512012689a5541129ebbb3a57c950b833..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/PlotTitleStyles.module.css.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-declare const classNames: {
-  readonly clickable: 'clickable';
-};
-export = classNames;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/SVGCheckBoxComponent.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/SVGCheckBoxComponent.tsx
deleted file mode 100644
index 4b66a6e4c75fa6bed4b050af5095a6ebd45532cc..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/subcomponents/SVGCheckBoxComponent.tsx
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/* istanbul ignore file */
-/* The comment above was added so the code coverage wouldn't count this file towards code coverage.
- * We do not test components/renderfunctions/styling files.
- * See testing plan for more details.*/
-import Color from 'color';
-import React, { ReactElement, useState } from 'react';
-import { PlotType, RelationType } from '../Types';
-
-/** All the props needed to visualize all the semantic substrates checkboxes. */
-type SVGCheckboxesWithSemanticSubstrLabelProps = {
-  plots: PlotType[];
-  relations: RelationType[][][];
-  visibleRelations: boolean[][];
-  nodeColors: string[];
-  onCheckboxChanged(fromPlot: number, toPlot: number, value: boolean): void;
-};
-
-/** Renders all the checkboxes for a semantic substrates visualisation. */
-export default function SVGCheckboxesWithSemanticSubstrLabel(props: SVGCheckboxesWithSemanticSubstrLabelProps) {
-  const { plots, relations, visibleRelations, nodeColors, onCheckboxChanged } = props;
-
-  const checkboxGroups: ReactElement[] = [];
-
-  // Go through each relation.
-  for (let fromPlot = 0; fromPlot < relations.length; fromPlot++) {
-    const checkboxes: JSX.Element[] = [];
-    // The from- and toPlot title color will be a bit darker than the node colors for their plots.
-    const fromColor = Color(nodeColors[fromPlot]).darken(0.3).hex();
-    for (let toPlot = 0; toPlot < relations[fromPlot].length; toPlot++) {
-      if (
-        !!relations?.[fromPlot]?.[toPlot] &&
-        visibleRelations?.[fromPlot]?.[toPlot] !== undefined &&
-        relations[fromPlot][toPlot].length > 0
-      ) {
-        // Add a checkbox for the connections between fromPlot and toPlot.
-        checkboxes.push(
-          <g key={plots[fromPlot].title + fromPlot + '-' + plots[toPlot].title + toPlot} transform={'translate(0,' + toPlot * 30 + ')'}>
-            <text x={20} y={12} fill={fromColor} style={{ fontWeight: 'bold' }}>
-              {plots[fromPlot].title}
-            </text>
-            <path fill="transparent" stroke={'black'} d={`M${110} 7 l40 0 l-0 0 l-15 -5 m15 5 l-15 5`} />
-            <text x={170} y={12} fill={Color(nodeColors[toPlot]).darken(0.3).hex()} style={{ fontWeight: 'bold' }}>
-              {plots[toPlot].title}
-            </text>
-            <SVGCheckboxComponent
-              x={0}
-              y={0}
-              key={plots[fromPlot].title + plots[toPlot].title + fromPlot + toPlot}
-              width={15}
-              value={visibleRelations[fromPlot][toPlot]}
-              onChange={(value: boolean) => {
-                onCheckboxChanged(fromPlot, toPlot, value);
-              }}
-            />
-          </g>
-        );
-      }
-    }
-
-    // Offset the height of the checkboxes for each plot.
-    checkboxGroups.push(
-      <g
-        key={plots[fromPlot].title + fromPlot}
-        transform={'translate(' + (plots[fromPlot].width + 30) + ',' + plots[fromPlot].yOffset + ')'}
-      >
-        {checkboxes}
-      </g>
-    );
-  }
-
-  return <g>{checkboxGroups}</g>;
-}
-
-/** The props for the SVG checkbox component */
-type SVGCheckBoxProps = {
-  x: number;
-  y: number;
-  width: number;
-  value: boolean;
-  // Called when the the checkbox state changes.
-  onChange(value: boolean): void;
-};
-
-/** The state for the SVG checkbox component  */
-type SVGCheckBoxState = {
-  value: boolean;
-};
-/** Renders a simple checkbox in SVG elements. */
-export function SVGCheckboxComponent(
-  props: SVGCheckBoxProps = {
-    x: 0,
-    y: 0,
-    width: 15,
-    value: false,
-    onChange: () => true,
-  }
-) {
-  const [state, setState] = useState<SVGCheckBoxState>({ value: props.value });
-  return (
-    <g>
-      <rect
-        x={props.x}
-        y={props.y}
-        rx="0"
-        ry="0"
-        width={props.width}
-        height={props.width}
-        style={{ fill: 'transparent', stroke: 'grey', strokeWidth: 2 }}
-        onClick={() => {
-          const newVal = state.value ? false : true;
-          props.onChange(newVal);
-          setState({ ...state, value: newVal });
-        }}
-      />
-      <rect
-        x={props.x + 3}
-        y={props.y + 3}
-        rx="0"
-        ry="0"
-        width={props.width - 6}
-        height={props.width - 6}
-        style={{ fill: state.value ? '#00a300' : 'white' }}
-        onClick={() => {
-          const newVal = state.value ? false : true;
-          props.onChange(newVal);
-          setState({ ...state, value: newVal });
-        }}
-      />
-    </g>
-  );
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcConnectionLinePositionsUseCase.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcConnectionLinePositionsUseCase.tsx
deleted file mode 100644
index 4dabbf3e095d9990217df06896cd8af6671d889e..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcConnectionLinePositionsUseCase.tsx
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-import { CalcDistance } from './CalcDistance';
-import { RotateVectorByDeg } from '../utils/RotateVec';
-import { XYPosition } from 'reactflow';
-
-/** The return type for this usecase. controlPoint is used for the curvature of the line. */
-type ConnectionLinePositions = {
-  start: XYPosition;
-  end: XYPosition;
-  controlPoint: XYPosition;
-
-  arrowRStart: XYPosition;
-  arrowLStart: XYPosition;
-};
-
-/** The use case that calculates the line positions */
-export default class CalcConnectionLinePositionsUseCase {
-  /**
-   * Calculates the positions for the points needed to draw the curved line with the arrow.
-   * Also offsets the start and end point so they touch the edge of the node, instead of going to the center.
-   * @param {XYPosition} startNodePos The position of the start node.
-   * @param {XYPosition} endNodePos The position of the end node.
-   * @param {number} nodeRadius The node radius, used to calculate the start and end offset.
-   * @returns {ConnectionLinePositions} The positions for drawing the curved line.
-   */
-  public static calculatePositions(startNodePos: XYPosition, endNodePos: XYPosition, nodeRadius: number): ConnectionLinePositions {
-    // Calculate the control point for the quadratic curve path, see https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
-    const distance = CalcDistance(startNodePos, endNodePos);
-    if (distance == 0) return this.returnStartPosition(startNodePos);
-    const controlPoint = this.calculateControlPoint(endNodePos, startNodePos, distance);
-
-    // move the start and end point so they are on the edge of their node
-    const movedStartPos = this.calculateMovedStartPos(startNodePos, controlPoint, nodeRadius);
-    const endToControlPointDist = CalcDistance(endNodePos, controlPoint);
-    const endToControlPointVec = {
-      x: (endNodePos.x - controlPoint.x) / endToControlPointDist,
-      y: (endNodePos.y - controlPoint.y) / endToControlPointDist,
-    };
-
-    const movedEndPos = this.calculateMovedEndPos(endNodePos, endToControlPointVec, nodeRadius);
-
-    // Create arrowhead start points
-    const arrowRStart = this.calculateArrowStart(movedEndPos, RotateVectorByDeg(endToControlPointVec, 30));
-    const arrowLStart = this.calculateArrowStart(movedEndPos, RotateVectorByDeg(endToControlPointVec, -30));
-
-    return {
-      start: movedStartPos,
-      end: movedEndPos,
-      controlPoint,
-      arrowRStart,
-      arrowLStart,
-    };
-  }
-
-  /**
-   * Creates the connection line positions for a distance of zero.
-   * In this special case all values are set to the start node position.
-   * @param {XYPosition} startNodePos The position of the start node.
-   * @returns {ConnectionLinePosition} The positions for drawing the curved line.
-   */
-  private static returnStartPosition(startNodePos: XYPosition): ConnectionLinePositions {
-    return {
-      start: startNodePos,
-      end: startNodePos,
-      controlPoint: startNodePos,
-      arrowRStart: startNodePos,
-      arrowLStart: startNodePos,
-    };
-  }
-
-  /**
-   * Calculate the control point for the quadratic curve path.
-   * @param {XYPosition} startNodePos The position of the start node.
-   * @param {XYPosition} endNodePos The position of the end node.
-   * @param {number} distance The distance between the two nodes.
-   * @returns {XYPosition} The control point.
-   */
-  private static calculateControlPoint(endNodePos: XYPosition, startNodePos: XYPosition, distance: number): XYPosition {
-    // Normalized vector from start to end
-    const vec: XYPosition = {
-      x: (endNodePos.x - startNodePos.x) / distance,
-      y: (endNodePos.y - startNodePos.y) / distance,
-    };
-
-    // The point between the start and end, moved 15% of the distance closer to the start
-    const pointBetween = {
-      x: (startNodePos.x + endNodePos.x) / 2 - vec.x * distance * 0.15,
-      y: (startNodePos.y + endNodePos.y) / 2 - vec.y * distance * 0.15,
-    };
-
-    // The control point for th quadratic curve
-    // Move this point 25% of the distance away from the line between the start and end, at a 90 deg. angle
-    return {
-      x: pointBetween.x + -vec.y * distance * 0.25,
-      y: pointBetween.y + vec.x * distance * 0.25,
-    };
-  }
-
-  /**
-   * Calculates the moved start position.
-   * @param {XYPosition} startNodePos The position of the start node.
-   * @param {XYPosition} controlPoint The control point for the quadratic curve path.
-   * @param {number} nodeRadius The node radius, used to calculate the start and end offset.
-   * @returns {XYPosition} The moved start position.
-   */
-  private static calculateMovedStartPos(startNodePos: XYPosition, controlPoint: XYPosition, nodeRadius: number): XYPosition {
-    const startToControlPointDist = CalcDistance(startNodePos, controlPoint);
-    return {
-      x: startNodePos.x + ((controlPoint.x - startNodePos.x) / startToControlPointDist) * nodeRadius,
-      y: startNodePos.y + ((controlPoint.y - startNodePos.y) / startToControlPointDist) * nodeRadius,
-    };
-  }
-
-  /**
-   * Calculates the moved end position
-   * @param {XYPosition} endNodePos The position of the end node.
-   * @param {XYPosition} endToControlPointVec The control point vector.
-   * @param {number} nodeRadius The node radius, used to calculate the start and end offset.
-   * @returns {XYPosition} The moved end position.
-   */
-  private static calculateMovedEndPos(endNodePos: XYPosition, endToControlPointVec: XYPosition, nodeRadius: number): XYPosition {
-    return {
-      x: endNodePos.x - endToControlPointVec.x * nodeRadius,
-      y: endNodePos.y - endToControlPointVec.y * nodeRadius,
-    };
-  }
-
-  /**
-   * Calculates the start position of the arrow.
-   * @param {XYPosition} movedEndPos The position of the moved end node.
-   * @param {XYPosition} rotatedVec The rotated arrow vector.
-   * @returns {XYPosition} The arrow's start position.
-   */
-  private static calculateArrowStart(movedEndPos: XYPosition, rotatedVec: XYPosition): XYPosition {
-    const arrowLength = 7;
-    return {
-      x: movedEndPos.x - rotatedVec.x * arrowLength,
-      y: movedEndPos.y - rotatedVec.y * arrowLength,
-    };
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcDefaultPlotSpecsUseCase.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcDefaultPlotSpecsUseCase.tsx
deleted file mode 100644
index f4b3db4ebe661c9c2103004475d4487776b27de9..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcDefaultPlotSpecsUseCase.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-import { GraphQueryResult } from '@graphpolaris/shared/lib/data-access';
-import { AxisLabel, PlotSpecifications } from '../Types';
-
-/** UseCase for calculating default plots from node link query result data. */
-export default class CalcDefaultPlotSpecsUseCase {
-  /**
-   * Calculates default plot specifications for incoming query result data.
-   * This determines what the default plots will be after executing a new query.
-   * @param {GraphQueryResult} nodeLinkResult Query result data in the node link format.
-   * @returns {PlotSpecifications[]} PlotSpecifications to generate the plots with the result data.
-   */
-  public static calculate(nodeLinkResult: GraphQueryResult): PlotSpecifications[] {
-    // Search through the first nodes' attributes for the shortest attribute value
-    const plotSpecifications: PlotSpecifications[] = [];
-    if (nodeLinkResult.nodes.length > 0) {
-      const firstNodeAttributes = nodeLinkResult.nodes[0].attributes;
-      const firstNodeEntity = nodeLinkResult.nodes[0].label;
-
-      let shortestStringKey = '';
-      let shortestStringValueLength: number = Number.MAX_VALUE;
-      for (let key in firstNodeAttributes) {
-        if (typeof firstNodeAttributes[key] == 'string') {
-          const v = firstNodeAttributes[key] as string;
-          if (v.length < shortestStringValueLength) {
-            shortestStringKey = key;
-            shortestStringValueLength = v.length;
-          }
-        }
-      }
-
-      // The key with the shortest attribute value, will be used to filter nodes for max 3 plots
-      const values: string[] = [];
-      for (let i = 0; i < nodeLinkResult.nodes.length; i++) {
-        // Search for the first three nodes with different attribute values with the given attributekey
-
-        if (nodeLinkResult.nodes[i].label != firstNodeEntity) continue;
-
-        const v = nodeLinkResult.nodes[i].attributes[shortestStringKey] as string;
-        if (values.includes(v)) continue;
-
-        values.push(v);
-
-        plotSpecifications.push({
-          entity: nodeLinkResult.nodes[i].label,
-          labelAttributeType: shortestStringKey,
-          labelAttributeValue: v,
-          xAxis: AxisLabel.evenlySpaced, // Use default evenly spaced and # outbound connections on the x and y axis.
-          yAxis: AxisLabel.outboundConnections,
-          xAxisAttributeType: '',
-          yAxisAttributeType: '',
-          width: 800,
-          height: 200,
-        });
-
-        if (values.length >= 3) break;
-      }
-    }
-
-    return plotSpecifications;
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcDistance.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcDistance.tsx
deleted file mode 100644
index 5f6633e1775c6e3b229a8bd0d1ac12ceb8a8e245..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcDistance.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-import { XYPosition } from 'reactflow';
-
-/**
- * Calculates the difference between two positions.
- * @param {XYPosition} posA The first position.
- * @param {XYPosition} posB The second position.
- * @return {number} The distance between the first and second position.
- */
-export function CalcDistance(posA: XYPosition, posB: XYPosition): number {
-  const diffX = posA.x - posB.x;
-  const diffY = posA.y - posB.y;
-
-  return Math.sqrt(diffX * diffX + diffY * diffY);
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcEntityAttrNamesFromResultUseCase.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcEntityAttrNamesFromResultUseCase.tsx
deleted file mode 100644
index b903d7d81b5eb7d064189653f265209102602ce2..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcEntityAttrNamesFromResultUseCase.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-import { EntitiesFromSchema } from '../Types';
-import { GraphQueryResult } from '@graphpolaris/shared/lib/data-access';
-
-/** Use case for retrieving entity names and attribute names from a schema result. */
-export default class CalcEntityAttrNamesFromResultUseCase {
-  /**
-   * Takes a schema result and calculates all the entity names and attribute names per datatype.
-   * Used by semantic substrates for the plot titles and add plot selections.
-   * @param {SchemaFromBackend} schemaResult A new schema result from the backend.
-   * @param {EntitiesFromSchema} All entity names and attribute names per datatype. So we know what is in the Schema.
-   * @returns {EntitiesFromSchema} All entity names and attribute names per datatype.
-   * @deprecated //TODO remove
-   */
-  public static CalcEntityAttrNamesFromResult(
-    nodeLinkResult: GraphQueryResult,
-    entitiesFromSchema: EntitiesFromSchema
-  ): EntitiesFromSchema {
-    const listOfNodeTypes: string[] = [];
-
-    nodeLinkResult.nodes.forEach((node) => {
-      let entityName = node.label;
-      if (!listOfNodeTypes.includes(entityName)) {
-        listOfNodeTypes.push(entityName);
-      }
-    });
-
-    let entitiesFromSchemaPruned: EntitiesFromSchema = {
-      entityNames: [],
-      attributesPerEntity: {},
-    };
-    Object.assign(entitiesFromSchemaPruned, entitiesFromSchema);
-
-    entitiesFromSchemaPruned.entityNames = listOfNodeTypes;
-    return entitiesFromSchemaPruned;
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcEntityAttrNamesFromSchemaUseCase.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcEntityAttrNamesFromSchemaUseCase.tsx
deleted file mode 100644
index 2f1adef76a83eb39e51bb74f77d0b9f704a0b351..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcEntityAttrNamesFromSchemaUseCase.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-import { SchemaGraph } from '@graphpolaris/shared/lib/schema';
-import { AttributeNames, EntitiesFromSchema } from '../Types';
-
-/** Use case for retrieving entity names and attribute names from a schema result. */
-export default class CalcEntityAttrNamesFromSchemaUseCase {
-  /**
-   * Takes a schema result and calculates all the entity names and attribute names per datatype.
-   * Used by semantic substrates for the plot titles and add plot selections.
-   * @param {SchemaResultType} schemaResult A new schema result from the backend.
-   * @returns {EntitiesFromSchema} All entity names and attribute names per datatype.
-   */
-  public static calculate(schemaResult: SchemaGraph): EntitiesFromSchema {
-    const attributesPerEntity: Record<string, AttributeNames> = {};
-    // Go through each entity.
-    schemaResult.nodes.forEach((node) => {
-      if (!node.attributes) return;
-
-      // Extract the attribute names per datatype for each entity.
-      const textAttributeNames: string[] = [];
-      const boolAttributeNames: string[] = [];
-      const numberAttributeNames: string[] = [];
-
-      node.attributes.attributes.forEach((attr) => {
-        if (attr.type == 'string') textAttributeNames.push(attr.name);
-        else if (attr.type == 'int') numberAttributeNames.push(attr.name);
-        else if (attr.type == 'bool') boolAttributeNames.push(attr.name);
-      });
-
-      // Create a new object with the arrays with attribute names per datatype.
-      attributesPerEntity[node.attributes.name] = {
-        textAttributeNames,
-        boolAttributeNames,
-        numberAttributeNames,
-      };
-    });
-
-    // Create the object with entity names and attribute names.
-    return {
-      entityNames: schemaResult.nodes.map((node) => node?.attributes?.name || 'ERROR'),
-      attributesPerEntity,
-    };
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcScaledPositionsUseCase.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcScaledPositionsUseCase.tsx
deleted file mode 100644
index a534346b64e418b7d42b774b449967a5c7e786ad..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcScaledPositionsUseCase.tsx
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-import { XYPosition } from 'reactflow';
-import { MinMaxType, PlotInputData } from '../Types';
-import { scaleLinear } from 'd3';
-
-/**
- * Calculates the scaled positions using d3's scaleLinear functions.
- * Also calculates the min and max x y values.
- */
-export default class CalcScaledPosUseCase {
-  /**
-   * Linearly scales positions to the width and height of the plot
-   * @param {PlotInputData} plot The plot for which to scale the nodes positions.
-   * @param {MinMaxType} minmaxXAxis The min and max for the x axis.
-   * @param {MinMaxType} minmaxYAxis The min and max for the y axis.
-   * @returns {Position[]} The scaled positions.
-   */
-  public static calculate(plot: PlotInputData, minmaxXAxis: MinMaxType, minmaxYAxis: MinMaxType): XYPosition[] {
-    // Create the scale functions with the minmax and width and height of the plot
-    const scaleFunctions = CalcScaledPosUseCase.createScaleFunctions(minmaxXAxis, minmaxYAxis, plot.width, plot.height);
-
-    // Use the scale functions to scale the nodes positions.
-    const scaledPositions: XYPosition[] = [];
-    plot.nodes.forEach((node) => {
-      scaledPositions.push({
-        x: scaleFunctions.xAxis(node.originalPosition.x),
-        y: scaleFunctions.yAxis(node.originalPosition.y),
-      });
-    });
-
-    return scaledPositions;
-  }
-
-  /** Uses D3 to create linear scale functions. */
-  private static createScaleFunctions = (
-    minmaxXAxis: MinMaxType,
-    minmaxYAxis: MinMaxType,
-    plotWidth: number,
-    plotHeight: number
-  ): {
-    xAxis: d3.ScaleLinear<number, number, never>;
-    yAxis: d3.ScaleLinear<number, number, never>;
-  } => {
-    // Create the x axis scale funtion with d3
-    const xAxisScale = scaleLinear().domain([minmaxXAxis.min, minmaxXAxis.max]).range([0, plotWidth]);
-
-    // Create the y axis scale funtion with d3
-    const yAxisScale = scaleLinear().domain([minmaxYAxis.max, minmaxYAxis.min]).range([0, plotHeight]);
-
-    return {
-      xAxis: xAxisScale,
-      yAxis: yAxisScale,
-    };
-  };
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcXYMinMaxUseCase.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcXYMinMaxUseCase.tsx
deleted file mode 100644
index 0167529cc2e18c89973c6ed9378c000aa373a5c3..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/CalcXYMinMaxUseCase.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-import { MinMaxType, PlotInputData } from '../Types';
-
-/** UseCase for calculating the min and max for the x and y values of the node positions. */
-export default class CalcXYMinMaxUseCase {
-  /**
-   * Calculates the min and max for the x and y values of the node positions.
-   * @param {PlotInputData} plot The input data plot with all the nodes.
-   * @returns {{x: MinMaxType; y: MinMaxType}} An object with the min and max for x and y.
-   */
-  public static calculate(plot: PlotInputData): {
-    x: MinMaxType;
-    y: MinMaxType;
-  } {
-    // If there are no nodes in the plot, set the min and max to [-10, 10]
-    if (plot.nodes.length == 0) {
-      return {
-        x: {
-          min: -10,
-          max: 10,
-        },
-        y: {
-          min: -10,
-          max: 10,
-        },
-      };
-    }
-    // Calculate the min and max values for the x and y positions
-    // Start the x and y values of the first node as min and max
-    const minmaxX: MinMaxType = {
-      min: plot.nodes[0].originalPosition.x,
-      max: plot.nodes[0].originalPosition.x,
-    };
-    const minmaxY: MinMaxType = {
-      min: plot.nodes[0].originalPosition.y,
-      max: plot.nodes[0].originalPosition.y,
-    };
-    for (let i = 1; i < plot.nodes.length; i++) {
-      const position = plot.nodes[i].originalPosition;
-
-      if (position.x > minmaxX.max) minmaxX.max = position.x;
-      else if (position.x < minmaxX.min) minmaxX.min = position.x;
-
-      if (position.y > minmaxY.max) minmaxY.max = position.y;
-      else if (position.y < minmaxY.min) minmaxY.min = position.y;
-    }
-
-    // Add 20%, so there are no nodes whose position is exactly on the axis
-    let xDiff = (minmaxX.max - minmaxX.min) * 0.2;
-
-    minmaxX.min -= xDiff;
-    minmaxX.max += xDiff;
-    let yDiff = (minmaxY.max - minmaxY.min) * 0.2;
-
-    minmaxY.min -= yDiff;
-    minmaxY.max += yDiff;
-
-    // If the min and max are the same, add and subtract 10
-    if (minmaxX.min == minmaxX.max) {
-      minmaxX.min -= 1;
-      minmaxX.max += 1;
-    }
-    if (minmaxY.min == minmaxY.max) {
-      minmaxY.min -= 1;
-      minmaxY.max += 1;
-    }
-    return { x: minmaxX, y: minmaxY };
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/FilterUseCase.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/FilterUseCase.tsx
deleted file mode 100644
index 34ee4ad3c8f99a93373b8e753bfdc03b09ce844d..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/FilterUseCase.tsx
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-import { MinMaxType, NodeType, PlotType, RelationType } from '../Types';
-
-type Filter = { x: MinMaxType; y: MinMaxType };
-
-/** A use case for applying filters on nodes and filter relations. */
-export default class FilterUseCase {
-  /**
-   * Checks if a node matches the given filters.
-   * @param {NodeType} node The node to be matched.
-   * @param {Filter} filter The filters to match the node to.
-   * @returns True when the node matches the constraints of the filter.
-   */
-  public static checkIfNodeMatchesFilter(node: NodeType, filter: Filter): boolean {
-    return (
-      node.originalPosition?.x >= filter?.x.min &&
-      node.originalPosition?.x <= filter?.x.max &&
-      node.originalPosition?.y >= filter?.y.min &&
-      node.originalPosition?.y <= filter?.y.max
-    );
-  }
-
-  /**
-   * Applies the filter that changed to the filteredRelations list.
-   * @param {RelationType[][][]} relations The original unmodified relations. All relations.
-   * @param {RelationType[][][]} filteredRelations The current filtered relations. This will be updated with the new filter.
-   * Note that initially relations should be a clone of filteredRelations.
-   * @param {PlotType[]} plots The plots.
-   * @param {Filter[]} filtersPerPlot The filters for each plot, with a filter at the filterIndexThatChanged that is different from the previous call to this function.
-   * @param {number} filterIndexThatChanged index for the filter that changed.
-   */
-  public static filterRelations(
-    relations: RelationType[][][],
-    filteredRelations: RelationType[][][],
-    plots: PlotType[],
-    filtersPerPlot: Filter[],
-    filterIndexThatChanged: number
-  ): void {
-    this.checkOutboundConnections(relations, filteredRelations, plots, filtersPerPlot, filterIndexThatChanged);
-    for (let fromPlot = 0; fromPlot < relations.length; fromPlot++) {
-      this.checkInboundConnection(relations, filteredRelations, plots, filtersPerPlot, filterIndexThatChanged, fromPlot);
-    }
-  }
-
-  /**
-   * Check for the inbound connections if the filter has changed
-   * @param {RelationType[][][]} relations The original unmodified relations. All relations.
-   * @param {RelationType[][][]} filteredRelations The current filtered relations. This will be updated with the new filter.
-   * Note that initially relations should be a clone of filteredRelations.
-   * @param {PlotType[]} plots The plots.
-   * @param {Filter[]} filtersPerPlot The filters for each plot, with a filter at the filterIndexThatChanged that is different from the previous call to this function.
-   * @param {number} filterIndexThatChanged index for the filter that changed.
-   */
-  private static checkOutboundConnections(
-    relations: RelationType[][][],
-    filteredRelations: RelationType[][][],
-    plots: PlotType[],
-    filtersPerPlot: Filter[],
-    filterIndexThatChanged: number
-  ) {
-    // Check all the outbound connections for nodes in the plot for which the filter changed.
-    relations[filterIndexThatChanged].forEach((relations, toPlot) => {
-      filteredRelations[filterIndexThatChanged][toPlot] = relations.filter((relation) => {
-        const fromNode = plots[filterIndexThatChanged].nodes[relation.fromIndex];
-        const fromNodeFilter = filtersPerPlot[filterIndexThatChanged];
-        const fromNodeMatches = this.checkIfNodeMatchesFilter(fromNode, fromNodeFilter);
-
-        const toNode = plots[toPlot].nodes[relation.toIndex];
-        const toNodeFilter = filtersPerPlot[toPlot];
-        const toNodeMatches = this.checkIfNodeMatchesFilter(toNode, toNodeFilter);
-
-        // Check if the from- and to-node match their plot filters.
-        return fromNodeMatches && toNodeMatches;
-      });
-    });
-  }
-
-  /**
-   * Check for the inbound connections if the filter has changed
-   * @param {RelationType[][][]} relations The original unmodified relations. All relations.
-   * @param {RelationType[][][]} filteredRelations The current filtered relations. This will be updated with the new filter.
-   * Note that initially relations should be a clone of filteredRelations.
-   * @param {PlotType[]} plots The plots.
-   * @param {Filter[]} filtersPerPlot The filters for each plot, with a filter at the filterIndexThatChanged that is different from the previous call to this function.
-   * @param {number} filterIndexThatChanged index for the filter that changed.
-   * @param {number} fromPlot The index of the current from plot.
-   */
-  private static checkInboundConnection(
-    relations: RelationType[][][],
-    filteredRelations: RelationType[][][],
-    plots: PlotType[],
-    filtersPerPlot: Filter[],
-    filterIndexThatChanged: number,
-    fromPlot: number
-  ) {
-    // Check all the inbound connections for nodes in the plot for which the filter changed.
-    const relationsBetweenPlots = relations[fromPlot][filterIndexThatChanged];
-
-    filteredRelations[fromPlot][filterIndexThatChanged] = relationsBetweenPlots.filter((relation) => {
-      const toNode = plots[filterIndexThatChanged].nodes[relation.toIndex];
-      const toNodeFilter = filtersPerPlot[filterIndexThatChanged];
-      const toNodeMatches = this.checkIfNodeMatchesFilter(toNode, toNodeFilter);
-
-      const fromNode = plots[fromPlot].nodes[relation.fromIndex];
-      const fromNodeFilter = filtersPerPlot[fromPlot];
-      const fromNodeMatches = this.checkIfNodeMatchesFilter(fromNode, fromNodeFilter);
-
-      // Here we also check for connections within the same plot.
-      // For these connections we only need to check if the from- or the to-node matches the filter.
-      return (fromNodeMatches && toNodeMatches) || (fromPlot == filterIndexThatChanged && (fromNodeMatches || toNodeMatches));
-    });
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/RotateVec.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/RotateVec.tsx
deleted file mode 100644
index a77e65ede163a7d8acf1b161626be4fe4fd7d137..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/RotateVec.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-
-/**
- * Rotates a vector by given degrees, clockwise.
- * @param {number, number} vec The vector to be rotated.
- * @param {number} degrees The amount of degrees the vector needs to be rotated.
- * @return {number, number} The rotated vector.
- */
-export function RotateVectorByDeg(vec: { x: number; y: number }, degrees: number): { x: number; y: number } {
-  const radians = -(degrees % 360) * 0.01745329251; // degrees * (PI/180)
-
-  return {
-    x: vec.x * Math.cos(radians) - vec.y * Math.sin(radians),
-    y: vec.x * Math.sin(radians) + vec.y * Math.cos(radians),
-  };
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/ToPlotDataParserUseCase.tsx b/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/ToPlotDataParserUseCase.tsx
deleted file mode 100644
index 487d5aa3256cf3241e2430996f7314c244292e17..0000000000000000000000000000000000000000
--- a/libs/shared/lib/vis/visualizations/semanticsubstrates/utils/ToPlotDataParserUseCase.tsx
+++ /dev/null
@@ -1,243 +0,0 @@
-/**
- * This program has been developed by students from the bachelor Computer Science at
- * Utrecht University within the Software Project course.
- * © Copyright Utrecht University (Department of Information and Computing Sciences)
- */
-import { GraphQueryResult } from '@graphpolaris/shared/lib/data-access';
-import { ParseToUniqueEdges } from '../../../shared/ResultNodeLinkParserUseCase';
-import { Edge, Node } from '../../../../data-access/store';
-import { AxisLabel, PlotInputData, PlotSpecifications, RelationType } from '../Types';
-
-/** A use case for parsing incoming node-link data to plot data */
-export default class ToPlotDataParserUseCase {
-  /**
-   * Parses incoming node link data from the backend to plotdata.
-   * @param {NodeLinkResultType} queryResult The query result coming from the backend.
-   * @param {NodeAttributesForPlot[]} plotSpecifications The attribute types to use for label and x y values.
-   * @returns Plotdata with relations.
-   */
-  public static parseQueryResult(
-    queryResult: GraphQueryResult,
-    plotSpecifications: PlotSpecifications[],
-    relationSelectedAttributeNumerical: string,
-    relationSelectedAttributeCatecorigal: string,
-    relationScaleCalculation: (x: number) => number,
-    relationColourCalculation: (x: string) => string
-  ): { plots: PlotInputData[]; relations: RelationType[][][] } {
-    const { plots, nodePlotIndexDict } = this.filterNodesWithPlotSpecs(queryResult.nodes, plotSpecifications);
-
-    // Initialize the relations with empty arrays, an |plots| x |plots| matrix with empty arrays
-    const relations: RelationType[][][] = new Array(plots.length).fill([]).map(() => new Array(plots.length).fill([]).map(() => []));
-
-    // 2D arrays used to collect the number of out- and inbound connections
-    // indexed like so: [plotIndex][nodeIndex in that plot]
-    const nOutboundConnsPerNode: number[][] = new Array(plots.length).fill([]).map((_, i) => new Array(plots[i].nodes.length).fill(0));
-    const nInboundConnsPerNode: number[][] = new Array(plots.length).fill([]).map((_, i) => new Array(plots[i].nodes.length).fill(0));
-
-    // Only use unique edges
-    const uniqueEdges = ParseToUniqueEdges.parse(queryResult.edges, false);
-
-    /* Search for the maximum value of the value attribute for each edge.
-     Using epsilon as first max value so we do never divide by zero.
-     */
-    let maxValue = Number.EPSILON;
-    uniqueEdges.forEach((e) => {
-      if (e.count > maxValue) maxValue = e.count;
-    });
-
-    // Calculate the # in- and outbound connections and fill the relations.
-    uniqueEdges.forEach((edge) => {
-      // Check if the from and to are present in any plots
-      if (nodePlotIndexDict[edge.from] && nodePlotIndexDict[edge.to]) {
-        // Retrieve the from and to indices of the plotindex and nodeindex from the dictionary
-        const fromPlotsIndices = nodePlotIndexDict[edge.from];
-        const toPlotsIndices = nodePlotIndexDict[edge.to];
-
-        // The same node can be in multiple plots
-        // We need to add all its connections
-        fromPlotsIndices.forEach((fromPlot) => {
-          nOutboundConnsPerNode[fromPlot.plotIndex][fromPlot.nodeIndex]++;
-
-          toPlotsIndices.forEach((toPlot) => {
-            // Add the connection to the relations list, with the from and to indices
-            relations[fromPlot.plotIndex][toPlot.plotIndex].push({
-              fromIndex: fromPlot.nodeIndex,
-              toIndex: toPlot.nodeIndex,
-              value: relationScaleCalculation(edge.attributes[relationSelectedAttributeNumerical]),
-              colour: relationColourCalculation(edge.attributes[relationSelectedAttributeCatecorigal]),
-            });
-
-            nInboundConnsPerNode[toPlot.plotIndex][toPlot.nodeIndex]++;
-          });
-        });
-      }
-    });
-
-    // Determine the node position if plotSpecification had an out- or inboundconnection as x or y axis specified
-    this.determineNodePosForInOutboundConn(plots, plotSpecifications, nInboundConnsPerNode, nOutboundConnsPerNode);
-
-    return { plots, relations };
-  }
-
-  /**
-   * If the node position is of # in- or outbound connections, set this as the original node position.
-   * @param plots {PlotInputData[]} The plots.
-   * @param plotSpecs {PlotSpecifications[]} The plot specifications.
-   * @param nInboundConnsPerNode {number[][]} The number of inbound connections for plots.
-   * @param nOutboundConnsPerNode {number[][]} The number of outbound connections for plots.
-   */
-  private static determineNodePosForInOutboundConn(
-    plots: PlotInputData[],
-    plotSpecs: PlotSpecifications[],
-    nInboundConnsPerNode: number[][],
-    nOutboundConnsPerNode: number[][]
-  ): void {
-    // Determine the node position if plotSpecification had an out- or inboundconnection as x or y axis specified
-    plots.forEach((plot, plotIndex) => {
-      plot.nodes.forEach((node, nodeIndex) => {
-        // Determine the x pos if the plotspecXAxis is of enum out- or inboundConnections
-        const x = this.getAxisPosOutOrInboundConns(
-          plotSpecs[plotIndex].xAxis,
-          plotIndex,
-          nodeIndex,
-          nOutboundConnsPerNode,
-          nInboundConnsPerNode
-        );
-        if (x != undefined) node.originalPosition.x = x;
-        // Same for the y pos
-        const y = this.getAxisPosOutOrInboundConns(
-          plotSpecs[plotIndex].yAxis,
-          plotIndex,
-          nodeIndex,
-          nOutboundConnsPerNode,
-          nInboundConnsPerNode
-        );
-        if (y != undefined) node.originalPosition.y = y;
-      });
-    });
-  }
-
-  /**
-   * Filters the nodes with the plotSpecifications.
-   * @param nodes {Node[]} The query result nodes to filter on.
-   * @param plotSpecs {PlotSpecifications[]} The plot specifications used for filtering.
-   * @returns plots with the filtered nodes in them, and a nodePlotIndexDict used for getting the plotIndex and nodeIndex for a node.
-   */
-  private static filterNodesWithPlotSpecs(
-    nodes: Node[],
-    plotSpecs: PlotSpecifications[]
-  ): {
-    plots: PlotInputData[];
-    nodePlotIndexDict: Record<string, { plotIndex: number; nodeIndex: number }[]>;
-  } {
-    // Initialze the plots with a title and the default witdh and height
-    const plots: PlotInputData[] = [];
-    plotSpecs.forEach((plotSpec) => {
-      plots.push({
-        title: plotSpec.labelAttributeType + ':' + plotSpec.labelAttributeValue,
-        nodes: [],
-        width: plotSpec.width,
-        height: plotSpec.height,
-      });
-    });
-
-    // Dictionary used for getting the plotIndex and nodeIndex for a node
-    // plotIndex: in which plot the node is
-    // nodeIndex: the index of the node in the list of nodes for that plot
-    // A node could be in multiple plots so that is why the value is an array.
-    const nodePlotIndexDict: Record<string, { plotIndex: number; nodeIndex: number }[]> = {};
-
-    // Add all nodes to their plot if they satisfy its corresponding plotspec
-    nodes.forEach((node) => {
-      for (let i = 0; i < plotSpecs.length; i++) {
-        // Check if the node has an label attributeType value that matches the filter
-        if (plotSpecs[i].entity == node.label && plotSpecs[i].labelAttributeValue == node.attributes[plotSpecs[i].labelAttributeType]) {
-          // Check if the axisPositioning spec is of equalDistance or attributeType
-          const x = this.getAxisPosEqualDistanceOrAttrType(
-            plotSpecs[i].xAxis,
-            plots[i].nodes.length + 1,
-            plotSpecs[i].xAxisAttributeType,
-            node.attributes
-          );
-          const y = this.getAxisPosEqualDistanceOrAttrType(
-            plotSpecs[i].yAxis,
-            plots[i].nodes.length + 1,
-            plotSpecs[i].yAxisAttributeType,
-            node.attributes
-          );
-
-          // Add the node to the correct plot
-          plots[i].nodes.push({
-            id: node.id,
-            data: { text: node.id },
-            originalPosition: { x, y },
-            attributes: node.attributes,
-          });
-
-          if (!nodePlotIndexDict[node.id]) nodePlotIndexDict[node.id] = [];
-
-          nodePlotIndexDict[node.id].push({
-            plotIndex: i,
-            nodeIndex: plots[i].nodes.length - 1,
-          });
-        }
-      }
-    });
-
-    return { plots, nodePlotIndexDict };
-  }
-
-  /**
-   * Determine the position based on the provided axispositioning specification
-   * Check for enums equalDistance and attributeType
-   * @param plotSpecAxis
-   * @param nodeIndex
-   * @param xAxisAttrType
-   * @param attributes
-   * @returns
-   */
-  private static getAxisPosEqualDistanceOrAttrType(
-    plotSpecAxis: AxisLabel,
-    nodeIndex: number,
-    xAxisAttrType: string,
-    attributes: Record<string, any>
-  ): number {
-    switch (plotSpecAxis) {
-      case AxisLabel.byAttribute:
-        if (attributes[xAxisAttrType] && !isNaN(attributes[xAxisAttrType])) return +attributes[xAxisAttrType];
-        else return nodeIndex;
-
-      default:
-        // plotSpecAxis == equalDistance
-        return nodeIndex;
-    }
-  }
-
-  /**
-   *
-   * @param plotSpecAxis
-   * @param plotIndex
-   * @param nodeIndex
-   * @param nOutboundConnsPerNode
-   * @param nInboundConnsPerNode
-   * @returns
-   */
-  private static getAxisPosOutOrInboundConns(
-    plotSpecAxis: AxisLabel,
-    plotIndex: number,
-    nodeIndex: number,
-    nOutboundConnsPerNode: number[][],
-    nInboundConnsPerNode: number[][]
-  ): number | undefined {
-    switch (plotSpecAxis) {
-      case AxisLabel.outboundConnections:
-        return nOutboundConnsPerNode[plotIndex][nodeIndex];
-
-      case AxisLabel.inboundConnections:
-        return nInboundConnsPerNode[plotIndex][nodeIndex];
-
-      default:
-        return undefined;
-    }
-  }
-}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/ConfigPanel.tsx b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/ConfigPanel.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..4d165c968b3a39427a0b16c3d8356e1bc4c186e0
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/ConfigPanel.tsx
@@ -0,0 +1,235 @@
+import React, { useState, useEffect } from 'react';
+import { Node, dataConfig, AugmentedNodeAttributes } from './types';
+import { Button } from '../../../../components/buttons';
+
+function getUniqueValues(arr: any[]): any[] {
+  return [...new Set(arr)];
+}
+
+interface ConfigPanelProps {
+  data: AugmentedNodeAttributes[];
+  onUpdateData: (data: dataConfig) => void;
+}
+
+const ConfigPanel: React.FC<ConfigPanelProps> = ({ data, onUpdateData }) => {
+  const [state, setState] = useState<{
+    entityVertical: string;
+    attributeEntity: string;
+    attributeValueSelected: string;
+    orderNameXaxis: string;
+    orderNameYaxis: string;
+    isButtonEnabled: boolean;
+  }>({
+    entityVertical: '',
+    attributeEntity: '',
+    attributeValueSelected: '',
+    orderNameXaxis: '',
+    orderNameYaxis: '',
+    isButtonEnabled: true,
+  });
+
+  const nodeLabels: string[] = data.map((node: any) => node.label);
+
+  const uniqueNodeLabels = getUniqueValues(nodeLabels);
+
+  const entityOptions = [...uniqueNodeLabels].map((value, index) => (
+    <option key={`option${index}`} value={value}>
+      {value}
+    </option>
+  ));
+
+  // Extract unique attributeEntity values from the entire data array
+  const [attributeEntityMenuItems, setattributeEntityMenuItems] = useState<string[]>([]);
+  // Filter the data based on the selected entity (label)
+  const [filteredData, setFilteredData] = useState<AugmentedNodeAttributes[]>([]);
+  const [attributeOptions, setAttributeOptions] = useState<any[]>([]);
+
+  useEffect(() => {
+    if (state.entityVertical) {
+      const selectedEntity = state.entityVertical;
+      // Filter the data based on the selected entity (label)
+      const filteredData: AugmentedNodeAttributes[] = data.filter((item) => item.label === selectedEntity);
+
+      setFilteredData(filteredData);
+    } else {
+      setFilteredData([]);
+    }
+  }, [state.entityVertical, data]);
+
+  useEffect(() => {
+    if (filteredData.length > 0) {
+      const attributes: object = filteredData[0].attributes;
+
+      if (attributes) {
+        const keys = Object.keys(attributes);
+        setattributeEntityMenuItems(keys);
+      }
+    } else {
+      setattributeEntityMenuItems([]); // Clear the attributeEntityMenuItems when there's no filtered data
+    }
+  }, [filteredData]);
+
+  useEffect(() => {
+    // Update attributeOptions when attributeEntity changes
+    if (filteredData.length > 0) {
+      const filteredAAttributes: any[] = (filteredData as AugmentedNodeAttributes[]).map((item: AugmentedNodeAttributes) => {
+        const attributeValueSelected = item.attributes[state.attributeEntity];
+
+        if (Array.isArray(attributeValueSelected)) {
+          if (attributeValueSelected.length === 1) {
+            return attributeValueSelected[0];
+          } else {
+            return attributeValueSelected.join('-');
+          }
+        } else if (typeof attributeValueSelected === 'string' || typeof attributeValueSelected === 'number') {
+          return attributeValueSelected;
+        } else {
+          return null; // Return null for other types
+        }
+      });
+
+      if (filteredAAttributes) {
+        // Extract unique values from the relation's attributes
+        const uniqueValues = Array.from(new Set(filteredAAttributes));
+        const firstElement = uniqueValues[0];
+
+        if (typeof firstElement === 'number') {
+          // Sort numbers in descending order
+          const sortedValues = uniqueValues.slice().sort((a, b) => a - b);
+
+          setAttributeOptions(sortedValues);
+        } else if (typeof firstElement === 'string') {
+          // Sort strings in descending order
+          // localCompare is useful to take into account local language consideration.
+          // but breaks for comparing an URL
+          const sortedValues = uniqueValues.slice().sort((a, b) => a - b);
+          setAttributeOptions(sortedValues);
+        } else {
+          // Handle other data types as needed
+          setAttributeOptions(uniqueValues); // Clear attributeOptions for unsupported data types
+        }
+      }
+    } else {
+      setAttributeOptions([]); // Clear attributeOptions when there's no filtered data
+    }
+  }, [state.attributeEntity, filteredData]);
+
+  const onClickMakeButton = () => {
+    // Retrieve the selected values
+
+    const { entityVertical, attributeEntity, attributeValueSelected, orderNameXaxis, orderNameYaxis, isButtonEnabled } = state;
+    const isAxisSelected = orderNameXaxis !== '' || orderNameYaxis !== '';
+
+    // Call the callback to send the data to the parent component (VisSemanticSubstrates)
+    if (isAxisSelected) {
+      onUpdateData({ entityVertical, attributeEntity, attributeValueSelected, orderNameXaxis, orderNameYaxis, isButtonEnabled });
+    }
+  };
+
+  return (
+    <div className="nav card w-full">
+      <div className="card-body flex flex-row overflow-y-auto max-w-[60vw] self-center items-center">
+        <div className="select-container">
+          <label className="select-label">Entity:</label>
+          <select
+            className="select"
+            id="standard-select-entity"
+            value={state.entityVertical}
+            onChange={(e) => setState({ ...state, entityVertical: e.target.value })}
+          >
+            <option value="" disabled>
+              Select an entity
+            </option>
+            {entityOptions}
+          </select>
+        </div>
+
+        <div className="select-container">
+          <label className="select-label">Attribute:</label>
+          <select
+            className={`select ${attributeEntityMenuItems.length === 0 ? 'select-disabled' : ''}`}
+            id="standard-select-relation"
+            value={state.attributeEntity}
+            onChange={(e) => setState({ ...state, attributeEntity: e.target.value, attributeValueSelected: '', orderNameXaxis: '' })}
+          >
+            <option value="" disabled>
+              Select a relation
+            </option>
+            {attributeEntityMenuItems.map((value, index) => (
+              <option key={`option${index}`} value={value}>
+                {value}
+              </option>
+            ))}
+          </select>
+        </div>
+
+        <div className="select-container">
+          <label className="select-label">Selected Attribute:</label>
+          <select
+            className={`select ${attributeOptions.length === 0 ? 'select-disabled' : ''}`}
+            id="standard-select-attribute"
+            value={state.attributeValueSelected}
+            onChange={(e) => setState({ ...state, attributeValueSelected: e.target.value, orderNameXaxis: '', orderNameYaxis: '' })}
+          >
+            <option value="" disabled>
+              Select an attribute
+            </option>
+            {attributeOptions.map((value, index) => (
+              <option key={`option${index}`} value={value}>
+                {value}
+              </option>
+            ))}
+          </select>
+        </div>
+
+        <div className="select-container">
+          <label className="select-label">X-axis:</label>
+          <select
+            className={`select ${attributeEntityMenuItems.length === 0 ? 'select-disabled' : ''}`}
+            id="standard-select-relation"
+            value={state.orderNameXaxis}
+            onChange={(e) => setState({ ...state, orderNameXaxis: e.target.value })}
+          >
+            <option value="" disabled>
+              Select a x axis
+            </option>
+            {attributeEntityMenuItems.map((value, index) => (
+              <option key={`option${index}`} value={value}>
+                {value}
+              </option>
+            ))}
+          </select>
+        </div>
+
+        <div className="select-container">
+          <label className="select-label">Y-axis:</label>
+          <select
+            className={`select ${attributeEntityMenuItems.length === 0 ? 'select-disabled' : ''}`}
+            id="standard-select-relation"
+            value={state.orderNameYaxis}
+            onChange={(e) => setState({ ...state, orderNameYaxis: e.target.value })}
+          >
+            <option value="" disabled>
+              Select a y axis
+            </option>
+            {attributeEntityMenuItems.map((value, index) => (
+              <option key={`option${index}`} value={value}>
+                {value}
+              </option>
+            ))}
+          </select>
+        </div>
+
+        <Button
+          label="Make"
+          type="secondary"
+          variant="solid"
+          disabled={!state.isButtonEnabled || (!state.orderNameXaxis && !state.orderNameYaxis)}
+          onClick={onClickMakeButton}
+        />
+      </div>
+    </div>
+  );
+};
+
+export default ConfigPanel;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/EdgesLayer.tsx b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/EdgesLayer.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..10558bd09a8bed24a48d52fe11b7a32f5fcfcbaf
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/EdgesLayer.tsx
@@ -0,0 +1,143 @@
+import React, { useEffect, useRef } from 'react';
+import { DataConnection, VisualRegionConfig, regionData, VisualEdgesConfig, DataPoint } from './types';
+import { select } from 'd3';
+
+import { isNumeric } from './utils';
+
+export type EdgesLayerProps = {
+  dataConnections: DataConnection[];
+  visualConfig: React.MutableRefObject<VisualEdgesConfig>;
+  data1: DataPoint[];
+  data2: DataPoint[];
+  nameEdges: string;
+  nameRegions: string[];
+  width: number;
+};
+
+export type KeyedEdgesLayerProps = EdgesLayerProps & {
+  key: string;
+};
+
+interface dataPointEdge {
+  start: number[];
+  end: number[];
+}
+
+function calculateDistance(x1: number, y1: number, x2: number, y2: number): number {
+  const deltaX = x2 - x1;
+  const deltaY = y2 - y1;
+  const distance = Math.sqrt(deltaX ** 2 + deltaY ** 2);
+
+  return distance;
+}
+
+function edgeGenerator(dataPoint: dataPointEdge): string {
+  /*
+                     QuadracticPoint
+                            |
+                            |
+    fromPoint --------- QuadinBetween ------------------------ toPoint
+
+  */
+
+  const [startX, startY]: number[] = dataPoint.start;
+  const [endX, endY]: number[] = dataPoint.end;
+
+  // compute distance
+  const distance = calculateDistance(startX, startY, endX, endY);
+  //const distance = calculateDistance(endX,endY,startX,startY);
+
+  // unit vector
+
+  const xUnit = (startX - endX) / distance;
+  const yUnit = (startY - endY) / distance;
+
+  // Get QuadracticPointOnline
+  const marginQuadinBetween = 0.75;
+  const percentageDistancePerdpendicular = 0.1;
+
+  const xQuadinBetween = startX - xUnit * marginQuadinBetween * distance;
+  const yQuadinBetween = startY - yUnit * marginQuadinBetween * distance;
+
+  // Get QuadracticPoint
+  const xQuadracticPoint = xQuadinBetween - yUnit * percentageDistancePerdpendicular * distance;
+  const yQuadracticPoint = yQuadinBetween + xUnit * percentageDistancePerdpendicular * distance;
+
+  const path = `M ${startX}, ${startY} Q ${xQuadracticPoint},${yQuadracticPoint} ${endX} ${endY}`;
+
+  return path;
+}
+
+const EdgesLayer: React.FC<EdgesLayerProps> = ({ dataConnections, visualConfig, data1, data2, nameEdges, width }) => {
+  const svgRef = useRef(null);
+
+  useEffect(() => {
+    const data1_id = data1.map((item) => item.id);
+    const data1_x = data1.map((item) => item.x);
+    const data1_y = data1.map((item) => item.y);
+
+    const data2_id = data2.map((item) => item.id);
+    const data2_x = data2.map((item) => item.x);
+    const data2_y = data2.map((item) => item.y);
+
+    const svg = select(svgRef.current);
+    const heightRegion = visualConfig.current.configRegion.height;
+
+    const svgToRegion1 = [visualConfig.current.configRegion.margin.left, visualConfig.current.configRegion.margin.top + 0 * heightRegion];
+    const svgToRegion2 = [visualConfig.current.configRegion.margin.left, visualConfig.current.configRegion.margin.top + 1 * heightRegion];
+
+    const dataVis: dataPointEdge[] = [];
+    const dataEdgeIds: string[] = [];
+    dataConnections.forEach(function (value: DataConnection) {
+      // Get FROM
+      //  ID
+      // what happens if indexID_region1 is not found
+      const indexID_region1 = data1_id.findIndex((idInstance) => {
+        return idInstance == value.from;
+      });
+
+      const startX_region1 = data1_x[indexID_region1] + svgToRegion1[0];
+      const startY_region1 = data1_y[indexID_region1] + svgToRegion1[1];
+      // GET TO
+      const indexID_region2 = data2_id.findIndex((idInstance) => {
+        return idInstance == value.to;
+      });
+
+      const startX_region2 = data2_x[indexID_region2] + svgToRegion2[0];
+      const startY_region2 = data2_y[indexID_region2] + svgToRegion2[1] + visualConfig.current.offsetY;
+      dataVis.push({ start: [startX_region1, startY_region1], end: [startX_region2, startY_region2] });
+
+      let from_stringModified = value.from.replace('/', '_'); // / is not css valid
+      const to_stringModified = value.to.replace('/', '_'); // / is not css valid
+
+      if (isNumeric(from_stringModified)) {
+        from_stringModified = 'idAdd_' + from_stringModified;
+      }
+
+      dataEdgeIds.push(`${from_stringModified}_fromto_${to_stringModified}`);
+    });
+
+    const groupEdges = svg.append('g').attr('class', nameEdges);
+
+    groupEdges
+      .selectAll('edgesInside')
+      .data(dataVis)
+      .enter()
+      .append('path')
+      .attr('d', (d) => edgeGenerator(d))
+      .attr('class', (d, i) => dataEdgeIds[i])
+      /*
+      .attr('stroke', 'bg-secondary-600')
+      .attr('stroke-width', 2)
+      .style('stroke-opacity', 0.7)
+      */
+      .attr('stroke', visualConfig.current.stroke)
+      .attr('stroke-width', visualConfig.current.strokeWidth)
+      .style('stroke-opacity', visualConfig.current.strokeOpacity)
+      .attr('fill', 'none');
+  }, [dataConnections, visualConfig, data1, data2, nameEdges]);
+
+  return <svg ref={svgRef} width={600} height={visualConfig.current.height} />;
+};
+
+export default EdgesLayer;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/Scatterplot.tsx b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/Scatterplot.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..ab36fa68316c257f33538609dd228ccbd066b61e
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/Scatterplot.tsx
@@ -0,0 +1,487 @@
+import React, { useEffect, useRef, useState } from 'react';
+import {
+  select,
+  selectAll,
+  scaleBand,
+  axisBottom,
+  scaleLinear,
+  forceX,
+  forceY,
+  brush,
+  forceCollide,
+  format,
+  axisLeft,
+  forceSimulation,
+} from 'd3';
+
+import { VisualRegionConfig, regionData, DataPoint, DataPointXY } from './types';
+import { calcTextWidth, calcTextWidthCanvas } from './utils';
+import { ArrowRightAlt } from '@mui/icons-material';
+import Icon from '@graphpolaris/shared/lib/components/icon';
+
+export type ScatterplotProps = {
+  data: regionData;
+  visualConfig: VisualRegionConfig;
+  xScaleRange: string[] | number[];
+  yScaleRange: string[] | number[];
+  width: number;
+  onBrushUpdate: (idElements: string[], selectedElement: string) => void;
+  onBrushClear: (selectedElement: string, idData: string[]) => void;
+  onResultJitter: (data: DataPoint[]) => void;
+};
+
+export type KeyedScatterplotProps = ScatterplotProps & {
+  key: number;
+};
+
+function computeRadiusPoints(width: number, numPoints: number): number {
+  const radius: number = numPoints >= 170 ? width * 0.0042 : width * 0.007;
+
+  return radius;
+}
+
+const Scatterplot: React.FC<ScatterplotProps> = ({
+  data,
+  visualConfig,
+  xScaleRange,
+  yScaleRange,
+  onBrushUpdate,
+  onBrushClear,
+  onResultJitter,
+  width,
+}) => {
+  const svgRef = useRef(null);
+  const groupMarginRef = useRef<SVGGElement>(null as any);
+
+  const brushRef = useRef<SVGGElement>(null as any);
+
+  useEffect(() => {
+    const maxLengthAllowedAxisY: number = 85;
+    const maxLengthAllowedAxisX: number = 50;
+    const styleTextXaxisLabel = {
+      classTextXAxis: 'font-inter font-secondary font-semibold text-right capitalize text-xs',
+      x: 1.01 * visualConfig.widthMargin + visualConfig.margin.right,
+      y: visualConfig.heightMargin + 1.25 * visualConfig.margin.bottom,
+      textAnchor: 'start',
+      dominantBaseline: 'middle',
+      maxLengthText: 90,
+    };
+
+    const svg = select(svgRef.current);
+
+    const groupMargin = select(groupMarginRef.current).attr(
+      'transform',
+      `translate(${visualConfig.margin.left},${visualConfig.margin.top})`,
+    );
+
+    const maxComputations = 200;
+    let tickCount = 0;
+    let dataCircles: DataPointXY[] = [];
+
+    let dataCirclesXtemp: number[] = [];
+    let dataCirclesYtemp: number[] = [];
+    let xOffset: number;
+
+    if (data.xData.length != 0 && data.yData.length != 0) {
+      if (typeof data.xData[0] != 'number') {
+        let xScaleTemp = scaleBand<string>()
+          .domain(xScaleRange as string[])
+          .range([0, visualConfig.widthMargin])
+          .paddingOuter(0);
+
+        xOffset = 0.5 * xScaleTemp.bandwidth();
+
+        dataCirclesXtemp = data.xData.map((value, index) => {
+          const scaledValue = typeof value === 'number' ? xScaleTemp(value.toString()) : xScaleTemp(value);
+          if (scaledValue !== undefined) {
+            return scaledValue + xOffset;
+          } else {
+            return 0;
+          }
+        });
+
+        const textTicks = calcTextWidth(xScaleRange as string[], maxLengthAllowedAxisX, styleTextXaxisLabel.classTextXAxis);
+
+        let xAxis = axisBottom(xScaleTemp)
+          .tickFormat((d, i) => textTicks[i])
+          .tickSizeOuter(0);
+        groupMargin
+          .append('g')
+          .attr('transform', 'translate(0,' + visualConfig.heightMargin + ')')
+          .call(xAxis)
+          .selectAll('text')
+          .style('text-anchor', 'start')
+          .attr('x', '10')
+          .attr('y', '0')
+          .attr('dy', '0')
+          .style('dominant-baseline', styleTextXaxisLabel.dominantBaseline)
+          .attr('transform', 'rotate(90)');
+      } else {
+        let xScaleTemp = scaleLinear<number>()
+          .domain(xScaleRange as number[])
+          .range([0, visualConfig.widthMargin]);
+
+        dataCirclesXtemp = data.xData.map((value, index) => {
+          const numericValue = typeof value === 'string' ? parseFloat(value) : value;
+          return xScaleTemp(numericValue);
+        });
+
+        const [minValueX, maxValueX]: number[] = xScaleTemp.domain();
+        const averageMinMaxX: number = Math.round((minValueX + maxValueX) / 2.0);
+
+        const xAxis = axisBottom(xScaleTemp)
+          .tickValues([minValueX, 0.5 * (minValueX + averageMinMaxX), averageMinMaxX, 0.5 * (maxValueX + averageMinMaxX), maxValueX])
+          .tickFormat(format('.2s'));
+
+        groupMargin
+          .append('g')
+          .attr('transform', 'translate(0,' + visualConfig.heightMargin + ')')
+          .call(xAxis);
+      }
+
+      if (typeof data.yData[0] != 'number') {
+        let yScaleTemp = scaleBand<string>()
+          .domain(yScaleRange as string[])
+          .range([visualConfig.heightMargin, 0])
+          .paddingOuter(0);
+
+        xOffset = 0.5 * yScaleTemp.bandwidth();
+
+        dataCirclesYtemp = data.yData.map((value, index) => {
+          const scaledValue = typeof value === 'number' ? yScaleTemp(value.toString()) : yScaleTemp(value);
+          if (scaledValue !== undefined) {
+            return scaledValue + xOffset;
+          } else {
+            return 0;
+          }
+        });
+
+        const textTicks = calcTextWidth(yScaleRange as string[], maxLengthAllowedAxisY, styleTextXaxisLabel.classTextXAxis);
+
+        let yAxis = axisLeft(yScaleTemp)
+          .tickFormat((d, i) => textTicks[i])
+          .tickSizeOuter(0);
+        groupMargin.append('g').call(yAxis).selectAll('text');
+      } else {
+        let yScaleTemp = scaleLinear<number>()
+          .domain(yScaleRange as number[])
+          .range([visualConfig.heightMargin, 0]);
+
+        dataCirclesYtemp = data.yData.map((value, index) => {
+          const numericValue = typeof value === 'string' ? parseFloat(value) : value;
+          return yScaleTemp(numericValue);
+        });
+
+        const [minValueX, maxValueX]: number[] = yScaleTemp.domain();
+        const averageMinMaxX: number = Math.round((minValueX + maxValueX) / 2.0);
+
+        const yAxis = axisLeft(yScaleTemp)
+          .tickValues([minValueX, 0.5 * (minValueX + averageMinMaxX), averageMinMaxX, 0.5 * (maxValueX + averageMinMaxX), maxValueX])
+          .tickFormat(format('.2s'));
+
+        groupMargin.append('g').call(yAxis);
+      }
+
+      dataCircles = data.xData.map((value, index) => ({ x: dataCirclesXtemp[index], y: dataCirclesYtemp[index] }));
+
+      const radius = computeRadiusPoints(visualConfig.width, data.xData.length);
+      groupMargin
+        .selectAll('circle')
+        .data(dataCircles)
+        .enter()
+        .append('circle')
+        .attr('class', (d, i) => `${data.idData[i]}`)
+        .attr('cx', (d) => d.x)
+        .attr('cy', (d) => d.y)
+        .attr('r', radius)
+        .attr('stroke', data.colorNodesStroke)
+        .attr('fill', data.colorNodes);
+
+      const dataSimulation: DataPoint[] = dataCircles.map(({ x, y }, i) => ({
+        x: x,
+        y: y,
+        id: data.idData[i],
+      }));
+
+      onResultJitter(dataSimulation);
+
+      const textLabelAxis = calcTextWidth(data.xAxisName, styleTextXaxisLabel.maxLengthText, styleTextXaxisLabel.classTextXAxis);
+
+      svg
+        .append('text')
+        .attr('x', styleTextXaxisLabel.x)
+        .attr('y', styleTextXaxisLabel.y)
+        .text(textLabelAxis[0])
+        .style('text-anchor', styleTextXaxisLabel.textAnchor)
+        .style('dominant-baseline', styleTextXaxisLabel.dominantBaseline)
+        .attr('class', styleTextXaxisLabel.classTextXAxis);
+    } else if (data.yData.length != 0) {
+      if (typeof data.yData[0] != 'number') {
+        let yScaleTemp = scaleBand<string>()
+          .domain(yScaleRange as string[])
+          .range([visualConfig.heightMargin, 0])
+          .paddingOuter(0);
+
+        xOffset = 0.5 * yScaleTemp.bandwidth();
+
+        dataCirclesYtemp = data.yData.map((value, index) => {
+          const scaledValue = typeof value === 'number' ? yScaleTemp(value.toString()) : yScaleTemp(value);
+          if (scaledValue !== undefined) {
+            return scaledValue + xOffset;
+          } else {
+            return 0;
+          }
+        });
+
+        const textTicks = calcTextWidth(yScaleRange as string[], maxLengthAllowedAxisY, styleTextXaxisLabel.classTextXAxis);
+
+        let yAxis = axisLeft(yScaleTemp)
+          .tickFormat((d, i) => textTicks[i])
+          .tickSizeOuter(0);
+        groupMargin.append('g').call(yAxis).selectAll('text');
+      } else {
+        let yScaleTemp = scaleLinear<number>()
+          .domain(yScaleRange as number[])
+          .range([visualConfig.heightMargin, 0]);
+
+        dataCirclesYtemp = data.yData.map((value, index) => {
+          const numericValue = typeof value === 'string' ? parseFloat(value) : value;
+          return yScaleTemp(numericValue);
+        });
+
+        const [minValueX, maxValueX]: number[] = yScaleTemp.domain();
+        const averageMinMaxX: number = Math.round((minValueX + maxValueX) / 2.0);
+
+        const xAxis = axisLeft(yScaleTemp)
+          .tickValues([minValueX, 0.5 * (minValueX + averageMinMaxX), averageMinMaxX, 0.5 * (maxValueX + averageMinMaxX), maxValueX])
+          .tickFormat(format('.2s'));
+
+        groupMargin.append('g').call(xAxis);
+      }
+
+      let xScaleTemp = scaleLinear<number>()
+        .domain(xScaleRange as number[])
+        .range([0, visualConfig.widthMargin]);
+
+      dataCircles = data.yData.map((value, index) => ({ x: xScaleTemp(0.0), y: dataCirclesYtemp[index] }));
+
+      const radius = computeRadiusPoints(visualConfig.width, data.yData.length);
+      const simulation = forceSimulation<DataPointXY>(dataCircles)
+        .force('x', forceX<DataPointXY>((d) => d.x).strength(0.1))
+        .force('y', forceY<DataPointXY>((d) => d.y).strength(4))
+        .force('collide', forceCollide(radius * 1.25).strength(0.5));
+
+      const circles = groupMargin
+        .selectAll('circle')
+        .data(dataCircles)
+        .enter()
+        .append('circle')
+        .attr('class', (d, i) => `${data.idData[i]}`)
+        .attr('cx', (d) => d.x)
+        .attr('cy', (d) => d.y)
+        .attr('r', radius)
+        .attr('stroke', data.colorNodesStroke)
+        .attr('fill', data.colorNodes);
+
+      simulation.on('tick', function () {
+        circles.attr('cx', (d, i) => d.x as number).attr('cy', (d) => d.y as number);
+
+        tickCount++;
+        if (tickCount > maxComputations) {
+          const dataSimulation: DataPoint[] = dataCircles.map(({ x, y }, i) => ({
+            x,
+            y,
+            id: data.idData[i],
+          }));
+          onResultJitter(dataSimulation);
+
+          simulation.stop();
+        }
+      });
+    } else if (data.xData.length != 0) {
+      if (typeof data.xData[0] != 'number') {
+        let xScaleTemp = scaleBand<string>()
+          .domain(xScaleRange as string[])
+          .range([0, visualConfig.widthMargin])
+          .paddingOuter(0);
+
+        xOffset = 0.5 * xScaleTemp.bandwidth();
+
+        dataCirclesXtemp = data.xData.map((value, index) => {
+          const scaledValue = typeof value === 'number' ? xScaleTemp(value.toString()) : xScaleTemp(value);
+          if (scaledValue !== undefined) {
+            return scaledValue + xOffset;
+          } else {
+            return 0;
+          }
+        });
+
+        const textTicks = calcTextWidth(xScaleRange as string[], maxLengthAllowedAxisX, styleTextXaxisLabel.classTextXAxis);
+
+        let xAxis = axisBottom(xScaleTemp)
+          .tickFormat((d, i) => textTicks[i])
+          .tickSizeOuter(0);
+        groupMargin
+          .append('g')
+          .attr('transform', 'translate(0,' + visualConfig.heightMargin + ')')
+          .call(xAxis)
+          .selectAll('text')
+          .style('text-anchor', 'start')
+          .attr('x', '10')
+          .attr('y', '0')
+          .attr('dy', '0')
+          .style('dominant-baseline', styleTextXaxisLabel.dominantBaseline)
+          .attr('transform', 'rotate(90)');
+      } else {
+        let xScaleTemp = scaleLinear<number>()
+          .domain(xScaleRange as number[])
+          .range([0, visualConfig.widthMargin]);
+
+        dataCirclesXtemp = data.xData.map((value, index) => {
+          const numericValue = typeof value === 'string' ? parseFloat(value) : value;
+          return xScaleTemp(numericValue);
+        });
+
+        const [minValueX, maxValueX]: number[] = xScaleTemp.domain();
+        const averageMinMaxX: number = Math.round((minValueX + maxValueX) / 2.0);
+
+        const xAxis = axisBottom(xScaleTemp)
+          .tickValues([minValueX, 0.5 * (minValueX + averageMinMaxX), averageMinMaxX, 0.5 * (maxValueX + averageMinMaxX), maxValueX])
+          .tickFormat(format('.2s'));
+
+        groupMargin
+          .append('g')
+          .attr('transform', 'translate(0,' + visualConfig.heightMargin + ')')
+          .call(xAxis);
+      }
+
+      let yScaleTemp = scaleLinear<number>()
+        .domain(yScaleRange as number[])
+        .range([visualConfig.heightMargin, 0]);
+
+      dataCircles = data.xData.map((value, index) => ({ x: dataCirclesXtemp[index], y: yScaleTemp(0) }));
+
+      const radius = computeRadiusPoints(visualConfig.width, data.xData.length);
+      const simulation = forceSimulation<DataPointXY>(dataCircles)
+        .force('x', forceX<DataPointXY>((d) => d.x).strength(4))
+        .force('y', forceY<DataPointXY>((d) => d.y).strength(0.1))
+        .force('collide', forceCollide(radius * 1.25).strength(0.5));
+
+      const circles = groupMargin
+        .selectAll('circle')
+        .data(dataCircles)
+        .enter()
+        .append('circle')
+        .attr('class', (d, i) => `${data.idData[i]}`)
+        .attr('cx', (d) => d.x || 0)
+        .attr('cy', (d) => d.y || 0)
+        .attr('r', radius)
+        .attr('stroke', data.colorNodesStroke)
+        .attr('fill', data.colorNodes);
+
+      simulation.on('tick', function () {
+        circles.attr('cx', (d, i) => d.x as number).attr('cy', (d) => d.y as number);
+
+        tickCount++;
+        if (tickCount > maxComputations) {
+          const dataSimulation: DataPoint[] = dataCircles.map(({ x, y }, i) => ({
+            x,
+            y,
+            id: data.idData[i],
+          }));
+
+          onResultJitter(dataSimulation);
+
+          simulation.stop();
+        }
+      });
+      const textLabelAxis = calcTextWidth(data.xAxisName, styleTextXaxisLabel.maxLengthText, styleTextXaxisLabel.classTextXAxis);
+
+      svg
+        .append('text')
+        .attr('x', styleTextXaxisLabel.x)
+        .attr('y', styleTextXaxisLabel.y)
+        .text(textLabelAxis[0])
+        .style('text-anchor', styleTextXaxisLabel.textAnchor)
+        .style('dominant-baseline', styleTextXaxisLabel.dominantBaseline)
+        .attr('class', styleTextXaxisLabel.classTextXAxis);
+    }
+
+    svg
+      .append('rect')
+      .attr('x', 0)
+      .attr('y', 0)
+      .attr('width', visualConfig.width)
+      .attr('height', visualConfig.height)
+      .attr('fill', 'none')
+      .attr('stroke', 'gray');
+
+    svg.selectAll('.domain').style('stroke', 'hsl(var(--clr-sec--400))');
+    svg.selectAll('.tick line').style('stroke', 'hsl(var(--clr-sec--400))');
+    svg.selectAll('.tick text').attr('class', 'font-mono').style('stroke', 'none').style('fill', 'hsl(var(--clr-sec--500))');
+
+    // BRUSH LOGIC
+    const myBrush: any = brush()
+      .extent([
+        [0, 0],
+        [visualConfig.widthMargin, visualConfig.heightMargin],
+      ])
+      .on('brush', brushed)
+      .on('end', function (event: any) {
+        if (event.selection === null) {
+          onBrushClear(data.name, data.idData);
+        }
+      });
+
+    let selectedDataIds: string[] = [];
+
+    function brushed(event: any) {
+      if (!event.selection) {
+      } else {
+        const [[x0, y0], [x1, y1]] = event.selection;
+        dataCircles.forEach((d, i) => {
+          if (d.x >= x0 && d.x <= x1 && d.y >= y0 && d.y <= y1) {
+            selectedDataIds.push(data.idData[i]);
+          }
+        });
+
+        onBrushUpdate(selectedDataIds, data.name);
+        selectedDataIds = [];
+      }
+    }
+
+    const brushGroup = select(brushRef.current);
+    brushGroup.attr('transform', `translate(${visualConfig.margin.left},${visualConfig.margin.top})`).attr('class', 'brushingElem');
+
+    brushGroup.call(myBrush);
+
+    brushGroup
+      .select('.selection')
+      .style('fill', data.colorBrush)
+      .style('fill-opacity', 0.5)
+      .style('stroke', data.colorBrushStroke)
+      .style('stroke-width', 2);
+
+    brushGroup.selectAll('.handle').style('stroke', 'none');
+  }, [data, visualConfig, xScaleRange, yScaleRange, width]);
+
+  return (
+    <div className="w-full border border-secondary-200">
+      <div className="w-full border-light font-secondary group bg-secondary-200 truncate text-left absolute">
+        <div className="mx-1 w-full flex items-center">
+          <span>{data.nodeName}</span> <Icon component={<ArrowRightAlt />} size={32} />
+          <span>{data.attributeName}</span> <span> : </span>
+          <span>{data.attributeSelected}</span>
+        </div>
+      </div>
+      <div className="w-full flex flex-row justify-center">
+        <svg ref={svgRef} width={600} height={visualConfig.height}>
+          <g ref={groupMarginRef} />
+          <g ref={brushRef} />
+        </svg>
+      </div>
+    </div>
+  );
+};
+
+export default Scatterplot;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/SelectionEdges.tsx b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/SelectionEdges.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..1d387b9dd55fe228d7f8b615180919f58def6bea
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/SelectionEdges.tsx
@@ -0,0 +1,68 @@
+import React, { useState, useEffect } from 'react';
+import Icon from '@graphpolaris/shared/lib/components/icon';
+import * as d3 from 'd3';
+import { ArrowRightAlt } from '@mui/icons-material';
+
+type EdgeArrayItem = {
+  nameRegions: string[];
+};
+
+export type SelectionEdgesProps = EdgeArrayItem[];
+
+function handleCheckbox(index: number, checkboxStates: boolean[]) {
+  const visibility = !checkboxStates[index] ? 'block' : 'none';
+  d3.selectAll(`.edge_region0_to_region${index + 1}`).style('display', visibility);
+}
+
+const SelectionEdges: React.FC<SelectionEdgesProps> = (props) => {
+  const edgesArray = Array.isArray(props) ? props : (Object.values(props) as EdgeArrayItem[]);
+
+  const [checkboxStates, setCheckboxStates] = useState<boolean[]>([]);
+
+  useEffect(() => {
+    // To initialize states
+    setCheckboxStates((prevStates) => {
+      const newStates = [...prevStates];
+      edgesArray.forEach((_, index) => {
+        if (newStates[index] === undefined) {
+          newStates[index] = true;
+        }
+      });
+      return newStates;
+    });
+  }, [props]);
+
+  const handleCheckboxChange = (index: number) => {
+    setCheckboxStates((prevStates) => {
+      const newStates = [...prevStates];
+      newStates[index] = !prevStates[index];
+      return newStates;
+    });
+    handleCheckbox(index, checkboxStates);
+  };
+  return (
+    <div className="border border-gray p-4 bg-white rounded flex items-center">
+      <ul>
+        {edgesArray.map((element: EdgeArrayItem, index: number) => (
+          <li key={index}>
+            <div className="flex items-center space-x-2">
+              <input
+                type="checkbox"
+                checked={checkboxStates[index]}
+                className="checkbox checkbox-sm"
+                onChange={() => handleCheckboxChange(index)}
+              ></input>
+              <div>
+                <span>{element.nameRegions[0]}</span>
+                <Icon component={<ArrowRightAlt />} size={32} />
+                <span>{element.nameRegions[1]}</span>
+              </div>
+            </div>
+          </li>
+        ))}
+      </ul>
+    </div>
+  );
+};
+
+export default SelectionEdges;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/types.tsx b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/types.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..55051369e8edd830ede10dbcaa50b6083346fcd7
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/types.tsx
@@ -0,0 +1,156 @@
+import { NodeAttributes } from '@graphpolaris/shared/lib/data-access/store/graphQueryResultSlice';
+
+export interface NodesGraphology {
+  key: string;
+  attributes: object[];
+}
+
+export interface EdgesGraphology {
+  key: string;
+  attributes: object[];
+}
+
+export interface GraphData {
+  name?: string;
+  nodes: AugmentedNodeAttributes[];
+  edges: AugmentedEdgeAttributes[];
+}
+
+export interface UserSelection {
+  name: string;
+  nodeName: string;
+  attributeAsRegion: string;
+  attributeAsRegionSelection: string;
+  placement: {
+    xAxis: string;
+    yAxis: string;
+    colorNodes: string;
+    colorNodesStroke: string;
+    colorFillBrush: string;
+    colorStrokeBrush: string;
+  };
+}
+
+export interface DataPoint {
+  x: number;
+  y: number;
+  id: string;
+}
+
+export interface DataPointXY {
+  x: number;
+  y: number;
+}
+
+export interface connectionFromTo {
+  to: string;
+  from: string;
+}
+
+export interface edgeVisibility {
+  id: string;
+  to: boolean;
+  from: boolean;
+  visibility: boolean;
+}
+
+export interface idConnectionsObjects {
+  from: idConnections;
+  to: idConnections;
+}
+
+export interface idConnections {
+  [key: string]: string[];
+}
+
+export interface DataConnection {
+  from: string;
+  to: string;
+}
+
+export interface Node {
+  id: string;
+  label: string;
+  attributes: object[];
+  _key: string;
+  _rev: string;
+}
+
+export interface AugmentedNodeAttributes {
+  id: string;
+  attributes: NodeAttributes;
+  label: string;
+}
+
+export interface AugmentedEdgeAttributes {
+  attributes: NodeAttributes;
+  from: string;
+  to: string;
+  id: string;
+  label: string;
+}
+
+export interface dataConfig {
+  entityVertical: string;
+  attributeEntity: string;
+  attributeValueSelected: string;
+  orderNameXaxis: string;
+  orderNameYaxis: string;
+  isButtonEnabled: boolean;
+}
+
+export interface Edge {
+  from: string;
+  id: string;
+  attributes: object[];
+  label: string;
+  _key: string;
+  _rev: string;
+}
+
+export interface VisualRegionConfig {
+  marginPercentage: {
+    top: number;
+    right: number;
+    bottom: number;
+    left: number;
+  };
+  margin: {
+    top: number;
+    right: number;
+    bottom: number;
+    left: number;
+  };
+  width: number;
+  widthPercentage: number;
+  height: number;
+  widthMargin: number;
+  heightMargin: number;
+}
+
+export interface VisualEdgesConfig {
+  width: number;
+  height: number;
+  configRegion: VisualRegionConfig;
+  offsetY: number;
+  stroke: string;
+  strokeWidth: number;
+  strokeOpacity: number;
+}
+
+export interface regionData {
+  name: string;
+  xData: any[];
+  yData: any[];
+  idData: string[];
+  colorNodes: string;
+  colorNodesStroke: string;
+  colorBrush: string;
+  colorBrushStroke: string;
+  nodeName: string;
+  attributeName: string;
+  attributeSelected: string;
+  xAxisName: string;
+  yAxisName: string;
+  label: string;
+}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/utils.ts b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/utils.ts
new file mode 100644
index 0000000000000000000000000000000000000000..151aa80957a96040ca734f402bfdfadeb7b398bb
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/components/utils.ts
@@ -0,0 +1,273 @@
+import { UserSelection, regionData, AugmentedNodeAttributes, connectionFromTo, idConnections, edgeVisibility } from './types';
+import * as d3 from 'd3';
+import { RefObject } from 'react';
+
+import Graph, { MultiGraph } from 'graphology';
+
+export function findConnectionsNodes(
+  queryIDs: string[],
+  originIDs: string[],
+  graphStructure: MultiGraph,
+  labelNode: string,
+): [connectionFromTo[], string[]] {
+  const neighborMap: idConnections = {};
+
+  originIDs.forEach((nodeId) => {
+    const tempSet: Set<string> = new Set();
+    graphStructure.forEachNeighbor(nodeId, (neighbor, attributes) => {
+      if (attributes.label != labelNode) {
+        graphStructure.forEachNeighbor(neighbor, (neighbor2, attributes2) => {
+          if (queryIDs.includes(neighbor2) && neighbor2 !== nodeId) {
+            tempSet.add(neighbor2);
+          }
+        });
+      } else {
+        if (queryIDs.includes(neighbor) && neighbor !== nodeId) {
+          tempSet.add(neighbor);
+        }
+      }
+    });
+    neighborMap[nodeId] = Array.from(tempSet);
+  });
+
+  const edgeStrings = wrapperForEdge(neighborMap);
+  const edgeStrings2 = wrapperForEdgeString(neighborMap);
+
+  return [edgeStrings, edgeStrings2];
+}
+export function filterArray(ids1: string[], ids2: string[], targetArray: string[], delimiter: string): string[] {
+  return targetArray.filter((item) => {
+    const [firstPart, secondPart] = item.split(delimiter);
+
+    const ids1Match = ids1.length === 0 || ids1.some((id) => firstPart == id);
+    const ids2Match = ids2.length === 0 || ids2.some((id) => secondPart == id);
+
+    return ids1Match && ids2Match;
+  });
+}
+
+export function filterArray2(ids1: string[], ids2: string[], targetArray: string[]): string[] {
+  const filteredWithIds1 = targetArray.filter((item) => {
+    return ids1.every((id) => item.includes(id));
+  });
+
+  return filteredWithIds1.filter((item) => {
+    return ids2.every((id) => item.includes(id));
+  });
+}
+
+export function getRegionData(nodes: AugmentedNodeAttributes[], regionUserSelection: UserSelection): regionData {
+  // when one of the fields is an array the elemnts in ConfigPanel are joined with "-".
+  // then regionUserSelection.attributeAsRegionSelection will be a string of the elements joined by "-"
+  // that is why item.attributes[regionUserSelection.attributeAsRegion] is join with ("-")
+
+  let filteredData: AugmentedNodeAttributes[] = nodes.filter((item: AugmentedNodeAttributes) => {
+    return (
+      item.label === regionUserSelection.nodeName &&
+      item.attributes &&
+      (Array.isArray(item.attributes[regionUserSelection.attributeAsRegion])
+        ? (item.attributes[regionUserSelection.attributeAsRegion] as string[]).join('-') === regionUserSelection.attributeAsRegionSelection
+        : item.attributes[regionUserSelection.attributeAsRegion] === regionUserSelection.attributeAsRegionSelection)
+    );
+  });
+  if (filteredData.length === 0) filteredData = [];
+
+  const idData: string[] = filteredData.map((item) => item.id);
+  let xAxis: any[] = [];
+  if (regionUserSelection.placement.xAxis != '') {
+    xAxis = filteredData.map((item) => {
+      const value = item.attributes[regionUserSelection.placement.xAxis as keyof typeof item.attributes];
+      return value;
+    });
+  }
+
+  let yAxis: any[] = [];
+  if (regionUserSelection.placement.yAxis != '') {
+    yAxis = filteredData.map((item) => {
+      const value = item.attributes[regionUserSelection.placement.yAxis as keyof typeof item.attributes];
+      return value;
+    });
+  }
+
+  const regionData = {
+    name: regionUserSelection.name,
+    xData: xAxis,
+    yData: yAxis,
+    idData: idData,
+    colorNodes: regionUserSelection.placement.colorNodes,
+    colorNodesStroke: regionUserSelection.placement.colorNodesStroke,
+    colorBrush: regionUserSelection.placement.colorFillBrush,
+    colorBrushStroke: regionUserSelection.placement.colorStrokeBrush,
+    nodeName: regionUserSelection.nodeName,
+    attributeName: regionUserSelection.attributeAsRegion,
+    attributeSelected: regionUserSelection.attributeAsRegionSelection,
+    xAxisName: regionUserSelection.placement.xAxis,
+    yAxisName: regionUserSelection.placement.yAxis,
+    label: filteredData?.[0]?.label || nodes[0].label,
+  };
+
+  return regionData;
+}
+
+export function setExtension(margin: number, data: number[]): [number, number] {
+  const extentData: [number, number] = d3.extent(data) as [number, number];
+
+  if (extentData[0] >= 0.0 && extentData[1] > 0.0) {
+    return [extentData[0] * (1.0 - margin), extentData[1] * (1.0 + margin)];
+  } else if (extentData[0] <= 0.0 && extentData[1] >= 0.0) {
+    return [extentData[0] * (1.0 + margin), extentData[1] * (1.0 + margin)];
+  } else {
+    return [extentData[0] * (1.0 + margin), extentData[1] * (1.0 - margin)];
+  }
+}
+
+export function getUniqueValues(arr: any[]): any[] {
+  return [...new Set(arr)];
+}
+
+export function findSimilarElements(array1: string[], array2: string[]): string[] {
+  return array1.filter((element) => array2.includes(element));
+}
+
+export function wrapperForEdge(data: idConnections): connectionFromTo[] {
+  const keysData = Object.keys(data);
+  const resultsDas: connectionFromTo[] = [];
+  const results = keysData.forEach((item) => {
+    const r = data[item].forEach((itemConnected) => {
+      resultsDas.push({ from: item, to: itemConnected });
+    });
+  });
+  return resultsDas;
+}
+
+export function wrapperForEdgeString(data: idConnections): string[] {
+  const keysData = Object.keys(data);
+  const resultsDas: string[] = [];
+  const results = keysData.forEach((item) => {
+    const r = data[item].forEach((itemConnected) => {
+      resultsDas.push(item + '_fromto_' + itemConnected);
+    });
+  });
+  return resultsDas;
+}
+
+export function wrapperEdgeVisibility(data: connectionFromTo[]): edgeVisibility[] {
+  let transformedArray: edgeVisibility[] = data.map(function (item) {
+    const from_stringModified = item.from.replace('/', '_');
+    const to_stringModified = item.to.replace('/', '_');
+    const elementString = `${from_stringModified}_fromto_${to_stringModified}`;
+    return { id: elementString, from: true, to: true, visibility: true };
+  });
+
+  return transformedArray;
+}
+
+export function updateConnections(regionA: RefObject<string[][]>, regionB: RefObject<string[][]>, nameEdges: RefObject<string[]>) {
+  if (regionA.current && regionB.current && nameEdges.current) {
+    let edgeVisible: string[] = [];
+    for (let idxEdges = 0; idxEdges < regionB.current.length; idxEdges++) {
+      if (regionA.current[idxEdges].length != 0 && regionB.current[idxEdges].length != 0) {
+        edgeVisible = findSimilarElements(regionA.current[idxEdges], regionB.current[idxEdges]);
+      } else if (regionA.current[idxEdges].length == 0 && regionB.current[idxEdges].length != 0) {
+        edgeVisible = regionB.current[idxEdges];
+      } else if (regionA.current[idxEdges].length != 0 && regionB.current[idxEdges].length == 0) {
+        edgeVisible = regionA.current[idxEdges];
+      } else if (regionA.current[idxEdges].length == 0 && regionB.current[idxEdges].length == 0) {
+        edgeVisible = [];
+      } else {
+      }
+    }
+  } else {
+    console.error('Either regionA or regionB is null.');
+  }
+}
+
+export function partiallyContainedElements(arr1: string[], arr2: string[]): string[] {
+  const partiallyContained: string[] = [];
+
+  for (let str1 of arr1) {
+    for (let str2 of arr2) {
+      if (str2.includes(str1) || str1.includes(str2)) {
+        partiallyContained.push(str2);
+      }
+    }
+  }
+
+  return partiallyContained;
+}
+
+export function isNumeric(str: string): boolean {
+  if (typeof str !== 'string') return false;
+  return !isNaN(Number(str)) && !isNaN(parseFloat(str));
+}
+
+export function calcTextWidth(textArray: string | string[], maxLengthAllowed: number, tailwindStyle: string): string[] {
+  const labels = Array.isArray(textArray) ? textArray : [textArray];
+
+  const truncatedLabels: string[] = [];
+
+  labels.forEach((rowLabel, index) => {
+    let truncatedText = rowLabel;
+    let truncatedWidth = 0;
+
+    while (truncatedText.length > 0) {
+      const tempElement = document.createElement('span');
+      tempElement.style.position = 'absolute';
+      tempElement.style.visibility = 'hidden';
+      tempElement.style.pointerEvents = 'none';
+      tempElement.style.whiteSpace = 'nowrap';
+      tempElement.style.font = getComputedStyle(document.body).font;
+
+      tempElement.className = tailwindStyle;
+
+      tempElement.textContent = truncatedText;
+      document.body.appendChild(tempElement);
+
+      truncatedWidth = tempElement.getBoundingClientRect().width;
+      document.body.removeChild(tempElement);
+
+      if (truncatedWidth <= maxLengthAllowed) {
+        break;
+      }
+
+      truncatedText = truncatedText.slice(0, -1);
+    }
+
+    if (truncatedText !== rowLabel) {
+      truncatedLabels.push(truncatedText + '...');
+    } else {
+      truncatedLabels.push(truncatedText);
+    }
+  });
+
+  return truncatedLabels;
+}
+
+export function calcTextWidthCanvas(rowLabels: string[], maxLengthAllowed: number): string[] {
+  rowLabels.forEach((rowLabel, index) => {
+    let truncatedText = rowLabel;
+    let truncatedWidth = 0;
+
+    const c = document.createElement('canvas');
+    const ctx = c.getContext('2d') as CanvasRenderingContext2D;
+    ctx.font = getComputedStyle(document.body).font;
+    while (truncatedText.length > 0) {
+      truncatedWidth = ctx.measureText(truncatedText).width;
+
+      if (truncatedWidth <= maxLengthAllowed) {
+        // If the truncated text fits within the allowed width, break the loop
+        break;
+      }
+
+      // Remove the last character and try again
+      truncatedText = truncatedText.slice(0, -1);
+    }
+
+    if (truncatedText !== rowLabel) {
+      // If the label was truncated, update the original rowLabels array
+      rowLabels[index] = truncatedText + '...';
+    }
+  });
+
+  return rowLabels;
+}
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstratesvis/semanticsubstratesvis.stories.tsx b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/semanticsubstratesvis.stories.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..a618ef2ae003ae9fa013255d4920889f137abcb2
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/semanticsubstratesvis.stories.tsx
@@ -0,0 +1,87 @@
+import React from 'react';
+import { Meta } from '@storybook/react';
+import { VisualizationPanel } from '../../visualizationPanel';
+import { SchemaUtils } from '../../../schema/schema-utils';
+
+import {
+  assignNewGraphQueryResult,
+  graphQueryResultSlice,
+  querybuilderSlice,
+  schemaSlice,
+  setSchema,
+  visualizationSlice,
+} from '../../../data-access/store';
+import { configureStore } from '@reduxjs/toolkit';
+import { Provider } from 'react-redux';
+import {
+  big2ndChamberQueryResult,
+  gotCharacter2Character,
+  mockRecommendationsActorMovie,
+  marieBoucherSampleSchemaRaw,
+  big2ndChamberSchemaRaw,
+} from '../../../mock-data';
+import { setActiveVisualization } from '@graphpolaris/shared/lib/data-access/store/visualizationSlice';
+
+const Component: Meta<typeof VisualizationPanel> = {
+  /* 👇 The title prop is optional.
+   * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading
+   * to learn how to generate automatic titles
+   */
+  title: 'Visualizations/VisSemanticSubstrates',
+  component: VisualizationPanel,
+  decorators: [
+    (story) => (
+      <Provider store={Mockstore}>
+        <div
+          style={{
+            width: '100%',
+            height: '100vh',
+          }}
+        >
+          {story()}
+        </div>
+      </Provider>
+    ),
+  ],
+};
+
+const Mockstore = configureStore({
+  reducer: {
+    schema: schemaSlice.reducer,
+    graphQueryResult: graphQueryResultSlice.reducer,
+    visualize: visualizationSlice.reducer,
+    querybuilder: querybuilderSlice.reducer,
+  },
+});
+
+export const TestWithBig2ndChamber = {
+  play: async () => {
+    const dispatch = Mockstore.dispatch;
+    const schema = SchemaUtils.schemaBackend2Graphology(big2ndChamberSchemaRaw);
+    dispatch(setSchema(schema.export()));
+    dispatch(assignNewGraphQueryResult({ queryID: '1', result: { type: 'nodelink', payload: big2ndChamberQueryResult } }));
+    dispatch(setActiveVisualization('SemSubstrVis'));
+  },
+};
+
+export const TestWithRecommendationsActorMovie = {
+  play: async () => {
+    const dispatch = Mockstore.dispatch;
+    const schema = SchemaUtils.schemaBackend2Graphology(marieBoucherSampleSchemaRaw);
+    dispatch(setSchema(schema.export()));
+    dispatch(assignNewGraphQueryResult({ queryID: '1', result: { type: 'nodelink', payload: mockRecommendationsActorMovie } }));
+    dispatch(setActiveVisualization('SemSubstrVis'));
+  },
+};
+
+export const TestWithGOTcharacter2character = {
+  play: async () => {
+    const dispatch = Mockstore.dispatch;
+    const schema = SchemaUtils.schemaBackend2Graphology(marieBoucherSampleSchemaRaw);
+    dispatch(setSchema(schema.export()));
+    dispatch(assignNewGraphQueryResult({ queryID: '1', result: { type: 'nodelink', payload: gotCharacter2Character } }));
+    dispatch(setActiveVisualization('SemSubstrVis'));
+  },
+};
+
+export default Component;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstratesvis/semanticsubstratesvis.tsx b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/semanticsubstratesvis.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..56bc0a031a74f5522975a36c8b078f54a6ebfd7c
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/semanticsubstratesvis.tsx
@@ -0,0 +1,424 @@
+import React, { useRef, useState, useMemo, useEffect } from 'react';
+import Scatterplot, { KeyedScatterplotProps } from './components/Scatterplot';
+
+import { categoricalColors } from 'config/src/colors';
+import { VISComponentType, VisualizationPropTypes } from '../../types';
+import { findConnectionsNodes, getRegionData, setExtension, filterArray, getUniqueValues } from './components/utils';
+
+import { Node } from '@graphpolaris/shared/lib/data-access/store/graphQueryResultSlice';
+import {
+  UserSelection,
+  regionData,
+  dataConfig,
+  AugmentedNodeAttributes,
+  VisualEdgesConfig,
+  connectionFromTo,
+  AugmentedEdgeAttributes,
+  DataPoint,
+} from './components/types';
+import ConfigPanel from './components/ConfigPanel';
+import EdgesLayer, { KeyedEdgesLayerProps } from './components/EdgesLayer';
+
+import { MultiGraph } from 'graphology';
+//import d3 from 'd3';
+import { select, selectAll, scaleOrdinal } from 'd3';
+
+import { buildGraphology, configVisualRegion, config, numColorsCategorical, marginAxis, isColorCircleFix } from './utils';
+
+export type SemSubstrProps = {
+  showColor: boolean;
+};
+
+const displayName = 'SemSubstrVis';
+export const VisSemanticSubstrates = ({ data: graphQueryResult, schema, settings }: VisualizationPropTypes) => {
+  const nodes = graphQueryResult.nodes;
+  const edges = graphQueryResult.edges;
+
+  const divRef = useRef<HTMLDivElement>(null);
+  const idEdges = useRef<string[][]>([]);
+  const nameEdges = useRef<string[]>([]);
+  const idBrushed = useRef<string[][]>([]);
+
+  const [divSize, setDivSize] = useState({ width: 0, height: 0 });
+  const [appState, setAppState] = useState({
+    isButtonClicked: false,
+    scatterplots: [] as KeyedScatterplotProps[],
+    dataRegions: [] as regionData[],
+  });
+  const [stateEdges, setStateEdges] = useState({
+    edgePlotted: [] as KeyedEdgesLayerProps[],
+  });
+  const [arrayConnections, setarrayConnections] = useState<connectionFromTo[][]>([]);
+  const [computedData, setComputedData] = useState({
+    region1: [] as DataPoint[],
+    region2: [] as DataPoint[],
+  });
+
+  const augmentedNodes: AugmentedNodeAttributes[] = useMemo(() => {
+    return nodes.map((node: Node) => ({
+      id: node.id,
+      attributes: node.attributes,
+      label: node.label,
+    }));
+  }, [nodes]);
+
+  const augmentedEdges: AugmentedEdgeAttributes[] = useMemo(() => {
+    return edges.map((edge: any) => ({
+      id: edge.id,
+      to: edge.to,
+      from: edge.from,
+      attributes: edge.attributes,
+      label: edge.label,
+    }));
+  }, [edges]);
+
+  const attributesArray = nodes.map((node) => node.attributes);
+
+  const graphologyGraph: MultiGraph = useMemo(
+    () => buildGraphology({ nodes: Object.values(augmentedNodes), edges: Object.values(augmentedEdges) }),
+    [augmentedNodes, augmentedEdges],
+  );
+
+  const pushElement = (newElement: connectionFromTo[]) => {
+    setarrayConnections((prevArray) => [...prevArray, newElement]);
+  };
+
+  const configVisualEdges = useRef<VisualEdgesConfig>({
+    width: configVisualRegion.width,
+    height: 2 * configVisualRegion.height,
+    configRegion: configVisualRegion,
+    offsetY: 0,
+    stroke: 'TBD',
+    strokeWidth: config.edges.strokeWidth,
+    strokeOpacity: config.edges.strokeOpacity,
+  });
+
+  const handleBrushClear = useMemo(() => {
+    return (selectedElement: string, idData: string[]): void => {
+      let modifiedString: number = +selectedElement.replace('region', '');
+      idBrushed.current[modifiedString] = [];
+
+      idEdges.current.forEach((edgesR0RN, index) => {
+        if (edgesR0RN.length != 0) {
+          if (idBrushed.current[0].length == 0 && idBrushed.current[index + 1].length == 0) {
+            select(`.edge_region0_to_region${index + 1}`)
+              .selectAll('path')
+              .style('stroke-opacity', 1);
+          } else {
+            const edgesVisible = filterArray(idBrushed.current[0], idBrushed.current[index + 1], edgesR0RN, '_fromto_');
+
+            const edgesVisibleSlash = edgesVisible.map((element) => element.replace(/\//g, '_'));
+
+            const edgesVisibleSlashNotNum = edgesVisibleSlash.map((item) => {
+              if (/^\d/.test(item)) {
+                return 'idAdd_' + item;
+              } else {
+                return item;
+              }
+            });
+
+            const edgesVisibleSlashDot: string = edgesVisibleSlashNotNum.map((edgeClass) => `.${edgeClass}`).join(',');
+            select(`.edge_region0_to_region${index + 1}`)
+              .selectAll('path')
+              .style('stroke-opacity', 0);
+            selectAll(edgesVisibleSlashDot).style('stroke-opacity', 1);
+          }
+        }
+      });
+    };
+  }, []);
+
+  const handleBrushUpdate = useMemo(() => {
+    return (idElements: string[], selectedElement: string): void => {
+      let modifiedString: number = +selectedElement.replace('region', '');
+      idBrushed.current[modifiedString] = idElements;
+
+      // iterate over the region pairs: r0-r1, r0-r2, and update visibility of edges based on registered brushed ids
+      idEdges.current.forEach((edgesR0RN, index) => {
+        if (modifiedString == 0) {
+          if (idBrushed.current[0].length == 0 && idBrushed.current[index + 1].length == 0) {
+            select(`.edge_region0_to_region${index + 1}`)
+              .selectAll('path')
+              .style('stroke-opacity', 0);
+          } else {
+            const edgesVisible = filterArray(idBrushed.current[0], idBrushed.current[index + 1], edgesR0RN, '_fromto_');
+
+            if (edgesVisible.length != 0) {
+              const edgesVisibleSlash = edgesVisible.map((element) => element.replace(/\//g, '_'));
+              const edgesVisibleSlashNotNum = edgesVisibleSlash.map((item) => {
+                if (/^\d/.test(item)) {
+                  return 'idAdd_' + item;
+                } else {
+                  return item;
+                }
+              });
+
+              const edgesVisibleSlashDot: string = edgesVisibleSlashNotNum.map((edgeClass) => `.${edgeClass}`).join(',');
+
+              select(`.edge_region0_to_region${index + 1}`)
+                .selectAll('path')
+                .style('stroke-opacity', 0);
+              selectAll(edgesVisibleSlashDot).style('stroke-opacity', 1);
+            } else {
+              select(`.edge_region0_to_region${index + 1}`)
+                .selectAll('path')
+                .style('stroke-opacity', 0);
+            }
+          }
+        } else if (modifiedString == index + 1) {
+          if (idBrushed.current[0].length == 0 && idBrushed.current[index + 1].length == 0) {
+            select(`.edge_region0_to_region${index + 1}`)
+              .selectAll('path')
+              .style('stroke-opacity', 0);
+          } else {
+            const edgesVisible = filterArray(idBrushed.current[0], idBrushed.current[index + 1], edgesR0RN, '_fromto_');
+
+            if (edgesVisible.length != 0) {
+              const edgesVisibleSlash = edgesVisible.map((element) => element.replace(/\//g, '_'));
+              const edgesVisibleSlashNotNum = edgesVisibleSlash.map((item) => {
+                if (/^\d/.test(item)) {
+                  return 'idAdd_' + item;
+                } else {
+                  return item;
+                }
+              });
+
+              const edgesVisibleSlashDot: string = edgesVisibleSlashNotNum.map((edgeClass) => `.${edgeClass}`).join(',');
+
+              select(`.edge_region0_to_region${index + 1}`)
+                .selectAll('path')
+                .style('stroke-opacity', 0);
+              selectAll(edgesVisibleSlashDot).style('stroke-opacity', 1);
+            } else {
+              select(`.edge_region0_to_region${index + 1}`)
+                .selectAll('path')
+                .style('stroke-opacity', 0);
+            }
+          }
+        }
+      });
+    };
+  }, []);
+
+  const handleResultJitter = (data: DataPoint[]) => {
+    setComputedData((prevData) => {
+      if (prevData.region1.length === 0) {
+        return {
+          ...prevData,
+          region1: data,
+        };
+      } else {
+        return {
+          ...prevData,
+          region2: data,
+        };
+      }
+    });
+  };
+
+  useEffect(() => {
+    if (divRef.current) {
+      setDivSize({ width: divRef.current.getBoundingClientRect().width, height: divRef.current.getBoundingClientRect().height });
+    }
+  }, [divRef]);
+
+  useEffect(() => {
+    if (computedData.region1.length > 0 && computedData.region2.length > 0) {
+      let colorEdges: string;
+
+      if (isColorCircleFix) {
+        colorEdges = config.edges.stroke;
+      } else {
+        colorEdges = config.edges.stroke;
+
+        if (appState.scatterplots.length < numColorsCategorical) {
+          colorEdges = (categoricalColors.darkMode as Record<number, string>)[appState.scatterplots.length + 1];
+        } else {
+          colorEdges = (categoricalColors.darkMode as Record<number, string>)[appState.scatterplots.length + 1 - numColorsCategorical];
+        }
+      }
+
+      configVisualEdges.current = {
+        ...configVisualEdges.current,
+        stroke: colorEdges,
+      };
+
+      const newEdgePlot: KeyedEdgesLayerProps = {
+        key: appState.scatterplots.length.toString(),
+        dataConnections: arrayConnections[appState.scatterplots.length - 2],
+        visualConfig: configVisualEdges,
+        data1: computedData.region1,
+        data2: computedData.region2,
+        nameEdges: nameEdges.current[appState.dataRegions.length - 2],
+        width: 0,
+        nameRegions: [appState.dataRegions[0].attributeSelected, appState.dataRegions[appState.dataRegions.length - 1].attributeSelected],
+      };
+
+      setStateEdges({
+        edgePlotted: [...stateEdges.edgePlotted, newEdgePlot],
+      });
+    }
+  }, [computedData.region2]);
+
+  const handleUpdateData = (data: dataConfig) => {
+    let colorCircle: string;
+    let strokeCircle: string;
+
+    if (isColorCircleFix) {
+      colorCircle = config.circle.fillClr;
+      strokeCircle = config.circle.strokeClr;
+    } else {
+      if (appState.scatterplots.length < numColorsCategorical) {
+        colorCircle = (categoricalColors.darkMode as Record<number, string>)[appState.scatterplots.length + 1];
+      } else {
+        colorCircle = (categoricalColors.darkMode as Record<number, string>)[appState.scatterplots.length + 1 - numColorsCategorical];
+      }
+
+      strokeCircle = config.circle.strokeClr;
+    }
+
+    const regionUserSelection: UserSelection = {
+      name: `region${appState.scatterplots.length}`,
+      nodeName: data.entityVertical,
+      attributeAsRegion: data.attributeEntity,
+      attributeAsRegionSelection: data.attributeValueSelected,
+      placement: {
+        xAxis: data.orderNameXaxis,
+        yAxis: data.orderNameYaxis,
+        colorNodes: colorCircle,
+        colorNodesStroke: strokeCircle,
+        colorFillBrush: config.brush.fillClr,
+        colorStrokeBrush: config.brush.strokeClr,
+      },
+    };
+
+    const regionDataUser: regionData = getRegionData(augmentedNodes, regionUserSelection);
+
+    let xScaleShared: any;
+    let yScaleShared: any;
+
+    if (regionDataUser.xData.length != 0 && regionDataUser.yData.length != 0) {
+      if (typeof regionDataUser.xData[0] != 'number') {
+        const xExtent = getUniqueValues(regionDataUser.xData);
+        xScaleShared = xExtent;
+      } else {
+        const xExtent: [number, number] = setExtension(marginAxis, [...regionDataUser.xData, ...regionDataUser.xData]);
+        xScaleShared = xExtent;
+      }
+
+      if (typeof regionDataUser.yData[0] != 'number') {
+        const yExtent = getUniqueValues(regionDataUser.yData);
+        yScaleShared = yExtent;
+      } else {
+        const yExtent: [number, number] = setExtension(marginAxis, [...regionDataUser.yData, ...regionDataUser.yData]);
+        yScaleShared = yExtent;
+      }
+    } else if (regionDataUser.xData.length != 0) {
+      if (typeof regionDataUser.xData[0] != 'number') {
+        const xExtent = getUniqueValues(regionDataUser.xData);
+        xScaleShared = xExtent;
+
+        yScaleShared = [-1, 1];
+      } else {
+        const xExtent: string[] | number[] = setExtension(marginAxis, [...regionDataUser.xData, ...regionDataUser.xData]);
+        xScaleShared = xExtent;
+
+        yScaleShared = [-1, 1];
+      }
+    } else if (regionDataUser.yData.length != 0) {
+      if (typeof regionDataUser.yData[0] != 'number') {
+        const yExtent = getUniqueValues(regionDataUser.yData);
+        yScaleShared = yExtent;
+
+        xScaleShared = [-1, 1];
+      } else {
+        const yExtent: [number, number] = setExtension(marginAxis, [...regionDataUser.yData, ...regionDataUser.yData]);
+
+        yScaleShared = yExtent;
+
+        xScaleShared = [-1, 1];
+      }
+    }
+
+    const arrayIDs = regionDataUser.idData.map((item) => item);
+    const newScatterplot: KeyedScatterplotProps = {
+      key: appState.scatterplots.length,
+      data: regionDataUser,
+      visualConfig: configVisualRegion,
+      xScaleRange: xScaleShared,
+      yScaleRange: yScaleShared,
+      width: 0,
+      onBrushUpdate: handleBrushUpdate,
+      onResultJitter: handleResultJitter,
+      onBrushClear: handleBrushClear,
+    };
+
+    setAppState({
+      ...appState,
+      scatterplots: [...appState.scatterplots, newScatterplot],
+      dataRegions: [...appState.dataRegions, regionDataUser],
+    });
+
+    idBrushed.current[appState.scatterplots.length] = [];
+
+    if (appState.scatterplots.length >= 2) {
+      configVisualEdges.current = {
+        ...configVisualEdges.current,
+        height: configVisualEdges.current.height + configVisualRegion.height * (appState.scatterplots.length - 1),
+        offsetY: configVisualRegion.height * (appState.scatterplots.length - 1),
+      };
+    }
+
+    if (appState.scatterplots.length == 0) {
+    } else {
+      if (graphologyGraph) {
+        const [connectedD, connectedD2] = findConnectionsNodes(
+          arrayIDs,
+          appState.dataRegions[0].idData,
+          graphologyGraph,
+          regionDataUser.label,
+        );
+
+        idEdges.current.push(connectedD2);
+
+        pushElement(connectedD);
+
+        nameEdges.current.push(`edge_region0_to_${regionUserSelection.name}`);
+      }
+    }
+  };
+
+  return (
+    <div className="w-full font-inter overflow-x-hidden overflow-y-hidden">
+      <div className="w-full  flex flex-row justify-center">
+        <ConfigPanel data={augmentedNodes} onUpdateData={handleUpdateData} />
+      </div>
+      <div className="w-full relative" ref={divRef}>
+        {divSize.width > 0 && (
+          <>
+            <div className="w-full regionContainer z-0">
+              {appState.scatterplots.map((scatterplot) => (
+                <Scatterplot {...scatterplot} width={divSize.width} />
+              ))}
+            </div>
+            <div className="pointer-events-none absolute top-0 w-full flex flex-row justify-center">
+              {stateEdges.edgePlotted.map((edegePlot, index) => (
+                <div key={index} className="absolute">
+                  <EdgesLayer {...edegePlot} width={divSize.width} />
+                </div>
+              ))}
+            </div>
+          </>
+        )}
+      </div>
+    </div>
+  );
+};
+
+export const SemSubstrVisComponent: VISComponentType = {
+  displayName: displayName,
+  VIS: VisSemanticSubstrates,
+  settings: {},
+};
+
+export default SemSubstrVisComponent;
diff --git a/libs/shared/lib/vis/visualizations/semanticsubstratesvis/utils.ts b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/utils.ts
new file mode 100644
index 0000000000000000000000000000000000000000..34c0ee1487b6be4256d1b85601854070e9e224f2
--- /dev/null
+++ b/libs/shared/lib/vis/visualizations/semanticsubstratesvis/utils.ts
@@ -0,0 +1,96 @@
+import { categoricalColors } from 'config';
+import { MultiGraph } from 'graphology';
+import { AugmentedEdgeAttributes, GraphData, VisualRegionConfig } from './components/types';
+import { GraphQueryResult, Node } from '@graphpolaris/shared/lib/data-access/store/graphQueryResultSlice';
+
+const buildGraphology = (data: GraphData): MultiGraph => {
+  const graph = new MultiGraph();
+
+  const nodeMap = new Map<string, Node>();
+  data.nodes.forEach((node) => {
+    nodeMap.set(node.id, node);
+  });
+
+  const nodeEntries = data.nodes.map((node) => ({
+    key: node.id,
+    attributes: {
+      ...node.attributes,
+      label: node.label,
+    },
+  }));
+
+  graph.import({ nodes: nodeEntries });
+
+  const validEdgeEntries = data.edges
+    .filter((edge) => nodeMap.has(edge.from) && nodeMap.has(edge.to))
+    .map((edge) => ({
+      source: edge.from,
+      target: edge.to,
+    }));
+
+  graph.import({ edges: validEdgeEntries });
+
+  return graph;
+};
+
+const numColorsCategorical = Object.keys(categoricalColors.lightMode).length;
+export const isColorCircleFix = true;
+let config: any = {};
+if (isColorCircleFix) {
+  config = {
+    circle: {
+      fillClr: 'hsl(var(--clr-sec--500))',
+      strokeClr: 'hsl(var(--clr-sec--500))',
+    },
+    edges: {
+      stroke: 'bg-secondary-600',
+      strokeWidth: '2',
+      strokeOpacity: '0.7',
+    },
+
+    brush: {
+      fillClr: 'hsl(var(--clr-sec--100))',
+      strokeClr: 'black',
+    },
+  };
+} else {
+  config = {
+    circle: {
+      fillClr: 'NO_USED',
+      strokeClr: 'hsl(var(--clr-sec--500))',
+    },
+    edges: {
+      stroke: 'NO_USED',
+      strokeWidth: '2',
+      strokeOpacity: '0.7',
+    },
+    brush: {
+      fillClr: 'hsl(var(--clr-sec--100))',
+      strokeClr: 'black',
+    },
+  };
+}
+
+const marginAxis = 0.2;
+
+const configVisualRegion: VisualRegionConfig = {
+  marginPercentage: { top: 0.14, right: 0.15, bottom: 0.2, left: 0.15 },
+  margin: { top: 0.0, right: 0.0, bottom: 0.0, left: 0.0 },
+  width: 600,
+  widthPercentage: 0.4,
+  height: 300,
+  widthMargin: 0.0,
+  heightMargin: 0.0,
+};
+
+configVisualRegion.margin = {
+  top: configVisualRegion.marginPercentage.top * configVisualRegion.height,
+  right: configVisualRegion.marginPercentage.right * configVisualRegion.width,
+  bottom: configVisualRegion.marginPercentage.bottom * configVisualRegion.height,
+  left: configVisualRegion.marginPercentage.left * configVisualRegion.width,
+};
+
+configVisualRegion.widthMargin = configVisualRegion.width - configVisualRegion.margin.right - configVisualRegion.margin.left;
+configVisualRegion.heightMargin = configVisualRegion.height - configVisualRegion.margin.top - configVisualRegion.margin.bottom;
+
+export { buildGraphology, numColorsCategorical, config, configVisualRegion, marginAxis };
diff --git a/libs/shared/lib/vis/visualizations/tablevis/components/Table.tsx b/libs/shared/lib/vis/visualizations/tablevis/components/Table.tsx
index ce4a3e89f241869371c00b115bed799aea1e4794..e9c21bc0be7e2da9539fcadb6e0686dcc0431748 100644
--- a/libs/shared/lib/vis/visualizations/tablevis/components/Table.tsx
+++ b/libs/shared/lib/vis/visualizations/tablevis/components/Table.tsx
@@ -27,6 +27,7 @@ type Data2RenderI = {
 export const Table = ({ data, itemsPerPage, showBarPlot }: TableProps) => {
   const maxUniqueValues = 69;
   const barPlotNumBins = 10;
+  const fetchAttributes = 0;
 
   const [sortedData, setSortedData] = useState<AugmentedNodeAttributes[]>(data);
   const [sortOrder, setSortOrder] = useState<'asc' | 'desc'>('asc');
@@ -38,7 +39,7 @@ export const Table = ({ data, itemsPerPage, showBarPlot }: TableProps) => {
     currentData: AugmentedNodeAttributes[];
   } | null>(null);
   const [data2Render, setData2Render] = useState<Data2RenderI[]>([]);
-  const dataColumns = useMemo(() => Object.keys(data[0].attribute), [data]);
+  const dataColumns = useMemo(() => Object.keys(data[data.length > fetchAttributes ? fetchAttributes : 0].attribute), [data]);
   const totalPages = Math.ceil(sortedData.length / itemsPerPage);
 
   useEffect(() => {
@@ -103,9 +104,7 @@ export const Table = ({ data, itemsPerPage, showBarPlot }: TableProps) => {
     if (!currentPage || currentPage?.currentData?.length <= 0) return;
 
     let categoryCounts = [];
-    const firstRowData = data[0];
-
-    // console.log('First row: ', firstRowData);
+    const firstRowData = data[data.length > fetchAttributes ? fetchAttributes : 0];
 
     let _data2Render = Object.keys(firstRowData.attribute).map((dataColumn: string, i) => {
       const newData2Render: Data2RenderI = {
@@ -186,8 +185,6 @@ export const Table = ({ data, itemsPerPage, showBarPlot }: TableProps) => {
       return newData2Render;
     });
 
-    // console.log(_data2Render);
-
     setData2Render(_data2Render);
   }, [currentPage, data, sortedData]);
 
diff --git a/libs/shared/lib/vis/visualizations/tablevis/tablevis.stories.tsx b/libs/shared/lib/vis/visualizations/tablevis/tablevis.stories.tsx
index f75a72e75076ed83e668ec961243e211b4e2d7fa..95f45cec8d506e80d2a64a1def44bf61217a054a 100644
--- a/libs/shared/lib/vis/visualizations/tablevis/tablevis.stories.tsx
+++ b/libs/shared/lib/vis/visualizations/tablevis/tablevis.stories.tsx
@@ -15,8 +15,8 @@ import {
   big2ndChamberQueryResult,
   bigMockQueryResults,
   big2ndChamberSchemaRaw,
-  typesMockSchemaRaw,
   typesMockQueryResults,
+  typesMockSchemaRaw,
 } from '../../../mock-data';
 
 import { SchemaUtils } from '../../../schema/schema-utils';