diff --git a/Report/Images/ConfusionMatrix.png b/Report/Images/ConfusionMatrix.png
new file mode 100644
index 0000000000000000000000000000000000000000..50326e44f475d4377f779760a044e6615af5c8d1
Binary files /dev/null and b/Report/Images/ConfusionMatrix.png differ
diff --git a/Report/main.aux b/Report/main.aux
index 75752b25d54d897ed2e871568cf4b0a613b14004..ea7846c148e14870b0d0ba43f3dceef4e3d08294 100644
--- a/Report/main.aux
+++ b/Report/main.aux
@@ -28,21 +28,27 @@
 \newlabel{sec:motive}{{1.2}{1}{Motivation}{subsection.1.2}{}}
 \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {2}Technical Approach}{1}{section.2}}
 \newlabel{sec:technical}{{2}{1}{Technical Approach}{section.2}{}}
-\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Alarm Clock}{1}{subsection.2.1}}
-\newlabel{sec:alarm}{{2.1}{1}{Alarm Clock}{subsection.2.1}{}}
-\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}AI Model}{1}{subsection.2.2}}
-\newlabel{sec:model}{{2.2}{1}{AI Model}{subsection.2.2}{}}
+\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Alarm Clock}{2}{subsection.2.1}}
+\newlabel{sec:alarm}{{2.1}{2}{Alarm Clock}{subsection.2.1}{}}
+\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}AI Model}{2}{subsection.2.2}}
+\newlabel{sec:model}{{2.2}{2}{AI Model}{subsection.2.2}{}}
 \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {3}Implementation Details}{2}{section.3}}
 \newlabel{sec:implementation}{{3}{2}{Implementation Details}{section.3}{}}
-\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Alarm Clock Class}{2}{subsection.3.1}}
+\abx@aux@cite{WithingReview}
+\abx@aux@segm{0}{0}{WithingReview}
+\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Alarm Clock Class}{3}{subsection.3.1}}
 \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}AI Models}{3}{subsection.3.2}}
-\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {4}Results}{3}{section.4}}
-\newlabel{sec:results}{{4}{3}{Results}{section.4}{}}
-\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Outcomes}{3}{subsection.4.1}}
-\newlabel{sec:outcome}{{4.1}{3}{Outcomes}{subsection.4.1}{}}
-\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Issues}{3}{subsection.4.2}}
-\newlabel{sec:issue}{{4.2}{3}{Issues}{subsection.4.2}{}}
-\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Takeaways}{3}{subsection.4.3}}
-\newlabel{sec:takeaway}{{4.3}{3}{Takeaways}{subsection.4.3}{}}
-\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Future Work}{3}{subsection.4.4}}
-\newlabel{sec:future}{{4.4}{3}{Future Work}{subsection.4.4}{}}
+\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces The above is a confusion matrix provided by\nobreakspace  {}\cite {WithingReview}.}}{4}{figure.1}}
+\newlabel{fig:matrix}{{1}{4}{The above is a confusion matrix provided by~\cite {WithingReview}}{figure.1}{}}
+\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {4}Results}{4}{section.4}}
+\newlabel{sec:results}{{4}{4}{Results}{section.4}{}}
+\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Outcomes}{4}{subsection.4.1}}
+\newlabel{sec:outcome}{{4.1}{4}{Outcomes}{subsection.4.1}{}}
+\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Issues}{4}{subsection.4.2}}
+\newlabel{sec:issue}{{4.2}{4}{Issues}{subsection.4.2}{}}
+\abx@aux@refcontextdefaultsdone
+\abx@aux@defaultrefcontext{0}{WithingReview}{nty/global//global/global}
+\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Takeaways}{5}{subsection.4.3}}
+\newlabel{sec:takeaway}{{4.3}{5}{Takeaways}{subsection.4.3}{}}
+\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Future Work}{5}{subsection.4.4}}
+\newlabel{sec:future}{{4.4}{5}{Future Work}{subsection.4.4}{}}
diff --git a/Report/main.bbl b/Report/main.bbl
index 28c7383bbfd6fa7e2cf5708a2ef83b0c0249b12b..6da3eb9429512c6cb736712bce293359bd07f60a 100644
--- a/Report/main.bbl
+++ b/Report/main.bbl
@@ -16,5 +16,41 @@
   {}
 \endgroup
 
+
+\refsection{0}
+  \datalist[entry]{nty/global//global/global}
+    \entry{WithingReview}{online}{}
+      \name{author}{1}{}{%
+        {{hash=fb3372b58ee6d1751d393d15c0b8f4ab}{%
+           family={Horst},
+           familyi={H\bibinitperiod},
+           given={Robter},
+           giveni={R\bibinitperiod}}}%
+      }
+      \list{organization}{1}{%
+        {Youtube, The Quantified Scientist}%
+      }
+      \strng{namehash}{fb3372b58ee6d1751d393d15c0b8f4ab}
+      \strng{fullhash}{fb3372b58ee6d1751d393d15c0b8f4ab}
+      \strng{bibnamehash}{fb3372b58ee6d1751d393d15c0b8f4ab}
+      \strng{authorbibnamehash}{fb3372b58ee6d1751d393d15c0b8f4ab}
+      \strng{authornamehash}{fb3372b58ee6d1751d393d15c0b8f4ab}
+      \strng{authorfullhash}{fb3372b58ee6d1751d393d15c0b8f4ab}
+      \field{sortinit}{H}
+      \field{sortinithash}{5f15a7bc777ad49ff15aa4d2831b1681}
+      \field{labelnamesource}{author}
+      \field{labeltitlesource}{title}
+      \field{title}{Withings Sleep Analyzer: Science Test (2021 Review)}
+      \field{year}{2021}
+      \field{dateera}{ce}
+      \verb{urlraw}
+      \verb https://www.youtube.com/watch?v=Nh2J_cP-C0E
+      \endverb
+      \verb{url}
+      \verb https://www.youtube.com/watch?v=Nh2J_cP-C0E
+      \endverb
+    \endentry
+  \enddatalist
+\endrefsection
 \endinput
 
diff --git a/Report/main.bcf b/Report/main.bcf
index 76c28be1a7bf69bba3f0a095684ceeed4dea0b14..86a26774be138ee05aa1824f300dbd56689ad5b5 100644
--- a/Report/main.bcf
+++ b/Report/main.bcf
@@ -1974,6 +1974,7 @@
     <bcf:datasource type="file" datatype="bibtex">main.bib</bcf:datasource>
   </bcf:bibdata>
   <bcf:section number="0">
+    <bcf:citekey order="1">WithingReview</bcf:citekey>
   </bcf:section>
   <!-- SORTING TEMPLATES -->
   <bcf:sortingtemplate name="nty">
diff --git a/Report/main.bib b/Report/main.bib
index 4fa87223d872ef2d3a24864ccb226ce9a2ccae33..d73e8a3cc318af2b03deca40c7b63685b19ca640 100644
--- a/Report/main.bib
+++ b/Report/main.bib
@@ -1,5 +1,5 @@
 %%%%%%%%%%%%%%%%%%%%%
-@online{Withing-Review,
+@online{WithingReview,
 title = {Withings Sleep Analyzer: Science Test (2021 Review)},
 date = {2021},
 organization = {Youtube, The Quantified Scientist},
diff --git a/Report/main.blg b/Report/main.blg
index 80a543110429f6461576cf21ade921231df8d5f5..6d8d2afe7f7addc2f838e8795db4d569f4e84138 100644
--- a/Report/main.blg
+++ b/Report/main.blg
@@ -1,9 +1,15 @@
 [0] Config.pm:302> INFO - This is Biber 2.11
-[0] Config.pm:305> INFO - Logfile is 'main.blg'
-[35] biber-darwin:313> INFO - === Sat May 14, 2022, 01:51:30
-[58] Biber.pm:371> INFO - Reading 'main.bcf'
-[133] Biber.pm:857> INFO - Found 0 citekeys in bib section 0
-[142] Utils.pm:193> WARN - The file 'main.bcf' does not contain any citations!
-[149] bbl.pm:617> INFO - Writing 'main.bbl' with encoding 'UTF-8'
-[149] bbl.pm:720> INFO - Output to main.bbl
-[150] Biber.pm:110> INFO - WARNINGS: 1
+[1] Config.pm:305> INFO - Logfile is 'main.blg'
+[42] biber-darwin:313> INFO - === Sat May 14, 2022, 04:56:26
+[63] Biber.pm:371> INFO - Reading 'main.bcf'
+[147] Biber.pm:857> INFO - Found 1 citekeys in bib section 0
+[161] Biber.pm:3976> INFO - Processing section 0
+[173] Biber.pm:4136> INFO - Looking for bibtex format file 'main.bib' for section 0
+[175] bibtex.pm:1500> INFO - LaTeX decoding ...
+[194] bibtex.pm:1316> INFO - Found BibTeX data source 'main.bib'
+[207] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable'
+[207] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized'
+[208] Biber.pm:3804> INFO - Sorting list 'nty/global//global/global' of type 'entry' with template 'nty' and locale 'en-US'
+[208] Biber.pm:3810> INFO - No sort tailoring available for locale 'en-US'
+[213] bbl.pm:617> INFO - Writing 'main.bbl' with encoding 'UTF-8'
+[213] bbl.pm:720> INFO - Output to main.bbl
diff --git a/Report/main.fdb_latexmk b/Report/main.fdb_latexmk
index adb692d54af0156e9268e7b96df1c5d09dd4b0c0..ed4b11640aed574315603d6007c1c5d2ba13b3be 100644
--- a/Report/main.fdb_latexmk
+++ b/Report/main.fdb_latexmk
@@ -1,28 +1,38 @@
 # Fdb version 3
-["biber main"] 1652518289 "main.bcf" "main.bbl" "main" 1652523041
-  "main.bcf" 1652523041 90454 f797796ea38f57328c423433e42b51d4 ""
+["biber main"] 1652529385 "main.bcf" "main.bbl" "main" 1652529424
+  "main.bcf" 1652529424 90509 cb48b9c868a1b930f790daadc920e993 ""
+  "main.bib" 1652529332 8222 37965a4becf0bb7a51a4901660c2240a ""
   (generated)
   "main.bbl"
   "main.blg"
-["pdflatex"] 1652523040 "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.tex" "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.pdf" "main" 1652523041
-  "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.aux" 1652523041 3811 ca6d80be8c31729f78845c08a67eb01f ""
-  "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.tex" 1652523039 8093 e1faf1d0fc48ebe5265acc9db11ef7d7 ""
+["pdflatex"] 1652529423 "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.tex" "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.pdf" "main" 1652529424
+  "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.aux" 1652529424 4309 35431d2cf7b0b49ccb29578444b9283b ""
+  "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.tex" 1652529423 12890 19e6573d5d4ffd3ad60cad44ea8db878 ""
   "/usr/local/texlive/2018/texmf-dist/fonts/enc/dvips/base/8r.enc" 1480098666 4850 80dc9bab7f31fb78a000ccfed0e27cab ""
   "/usr/local/texlive/2018/texmf-dist/fonts/map/fontname/texfonts.map" 1511824771 3332 103109f5612ad95229751940c61aada0 ""
   "/usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmb7t.tfm" 1480098689 2172 fd0c924230362ff848a33632ed45dc23 ""
   "/usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm" 1480098689 4524 6bce29db5bc272ba5f332261583fee9c ""
   "/usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmr7t.tfm" 1480098689 2124 2601a75482e9426d33db523edf23570a ""
   "/usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm" 1480098689 4408 25b74d011a4c66b7f212c0cc3c90061b ""
+  "/usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmrc7t.tfm" 1480098689 2680 312a2d12b1f1df8ee0212e7ba1962402 ""
   "/usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmri7t.tfm" 1480098689 2288 f478fc8fed18759effb59f3dad7f3084 ""
+  "/usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm" 1480098689 4640 532ca3305aad10cc01d769f3f91f1029 ""
   "/usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7m.tfm" 1480098689 2232 db256afffc8202da192b4641df14d602 ""
   "/usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7t.tfm" 1480098689 2172 1d00c2a0d10f23031be62329457a870c ""
   "/usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7v.tfm" 1480098689 1032 20febbd0f0c9a48eb78616f897008286 ""
   "/usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7y.tfm" 1480098689 1520 ad7b3c1a480a03b3e41b5fbb13d938f2 ""
   "/usr/local/texlive/2018/texmf-dist/fonts/tfm/public/cm/cmr10.tfm" 1480098701 1296 45809c5a464d5f32c8f98ba97c1bb47f ""
+  "/usr/local/texlive/2018/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1480098701 1124 6c73e740cf17375f03eec0ee63599741 ""
+  "/usr/local/texlive/2018/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm" 1480098701 768 1321e9409b4137d6fb428ac9dc956269 ""
+  "/usr/local/texlive/2018/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1480098733 32569 5e5ddc8df908dea60932f3c484a54c0d ""
+  "/usr/local/texlive/2018/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb" 1480098733 31099 c85edf1dd5b9e826d67c9c7293b6786c ""
   "/usr/local/texlive/2018/texmf-dist/fonts/type1/urw/times/utmb8a.pfb" 1480098746 44729 811d6c62865936705a31c797a1d5dada ""
   "/usr/local/texlive/2018/texmf-dist/fonts/type1/urw/times/utmr8a.pfb" 1480098746 46026 6dab18b61c907687b520c72847215a68 ""
+  "/usr/local/texlive/2018/texmf-dist/fonts/type1/urw/times/utmri8a.pfb" 1480098746 45458 a3faba884469519614ca56ba5f6b1de1 ""
   "/usr/local/texlive/2018/texmf-dist/fonts/vf/adobe/times/ptmb7t.vf" 1480098758 1372 788387fea833ef5963f4c5bffe33eb89 ""
   "/usr/local/texlive/2018/texmf-dist/fonts/vf/adobe/times/ptmr7t.vf" 1480098758 1380 0ea3a3370054be6da6acd929ec569f06 ""
+  "/usr/local/texlive/2018/texmf-dist/fonts/vf/adobe/times/ptmrc7t.vf" 1480098758 1948 7330aeef3af211edff3b35fb2c12a0fd ""
+  "/usr/local/texlive/2018/texmf-dist/fonts/vf/adobe/times/ptmri7t.vf" 1480098758 1384 a9d8adaf491ce34e5fba99dc7bbe5f39 ""
   "/usr/local/texlive/2018/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1480098806 71627 94eb9990bed73c364d7f53f960cc8c5b ""
   "/usr/local/texlive/2018/texmf-dist/tex/generic/ifxetex/ifxetex.sty" 1480098815 1458 43ab4710dc82f3edeabecd0d099626b2 ""
   "/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/etexcmds.sty" 1480098815 7612 729a8cc22a1ee0029997c7f74717ae05 ""
@@ -87,6 +97,7 @@
   "/usr/local/texlive/2018/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty" 1480098836 9581 023642318cef9f4677efe364de1e2a27 ""
   "/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/mathptmx.sty" 1480098837 4632 cd6d04f090f831ba44222ab7ccd5d2d4 ""
   "/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/omlztmcm.fd" 1480098837 411 12564a37a279e4e0b533cdf5e03eeb7c ""
+  "/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/omsptm.fd" 1480098837 576 95c2c0baea9c719a4be29a3d4122498b ""
   "/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/omsztmcm.fd" 1480098837 348 f4ce75d394e7d9ac12ca7aac4045ed77 ""
   "/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/omxztmcm.fd" 1480098837 329 c8cddcc90b6f567b28408eb374773c9c ""
   "/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/ot1ptm.fd" 1480098837 961 15056f4a61917ceed3a44e4ac11fcc52 ""
@@ -100,17 +111,18 @@
   "/usr/local/texlive/2018/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1523934492 2717033 f61a5287d9c22a39a74f1979fe3f905c ""
   "/usr/local/texlive/2018/texmf-var/web2c/pdftex/pdflatex.fmt" 1523934516 4220280 10cab8fbd7c5a7c52aba9917e190d018 ""
   "/usr/local/texlive/2018/texmf.cnf" 1523934483 577 0b39adfd7c93507ff20c9c14c2f1a33f ""
-  "main.aux" 1652523041 3811 ca6d80be8c31729f78845c08a67eb01f ""
-  "main.bbl" 1652518290 466 5e94f251ea8a419bbae6173a1e9a9c1d "biber main"
-  "main.out" 1652523041 788 bbdce8cb480a81f1342c114dabf8f0cd ""
-  "main.run.xml" 1652523041 2299 81988d3303a58f7ac525483192dfa2a1 ""
-  "main.tex" 1652523039 8093 e1faf1d0fc48ebe5265acc9db11ef7d7 ""
+  "Images/ConfusionMatrix.png" 1652529168 2158258 d5a570afde532d548ae928b230c94128 ""
+  "main.aux" 1652529424 4309 35431d2cf7b0b49ccb29578444b9283b ""
+  "main.bbl" 1652529386 1741 7d88dd200f88208e0104aa6e9f031a99 "biber main"
+  "main.out" 1652529424 788 bbdce8cb480a81f1342c114dabf8f0cd ""
+  "main.run.xml" 1652529424 2299 81988d3303a58f7ac525483192dfa2a1 ""
+  "main.tex" 1652529423 12890 19e6573d5d4ffd3ad60cad44ea8db878 ""
   (generated)
+  "main.log"
   "main.aux"
+  "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.log"
   "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.pdf"
   "main.bcf"
-  "main.log"
+  "main.pdf"
   "main.out"
   "main.run.xml"
-  "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.log"
-  "main.pdf"
diff --git a/Report/main.fls b/Report/main.fls
index 43190284fdb592279f5a3e46b9812cf586e372e3..a391e8870e5fb320016547622ce76bbcf3061bed 100644
--- a/Report/main.fls
+++ b/Report/main.fls
@@ -202,11 +202,44 @@ INPUT /usr/local/texlive/2018/texmf-dist/fonts/vf/adobe/times/ptmb7t.vf
 INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm
 INPUT /usr/local/texlive/2018/texmf-dist/fonts/vf/adobe/times/ptmr7t.vf
 INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm
+INPUT /Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/Images/ConfusionMatrix.png
+INPUT /Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/Images/ConfusionMatrix.png
+INPUT /Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/Images/ConfusionMatrix.png
+INPUT /usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/omsptm.fd
+INPUT /usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/omsptm.fd
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmri7t.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmrc7t.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7t.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7t.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7t.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7m.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7m.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7m.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7y.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7y.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7y.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7v.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7v.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/zptmcm7v.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmb7t.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmb7t.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmb7t.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmri7t.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmri7t.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/vf/adobe/times/ptmri7t.vf
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/vf/adobe/times/ptmrc7t.vf
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm
 INPUT /Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.aux
 INPUT /Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.out
 INPUT /Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.out
 INPUT /Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.run.xml
 OUTPUT /Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.run.xml
 INPUT /usr/local/texlive/2018/texmf-dist/fonts/enc/dvips/base/8r.enc
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb
 INPUT /usr/local/texlive/2018/texmf-dist/fonts/type1/urw/times/utmb8a.pfb
 INPUT /usr/local/texlive/2018/texmf-dist/fonts/type1/urw/times/utmr8a.pfb
+INPUT /usr/local/texlive/2018/texmf-dist/fonts/type1/urw/times/utmri8a.pfb
diff --git a/Report/main.log b/Report/main.log
index 194fd609b6838a152b4c707933ba5eb04520885c..1e09db24cfe9720fb4049cd92a546af7fac9b5be 100644
--- a/Report/main.log
+++ b/Report/main.log
@@ -1,4 +1,4 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=pdflatex 2018.4.16)  14 MAY 2022 03:10
+This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=pdflatex 2018.4.16)  14 MAY 2022 04:57
 entering extended mode
  restricted \write18 enabled.
  file:line:error style messages enabled.
@@ -693,19 +693,42 @@ LaTeX Font Info:    Font shape `OT1/ptm/bx/n' in size <9> not available
 LaTeX Font Info:    Font shape `OT1/ptm/bx/n' in size <7> not available
 (Font)              Font shape `OT1/ptm/b/n' tried instead on input line 28.
 LaTeX Font Info:    Font shape `OT1/ptm/bx/n' in size <14.4> not available
-(Font)              Font shape `OT1/ptm/b/n' tried instead on input line 29.
+(Font)              Font shape `OT1/ptm/b/n' tried instead on input line 30.
  [1
 
 {/usr/local/texlive/2018/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2]
+<Images/ConfusionMatrix.png, id=84, 1391.1975pt x 798.985pt>
+File: Images/ConfusionMatrix.png Graphic file (type png)
+<use Images/ConfusionMatrix.png>
+Package pdftex.def Info: Images/ConfusionMatrix.png  used on input line 134.
+(pdftex.def)             Requested size: 325.215pt x 186.77399pt.
 
-LaTeX Warning: Empty bibliography on input line 136.
 
-Package atveryend Info: Empty hook `BeforeClearDocument' on input line 138.
-[3]
-Package atveryend Info: Empty hook `AfterLastShipout' on input line 138.
+LaTeX Warning: `h' float specifier changed to `ht'.
+
+[3] [4 </Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/Images/ConfusionMatrix.png>]
+LaTeX Font Info:    Try loading font information for OMS+ptm on input line 176.
+ (/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/omsptm.fd
+File: omsptm.fd 
+)
+LaTeX Font Info:    Font shape `OMS/ptm/m/n' in size <10.95> not available
+(Font)              Font shape `OMS/cmsy/m/n' tried instead on input line 176.
+Package microtype Info: Loading generic protrusion settings for font family
+(microtype)             `cmtt' (encoding: OT1).
+(microtype)             For optimal results, create family-specific settings.
+(microtype)             See the microtype manual for details.
+LaTeX Font Info:    Font shape `OT1/ptm/bx/n' in size <10.95> not available
+(Font)              Font shape `OT1/ptm/b/n' tried instead on input line 192.
+LaTeX Font Info:    Font shape `OT1/ptm/bx/n' in size <8> not available
+(Font)              Font shape `OT1/ptm/b/n' tried instead on input line 192.
+LaTeX Font Info:    Font shape `OT1/ptm/bx/n' in size <6> not available
+(Font)              Font shape `OT1/ptm/b/n' tried instead on input line 192.
+Package atveryend Info: Empty hook `BeforeClearDocument' on input line 194.
+ [5]
+Package atveryend Info: Empty hook `AfterLastShipout' on input line 194.
  (/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.aux)
-Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 138.
-Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 138.
+Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 194.
+Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 194.
 Package rerunfilecheck Info: File `main.out' has not changed.
 (rerunfilecheck)             Checksum: BBDCE8CB480A81F1342C114DABF8F0CD;788.
 Package logreq Info: Writing requests to 'main.run.xml'.
@@ -713,18 +736,18 @@ Package logreq Info: Writing requests to 'main.run.xml'.
 
  ) 
 Here is how much of TeX's memory you used:
- 15447 strings out of 492649
- 258489 string characters out of 6129622
- 750625 words of memory out of 5000000
- 19045 multiletter control sequences out of 15000+600000
- 23155 words of font info for 93 fonts, out of 8000000 for 9000
+ 15778 strings out of 492649
+ 264431 string characters out of 6129622
+ 750766 words of memory out of 5000000
+ 19309 multiletter control sequences out of 15000+600000
+ 36556 words of font info for 144 fonts, out of 8000000 for 9000
  1141 hyphenation exceptions out of 8191
- 36i,6n,38p,892b,742s stack positions out of 5000i,500n,10000p,200000b,80000s
-{/usr/local/texlive/2018/texmf-dist/fonts/enc/dvips/base/8r.enc}</usr/local/texlive/2018/texmf-dist/fonts/type1/urw/times/utmb8a.pfb></usr/local/texlive/2018/texmf-dist/fonts/type1/urw/times/utmr8a.pfb>
-Output written on "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.pdf" (3 pages, 39381 bytes).
+ 40i,7n,45p,892b,1330s stack positions out of 5000i,500n,10000p,200000b,80000s
+{/usr/local/texlive/2018/texmf-dist/fonts/enc/dvips/base/8r.enc}</usr/local/texlive/2018/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/local/texlive/2018/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/local/texlive/2018/texmf-dist/fonts/type1/urw/times/utmb8a.pfb></usr/local/texlive/2018/texmf-dist/fonts/type1/urw/times/utmr8a.pfb></usr/local/texlive/2018/texmf-dist/fonts/type1/urw/times/utmri8a.pfb>
+Output written on "/Users/nowadmin/Documents/School Folder/CS 437/Lab/Final Project/Report/main.pdf" (5 pages, 2101221 bytes).
 PDF statistics:
- 108 PDF objects out of 1000 (max. 8388607)
- 100 compressed objects within 1 object stream
- 32 named destinations out of 1000 (max. 500000)
- 17521 words of extra memory for PDF output out of 20736 (max. 10000000)
+ 146 PDF objects out of 1000 (max. 8388607)
+ 130 compressed objects within 2 object streams
+ 41 named destinations out of 1000 (max. 500000)
+ 30326 words of extra memory for PDF output out of 35830 (max. 10000000)
 
diff --git a/Report/main.synctex.gz b/Report/main.synctex.gz
index 9d41a3201a85dff17da8705feb206f06ea4de285..e62e360e0995a88dd9b3a48cc2a84f8ab5265e0d 100644
Binary files a/Report/main.synctex.gz and b/Report/main.synctex.gz differ
diff --git a/Report/main.tex b/Report/main.tex
index 89dc542c1e72ed95f06ff56502684aaab876f228..65216bf2e2d2e79c92e880d34c80670941da23e3 100644
--- a/Report/main.tex
+++ b/Report/main.tex
@@ -26,37 +26,64 @@
 
 \maketitle
 
+
 \section{Introduction}\label{sec:intro}
+
 \subsection{Topic}\label{sec:topic}
 The goal for this project is to create an alarm clock that takes into account a user's sleep cycle.
 This will allow the alarm to be more effective as it will be capable of waking up the user at during moments close to wakefulness.
 \subsection{Motivation}\label{sec:motive}
 Sleep is an essential activity we ideally spend on every night. 
-However, with the multitude of stress that occur in modern life, it can be hard to get adequate sleep.
-This can lead to a build up of sleep debt and compound health issues.
-There are many avenues for tackling the problem of sleep deprivation, from creating an application for developing health sleep hygiene to [].
+However, with the multitude of attention and stresses that occur in modern life, it can be hard to get adequate sleep.
+This can lead to a build up of sleep debt and compound health issues, particularly cognitive impairments.
+There are many avenues for tackling the problem of sleep deprivation, from habit development apps to blocking timeout that stops the user from using their smart devices after some time.
 The pathway I choose to focus on is augmenting the capabilities of alarm clocks.
 
 The alarm clock is a simple device that is designed to wake up the user at a set time.
-Within this simplicity there is a problem, which is that [].
-The problems with traditional alarm clocks are that they don't alway follow the user's [].
+Within this simplicity there is a problem though, which is that alarm clocks have no idea about the user to wake up.
+Traditional alarm clocks only have a way to set an alarm time, and maybe a snooze option, which prevents them from being fully tailored to a user.
+What we would ideally want is for the alarm clock to know exactly what stage of.
+This can allow the alarm to more gently wake the user up and can help them rely less on snoozing the alarm.
+
 There have been application that have applied similar, such as Sleep Cycle for iOS and Android.
 My application focuses more on brining this functionality to non-smartphone devices by using the Withing Sleep Mat and Raspberry Pi.
 
+
 \section{Technical Approach}\label{sec:technical}
 The overall approach to the project can be split into two primary parts: the alarm clock and the AI model.
 The alarm clock functionality should be provided by a simple script that can be run by the Raspberry Pi.
-For the AI model, the initial hope was to have the device work on . 
+For the AI model, the initial hope was to have the Raspberry Pi host the model and do the calculation from itself.
+I shifted to using my laptop instead do to the application run (see Section~\ref{sec:issue}). 
+There was also once a third part to the project, dealing with the coding for the Withing API, but that was dropped in favor of focusing primarily on training the models on the data.
+This meant that rather than have the device load the data from the API, I just downloaded the data directly and used that instead.
+
+
 \subsection{Alarm Clock}\label{sec:alarm}
-The first is the alarm clock script.
-This is a Python script which handles getting the user [].
+The alarm clock is a Python script to handles taking user information and determining the best time to sound the alarm.
+To apply this, I modeled the alarm clock as a Finite State Machine (FSM) class with extendable subclasses.
+This allowed me to modularize the code for the alarm clock and easily slot in the model later on.
+
 
 \subsection{AI Model}\label{sec:model}
 
-The model for this project was trained on Withing Sleep data [].
+The model for this project was trained on Withing Sleep data.
+The general flow of the model works as follows:
+\begin{enumerate}
+    \item Initialize the model's memory, which holds a Deque (double-ended queue) of numpy arrays (each containing information like current time, minutes since beginnning, and the probability of each sleep state),
+    \item Add the current timestep and previous prediction to the model's memory,
+    \item If the Deque is not full filled, repeat step 2 (this warms up the memory to prevent the model from reading in variable length data),
+    \item Pass the current memory to the model and calculate the next prediction,
+    \item Repeat back to the step 2.
+\end{enumerate}
+
 I primarily focused on developing models that had recurrent cells, such as Long Short-Term Memory (LSTM) models, Gated Recurrent Unit (GRU) models, and attention-based mechanism models.
-As a .
-Since the data was simple, I also looked at different baseline models such as Markov Chains and Feed-forward networks without recurrence.
+Generally, Recurrent Neural Networks (RNNs) are useful model when fitted to time-series data, as the structure is able to keep some memory of prior events.
+
+I also looked at different baseline models such as Markov Chains and Feed-forward networks without recurrence.
+This would allow me to verify if recurrence was able to help with the mode.
+To control for variance among all the trained models, and to work within a constrained environment, I only allowed the model to have a single hidden layer with no more than 32 units.
+While this is very constrained, the data was simple enough that the models were able to be trained to a reasonable degree.
+
 
 \section{Implementation Details}\label{sec:implementation}
 Below is a list of external Python libraries I used in the project:
@@ -72,7 +99,7 @@ Below is a list of external Python libraries I used in the project:
 On the hardware, I did primary development and testing on my MacBook Pro Laptop.
 I also attempted to get this project working on the Raspberry Pi, but I ran into some issues discussed more in Section~\ref{sec:issue}.
 
-During development, [].
+
 \subsection{Alarm Clock Class}
 For the alarm clock itself, I represent that as a Finite State Machine (FSM).
 This was developed in three scripts: alarm.py, simple\_alarm\_clock.py, and smart\_alarm\_clock.py.
@@ -87,20 +114,41 @@ In alarm.py, the file contained an enum with 5 states:
 The file also contains the BaseAlarmClock, implements the state changing functionality and holds the reference to the wake-up time.
 Next, the SimpleAlarmClock in simple\_alarm\_clock.py extends the BaseAlarmClock, adding functionality for keyboard inputs, providing print messages for alarm clock state changes, promoting the user for information about what time to wake up. 
 It also adds a function called `simple\_alarm\_mode', which handles running the alarm clock from start to end.
-Moving into the smart\_alarm\_clock.py script, the code structure for is kept mostly the same as simple\_alarm\_clock.py.
-added two additional part:
+Moving into the smart\_alarm\_clock.py script, the code structure for is kept mostly the same as simple\_alarm\_clock.py, primarily the getting user input and the flow of the data from alarm activation to deactivation.
+Beyond that, I added two new sections of code:
 \begin{enumerate}
-    \item a function for loading and running the model,
-    \item and a VLC instance for playing sound from the script.
+    \item a function for loading and running the model (includes the softmax and model prediction helper functions),
+    \item and a VLC instance for playing sound from the script (this allowed it to sound like an regular alarm clock).
 \end{enumerate}
 
+
 \subsection{AI Models}
-I used a Jupyter Notebook for [].
+Before going into the AI models themselves, I will first discuss how the data was created.
+The initial data came from Withing Sleep Mat.
+This had about 3 years of data, with each sleep event getting the time started (in UTC time), the stages, and the duration.
+There was also extra data on heart rate and respiration, however I did not use them for the current model training.
+From this, I extracted the data into a minute-by-minute format.
+I also derived some more information, such as how many minutes the data point was from the start.
+\begin{figure}[h]
+    \centering
+    \includegraphics[width=0.75\textwidth]{Images/ConfusionMatrix.png}
+    \caption{The above is a confusion matrix provided by~\cite{WithingReview}.}\label{fig:matrix}
+\end{figure}
+One additional step I took was adding random noise to the sleep data, which I used to make the models more resilient to noisy data (See Figure~\ref{fig:matrix}).
+After the data is organized, I have a class called WindowGenerator that splits the data into training, validation, and testing datasets, as well as pushing the data into a time-series format, where the input is a specified chunck of time, and the output is the next timestep.
+
+On to the models, for experimenting, I used a Jupyter Notebook to create the models and play around with setting up the parameters.
+During the experiment, I look at how good I can make the model with as few parameters.
+Once each of the models were finished experimenting with, I pushed them into their own Python script to allow a more parallel way of training.
+Once trained, the model and its training+validation history is saved.
+As a check, I also evaluate it on the testing data.
 
 
 \section{Results}\label{sec:results}
 \subsection{Outcomes}\label{sec:outcome}
-Based on the training results from the Jupyter Notebook, .
+Based on the training results from the Jupyter Notebook, all the RNN-variant models were very close in terms of categorical loss entropy and accuracy.
+Based on this, I used the attention-based RNN model for the main model for testing, as it had the least number of training parameters compared to units, which made the fastest to train on the data.
+
 
 \subsection{Issues}\label{sec:issue}
 One slight issue I ran into for the AI model was the inability for the model to work load properly on the Raspberry Pi. 
@@ -120,17 +168,25 @@ I did try to see if running OMXPlayer from the Python subprocess would work, but
 
 These issues prevented me from running the working application on the Raspberry Pi.
 Had I more time to debug the issues, I may have gotten the TF model and VLC player to work on the Pi.
+
+
 \subsection{Takeaways}\label{sec:takeaway}
+Some key takeaways from this project are:
+\begin{itemize}
+    \item Simple models for simple data
+    \item Work on machines as close to the target device as possible
+    \item Allow the data to be randomized to make models more resistant to noise, especially if that is fed back into the model.
+\end{itemize}
 
 \subsection{Future Work}\label{sec:future}
 In this final discussion, I will discuss where the project can go from here.
-Given additional time, the first priority would be on getting the application to successful work on the Raspberry Pi.
-The tools and scripts are there for it to work, with the current issue just being able to fix bugs with the setup process.
+Given additional time, the first priority would be on getting the application to successful work from start to end on the Raspberry Pi.
+The tools and scripts are there for it to work, with the current issue just being able to fix bugs during the setup process.
 The next extension on that would be to connect up the Withing API using Withing Python.
 While there isn't a way to stream sleep data as it is being collect, I can still use it to gather the sleep data after the user wakes up.
 This can allow the model to be trained on new data daily.
-I can also hook into the notification system provided by the API for user in-bed and user out-of-bed to automate starting and stopping the alarm.
-After that, there might be ways to extend it to other devices which provide sleep data tracking, such as FitBit, as well as move the AI computation to the edge.
+Additionally, I can also hook into the notification system provided by the API for user in-bed and user out-of-bed to automate starting and stopping the alarm.
+Moving to a more general idea, there might be ways to extend it to other devices which provide sleep data tracking, such as FitBit, as well as move the AI model to the edge computing, which can allow for more complex and larger models.
 
 
 \printbibliography