diff --git a/src/lib/Delegate.js b/src/components/Delegate.js
similarity index 100%
rename from src/lib/Delegate.js
rename to src/components/Delegate.js
diff --git a/src/components/RegisterEvents.js b/src/components/RegisterEvents.js
new file mode 100644
index 0000000000000000000000000000000000000000..3149fa626127bad969d0b44358e9a086db02c13c
--- /dev/null
+++ b/src/components/RegisterEvents.js
@@ -0,0 +1,44 @@
+const Header = require('./views/header');
+const Main = require('./views/main');
+const Footer = require('./views/footer');
+const Search = require('./views/search');
+const ViewDoc = require('./views/ViewDoc');
+const ViewError = require('./views/ViewError');
+const delegate = require('./Delegate');
+const solrService = require('./SolrService');
+
+const RegisterEvents = function (state) {
+  const renderApp = function (data, into) {
+    into.innerHTML = [Header(data), Search(data), Main(data), Footer(data)].join('');
+  };
+
+  const app = document.querySelector('#app');
+
+  delegate('#app', 'click', '#search-text', async () => {
+    const search = document.querySelector('#text-to-search');
+    const {data, status} = await solrService.search({api: state.config.api}, search.value);
+    state.main.docs = data.docs;
+    state.main.numFound = data.numFound;
+    renderApp(state, app);
+  });
+
+  delegate('#app', 'keyup', '#text-to-search', async (event) => {
+    if (event.keyCode === 13) {
+      event.preventDefault();
+      const search = document.querySelector('#text-to-search');
+      const {data, status} = await solrService.search({api: state.config.api}, search.value);
+      state.main.docs = data.docs;
+      state.main.numFound = data.numFound;
+      renderApp(state, app);
+    }
+  });
+
+  delegate('#app', 'click', '#search-text-1', async () => {
+    const search = document.querySelector('#text-to-search');
+    const {data, status} = await solrService.search({api: state.config.api}, search.value);
+    state.main.docs = data;
+    renderApp(state, app);
+  });
+};
+
+module.exports = RegisterEvents;
\ No newline at end of file
diff --git a/src/components/Router.js b/src/components/Router.js
index dba5c07c6a0683e0d4bcde596b44450123f29b4c..9a4969334a2e943e106df963ea303e7362eae1ff 100644
--- a/src/components/Router.js
+++ b/src/components/Router.js
@@ -1,10 +1,10 @@
-const Header = require('./header');
-const Main = require('./main');
-const Footer = require('./footer');
-const Search = require('./search');
-const ViewDoc = require('./ViewDoc');
-const ViewError = require('./ViewError');
-const solrService = require('../lib/SolrService');
+const Header = require('./views/header');
+const Main = require('./views/main');
+const Footer = require('./views/footer');
+const Search = require('./views/search');
+const ViewDoc = require('./views/ViewDoc');
+const ViewError = require('./views/ViewError');
+const solrService = require('./SolrService');
 
 const Router = async function (state) {
   const route = window.location.hash;
@@ -26,7 +26,8 @@ const Router = async function (state) {
   } else {
     const {data, status} = await solrService.searchAll({api: state.config.api});
     if (status === 200) {
-      state.main.docs = data;
+      state.main.docs = data.docs;
+      state.main.numFound = data.numFound;
       app.innerHTML = [Header(state), Search(state), Main(state), Footer(state)].join('');
     } else {
       app.innerHTML = [Header(state), Search(state), ViewError(state), Footer(state)].join('');
diff --git a/src/lib/SolrService.js b/src/components/SolrService.js
similarity index 89%
rename from src/lib/SolrService.js
rename to src/components/SolrService.js
index ad707cb1d6919ef3eb5e467bb8997057ce422a40..9005a7af0127376f5ada37f798a892af576c081d 100644
--- a/src/lib/SolrService.js
+++ b/src/components/SolrService.js
@@ -5,7 +5,7 @@ const SolrService = {
     try {
       const req = await axios.get(`${config.api}/select?q=*%3A*`);
       if (req.data) {
-        return {data: req.data['response']['docs'], status: req.status};
+        return {data: req.data['response'], status: req.status};
       } else {
         return {data: [], status: req.status};
       }
@@ -36,7 +36,7 @@ const SolrService = {
       data = encodeURIComponent(`${data}`);
       const req = await axios.get(`${config.api}/${param}${data}`);
       if (req.data) {
-        return {data: req.data['response']['docs'], status: req.status};
+        return {data: req.data['response'], status: req.status};
       } else {
         return {data: [], status: req.status};
       }
diff --git a/src/components/Footer.js b/src/components/views/Footer.js
similarity index 100%
rename from src/components/Footer.js
rename to src/components/views/Footer.js
diff --git a/src/components/Header.js b/src/components/views/Header.js
similarity index 100%
rename from src/components/Header.js
rename to src/components/views/Header.js
diff --git a/src/components/ListDocs.js b/src/components/views/ListDocs.js
similarity index 100%
rename from src/components/ListDocs.js
rename to src/components/views/ListDocs.js
diff --git a/src/components/Loading.js b/src/components/views/Loading.js
similarity index 100%
rename from src/components/Loading.js
rename to src/components/views/Loading.js
diff --git a/src/components/Main.js b/src/components/views/Main.js
similarity index 52%
rename from src/components/Main.js
rename to src/components/views/Main.js
index 450fedbb8b169a5b7e1efc37cfe9d8f2664e7aeb..673c3f5715c22027800b5ba482aef45cad7edefa 100644
--- a/src/components/Main.js
+++ b/src/components/views/Main.js
@@ -1,11 +1,16 @@
+const $ = require("jquery");
 const ListDocs = require('./ListDocs');
 
 const Main = function (data) {
-
   let html = '';
-
   html = [ListDocs(data)].join('');
 
+  html += `<div class="container">
+  <br/>
+  <div class="text-center">
+  <p>Results: ${data.main.numFound}</p>
+  </div>`;
+
   return html;
 };
 
diff --git a/src/components/Search.js b/src/components/views/Search.js
similarity index 100%
rename from src/components/Search.js
rename to src/components/views/Search.js
diff --git a/src/components/ViewDoc.js b/src/components/views/ViewDoc.js
similarity index 100%
rename from src/components/ViewDoc.js
rename to src/components/views/ViewDoc.js
diff --git a/src/components/ViewError.js b/src/components/views/ViewError.js
similarity index 100%
rename from src/components/ViewError.js
rename to src/components/views/ViewError.js
diff --git a/src/components/ViewErrorElement.js b/src/components/views/ViewErrorElement.js
similarity index 100%
rename from src/components/ViewErrorElement.js
rename to src/components/views/ViewErrorElement.js
diff --git a/src/components/ViewSubDoc.js b/src/components/views/ViewSubDoc.js
similarity index 92%
rename from src/components/ViewSubDoc.js
rename to src/components/views/ViewSubDoc.js
index 0148a3361f8e490bcf9c5882b3020ec2e7735ca5..e79c43625e115cee15e6076663759ce6243e2b82 100644
--- a/src/components/ViewSubDoc.js
+++ b/src/components/views/ViewSubDoc.js
@@ -8,7 +8,6 @@ const ViewSubDoc = function (ele) {
       const dummy = $('<div>');
       const sub = $('<div>');
       const a = $('<a>');
-      console.log(ele);
       ele = JSON.parse(ele);
       const href = `/#view/${ele['@id']}`;
       a.attr('href', href);
@@ -16,7 +15,6 @@ const ViewSubDoc = function (ele) {
       a.text(ele['name']);
       a.addClass("link");
       sub.append(a);
-      console.log(a.html());
       dummy.append(sub);
       return dummy;
     } else {
diff --git a/src/components/ViewTable.js b/src/components/views/ViewTable.js
similarity index 100%
rename from src/components/ViewTable.js
rename to src/components/views/ViewTable.js
diff --git a/src/index.js b/src/index.js
index 14d8c0635c07868f70c928b904c8d5455b42afec..7f100b5916e497e763232d185682645a7a958ee2 100644
--- a/src/index.js
+++ b/src/index.js
@@ -4,17 +4,11 @@ import 'bootstrap';
 import './styles/styles.scss';
 import './images/logo.svg';
 
-const delegate = require('./lib/Delegate');
-const solrService = require('./lib/SolrService');
-
 const config = require('../config.json');
 
 //App view components
-const Header = require('./components/header');
-const Main = require('./components/main');
-const Footer = require('./components/footer');
-const Search = require('./components/search');
 const Router = require('./components/Router');
+const RegisterEvents = require('./components/RegisterEvents');
 
 //Default state
 let state = {
@@ -22,7 +16,7 @@ let state = {
     title: 'Data Portal',
     URL: '/',
     logo: 'images/logo.svg',
-    help: 'help',
+    help: 'Help',
     helpURL: '',
     portal: 'Back to Stash',
     portalURL: 'http://stash.research.uts.edu.au',
@@ -36,42 +30,14 @@ let state = {
     searchText: 'Search'
   },
   main: {
-    docs: []
+    docs: [],
+    doc: {},
+    numFound: 0
   },
   config: config
 };
 
-const renderApp = function (data, into) {
-  into.innerHTML = [Header(data), Search(data), Main(data), Footer(data)].join('');
-};
-
-const app = document.querySelector('#app');
-
-// Register Events
-
-delegate('#app', 'click', '#search-text', async () => {
-  const search = document.querySelector('#text-to-search');
-  const {data, status} = await solrService.search({api: state.config.api}, search.value);
-  state.main.docs = data;
-  renderApp(state, app);
-});
-
-delegate('#app', 'keyup', '#text-to-search', async (event) => {
-  if (event.keyCode === 13) {
-    event.preventDefault();
-    const search = document.querySelector('#text-to-search');
-    const {data, status} = await solrService.search({api: state.config.api}, search.value);
-    state.main.docs = data;
-    renderApp(state, app);
-  }
-});
-
-delegate('#app', 'click', '#search-text-1', async () => {
-  const search = document.querySelector('#text-to-search');
-  const {data, status} = await solrService.search({api: state.config.api}, search.value);
-  state.main.docs = data;
-  renderApp(state, app);
-});
+RegisterEvents(state);
 
 window.onhashchange = main;