diff --git a/TODO.md b/TODO.md
new file mode 100644
index 0000000000000000000000000000000000000000..d6d87d8dc1ac40d353a89e83190c981e6ec3ee52
--- /dev/null
+++ b/TODO.md
@@ -0,0 +1,10 @@
+TODO
+====
+
+
+
+Sorting out rendering niggles --
+
+in the test data, Darryl Veitch has an affilliation
+
+http://localhost:9000/#view/https://www.uts.edu.au/staff/darryl.veitch
\ No newline at end of file
diff --git a/src/components/ElasticService.js b/src/components/ElasticService.js
new file mode 100644
index 0000000000000000000000000000000000000000..27470b62c9ff561bf922e46f9755823d6a8984bf
--- /dev/null
+++ b/src/components/ElasticService.js
@@ -0,0 +1,50 @@
+const axios = require('axios');
+
+const ElasticService = {
+  get: async function (config, data) {
+    try {
+      data = encodeURIComponent(data);
+      console.log(`Querying ElasticSearch - ${config.api}?q=id:${data}`);
+      const res = await axios.get(`${config.api}?q=id:${data}`);
+      console.log("ElasticSearch returned: " + res.status);
+      if (res.data) {
+        return {data: res.data, status: res.status};
+      } else {
+        return {data: {}, status: res.status};
+      }
+    } catch (e) {
+      return {data: {}, status: e.message};
+    }
+  },
+
+  // elasticsearch pagination params are 'from' and 'size'
+  // I don't think that the page function has any purpose in the solr query?
+
+  search: async function (config, {start: start, page: page, searchParam: searchParam, text: text, facets: facets, facetLimit: facetLimit}) {
+    try {
+      let param = `select?q=`;      
+      if (text === '' || !text ) {
+        text = '*';
+      }
+      let escText = text.replace(':', "\\:");
+      let query = {
+        match: { "*": text }
+      };
+
+      //`q=${searchParam}:${escText}&from=${start}`;
+      console.log(`Querying ElasticSearch - ${config.api} ${JSON.stringify(query)}`);
+      const res = await axios.post(config.api, { query: query });
+      console.log("ElasticSearch returned: " + res.status);
+      if (res.data) {
+        return {data: res.data['response'], status: res.status};
+      } else {
+        console.log("Empty response");
+        return {data: [], status: res.status};
+      }
+    } catch (e) {
+      return {data: [], status: e.message};
+    }
+  }
+};
+
+module.exports = ElasticService;