diff --git a/stats.html b/stats.html
deleted file mode 100644
index e34fece..0000000
--- a/stats.html
+++ /dev/null
@@ -1,253 +0,0 @@
-<!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" style="color: #ffffff;"><a class="navbar-brand" href="stats.html" style="color: #ffffff;"><b><b>BlissROMs Stats</b></b></a></div>
-      </div>
-      <div class="row"></div>
-      <button class="navbar-toggler navbar-toggler-right" style="color: #ffffff;" 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" style="color: #ffffff;">
-        <ul class="navbar-nav" style="color: #ffffff;">
-          <li class="nav-item mx-2">
-            <a class="nav-link" href="https://www.blissos.org" style="color: #ffffff;"><b><b>Bliss OS</b></b></a>
-          </li>
-          <li class="nav-item mx-2">
-            <a class="nav-link" href="https://www.blissroms.com" style="color: #ffffff;"><b><b>BlissROMs</b></b></a>
-          </li>
-          <li class="nav-item mx-2">
-            <a class="nav-link" href="https://www.blissroms.com/bfor.html" style="color: #ffffff;"><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" style="color: #ffffff;">
-          <h1 class="display-3 mb-4" style="color: #ffffff;">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-dark section-fade-in" 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 bg-dark text-light" 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_content2"></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-light" 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 manageable 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>
-            <li> <a href="https://www.linkedin.com/company/stayblissful" class="text-info">Bliss LinkedIn</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.linkedin.com/company/stayblissful">
-                <i class="d-block fa fa-linkedin 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>
