diff --git a/build/DownloadDocFX.ps1 b/build/DownloadDocFX.ps1
deleted file mode 100644
index 5f6c629..0000000
--- a/build/DownloadDocFX.ps1
+++ /dev/null
@@ -1,18 +0,0 @@
-[cmdletbinding()]
-param([string]$Version="2.48.1",[string]$Folder)
-Add-Type -AssemblyName System.IO.Compression.FileSystem
-[Net.ServicePointManager]::SecurityProtocol =[Net.SecurityProtocolType]::Tls12
-
-function DownloadDocFX([string]$version, [string]$folder)
-{
- Write-Output "Using folder $folder"
- $path = "$folder\v$version"
- if (!(Test-Path $path))
- {
- New-Item -ItemType Directory -Force -Path $path
- Write-Output "Downloading DocFX v$version..."
- Invoke-WebRequest -Uri "https://github.com/dotnet/docfx/releases/download/v$version/docfx.zip" -OutFile "$folder\docfx_v$version.zip"
- [System.IO.Compression.ZipFile]::ExtractToDirectory("$folder\docfx_v$version.zip",$path )
- }
-}
-DownloadDocFX -version $Version -folder $Folder
\ No newline at end of file
diff --git a/build/GenerateDoc.cmd b/build/GenerateDoc.cmd
deleted file mode 100644
index 882f9ed..0000000
--- a/build/GenerateDoc.cmd
+++ /dev/null
@@ -1,18 +0,0 @@
-@ECHO OFF
-
-SET DocFXVersion=2.48.1
-SET DocFxFolder=%~dp0\..\.tools\docfx
-
-REM Download DocFx
-powershell -ExecutionPolicy ByPass -command "%~dp0/DownloadDocFX.ps1" -Version %DocFXVersion% -Folder %DocFxFolder%
-
-REM Merge output (not implemented)
-REM %DocFxFolder%\v%DocFXVersion%\docfx.exe merge
-
-REM Generate OMD
-dotnet tool install --tool-path .tools/omd dotMorten.OmdGenerator --version 1.2.0
-mkdir %~dp0../artifacts/docs/api
-.tools\omd\generateomd /source=%~dp0../src/NmeaParser /output=%~dp0../artifacts/docs/api/omd.html /preprocessors=NETSTANDARD1_4;NETSTANDARD
-
-REM Build the output site (HTML) from the generated metadata and input files (uses configuration in docfx.json in this folder)
-%DocFxFolder%\v%DocFXVersion%\docfx.exe %~dp0..\docs\docfx.json
diff --git a/docs/BuildDoc.cmd b/docs/BuildDoc.cmd
new file mode 100644
index 0000000..ce1c972
--- /dev/null
+++ b/docs/BuildDoc.cmd
@@ -0,0 +1,21 @@
+@ECHO OFF
+
+SET DocFXVersion=2.48.1
+SET DocFxFolder=%~dp0..\.tools\docfx
+
+REM Download DocFx
+
+IF NOT EXIST "%DocFxFolder%\v%DocFXVersion%\docfx.exe" (
+ MKDIR "%DocFXFolder%\v%DocFXVersion%"
+ powershell -ExecutionPolicy ByPass -command "Invoke-WebRequest -Uri "https://github.com/dotnet/docfx/releases/download/v%DocFXVersion%/docfx.zip" -OutFile '%DocFxFolder%\docfx_v%DocFXVersion%.zip'"
+ powershell -ExecutionPolicy ByPass -command "Expand-Archive -LiteralPath '%DocFxFolder%\docfx_v%DocFXVersion%.zip' -DestinationPath '%DocFxFolder%\v%DocFXVersion%'"
+ DEL "%DocFxFolder%\docfx_v%DocFXVersion%.zip" /Q
+)
+
+REM Generate OMD
+dotnet tool install --tool-path .tools/omd dotMorten.OmdGenerator --version 1.2.0
+mkdir %~dp0../artifacts/docs/api
+.tools\omd\generateomd /source=%~dp0../src/NmeaParser /output=%~dp0../artifacts/docs/api/omd.html /preprocessors=NETSTANDARD1_4;NETSTANDARD
+
+REM Build the output site (HTML) from the generated metadata and input files (uses configuration in docfx.json in this folder)
+%DocFxFolder%\v%DocFXVersion%\docfx.exe %~dp0\docfx.json -t --serve
diff --git a/docs/docfx.json b/docs/docfx.json
index a729f3e..33690c4 100644
--- a/docs/docfx.json
+++ b/docs/docfx.json
@@ -127,7 +127,7 @@
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"template": [
- "default"
+ "default","template_overrides"
],
"postProcessors": [],
"markdownEngineName": "markdig",
diff --git a/docs/images/logo.png b/docs/images/logo.png
index 206f699..442ef81 100644
Binary files a/docs/images/logo.png and b/docs/images/logo.png differ
diff --git a/docs/template_overrides/partials/head.tmpl.partial b/docs/template_overrides/partials/head.tmpl.partial
new file mode 100644
index 0000000..c05e8c1
--- /dev/null
+++ b/docs/template_overrides/partials/head.tmpl.partial
@@ -0,0 +1,21 @@
+{{!Copyright (c) Oscar Vasquez. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+
+
+
+ {{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}
+
+
+
+ {{#_description}}{{/_description}}
+
+
+
+
+
+
+
+ {{#_noindex}}{{/_noindex}}
+ {{#_enableSearch}}{{/_enableSearch}}
+ {{#_enableNewTab}}{{/_enableNewTab}}
+
\ No newline at end of file
diff --git a/docs/template_overrides/styles/main.css b/docs/template_overrides/styles/main.css
new file mode 100644
index 0000000..9174371
--- /dev/null
+++ b/docs/template_overrides/styles/main.css
@@ -0,0 +1,253 @@
+/* COLOR VARIABLES*/
+:root {
+ --header-bg-color: #0d47a1;
+ --header-ft-color: #fff;
+ --highlight-light: #5e92f3;
+ --highlight-dark: #003c8f;
+ --font-color: #34393e;
+ --custom-box-shadow: 0 1px 2px 0 rgba(61, 65, 68, 0.06), 0 1px 3px 1px rgba(61, 65, 68, 0.16);
+}
+
+body {
+ color: var(--font-color);
+ font-family: "Roboto", sans-serif;
+ line-height: 1.5;
+ font-size: 16px;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+ word-wrap: break-word;
+}
+
+/* HIGHLIGHT COLOR */
+
+button,
+a {
+ color: var(--highlight-dark);
+ cursor: pointer;
+}
+
+button:hover,
+button:focus,
+a:hover,
+a:focus {
+ color: var(--highlight-light);
+ text-decoration: none;
+}
+
+.toc .nav > li.active > a {
+ color: var(--highlight-dark);
+}
+
+.toc .nav > li.active > a:hover,
+.toc .nav > li.active > a:focus {
+ color: var(--highlight-light);
+}
+
+.pagination > .active > a {
+ background-color: var(--header-bg-color);
+ border-color: var(--header-bg-color);
+}
+
+.pagination > .active > a,
+.pagination > .active > a:focus,
+.pagination > .active > a:hover,
+.pagination > .active > span,
+.pagination > .active > span:focus,
+.pagination > .active > span:hover {
+ background-color: var(--highlight-light);
+ border-color: var(--highlight-light);
+}
+
+/* HEADINGS */
+
+h1 {
+ font-weight: 600;
+ font-size: 32px;
+}
+
+h2 {
+ font-weight: 600;
+ font-size: 24px;
+ line-height: 1.8;
+}
+
+h3 {
+ font-weight: 600;
+ font-size: 20px;
+ line-height: 1.8;
+}
+
+h5 {
+ font-size: 14px;
+ padding: 10px 0px;
+}
+
+article h1,
+article h2,
+article h3,
+article h4 {
+ margin-top: 35px;
+ margin-bottom: 15px;
+}
+
+article h4 {
+ padding-bottom: 8px;
+ border-bottom: 2px solid #ddd;
+}
+
+/* NAVBAR */
+
+.navbar-brand > img {
+ color: var(--header-ft-color);
+}
+
+.navbar {
+ border: none;
+ /* Both navbars use box-shadow */
+ -webkit-box-shadow: var(--custom-box-shadow);
+ -moz-box-shadow: var(--custom-box-shadow);
+ box-shadow: var(--custom-box-shadow);
+}
+
+.subnav {
+ border-top: 1px solid #ddd;
+ background-color: #fff;
+}
+
+.navbar-inverse {
+ background-color: var(--header-bg-color);
+ z-index: 100;
+}
+
+.navbar-inverse .navbar-nav > li > a,
+.navbar-inverse .navbar-text {
+ color: var(--header-ft-color);
+ background-color: var(--header-bg-color);
+ border-bottom: 3px solid transparent;
+ padding-bottom: 12px;
+}
+
+.navbar-inverse .navbar-nav > li > a:focus,
+.navbar-inverse .navbar-nav > li > a:hover {
+ color: var(--header-ft-color);
+ background-color: var(--header-bg-color);
+ border-bottom: 3px solid white;
+}
+
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:focus,
+.navbar-inverse .navbar-nav > .active > a:hover {
+ color: var(--header-ft-color);
+ background-color: var(--header-bg-color);
+ border-bottom: 3px solid white;
+}
+
+.navbar-form .form-control {
+ border: none;
+ border-radius: 20px;
+}
+
+/* SIDEBAR */
+
+.toc .level1 > li {
+ font-weight: 400;
+}
+
+.toc .nav > li > a {
+ color: var(--font-color);
+}
+
+.sidefilter {
+ background-color: #fff;
+ border-left: none;
+ border-right: none;
+}
+
+.sidefilter {
+ background-color: #fff;
+ border-left: none;
+ border-right: none;
+}
+
+.toc-filter {
+ padding: 10px;
+ margin: 0;
+}
+
+.toc-filter > input {
+ border: 2px solid #ddd;
+ border-radius: 20px;
+}
+
+.toc-filter > .filter-icon {
+ display: none;
+}
+
+.sidetoc > .toc {
+ background-color: #fff;
+ overflow-x: hidden;
+}
+
+.sidetoc {
+ background-color: #fff;
+ border: none;
+}
+
+/* ALERTS */
+
+.alert {
+ padding: 0px 0px 5px 0px;
+ color: inherit;
+ background-color: inherit;
+ border: none;
+ box-shadow: var(--custom-box-shadow);
+}
+
+.alert > p {
+ margin-bottom: 0;
+ padding: 5px 10px;
+}
+
+.alert > ul {
+ margin-bottom: 0;
+ padding: 5px 40px;
+}
+
+.alert > h5 {
+ padding: 10px 15px;
+ margin-top: 0;
+ text-transform: uppercase;
+ font-weight: bold;
+ border-radius: 4px 4px 0 0;
+}
+
+.alert-info > h5 {
+ color: #1976d2;
+ border-bottom: 4px solid #1976d2;
+ background-color: #e3f2fd;
+}
+
+.alert-warning > h5 {
+ color: #f57f17;
+ border-bottom: 4px solid #f57f17;
+ background-color: #fff3e0;
+}
+
+.alert-danger > h5 {
+ color: #d32f2f;
+ border-bottom: 4px solid #d32f2f;
+ background-color: #ffebee;
+}
+
+/* CODE HIGHLIGHT */
+pre {
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ word-break: break-all;
+ word-wrap: break-word;
+ background-color: #fffaef;
+ border-radius: 4px;
+ border: none;
+ box-shadow: var(--custom-box-shadow);
+}