diff --git a/src/client/actions/index.js b/src/client/actions/index.js
index 2602476ee00bcaa747ec979e467090dcec4007a5..e7d63803772cbecd72a4d0c12b773473259d5da8 100644
--- a/src/client/actions/index.js
+++ b/src/client/actions/index.js
@@ -50,9 +50,9 @@ export const updatePage = (resultClass, page) => ({
   type: UPDATE_PAGE,
   resultClass, page
 });
-export const fetchByURI = (resultClass, facetClass, uri) => ({
+export const fetchByURI = (resultClass, facetClass, variant, uri) => ({
   type: FETCH_BY_URI,
-  resultClass, facetClass, uri
+  resultClass, facetClass, variant, uri
 });
 export const fetchByURIFailed = (resultClass, error, message) => ({
   type: FETCH_RESULTS_FAILED,
diff --git a/src/client/components/LeafletMap.js b/src/client/components/LeafletMap.js
index 814c8aa1c276de3a4a83078d9430e73dc52799f0..399f9aa08c2187ff42bae728758123f56a06fdac 100644
--- a/src/client/components/LeafletMap.js
+++ b/src/client/components/LeafletMap.js
@@ -289,13 +289,13 @@ class LeafletMap extends React.Component {
   }
 
   markerOnClick = event => {
-    this.props.fetchByURI(this.props.resultClass, this.props.facetClass, event.target.options.id,);
+    this.props.fetchByURI(this.props.resultClass, this.props.facetClass, this.props.variant, event.target.options.id,);
   };
 
   createPopUpContent(result) {
-    let popUpTemplate = `<h3>${result.prefLabel}</h3>`;
+    let popUpTemplate = `<a target="_blank" rel="noopener noreferrer" href=${result.id}><h3>${result.prefLabel}</h3></a>`;
     if (has(result, 'dataProviderUrl')) {
-      popUpTemplate += `<p>Data provider: <a target="_blank" rel="noopener noreferrer" href=${result.dataProviderUrl}>${result.dataProviderUrl}</a></p>`;
+      popUpTemplate += `<p>Data provider url: <a target="_blank" rel="noopener noreferrer" href=${result.dataProviderUrl}>${result.dataProviderUrl}</a></p>`;
     }
     if (has(result, 'sameAs')) {
       popUpTemplate += `<p>Place authority: <a target="_blank" rel="noopener noreferrer" href=${result.sameAs}>${result.sameAs}</a></p>`;
diff --git a/src/client/components/Main.js b/src/client/components/Main.js
index e6ec29af8796bbdfbadcd58e9134714ca957d22c..cd9827310761b8df3d4aa8248679eed94c58fcac 100644
--- a/src/client/components/Main.js
+++ b/src/client/components/Main.js
@@ -146,7 +146,7 @@ let Main = props => {
                     People
                   </Typography>
                   <Typography component="p">
-                    People related to manuscripts.
+                    People related to manuscripts and works.
                   </Typography>
                 </CardContent>
               </CardActionArea>
@@ -186,7 +186,7 @@ let Main = props => {
                     Places
                   </Typography>
                   <Typography component="p">
-                    Places related to manuscripts.
+                    Places related to manuscripts and works.
                   </Typography>
                 </CardContent>
               </CardActionArea>
diff --git a/src/client/epics/index.js b/src/client/epics/index.js
index 537f65e101193dfd834436eae060148cc0edc0b7..587c177fa6c8e2d43a2252ea5aee2239c1f7bd87 100644
--- a/src/client/epics/index.js
+++ b/src/client/epics/index.js
@@ -75,8 +75,8 @@ const fetchByURIEpic = (action$, state$) => action$.pipe(
   ofType(FETCH_BY_URI),
   withLatestFrom(state$),
   mergeMap(([action, state]) => {
-    const { resultClass, facetClass, uri } = action;
-    const params = stateSlicesToUrl(null, state[`${facetClass}Facets`], null, null);
+    const { resultClass, facetClass, variant, uri } = action;
+    const params = stateSlicesToUrl(null, state[`${facetClass}Facets`], variant, facetClass);
     const requestUrl = `${apiUrl}${resultClass}/instance/${encodeURIComponent(uri)}?${params}`;
     return ajax.getJSON(requestUrl).pipe(
       map(response => updateInstance({ resultClass: resultClass, instance: response })),
diff --git a/src/server/index.js b/src/server/index.js
index 7c4659034e507adaf4a5152da359b029c0bec833..474d3f0904d890da9bf302299da69405d4015e13 100644
--- a/src/server/index.js
+++ b/src/server/index.js
@@ -1,7 +1,7 @@
 import express from 'express';
 import path from 'path';
 import bodyParser from 'body-parser';
-import { getPaginatedResults, getAllResults, getPlace } from './sparql/FacetResults';
+import { getPaginatedResults, getAllResults, getByURI } from './sparql/FacetResults';
 import { getFacet } from './sparql/Facets';
 const DEFAULT_PORT = 3001;
 const app = express();
@@ -34,7 +34,8 @@ app.get(`${apiPath}/:resultClass/paginated`, (req, res, next) => {
 app.get(`${apiPath}/:resultClass/all`, (req, res, next) => {
   const filters = req.query.filters == null ? null : JSON.parse(req.query.filters);
   const variant = req.query.variant || null;
-  return getAllResults(req.params.resultClass, req.query.facetClass, variant, filters).then(data => {
+  const facetClass = req.query.facetClass || null;
+  return getAllResults(req.params.resultClass, facetClass, variant, filters).then(data => {
     //console.log(data)
     res.json({
       resultCount: data.count,
@@ -45,16 +46,9 @@ app.get(`${apiPath}/:resultClass/all`, (req, res, next) => {
 
 app.get(`${apiPath}/:resultClass/instance/:uri`, (req, res, next) => {
   const filters = req.query.filters == null ? null : JSON.parse(req.query.filters);
-  let getByURI = null;
-  switch (req.params.resultClass) {
-    // case 'manuscripts':
-    //   getByURI = getManuscript;
-    //   break;
-    case 'places':
-      getByURI = getPlace;
-      break;
-  }
-  return getByURI(filters, req.params.uri).then(data => {
+  const variant = req.query.variant || null;
+  const facetClass = req.query.facetClass || null;
+  return getByURI(req.params.resultClass, facetClass, variant, filters, req.params.uri).then(data => {
     res.json(data[0]);
   }).catch(next);
 });
diff --git a/src/server/sparql/FacetResults.js b/src/server/sparql/FacetResults.js
index 46043640704f11acee99330d8ee3950fa7a52a8f..b08d8181cdc4d6a132e68500823894fb6dea73d0 100644
--- a/src/server/sparql/FacetResults.js
+++ b/src/server/sparql/FacetResults.js
@@ -91,13 +91,27 @@ const getPaginatedData = (resultClass, page, pagesize, filters, sortBy, sortDire
   return sparqlSearchEngine.doSearch(prefixes + q, endpoint, makeObjectList);
 };
 
-export const getPlace = (filters, uri) => {
-  let q = placeQuery;
-  q = q.replace('<PLACE_ID>', `<${uri}>`);
-  if (filters == null) {
-    q = q.replace('<FILTER>', '# no filters');
+export const getByURI = (resultClass, facetClass, variant, filters, uri) => {
+  let q;
+  switch (resultClass) {
+    case 'places':
+      q = placeQuery;
+      break;
+  }
+  if (variant === 'productionPlaces') {
+    const manuscriptsProduced =
+      `OPTIONAL {
+          ${generateFilter(resultClass, facetClass, filters, 'manuscript__id', null)}
+          ?manuscript__id ^crm:P108_has_produced/crm:P7_took_place_at ?id .
+          ?manuscript__id mmm-schema:data_provider_url ?manuscript__dataProviderUrl .
+        }`;
+    q = q.replace('<MANUSCRIPTS>', manuscriptsProduced);
   } else {
-    q = q.replace('<FILTER>', generateFilter('places', 'manuscripts', filters, 'manuscript__id', null));
+    q = q.replace('<MANUSCRIPTS>', '');
   }
+  q = q.replace('<ID>', `<${uri}>`);
+  // if (variant === 'productionPlaces') {
+  //   console.log(prefixes + q)
+  // }
   return sparqlSearchEngine.doSearch(prefixes + q, endpoint, makeObjectList);
 };
diff --git a/src/server/sparql/Facets.js b/src/server/sparql/Facets.js
index d86e93186abf5ece1c6b307307d334fa7df2efac..bb33ef72c9018d57127c64c3b28b71d4c3bc3d6b 100644
--- a/src/server/sparql/Facets.js
+++ b/src/server/sparql/Facets.js
@@ -40,9 +40,12 @@ export const getFacet = (resultClass, facetID, sortBy, sortDirection, filters) =
               OPTIONAL { ?id skos:prefLabel ?prefLabel_ }
               BIND(COALESCE(STR(?prefLabel_), STR(?id)) AS ?prefLabel)
               OPTIONAL { ?id dct:source ?source }
-              OPTIONAL { ?id gvp:broaderPreferred ?parent_ }
+              OPTIONAL {
+                ?id gvp:broaderPreferred ?parent_
+                FILTER(?parent_ != <http://ldf.fi/mmm/places/tgn_7026519>)
+              }
               BIND(COALESCE(?parent_, '0') as ?parent)
-              FILTER(?id != <http://ldf.fi/mmm/places/tgn_7026519>)
+              #FILTER(?id != <http://ldf.fi/mmm/places/tgn_7026519>)  
             }
       `;
   }
diff --git a/src/server/sparql/SparqlQueriesPlaces.js b/src/server/sparql/SparqlQueriesPlaces.js
index d7732f21b8f694736bc5c6384187cde66f5f526c..7e85715f3a1d0fc32034d5ccc02668ab035eee11 100644
--- a/src/server/sparql/SparqlQueriesPlaces.js
+++ b/src/server/sparql/SparqlQueriesPlaces.js
@@ -54,10 +54,9 @@ export const placeQuery =  `
       PREFIX crm: <http://www.cidoc-crm.org/cidoc-crm/>
       PREFIX mmm-schema: <http://ldf.fi/mmm/schema/>
       PREFIX gvp: <http://vocab.getty.edu/ontology#>
-
       SELECT ?id ?prefLabel ?sameAs ?dataProviderUrl ?parent__id ?parent__prefLabel ?manuscript__id ?manuscript__dataProviderUrl
       WHERE {
-        BIND (<PLACE_ID> AS ?id)
+        BIND (<ID> AS ?id)
         OPTIONAL { ?id skos:prefLabel ?prefLabel_ }
         BIND(COALESCE(?prefLabel_, ?id) AS ?prefLabel)
         OPTIONAL {
@@ -66,10 +65,6 @@ export const placeQuery =  `
         }
         OPTIONAL { ?id mmm-schema:data_provider_url ?dataProviderUrl }
         OPTIONAL { ?id owl:sameAs ?sameAs }
-        OPTIONAL {
-          ?manuscript__id ^crm:P108_has_produced/crm:P7_took_place_at ?id .
-          ?manuscript__id mmm-schema:data_provider_url ?manuscript__dataProviderUrl .
-          <FILTER>
-        }
+        <MANUSCRIPTS>
       }
 `;