diff --git a/images/github-logo.png b/images/github-logo.png
new file mode 100644
index 0000000..dd5285b
--- /dev/null
+++ b/images/github-logo.png
Binary files differ
diff --git a/index.html b/index.html
index d38b3fc..e95ef21 100644
--- a/index.html
+++ b/index.html
@@ -215,42 +215,98 @@
           </div>
           <hr width="100%" size="8" align="left">
           <p class="lead text-dark">
-            <label>If you're looking for Bliss OS (Android for PC's), we have moved to a new site. <br><br> <a class="btn mb-3 btn-dark" target="BLANK" href="https://blissroms-x86.github.io">Go to the Bliss OS website</a> </label>
+            <label>If you're looking for Bliss OS (Android for PC's), we have moved to a new site. <br><br> <a class="btn mb-3 btn-dark" target="BLANK" href="https://www.blissos.org">Go to the Bliss OS website</a> </label>
           </p>
         </div>
       </div>
     </div>
   </div>
   <!-- End Downloads -->
-  <div class="bg-secondary py-5" id="team">
+  <div class="py-5 bg-dark" id="documentation">
     <div class="container">
       <div class="row">
-        <div class="mx-auto col-md-12 text-center">
-          <h3 class="display-3 pt-5">The Team</h3>
+        <div class="col-md-12" style="">
+          <h3 class="display-3 text-truncate">Docs</h3>
+          <p class="mb-4 lead">Bliss ROMs documentation can be found on our <a href="https://docs.blissroms.com">docs site</a>, while our development update posts can be found on the XDA thread for that devices release version.<br><br> We recommend all users start with using the documentation we have provided before trying to hunt us down online and ask us questions as this action takes away the valuable development time we have commited towards this project. None of us are paid for the work we do on Bliss, so please set your expectations accordingly.&nbsp;<br><br> For questions on if Bliss will work on your device, please search our public <a href="https://www.blissroms.com/stats.html">stats site</a> for your device, failing that, search the XDA or Google for a Bliss build for your device.&nbsp;</p>
+          <div class="row">
+            <div class="col-md-3" style=""><img class="img-fluid d-block" src="images/github-logo.png"></div>
+            <div class="col-md-7" style="">
+              <h3>Want to help contribute towards our open source project?</h3>
+              <p>We're always adding to Bliss development, and if this is your way of giving back, then feel free to download the source and submit commits through the BlissROMs Gerrit Review or check out our <a href="https://github.com/BlissRoms">GitHub repo</a></p>
+            </div>
+            <div class="col-md-2 mx-auto" style="">
+              <a class="btn mb-3 btn-secondary" href="https://docs.blissroms.com" target="_blank">BlissROMs Docs</a>
+            </div>
+          </div>
         </div>
       </div>
-      <section id="content" class="team_content"></section>
-      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
-      <script>
-        $.ajax({
-          type: "GET",
-          url: "https://blissapi.blissroms.com/blissinfra/public/allteambliss", // TeamBliss JSON
-          success: function(data) {
-            var newContent = ''; // Variable to hold HTML
-            for (var i = 0; i < data.length; i++) { // Loop through object
-              newContent += '<div id="event" class="team_item">';
-              newContent += '<img class="image crop" src="' + data[i].image + '" ';
-              newContent += 'alt="' + data[i].member + '" />';
-              newContent += '<h3><b>' + data[i].member + '</b></h3>';
-              newContent += '<p class="team_data_text">' + data[i].descriptions + '</p>';
-              newContent += '<p class="team_data_text"><i>&quot;' + data[i].email + '&quot;</i></p>';
-              newContent += '</div>';
-            }
-            // Update the page with the new content
-            document.getElementById('content').innerHTML = newContent;
-          }
-        })
-      </script>
+    </div>
+  </div>
+  <div class="py-5 bg-light">
+    <div class="container">
+      <div class="row">
+        <div class="col-md-12">
+          <div class="row">
+            <div class="mx-auto col-md-12 text-center">
+              <h3 class="display-3">The Team</h3>
+            </div>
+          </div>
+          <ul class="nav nav-tabs nav-justified">
+            <li class="nav-item mx-auto font-weight-bold"> <a class="active nav-link" href="" data-toggle="tab" data-target="#tabone">Core Members</a> </li>
+            <li class="nav-item mx-auto font-weight-bold"> <a href="" class="nav-link" data-toggle="tab" data-target="#tabtwo">Maintainers</a> </li>
+          </ul>
+          <div class="tab-content mt-2">
+            <div class="tab-pane fade show active" id="tabone" role="tabpanel">
+              <section id="content" class="team_content"></section>
+              <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
+              <script>
+                $.ajax({
+                  type: "GET",
+                  url: "https://blissapi.blissroms.com/team/public/allteambliss", // TeamBliss JSON
+                  success: function(data) {
+                    var newContent = ''; // Variable to hold HTML
+                    for (var i = 0; i < data.length; i++) { // Loop through object
+                      newContent += '<div id="event" class="team_item">';
+                      newContent += '<img class="image crop" src="' + data[i].image + '" ';
+                      newContent += 'alt="' + data[i].member + '" />';
+                      newContent += '<h3><b>' + data[i].member + '</b></h3>';
+                      newContent += '<p class="team_data_text font-weight-bold">' + data[i].descriptions + '</p>';
+                      newContent += '<p class="team_data_text font-weight-bold"><i>&quot;' + data[i].email + '&quot;</i></p>';
+                      newContent += '</div>';
+                    }
+                    // Update the page with the new content
+                    document.getElementById('content').innerHTML = newContent;
+                  }
+                })
+              </script>
+            </div>
+            <div class="tab-pane fade" id="tabtwo" role="tabpanel">
+              <section id="content2" class="team_content"></section>
+              <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
+              <script>
+                $.ajax({
+                  type: "GET",
+                  url: "https://blissapi.blissroms.com/blissinfra/public/allmaintainers", // TeamBliss JSON
+                  success: function(data) {
+                    var newContent = ''; // Variable to hold HTML
+                    for (var i = 0; i < data.length; i++) { // Loop through object
+                      newContent += '<div id="event" class="team_item">';
+                      newContent += '<img class="image crop" src="' + data[i].image + '" ';
+                      newContent += 'alt="' + data[i].mname + '" />';
+                      newContent += '<h3><b>' + data[i].mname + '</b></h3>';
+                      newContent += '<p class="team_data_text font-weight-bold">' + data[i].device + '</p>';
+                      newContent += '<p class="team_data_text font-weight-bold"><i>&quot;' + data[i].codename + '&quot;</i></p>';
+                      newContent += '</div>';
+                    }
+                    // Update the page with the new content
+                    document.getElementById('content2').innerHTML = newContent;
+                  }
+                })
+              </script>
+            </div>
+          </div>
+        </div>
+      </div>
     </div>
   </div>
   <div class="py-4 text-center">
@@ -410,4 +466,4 @@
   <script src="js/conditionize.js"></script>
 </body>
 
-</html>
+</html>
\ No newline at end of file
diff --git a/stats.html b/stats.html
new file mode 100644
index 0000000..43edb5a
--- /dev/null
+++ b/stats.html
@@ -0,0 +1,243 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <!-- PAGE settings -->
+  <link rel="icon" href="favicon.ico">
+  <title>BlissROMs Stats</title>
+  <meta name="description" content="Bliss Stats for all devices with confirmed boot">
+  <meta name="keywords" content="blissroms, bliss, os, x86, aosp, android, rom, teambliss">
+  <!-- CSS dependencies -->
+  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
+  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" type="text/css">
+  <link rel="stylesheet" href="neon.css">
+  <!-- Script: Make my navbar transparent when the document is scrolled to top -->
+  <script src="js/navbar-ontop.js"></script>
+  <!-- Script: Animated entrance -->
+  <script src="js/animate-in.js"></script>
+  <link rel="stylesheet" href="css/animations.css">
+  <link rel="stylesheet" href="css/table.css">
+  <!--
+  <script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script> (adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: "ca-pub-7639560510014441", enable_page_level_ads: true }); </script>
+  -->
+</head>
+
+<body class="" style="">
+  <!-- Navbar -->
+  <nav class="navbar navbar-expand-md fixed-top navbar-light bg-primary" style="padding-right: 41px;">
+    <div class="container">
+      <a class="navbar-brand" href="stats.html"><img src="images/BlissIcon_Smal_wl.png" width="50" class="d-inline-block align-top" alt=""></a>
+      <div class="row">
+        <div class="col-md-12"><a class="navbar-brand" href="stats.html"><b><b>BlissROMs Stats</b></b></a></div>
+      </div>
+      <div class="row"></div>
+      <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbar2SupportedContent" aria-controls="navbar2SupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button>
+      <div class="collapse navbar-collapse text-center justify-content-end" id="navbar2SupportedContent">
+        <ul class="navbar-nav">
+          <li class="nav-item mx-2">
+            <a class="nav-link" href="https://www.blissos.org"><b><b>Bliss OS</b></b></a>
+          </li>
+          <li class="nav-item mx-2">
+            <a class="nav-link" href="https://www.blissroms.com"><b><b>BlissROMs</b></b></a>
+          </li>
+          <li class="nav-item mx-2">
+            <a class="nav-link" href="https://www.blissroms.com/bfor.html"><b><b>Non Profit</b></b></a>
+          </li>
+        </ul>
+      </div>
+    </div>
+  </nav>
+  <!-- Cover -->
+  <div class="section-fade-out pt-5 text-dark" style="background-image: url(&quot;https://i.imgur.com/W9WLZoD.jpg&quot;); background-position: center bottom;">
+    <div class="container pt-5">
+      <div class="row">
+        <div class="col-md-12 py-5 mx-auto text-center">
+          <h1 class="display-3 mb-4">BlissROMs Stats Site</h1>
+          <h1>Our Bliss Stats app collects a single device identifier when each device boots up for the first time.</h1>
+          <h3>This sites purpose is to allow that data to be publicly viewable. </h3>
+        </div>
+      </div>
+      <div class="row"></div>
+      <div class="row">
+        <div class="col-md-12 d-inline-flex justify-content-center align-items-center mx-auto mt-5 text-dark">
+          <div class="container">
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+  <!-- Article style section -->
+  <!-- Features -->
+  <!-- Features -->
+  <!-- Carousel reviews -->
+  <!-- Call to action -->
+  <div class="py-5 bg-light" id="team">
+    <div class="container">
+      <div class="row">
+        <div class="mx-auto col-md-12 text-center">
+          <div class="row">
+            <div class="col-md-4"></div>
+            <div class="col-md-4">
+              <h3 class="display-3">The Stats</h3>
+            </div>
+            <div class="col-md-4"></div>
+          </div>
+        </div>
+      </div>
+      <div class="container">
+        <div class="row">
+          <div class="col-md-12">
+            <form class="form-inline">
+              <div class="input-group">
+              </div>
+            </form>
+          </div>
+        </div>
+        <div class="row">
+          <div class="col-md-12">
+            <div class="form-group"><input type="text" class="form-control" id="search" placeholder="Search"></div>
+          </div>
+        </div>
+      </div>
+      <div class="container mx-auto" data-pingendo-transient="">
+        <div id="expenses" class="row cover bottom text-center d-inline-flex justify-content-center align-items-center" style="background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0)); background-position: left top; background-size: 100%; background-repeat: repeat;">
+          <section class="counting">
+            <div class="layout">
+              <section id="content3" class="team_content"></section>
+              <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
+              <script>
+                $.ajax({
+                  type: "GET",
+                  url: "https://cors-anywhere.herokuapp.com/https://blissapi.blissroms.com/blissstats/public/devicestats", // TeamBliss JSON
+                  success: function(data) {
+                    var newContent = ''; // Variable to hold HTML
+                    for (var i = 0; i < data.length; i++) { // Loop through object
+                      newContent += '<div class="grid-3">';
+                      newContent += '<span class="count2 text-dark" style="font-size: 4em !important; color: #0080ff;">' + data[i].installations + '</span>';
+                      newContent += '<p class="dev" style="color: #0080ff;">' + data[i].device + '</p>';
+                      newContent += '</div>';
+                    }
+                    // Update the page with the new content
+                    document.getElementById('content3').innerHTML = newContent;
+                  }
+                })
+              </script>
+              <script>
+                $(document).ready(function() {
+                  $('#search').keyup(function() {
+                    // Search text
+                    var text = $(this).val();
+                    // Hide all content class element
+                    $('.grid-3').hide();
+                    // Search 
+                    $('.grid-3 .dev:contains("' + text + '")').closest('.grid-3').show();
+                  });
+                });
+                $.expr[":"].contains = $.expr.createPseudo(function(arg) {
+                  return function(elem) {
+                    return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
+                  };
+                });
+              </script>
+            </div>
+          </section>
+          <!-- End #Contact-->
+        </div>
+      </div>
+    </div>
+  </div>
+  <div class="py-5 bg-light" style="">
+    <div class="container">
+      <div class="row">
+        <div class="col-md-6 text-center mx-auto px-5 pt-4">
+          <h3 class="my-3 highlight_secondary team-header text-white"> </h3><br>
+          <h1 class="my-3 highlight_secondary team-header text-dark">We volunteer our time.</h1>
+          <p class="mb-3">We are a 501(c3) nonprofit, run by people that donate their free time towards the project. We do our best to bring a quality OS to your device, while working a real job on the side in most cases. Please consider showing us we're on the right track by clicking the button below. </p> <a href="https://www.paypal.me/TeamBliss" class="btn btn-primary">Buy Us a Coffee</a>
+        </div>
+        <div class="col-md-6 py-5"><img class="img-fluid d-block d-flex align-items-center justify-content-center flex-grow-1 mx-auto animate-in-right" src="images/coffee-break.svg" width="300"></div>
+      </div>
+    </div>
+  </div>
+  <div class="py-5 bg-dark" id="join">
+    <div class="container">
+      <div class="row">
+        <div class="col-md-8 text-left">
+          <h3 class="text-primary display-3"> <b>Join Team Bliss</b></h3>
+          <h2 class="">We are accepting applications now</h2>
+          <p class="text-warning">* only volunteer positions currently available. Internships coming soon *</p>
+          <p class="mb-3" contenteditable="true">We are accepting people in small managable groups while we grow, and we tend to lean towards the type of people that want to learn and grow with Bliss Family of ROMs. Bliss provides the tools, knowledge and the mentorship needed to help bring your development dreams to reality, and all we ask in return is a minimum contribution towards Bliss ROM while you learn and grow in your strengths. If you're an individual and would like to apply to join our team, please use the button below </p> <a href="https://goo.gl/forms/PdiaAj1PojosmehK2" class="btn btn-primary">Join Our Team</a>
+        </div>
+      </div>
+    </div>
+  </div>
+  <!-- Footer -->
+  <div class="py-3 bg-dark">
+    <div class="container">
+      <div class="row">
+        <div class="col-lg-3 col-6 p-3">
+          <h5> <b>Socials</b></h5>
+          <ul class="list-unstyled text-primary">
+            <li class="text-primary"> <a href="https://t.me/Team_Bliss_Community" class="text-info">BlissROMs Telegram</a> </li>
+            <li> <a href="https://t.me/blissx86" class="text-info">Bliss OS Telegram</a> </li>
+            <li> <a href="https://www.facebook.com/BlissFamilyOfROMs/" class="text-info">Bliss Facebook</a> </li>
+            <li> <a href="https://twitter.com/Bliss_Roms" class="text-info">Bliss Twitter</a> </li>
+          </ul>
+        </div>
+        <div class="col-lg-3 col-6 p-3">
+          <h5> <b>Sources</b></h5>
+          <ul class="list-unstyled">
+            <li> <a href="https://review.blissroms.com" class="text-info">BlissROMs Gerrit Review</a> </li>
+            <li> <a href="https://github.com/BlissRoms" class="text-info">BlissROMs GitHub</a> </li>
+            <li> <a href="https://github.com/BlissRoms-Devices" style="" class="text-info">BlissROMs-Devices GitHub</a> </li>
+            <li> <a href="https://github.com/BlissRoms-Kernels" class="text-info">BlissROMs-Kernels GitHub</a> </li>
+            <li> <a href="https://github.com/BlissRoms-Vendor" class="text-info">BlissROMs-Vendor GitHub</a> </li>
+            <li> <a href="https://github.com/BlissRoms-x86" class="text-info">Bliss OS GitHub</a> </li>
+            <li> <a href="https://github.com/BlissRoms-pine64" class="text-info">BlissROMs-PINE64 GitHub</a> </li>
+          </ul>
+        </div>
+        <div class="col-lg-3 col-6 p-3">
+          <h5>Subreddits</h5>
+          <ul class="list-unstyled">
+            <li> <a href="https://www.reddit.com/r/BlissRoms" class="text-info">BlissROMs</a> </li>
+            <li> <a href="https://www.reddit.com/r/BlissOS" class="text-info">Bliss OS</a> </li>
+            <li> <a href="https://www.reddit.com/r/TeamBliss" class="text-info">TeamBliss</a> </li>
+          </ul>
+        </div>
+        <div class="col-lg-3 col-md-3 p-3">
+          <h5> <b>Follow us</b> </h5>
+          <div class="row">
+            <div class="col-md-12 d-flex align-items-center my-2 justify-content-center"> <a href="https://www.facebook.com/BlissFamilyOfROMs/" class="">
+                <i class="d-block fa fa-facebook-official text-muted mr-2 fa-2x"></i>
+              </a> <a href="https://www.instagram.com/blissroms/">
+                <i class="d-block fa fa-instagram text-muted mx-2 fa-2x"></i>
+              </a><a href="https://github.com/BlissRoms">
+                <i class="d-block fa fa-github text-muted text-muted mx-2 fa-2x"></i>
+              </a> <a href="https://www.reddit.com/r/BlissRoms">
+                <i class="d-block fa fa-reddit text-muted mx-2 fa-2x"></i>
+              </a> <a href="https://twitter.com/Bliss_Roms">
+                <i class="d-block fa fa-twitter text-muted ml-2 fa-2x"></i>
+              </a> </div>
+          </div>
+        </div>
+      </div>
+      <div class="row">
+        <div class="col-md-12 text-center">
+          <p class="mb-0 mt-2">© 2019 Bliss Family of ROMs. All rights reserved</p>
+        </div>
+      </div>
+    </div>
+  </div>
+  <!-- JavaScript dependencies -->
+  <!-- <script src="js/mainani.js" type="text/javascript"></script> -->
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
+  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
+  <!-- Script: Smooth scrolling between anchors in the same page -->
+  <script src="js/smooth-scroll.js"></script>
+  <!-- <script src="https://bfintal.github.io/Counter-Up/jquery.counterup.min.js"></script> -->
+  <script src="js/counter.js"></script>
+</body>
+
+</html>
\ No newline at end of file
