diff --git a/src/client/components/facet_results/ApexCharts.js b/src/client/components/facet_results/ApexCharts.js
index a3f2670fba0bd941d4da036115384eb893527c58..0a4ceeb6be2fd9628182584307c756a2beb08990 100644
--- a/src/client/components/facet_results/ApexCharts.js
+++ b/src/client/components/facet_results/ApexCharts.js
@@ -152,7 +152,8 @@ class ApexChart extends React.Component {
     if (this.isSmallScreen()) {
       return 'auto'
     }
-    const doNotReduceTabHeight = this.props.component === 'ApexChartsDouble' && this.props.order === 'lower'
+    const doNotReduceTabHeight = (this.props.component === 'ApexChartsDouble' && this.props.order === 'lower') ||
+      this.props.resultClassConfig.pageType === 'instancePage'
     if (doNotReduceTabHeight) {
       const rootHeightReduction = 2 * defaultPadding + 1
       return `calc(${targetHeight} - ${rootHeightReduction}px)`
diff --git a/src/client/library_configs/ApexCharts/ApexChartsConfig.js b/src/client/library_configs/ApexCharts/ApexChartsConfig.js
index d2fa91aff1e04f7f5997fd390276630bc76b5b81..15201c391208ad384af11f16f2fde5be56751c30 100644
--- a/src/client/library_configs/ApexCharts/ApexChartsConfig.js
+++ b/src/client/library_configs/ApexCharts/ApexChartsConfig.js
@@ -90,7 +90,7 @@ export const createMultipleLineChartData = ({
   const series = []
   for (const lineID in results) {
     series.push({
-      name: intl.get(`lineChart.${lineID}`),
+      name: intl.get(`lineChart.${lineID}`) || lineID,
       data: results[lineID]
     })
   }
diff --git a/src/client/reducers/index.js b/src/client/reducers/index.js
index 37f545f570880481cf66f17edac44b4911dfd269..3da6968482ce59c50af8f7ba3dc864c9d568b4c5 100644
--- a/src/client/reducers/index.js
+++ b/src/client/reducers/index.js
@@ -68,9 +68,19 @@ for (const perspective of perspectiveConfig) {
   } else if (perspective.searchMode && perspective.searchMode === 'faceted-search') {
     const { resultClasses, properties, facets, maps } = perspective
     const { paginatedResultsConfig, instanceConfig } = resultClasses[perspectiveID]
+    let extraResultClasses = {}
     let instancePageResultClasses = {}
     if (instanceConfig && instanceConfig.instancePageResultClasses) {
       instancePageResultClasses = instanceConfig.instancePageResultClasses
+      // handle nested resultClasses
+      for (const resultClass in instancePageResultClasses) {
+        if (instanceConfig.instancePageResultClasses[resultClass].resultClasses) {
+          extraResultClasses = {
+            ...extraResultClasses,
+            ...instanceConfig.instancePageResultClasses[resultClass].resultClasses
+          }
+        }
+      }
     }
     const resultsInitialStateFull = {
       ...resultsInitialState,
@@ -86,7 +96,6 @@ for (const perspective of perspectiveConfig) {
       ...facetsInitialState,
       facets
     }
-    let extraResultClasses = {}
     for (const resultClass in resultClasses) {
       if (resultClasses[resultClass].resultClasses) {
         extraResultClasses = {
@@ -97,7 +106,11 @@ for (const perspective of perspectiveConfig) {
     }
     const resultsReducer = createResultsReducer(
       resultsInitialStateFull,
-      new Set(Object.keys({ ...resultClasses, ...instancePageResultClasses, ...extraResultClasses })))
+      new Set(Object.keys({
+        ...resultClasses,
+        ...instancePageResultClasses,
+        ...extraResultClasses
+      })))
     const facetsReducer = createFacetsReducer(facetsInitialStateFull, perspectiveID)
     const facetsConstrainSelfReducer = createFacetsConstrainSelfReducer(facetsInitialStateFull, perspectiveID)
     reducers[perspectiveID] = resultsReducer
@@ -118,15 +131,31 @@ for (const perspective of perspectiveConfigOnlyInfoPages) {
   const perspectiveID = perspective.id
   const { resultClasses, properties } = perspective
   const { instanceConfig } = resultClasses[perspectiveID]
+  let extraResultClasses = {}
   let instancePageResultClasses = {}
   if (instanceConfig && instanceConfig.instancePageResultClasses) {
     instancePageResultClasses = instanceConfig.instancePageResultClasses
+    // handle nested resultClasses
+    for (const resultClass in instancePageResultClasses) {
+      if (instanceConfig.instancePageResultClasses[resultClass].resultClasses) {
+        extraResultClasses = {
+          ...extraResultClasses,
+          ...instanceConfig.instancePageResultClasses[resultClass].resultClasses
+        }
+      }
+    }
   }
   const resultsInitialStateFull = {
     ...resultsInitialState,
     properties
   }
-  const resultsReducer = createResultsReducer(resultsInitialStateFull, new Set(Object.keys({ ...resultClasses, ...instancePageResultClasses })))
+  const resultsReducer = createResultsReducer(
+    resultsInitialStateFull,
+    new Set(Object.keys({
+      ...resultClasses,
+      ...instancePageResultClasses,
+      ...extraResultClasses
+    })))
   reducers[perspectiveID] = resultsReducer
 }
 
diff --git a/src/server/sparql/Utils.js b/src/server/sparql/Utils.js
index 203b93a5207391cd3c4cd8d65125fdbde47724b2..1258e9b88143e72e28893fde19cb6052f059d679 100644
--- a/src/server/sparql/Utils.js
+++ b/src/server/sparql/Utils.js
@@ -1,10 +1,10 @@
 import { readFile } from 'fs/promises'
 import { has } from 'lodash'
 
-// import { backendSearchConfig as oldBackendSearchConfig } from './veterans/BackendSearchConfig'
+// import { backendSearchConfig as oldBackendSearchConfig } from './lettersampo/BackendSearchConfig'
 
-// import { battlesPerspectiveConfig as oldPerspectiveConfig } from './sotasurmat/perspective_configs/BattlesPerspectiveConfig'
-// import { INITIAL_STATE } from '../../client/reducers/sotasurmat/battlesFacets'
+// import { placesConfig as oldPerspectiveConfig } from './lettersampo/perspective_configs/PlacesConfig'
+// import { INITIAL_STATE } from '../../client/reducers/lettersampo/placesFacets'
 
 export const createBackendSearchConfig = async () => {
   const portalConfigJSON = await readFile('src/configs/portalConfig.json')
@@ -24,6 +24,7 @@ export const createBackendSearchConfig = async () => {
       perspectiveConfig.endpoint.prefixes = prefixes
     }
     if (perspectiveConfig.searchMode === 'faceted-search') {
+      let extraResultClasses = {} // gather nested result classes here
       let hasInstancePageResultClasses = false
       // handle default resultClass which is same as perspectiveID
       const { paginatedResultsConfig, instanceConfig } = perspectiveConfig.resultClasses[perspectiveID]
@@ -44,12 +45,20 @@ export const createBackendSearchConfig = async () => {
           for (const instancePageResultClass in instanceConfig.instancePageResultClasses) {
             const instancePageResultClassConfig = instanceConfig.instancePageResultClasses[instancePageResultClass]
             processResultClassConfig(instancePageResultClassConfig, sparqlQueries, resultMappers)
+            if (instancePageResultClassConfig.resultClasses) {
+              for (const extraResultClass in instancePageResultClassConfig.resultClasses) {
+                processResultClassConfig(instancePageResultClassConfig.resultClasses[extraResultClass], sparqlQueries, resultMappers)
+              }
+              extraResultClasses = {
+                ...extraResultClasses,
+                ...instancePageResultClassConfig.resultClasses
+              }
+            }
           }
           hasInstancePageResultClasses = true
         }
       }
       // handle other resultClasses
-      let extraResultClasses = {}
       for (const resultClass in perspectiveConfig.resultClasses) {
         if (resultClass === perspectiveID) { continue }
         const resultClassConfig = perspectiveConfig.resultClasses[resultClass]
@@ -101,10 +110,24 @@ export const createBackendSearchConfig = async () => {
       instanceConfig.postprocess.func = resultMappers[instanceConfig.postprocess.func]
     }
     let hasInstancePageResultClasses = false
+    let extraResultClasses = {} // gather nested result classes here
     if (has(instanceConfig, 'instancePageResultClasses')) {
       for (const instancePageResultClass in instanceConfig.instancePageResultClasses) {
         const instancePageResultClassConfig = instanceConfig.instancePageResultClasses[instancePageResultClass]
         processResultClassConfig(instancePageResultClassConfig, sparqlQueries, resultMappers)
+        if (instancePageResultClassConfig.resultClasses) {
+          for (const extraResultClass in instancePageResultClassConfig.resultClasses) {
+            processResultClassConfig(instancePageResultClassConfig.resultClasses[extraResultClass], sparqlQueries, resultMappers)
+          }
+          extraResultClasses = {
+            ...extraResultClasses,
+            ...instancePageResultClassConfig.resultClasses
+          }
+        }
+      }
+      perspectiveConfig.resultClasses = {
+        ...perspectiveConfig.resultClasses,
+        ...extraResultClasses
       }
       hasInstancePageResultClasses = true
     }