diff --git a/index.html b/index.html
index df3a6b8..d325e59 100644
--- a/index.html
+++ b/index.html
@@ -10,35 +10,28 @@
   <meta name="description" content="Open Source OS for all devices, based on AOSP">
   <meta name="keywords" content="blissroms, bliss, os, x86, aosp, android, rom, teambliss">
   <!-- CSS dependencies -->
-  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
-    integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
+  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
   <script src="https://kit.fontawesome.com/7b4ed0a31a.js" crossorigin="anonymous"></script>
-  <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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" type="text/css">
   <link href="https://fonts.googleapis.com/css?family=VT323" rel="stylesheet" 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>
-
   <link rel="stylesheet" href="css/animations.css">
   <link rel="stylesheet" href="css/style.css">
   <link rel="stylesheet" href="css/table.css">
-  <script data-ad-client="ca-pub-7639560510014441" async=""
-    src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+  <script data-ad-client="ca-pub-7639560510014441" async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
 </head>
 
 <body class="">
   <!-- Navbar -->
   <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark" style="padding-right: 41px;">
     <div class="container pt-6">
-      <a class="navbar-brand" href="#"><img src="images/BlissIcon_Smal_wl.png" width="50"
-          class="d-inline-block align-top" alt=""></a>
+      <a class="navbar-brand" href="#"><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="#"><b><b>BlissRoms</b></b></a></div>
       </div>
-      <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
-        data-target="#navbar2SupportedContent" aria-controls="navbar2SupportedContent" aria-expanded="true"
-        aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button>
+      <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbar2SupportedContent" aria-controls="navbar2SupportedContent" aria-expanded="true" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button>
       <div class="navbar-collapse text-center justify-content-end collapse show" id="navbar2SupportedContent">
         <ul class="navbar-nav">
           <li class="nav-item mx-2">
@@ -62,26 +55,21 @@
     </div>
   </nav>
   <!-- Cover -->
-  <div class="section-fade-out pt-5 pb-5"
-    style="background-image: url(&quot;images/bg.jpeg&quot;); background-position: center bottom;">
+  <div class="section-fade-out pt-5 pb-5" style="background-image: url(&quot;images/bg.jpeg&quot;); background-position: center bottom;">
     <div class="container pt-5">
       <div class="row">
         <div class="col-md-5">
           <div class="col-md-12">
             <h1 class="display-3 mb-4">BlissRoms</h1>
-            <p class="lead">An open-source operating system based on Android with customizations, options and added
-              security features.&nbsp;<br></p>
+            <p class="lead">An open-source operating system based on Android with customizations, options and added security features.&nbsp;<br></p>
             <div class="d-inline-flex justify-content-center align-items-center mx-auto">
-              <a href="#download"
-                class="btn btn-lg btn-primary d-inline-flex justify-content-center align-items-center mx-auto">Download
-                Now</a>
+              <a href="#download" class="btn btn-lg btn-primary d-inline-flex justify-content-center align-items-center mx-auto">Download Now</a>
             </div>
           </div>
         </div>
-        <div class="d-flex justify-content-center align-items-center flex-grow-1" align="center"
-          style="max-height: 100%;max-width: 100%;vertical-align: middle;display: inline-flex;float: none; margin-top: -8%;">
+        <div class="d-flex justify-content-center align-items-center flex-grow-1" align="center" style="max-height: 100%;max-width: 100%;vertical-align: middle;display: inline-flex;float: none; margin-top: -8%;">
           <div class="d-inline-flex justify-content-center align-items-center">
-            <div class="animation d-inline-flex justify-content-center align-items-center" data-animation-step="2">
+            <div class="animation d-inline-flex justify-content-center align-items-center" data-animation-step="3">
               <img class="img-fluid my-auto" src="images/phone-launcher-shot.png" style="" width="50%">
             </div>
           </div>
@@ -104,8 +92,7 @@
           <h4 class="text-primary"><b>Customized settings</b></h4>
           <p class="mb-5 text-white">Choose settings depending on the criteria you value the most. With no limits.</p>
           <h4 class="text-primary"><b>Performance</b></h4>
-          <p class="mb-5 text-white">Focused on speed and stability with tweaks to assist in the most demanding
-            applications</p>
+          <p class="mb-5 text-white">Focused on speed and stability with tweaks to assist in the most demanding applications</p>
         </div>
         <div class="my-3 d-none d-lg-block animate-in-down col-md-4">
           <img class="img-fluid d-block" src="images/Phone_features_dark.png">
@@ -114,11 +101,9 @@
           <h4 class="text-primary"><b>Battery-friendly</b></h4>
           <p class="mb-5 text-white">Extra options are provided to help tune battery consumption to the best levels</p>
           <h4 class="text-primary"><b>Added Security</b></h4>
-          <p class="mb-5 text-white">Additional security options and features are found throughout the OS. And AOSP
-            security updates are merged regularly.</p>
+          <p class="mb-5 text-white">Additional security options and features are found throughout the OS. And AOSP security updates are merged regularly.</p>
           <h4 class="text-primary"><b>Compatibility</b></h4>
-          <p class="mb-5 text-white">We bring Bliss to every device we own. And our PC builds include extras for
-            ARM/ARM64 app compatibility&nbsp;&nbsp;</p>
+          <p class="mb-5 text-white">We bring Bliss to every device we own. And our PC builds include extras for ARM/ARM64 app compatibility&nbsp;&nbsp;</p>
         </div>
       </div>
     </div>
@@ -130,17 +115,10 @@
         <div class="col-md-6 text-left mx-auto flex-center">
           <div>
             <h2 class="my-3 highlight_secondary team-header text-white no-wrap">We volunteer our time.</h2>
-            <p class="mb-3 body-font">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 and making a small
-              contribution towards our efforts.</p> <a
-              href="https://www.paypal.com/donate?hosted_button_id=J5SLZ7MQNCT24" target="_blank"
-              class="btn btn-primary">Buy Us a Coffee</a>
+            <p class="mb-3 body-font">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 and making a small contribution towards our efforts.</p> <a href="https://www.paypal.com/donate?hosted_button_id=J5SLZ7MQNCT24" target="_blank" class="btn btn-primary">Buy Us a Coffee</a>
           </div>
         </div>
-        <div class="col-md-5 py-5 offset-1"><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 class="col-md-5 py-5 offset-1"><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>
@@ -148,13 +126,10 @@
   <div class="download-section bg-light mb-0" id="download">
     <div class="container py-5">
       <div class="row">
-        <div class="col-md-6 order-2 order-md-1"> <img class="img-fluid d-block mx-auto" src="images/phone-launcher-shot.png"
-            style="" width="50%"> </div>
+        <div class="col-md-6 order-2 order-md-1"> <img class="img-fluid d-block mx-auto" src="images/phone-launcher-shot.png" style="" width="50%"> </div>
         <div class="px-md-5 col-md-6 d-flex flex-column align-items-start justify-content-center order-1 order-md-2">
           <h3 class="display-3">Downloads</h3>
-          <img
-            src="https://img.shields.io/sourceforge/dm/blissroms.svg?style=for-the-badge&amp;logo=appveyor&amp;colorB=blue"
-            max-width="160px" width="50%">
+          <img src="https://img.shields.io/sourceforge/dm/blissroms.svg?style=for-the-badge&amp;logo=appveyor&amp;colorB=blue" max-width="160px" width="50%">
           <p class="mb-3">
           </p>
           <div id="demo">
@@ -170,293 +145,273 @@
             <hr width="100%" size="8" align="left">
             <h2>Legacy Downloads</h2>
             <br>
-            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/Q/">Android 10 (Q) device
-              builds</a><br>
-            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/Pie/">Android 9 (Pie) device
-              builds</a><br>
-            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/GSI/">Android 9 (Pie) GSI
-              builds</a>
+            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/Q/">Android 10 (Q) device builds</a><br>
+            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/Pie/">Android 9 (Pie) device builds</a><br>
+            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/GSI/">Android 9 (Pie) GSI builds</a>
             <p></p>
           </div>
         </div>
       </div>
     </div>
-    <!-- Team Section -->
-    <div class="py-5 bg-light" id="team">
-      <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://api.blissroms.org/api/teambliss", // 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" loading="lazy" src="' + data[i].avatar + '" ';
-                        newContent += 'alt="' + data[i].member + '" />';
-                        newContent += '<h3><b>' + data[i].member + '</b></h3>';
-                        newContent += '<p class="team_data_text font-weight-bold">' + data[i].designation + '</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 class="py-5 bg-light" id="team">
+    <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>
-        </div>
-      </div>
-    </div>
-    <!-- Merch Section -->
-    <div class="py-5 bg-primary" id="gear">
-      <div class="container">
-        <div class="row">
-          <div class="col-md-12">
-            <h1><b>A Little Bliss Gear</b></h1>
-            <p class="lead mb-4"><b>Bliss Family of ROMs has put together a Teespring store as a start to bring some
-                stylish merchandise to our users, and help raise money for our cause. Check out a few of our selections
-                below and follow the link to our store for more</b></p>
-          </div>
-        </div>
-        <div class="row d-flex justify-content-between">
-          <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" width="1500" src="images/team-bliss-t-shirt.jpg">
-            <h4 class="my-3"> <b>T-Shirts</b></h4>
-            <p class="body-font"><b>Be the first one on your block to sport Bliss on your back. Various sizes and colors
-                available.</b></p>
-          </div>
-          <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" src="images/team-bliss-hoodie.jpg" width="1500">
-            <h4 class="my-3"> <b>Hoodies</b></h4>
-            <p class="body-font"><b>Keep warm in style. We have hoodies and sweatshirts available. Various sizes and
-                colors options too.</b></p>
-          </div>
-          <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" src="images/team-bliss-tank-top.jpg" width="1500">
-            <h4 class="my-3"> <b>Tank Tops</b></h4>
-            <p class="body-font"><b>It's all about the Bliss when you are wearing one of our tank tops. Various sizes
-                and colors available.</b></p>
-          </div>
-        </div>
-        <div class="row">
-          <div class="col-md-12">
-            <div class="card">
-              <div class="card-body">
-                <h4 class="card-title"><b>Want More?</b></h4>
-                <p class="card-text body-font">We are constantly updating our selection of apparel, adding more cool
-                  designs and options as we go. So make sure you check back for any updates.&nbsp;</p> <a
-                  class="btn btn-primary" href="https://teespring.com/stores/bliss-family-store-2">Visit Our Teespring
-                  Store&nbsp;<i class="fa fa-shopping-cart fa-fw"></i></a>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <!-- BlissLabs Section -->
-    <div class="py-5 text-light cover" style="background-color: #343a40;">
-      <div class="container" style="max-width: 100%;">
-        <div class="row">
-          <div class="col-md-12">
-            <div class="row">
-              <div
-                class="d-flex flex-column justify-content-center p-3 col-md-8 offset-lg-1 align-items-start order-1 order-md-1">
-                <h1 class="mb-3">A BlissLabs Project</h1>
-                <p class="lead">We are part of a larger community of open-source projects called BlissLabs. Explore more
-                  about the other BlissLabs projects below:<br></p>
-                <a class="btn btn-primary" target="_blank" href="https://blisslabs.org">Learn More</a>
-              </div>
-              <div class="col-md-4 col-lg-3 order-2 order-md-2 p-0"> <img
-                  class="img-fluid d-block justify-content-between align-items-center"
-                  src="https://blisslabs.org/assets/images/bliss_labs_logo.svg" style="width: 20vw;"> </div>
-            </div>
-          </div>
-        </div>
-        <div class="row">
-          <div class="col-md-12">
-            <div class="carousel slide" data-ride="carousel" id="carousel">
-              <div class="carousel-inner">
-                <div id="carousel-slider"> </div>
-              </div>
-              <a class="carousel-control-prev" href="#carousel" role="button" data-slide="prev">
-                <span class="carousel-control-prev-icon"></span>
-                <span class="sr-only">Previous</span>
-              </a>
-              <a class="carousel-control-next" href="#carousel" role="button" data-slide="next">
-                <span class="carousel-control-next-icon"></span>
-                <span class="sr-only">Next</span>
-              </a>
-            </div>
-            <!---------------->
-            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
-            <script>
-              $.ajax({
-                type: "GET",
-                url: "https://api.blissroms.org/api/allprojects",
-                contentType: "application/json",
-                datatype: "json",
-                data: {},
-                success: function (data) {
-                  var newContent = ''; // Variable to hold HTML
-                  for (var i = 0; i < data.length; i++) { // Loop through object
-                    if (data[i].project != null) {
-                      if (i == 0) {
-                        newContent += '<div class="carousel-item active" style="padding-block: 10vh;" >';
-                      } else {
-                        newContent += '<div class="carousel-item" >';
-                      }
-                      newContent += '<img class="d-block img-fluid" src="' + data[i].project_avatar + '" style="margin-left: 10%; height: 35vh;"';
-                      newContent += 'alt="' + data[i].project + ' " style="padding-top: 1.5rem;"/>';
-                      newContent += '<div class="carousel-caption" style="background: linear-gradient(#343a40 10%, #343a40 100%)!important; padding-top: 50vw; width: 50vw; margin-left: 30vw; bottom: 0px ">';
-                      // newContent += '<div class="item-details">';
-                      newContent += '<h3 class="zxc" ><b style="font-size: xx-large;">' + data[i].project + '</b></h3>';
-                      newContent += '<h5 class="zxc" >Project Lead: ' + data[i].project_lead + '</h5>';
-                      newContent += '<p class="card__text zxc" style=" margin-right: 1.7rem; margin-left: 1.7rem; ">' + data[i].project_description + '</p>';
-                      if (data[i].project_github != null) {
-                        newContent += '<a href="' + data[i].project_github + '" target="_blank"><i class="fab fa fa-git p-2" style="font-size: 300%;"></i></a>';
-                      }
-                      if (data[i].project_website != null) {
-                        newContent += '<a href="' + data[i].project_website + '" target="_blank"><i class="fab fa p-2 fa-globe" style="font-size: 300%;"></i></a>';
-                      }
-                      // newContent += '</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://api.blissroms.org/api/teambliss", // 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" loading="lazy" src="' + data[i].avatar + '" ';
+                      newContent += 'alt="' + data[i].member + '" />';
+                      newContent += '<h3><b>' + data[i].member + '</b></h3>';
+                      newContent += '<p class="team_data_text font-weight-bold">' + data[i].designation + '</p>';
+                      // newContent += '<p class="team_data_text font-weight-bold"><i>&quot;' + data[i].email + '&quot;</i></p>';
                       newContent += '</div>';
-                      newContent += '</div>';
-                    } else {
-                      newContent = 'NONE';
                     }
+                    // Update the page with the new content
+                    document.getElementById('content').innerHTML = newContent;
                   }
-                  // Update the page with the new content
-                  document.getElementById('carousel-slider').innerHTML = newContent;
-                },
-                error: function (jqXHR, status, err) {
-                  newContent = 'ERROR: NONE';
-                  document.getElementById('carousel-slider').innerHTML = newContent;
-                  alert("Status: " + textStatus);
-                  alert("Error: " + errorThrown);
-                }
-              })
-            </script>
-            <!---------------->
-          </div>
-        </div>
-      </div>
-    </div>
-    <!-- END OF BLISSLABS -->
-    <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">BlissRoms Telegram</a> </li>
-              <li> <a href="https://t.me/blissx86">Bliss OS Telegram</a> </li>
-              <li> <a href="https://www.facebook.com/BlissFamilyOfROMs/">Bliss Facebook</a> </li>
-              <li> <a href="https://twitter.com/Bliss_Roms">Bliss Twitter</a> </li>
-              <li> <a href="https://www.linkedin.com/company/stayblissful">Bliss LinkedIn</a> </li>
-              <li> <a href="https://discord.gg/wwc4Aua4fp">Bliss Discord</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">BlissRoms Gerrit Review</a> </li>
-              <li> <a href="https://review-x86.blissroms.com">Bliss OS (x86) Gerrit Review</a> </li>
-              <li> <a href="https://github.com/BlissRoms">BlissRoms GitHub</a> </li>
-              <li> <a href="https://github.com/BlissRoms-Devices">BlissRoms-Devices GitHub</a> </li>
-              <li> <a href="https://github.com/BlissRoms-x86">Bliss OS GitHub</a> </li>
-              <li> <a href="https://github.com/BlissRoms-pine64">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">BlissRoms</a> </li>
-              <li> <a href="https://www.reddit.com/r/BlissOS">Bliss OS</a> </li>
-              <li> <a href="https://www.reddit.com/r/TeamBliss">Team Bliss</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>
+                })
+              </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 class="row">
-          <div class="col-md-12 text-center">
-            <p class="mb-0 mt-2">© 2021 BlissLabs. All rights reserved</p>
+      </div>
+    </div>
+  </div>
+  <div class="py-5 bg-primary" id="gear">
+    <div class="container">
+      <div class="row">
+        <div class="col-md-12">
+          <h1><b>A Little Bliss Gear</b></h1>
+          <p class="lead mb-4"><b>Bliss Family of ROMs has put together a Teespring store as a start to bring some stylish merchandise to our users, and help raise money for our cause. Check out a few of our selections below and follow the link to our store for more</b></p>
+        </div>
+      </div>
+      <div class="row d-flex justify-content-between">
+        <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" width="1500" src="images/team-bliss-t-shirt.jpg">
+          <h4 class="my-3"> <b>T-Shirts</b></h4>
+          <p class="body-font"><b>Be the first one on your block to sport Bliss on your back. Various sizes and colors available.</b></p>
+        </div>
+        <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" src="images/team-bliss-hoodie.jpg" width="1500">
+          <h4 class="my-3"> <b>Hoodies</b></h4>
+          <p class="body-font"><b>Keep warm in style. We have hoodies and sweatshirts available. Various sizes and colors options too.</b></p>
+        </div>
+        <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" src="images/team-bliss-tank-top.jpg" width="1500">
+          <h4 class="my-3"> <b>Tank Tops</b></h4>
+          <p class="body-font"><b>It's all about the Bliss when you are wearing one of our tank tops. Various sizes and colors available.</b></p>
+        </div>
+      </div>
+      <div class="row">
+        <div class="col-md-12">
+          <div class="card">
+            <div class="card-body">
+              <h4 class="card-title"><b>Want More?</b></h4>
+              <p class="card-text body-font">We are constantly updating our selection of apparel, adding more cool designs and options as we go. So make sure you check back for any updates.&nbsp;</p> <a class="btn btn-primary" href="https://teespring.com/stores/bliss-family-store-2">Visit Our Teespring Store&nbsp;<i class="fa fa-shopping-cart fa-fw"></i></a>
+            </div>
           </div>
         </div>
       </div>
     </div>
+  </div>
+  <div class="py-5 text-light cover" style="background-color: rgb(52, 58, 64);">
+    <div class="container" style="max-width: 100%;">
+      <div class="row">
+        <div class="col-md-12">
+          <div class="row">
+            <div class="d-flex flex-column justify-content-center p-3 col-md-8 offset-lg-1 align-items-start order-1 order-md-1">
+              <h1 class="mb-3">A BlissLabs Project</h1>
+              <p class="lead">We are part of a larger community of open-source projects called BlissLabs. Explore more about the other BlissLabs projects below:<br></p>
+              <a class="btn btn-primary" target="_blank" href="https://blisslabs.org">Learn More</a>
+            </div>
+            <div class="col-md-4 col-lg-3 order-2 order-md-2 p-0"> <img class="img-fluid d-block justify-content-between align-items-center my-4" src="https://blisslabs.org/assets/images/bliss_labs_logo.svg" style="	width: 7.75rem;"> </div>
+          </div>
+        </div>
+      </div>
+      <div class="row">
+        <div class="col-md-12">
+          <div class="carousel slide" data-ride="carousel" id="carousel">
+            <div class="carousel-inner">
+              <div id="carousel-slider"> </div>
+            </div>
+            <a class="carousel-control-prev" href="#carousel" role="button" data-slide="prev">
+              <span class="carousel-control-prev-icon"></span>
+              <span class="sr-only">Previous</span>
+            </a>
+            <a class="carousel-control-next" href="#carousel" role="button" data-slide="next">
+              <span class="carousel-control-next-icon"></span>
+              <span class="sr-only">Next</span>
+            </a>
+          </div>
+          <!---------------->
+          <script>
+            $.ajax({
+              type: "GET",
+              url: "https://api.blissroms.org/api/allprojects",
+              contentType: "application/json",
+              datatype: "json",
+              data: {},
+              success: function(data) {
+                var newContent = ''; // Variable to hold HTML
+                for (var i = 0; i < data.length; i++) { // Loop through object
+                  if (data[i].project != null) {
+                    if (i == 0) {
+                      newContent += '<div class="carousel-item active" style="padding-block: 10vh;" >';
+                    } else {
+                      newContent += '<div class="carousel-item" >';
+                    }
+                    newContent += '<img class="d-block img-fluid" src="' + data[i].project_avatar + '" style="margin-left: 10%; height: 35vh;"';
+                    newContent += 'alt="' + data[i].project + ' " style="padding-top: 1.5rem;"/>';
+                    newContent += '<div class="carousel-caption" style="background: linear-gradient(#343a40 10%, #343a40 100%)!important; padding-top: 50vw; width: 50vw; margin-left: 30vw; bottom: 0px ">';
+                    <!-- newContent += '<div class="item-details">'; -->
+                    newContent += '<h3 class="zxc" ><b style="font-size: xx-large;">' + data[i].project + '</b></h3>';
+                    newContent += '<h5 class="zxc" >Project Lead: ' + data[i].project_lead + '</h5>';
+                    newContent += '<p class="card__text zxc" style=" margin-right: 1.7rem; margin-left: 1.7rem; ">' + data[i].project_description + '</p>';
+                    if (data[i].project_github != null) {
+                      newContent += '<a href="' + data[i].project_github + '" target="_blank"><i class="fab fa fa-git p-2" style="font-size: 300%;"></i></a>';
+                    }
+                    if (data[i].project_website != null) {
+                      newContent += '<a href="' + data[i].project_website + '" target="_blank"><i class="fab fa p-2 fa-globe" style="font-size: 300%;"></i></a>';
+                    }
+                    <!-- newContent += '</div>'; -->
+                    newContent += '</div>';
+                    newContent += '</div>';
+                  } else {
+                    newContent = 'NONE';
+                  }
+                }
+                // Update the page with the new content
+                document.getElementById('carousel-slider').innerHTML = newContent;
+              },
+              error: function(jqXHR, status, err) {
+                newContent = 'ERROR: NONE';
+                document.getElementById('carousel-slider').innerHTML = newContent;
+                alert("Status: " + textStatus);
+                alert("Error: " + errorThrown);
+              }
+            })
+          </script>
+          <!---------------->
+        </div>
+      </div>
+    </div>
+  </div>
+  <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">BlissRoms Telegram</a> </li>
+            <li> <a href="https://t.me/blissx86">Bliss OS Telegram</a> </li>
+            <li> <a href="https://www.facebook.com/BlissFamilyOfROMs/">Bliss Facebook</a> </li>
+            <li> <a href="https://twitter.com/Bliss_Roms">Bliss Twitter</a> </li>
+            <li> <a href="https://www.linkedin.com/company/stayblissful">Bliss LinkedIn</a> </li>
+            <li> <a href="https://discord.gg/wwc4Aua4fp">Bliss Discord</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">BlissRoms Gerrit Review</a> </li>
+            <li> <a href="https://review-x86.blissroms.com">Bliss OS (x86) Gerrit Review</a> </li>
+            <li> <a href="https://github.com/BlissRoms">BlissRoms GitHub</a> </li>
+            <li> <a href="https://github.com/BlissRoms-Devices">BlissRoms-Devices GitHub</a> </li>
+            <li> <a href="https://github.com/BlissRoms-x86">Bliss OS GitHub</a> </li>
+            <li> <a href="https://github.com/BlissRoms-pine64">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">BlissRoms</a> </li>
+            <li> <a href="https://www.reddit.com/r/BlissOS">Bliss OS</a> </li>
+            <li> <a href="https://www.reddit.com/r/TeamBliss">Team Bliss</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">© 2021 BlissLabs. All rights reserved</p>
+        </div>
+      </div>
+    </div>
+  </div>
+  
+  <!-- Team Section -->
+    <!-- Merch Section -->
+    <!-- START OF BLISSLABS -->
+    <!-- END OF BLISSLABS -->
     <!-- Footer -->
     <!-- JavaScript dependencies -->
     <script src="js/mainani.js" type="text/javascript"></script>
     <script src="https://code.jquery.com/jquery-3.3.1.min.js"></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 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="js/conditionize.js"></script>
-  </div>
+  
 </body>
 
 </html>
\ No newline at end of file
