diff --git a/src/helpers.js b/src/helpers.js
index 1f90346..b2d7e72 100644
--- a/src/helpers.js
+++ b/src/helpers.js
@@ -1,3 +1,7 @@
+export function cloneObject(object) {
+  return JSON.parse(JSON.stringify(object));
+}
+
 export function removeTags(html) {
 var tagBody = '(?:[^"\'>]|"[^"]*"|\'[^\']*\')*';
 
@@ -19,4 +23,4 @@ var tagOrComment = new RegExp(
     html = html.replace(tagOrComment, '');
   } while (html !== oldHtml);
   return html.replace(/ {
-    let detailsMarkdown = removeTags(word.longDefinition);
+  words.forEach(originalWord => {
+    let detailsMarkdown = removeTags(originalWord.longDefinition);
     const references = detailsMarkdown.match(/\{\{.+?\}\}/g);
     if (references && Array.isArray(references)) {
       new Set(references).forEach(reference => {
-        console.log(reference);
         const wordToFind = reference.replace(/\{\{|\}\}/g, '');
         const existingWordId = wordExists(wordToFind, true);
         if (existingWordId !== false) {
           const wordMarkdownLink = `[${wordToFind}](#${existingWordId})`;
-          console.log(wordMarkdownLink);
           detailsMarkdown = detailsMarkdown.replace(new RegExp(reference, 'g'), wordMarkdownLink);
         }
       });
     }
-    console.log(detailsMarkdown);
+    const word = highlightSearchTerm({
+      name: removeTags(originalWord.name),
+      pronunciation: removeTags(originalWord.pronunciation),
+      partOfSpeech: removeTags(originalWord.partOfSpeech),
+      simpleDefinition: removeTags(originalWord.simpleDefinition),
+      longDefinition: detailsMarkdown,
+      wordId: originalWord.wordId,
+    });
     wordsHTML += `
       
-        ${removeTags(word.name)}
-        ${removeTags(word.pronunciation)}
-        ${removeTags(word.partOfSpeech)}
+        ${word.name}
+        ${word.pronunciation}
+        ${word.partOfSpeech}
       
       
-        - ${removeTags(word.simpleDefinition)}+
- ${word.simpleDefinition}
- 
-          ${md(detailsMarkdown)}
+          ${md(word.longDefinition)}
         
`;
diff --git a/src/js/utilities.js b/src/js/utilities.js
index ed6ae61..e4c8961 100644
--- a/src/js/utilities.js
+++ b/src/js/utilities.js
@@ -1,8 +1,8 @@
-const { currentDictionary } = window;
+import { cloneObject } from '../helpers';
 
 export function getWordsStats() {
-  const {words, partsOfSpeech} = currentDictionary;
-  const {caseSensitive} = currentDictionary.settings;
+  const {words, partsOfSpeech} = window.currentDictionary;
+  const {caseSensitive} = window.currentDictionary.settings;
   
   const wordStats = {
     numberOfWords: [
@@ -99,13 +99,29 @@ export function wordExists(word, returnId = false) {
   return foundWord ? (returnId ? foundWord.wordId : true) : false;
 }
 
+export function getSearchTerm() {
+  return document.getElementById('searchButton').value;
+}
+
 export function getMatchingSearchWords() {
-  const searchTerm = document.getElementById('searchButton').value.trim();
-  const matchingWords = window.currentDictionary.words.filter(word => {
+  const searchTerm = getSearchTerm();
+  const matchingWords = window.currentDictionary.words.slice().filter(word => {
     const isInName = new RegExp(searchTerm, 'g').test(word.name);
     const isInDefinition = new RegExp(searchTerm, 'g').test(word.simpleDefinition);
     const isInDetails = new RegExp(searchTerm, 'g').test(word.longDefinition);
     return isInName || isInDefinition || isInDetails;
   });
   return matchingWords;
+}
+
+export function highlightSearchTerm(word) {
+  const searchTerm = getSearchTerm();
+  const markedUpWord = cloneObject(word);
+  if (searchTerm) {
+    markedUpWord.name = markedUpWord.name.replace(new RegExp(searchTerm, 'g'), `${searchTerm}`);
+    markedUpWord.simpleDefinition = markedUpWord.simpleDefinition.replace(new RegExp(searchTerm, 'g'), `${searchTerm}`);
+    markedUpWord.longDefinition = markedUpWord.longDefinition.replace(new RegExp(searchTerm, 'g'), `${searchTerm}`);
+  }
+  console.log('markedUpWord', markedUpWord);
+  return markedUpWord;
 }
\ No newline at end of file