diff --git a/css/style.css b/css/style.css
new file mode 100644
index 0000000..8ef9be5
--- /dev/null
+++ b/css/style.css
@@ -0,0 +1,300 @@
+
+@import url("https://fonts.googleapis.com/css?family=Comfortaa:400,700,300|Quattrocento");
+.about-tools ul li, .contact-social-icons ul a li {
+  text-align: center; }
+
+.centered {
+  float: none;
+  margin-left: auto;
+  margin-right: auto; }
+
+.break {
+  clear: both;
+  margin-top: 10px; }
+
+@media (min-width: 768px) {
+  .pull-right-sm {
+    float: right !important; }
+
+  .pull-left-sm {
+    float: left !important; } }
+@media (min-width: 992px) {
+  .pull-right-md {
+    float: right !important; }
+
+  .pull-left-md {
+    float: left !important; } }
+@media (min-width: 1200px) {
+  .pull-right-lg {
+    float: right !important; }
+
+  .pull-left-lg {
+    float: left !important; } }
+* {
+  box-sizing: border-box; }
+
+html {
+  position: relative;
+  height: 100%; }
+
+img {
+  width: 100%; }
+
+body {
+  height: 100%;
+  font-family: "Comfortaa", Helvetica, Arial, sans-serif;
+  background-color: #0080ff;
+  /* Margin bottom by footer height */
+  margin-bottom: 60px; }
+
+h1,
+h2,
+h3,
+h4,
+h5 {
+  font-family: "Comfortaa", Helvetica, Arial, sans-serif;
+  color: #07374a; }
+
+p {
+  font-family: "Comfortaa", sans-serif;
+  color: #ffffff; }
+
+body > .container-fluid {
+  padding: 60px 15px 0; }
+
+.container-fluid .text-muted {
+  margin: 20px 0; }
+
+.btn:focus, a:focus {
+  outline: none !important; }
+
+.navbar {
+  height: 70px;
+  background-color: transparent;
+  background: transparent;
+  border: none;
+  color: #ffffff;
+  z-index: 100;
+  margin-bottom: 0;
+  border-radius: 0;
+  -webkit-transition: background-color 1s ease 0s;
+  transition: background-color 1s ease 0s; }
+
+.navbar-brand {
+  display: none;
+  margin-top: 10px;
+  color: #ffffff;
+  font-weight: 400; }
+
+.navbar-default .navbar-nav > li > a {
+  color: #ffffff;
+  font-weight: 500;
+  font-size: 1em;
+  text-transform: lowercase;
+  margin: 10px 5px 5px 5px;
+  border-radius: 5px; }
+.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:active, .navbar-default .navbar-nav > li > a:focus {
+  color: #ffffff;
+  border: 1px solid #ffffff; }
+.navbar-default .navbar-nav > li > a:visited {
+  color: #ffffff;
+  text-decoration: none; }
+.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
+  background-color: transparent;
+  color: #ffffff; }
+.navbar-default .navbar-toggle {
+  border-color: #ffffff; }
+  .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
+    background-color: #07374a; }
+  .navbar-default .navbar-toggle .icon-bar {
+    color: #ffffff;
+    background-color: #ffffff; }
+.navbar-default .navbar-collapse.collapse.in ul {
+  background-color: #07374a; }
+
+/* Solid class attached on scroll past first section */
+.navbar.solid {
+  background-color: #07374a;
+  -webkit-transition: background-color 1s ease 0s;
+  transition: background-color 1s ease 0s;
+  box-shadow: 0 0 4px rgba(7, 55, 74, 0.2); }
+  .navbar.solid .navbar-brand {
+    display: inline-block;
+    color: #ffffff;
+    -webkit-transition: color 1s ease 0s;
+    transition: color 1s ease 0s; }
+  .navbar.solid .navbar-nav > li > a {
+    color: #ffffff;
+    -webkit-transition: color 1s ease 0s;
+    transition: color 1s ease 0s; }
+
+.cover {
+  padding: 10% 0 10% 0; }
+  .cover.top {
+    padding: 5% 0 10% 0;
+    height: 100vh;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    background-color: #0080ff; }
+  .cover.bottom {
+    padding: 10% 0 10% 0; }
+
+.headline {
+  padding-top: 6.25em; }
+  @media screen and (min-width: 768px) {
+    .headline {
+      padding-top: 3.75em; } }
+  @media screen and (min-width: 992px) {
+    .headline {
+      padding-top: 1.5625em; } }
+  @media screen and (min-width: 1200px) {
+    .headline {
+      padding-top: 0px; } }
+
+#about {
+  background-color: #07374a; }
+  #about h2 {
+    color: #0080ff; }
+
+.profile-img {
+  margin-bottom: 15px;
+  width: 120px; }
+
+.about, .about-info, .about-tools, .about-last {
+  padding: 4% 10% 1% 10%;
+  font-size: 1.25em; }
+  .about-tools {
+    padding-top: 4.375em;
+    font-weight: 700;
+    font-size: 1.25em; }
+    @media screen and (min-width: 992px) {
+      .about-tools {
+        padding-top: 5.625em; } }
+    .about-tools ul:first-child {
+      padding-left: 0px; }
+    .about-tools ul {
+      color: #0080ff;
+      list-style: none; }
+      .about-tools ul li {
+        padding-top: 0.75em; }
+  .about-last {
+    padding-top: 3.125em;
+    padding-bottom: 0;
+    font-size: 1.125em; }
+    @media screen and (min-width: 992px) {
+      .about-last {
+        padding-top: 0; } }
+    .about-last p {
+      color: #0080ff; }
+
+#portfolio {
+  background-color: #0080ff; }
+  #portfolio h2 {
+    padding-bottom: 1.25em; }
+
+@media screen and (min-width: 768px) {
+  .portfolio-projects {
+    margin-top: 0.625em; } }
+.portfolio-projects--title {
+  margin-top: 0.9375em; }
+  @media screen and (min-width: 768px) {
+    .portfolio-projects--title {
+      margin-top: 20%; } }
+  @media screen and (min-width: 1200px) {
+    .portfolio-projects--title {
+      margin-top: 5%; } }
+@media screen and (min-width: 768px) {
+  .portfolio-projects--desc {
+    margin-top: 10%;
+    margin-bottom: 10%; } }
+.portfolio-projects--btn {
+  background: transparent;
+  color: #07374a;
+  border: 1px solid #07374a;
+  border-radius: 5px;
+  margin-bottom: 1.25em; }
+  .portfolio-projects--btn:hover {
+    background: #07374a;
+    color: #ffffff; }
+.portfolio-projects--image {
+  margin-bottom: 1.875em;
+  padding-top: 5%; }
+
+#contact {
+  background-color: #07374a; }
+  #contact h2 {
+    color: #0080ff; }
+
+.contact-social-icons p {
+  color: #0080ff; }
+.contact-social-icons ul a {
+  color: #0080ff;
+  list-style: none; }
+  .contact-social-icons ul a:hover {
+    color: #ffffff; }
+  .contact-social-icons ul a li {
+    display: inline-block;
+    padding: 2%; }
+
+.footer {
+  bottom: 0;
+  width: 100%;
+  /* Set the fixed height of the footer here */
+  height: 30px;
+  background-color: #07374a;
+  color: #ffffff; }
+
+#scrollIcon, #scrollTopIcon {
+  margin-top: 200px;
+  padding: 10px;
+  font-size: 1.5em;
+  color: #07374a;
+  border: solid 2px #07374a;
+  border-radius: 50%; }
+
+#scrollTopIcon {
+  margin-top: 10px;
+  font-size: 1em;
+  color: #ffffff;
+  border-color: #ffffff; }
+
+.back-to-top {
+  display: none; }
+  .back-to-top.visible {
+    display: block; }
+
+/* our team section */
+#team {
+	background-color: #0080ff;
+	font-weight: 700;
+    font-size: 1.5em;	
+}
+.hr.invisible_hr {
+    height: 0;
+    padding: 0;
+}
+.hr.big_size_hr {
+    margin: 30px 0;
+}
+.hr {
+    clear: both;
+    display: block;
+    font-size: 0;
+    height: 24px;
+    margin: 20px 0;
+    overflow: hidden;
+    padding: 2px 0;
+    position: relative;
+    text-align: center;
+    width: 100%;
+}
+.highlight_secondary {
+    color: #FFFFFF;
+}
+.team-role {
+    color: #07374a;
+}
+.team-links {
+	padding-top: .75em;
+}
\ No newline at end of file
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000..37eb7a1
--- /dev/null
+++ b/favicon.ico
Binary files differ
diff --git a/images/bliss_icon_small.png b/images/bliss_icon_small.png
new file mode 100644
index 0000000..6241439
--- /dev/null
+++ b/images/bliss_icon_small.png
Binary files differ
diff --git a/images/bliss_lineup.png b/images/bliss_lineup.png
new file mode 100644
index 0000000..3d1e62d
--- /dev/null
+++ b/images/bliss_lineup.png
Binary files differ
diff --git a/images/bliss_nexus.png b/images/bliss_nexus.png
new file mode 100644
index 0000000..07d4053
--- /dev/null
+++ b/images/bliss_nexus.png
Binary files differ
diff --git a/images/bliss_opt_logo.png b/images/bliss_opt_logo.png
new file mode 100644
index 0000000..6980e28
--- /dev/null
+++ b/images/bliss_opt_logo.png
Binary files differ
diff --git a/images/bliss_surface.png b/images/bliss_surface.png
new file mode 100644
index 0000000..78ca5a0
--- /dev/null
+++ b/images/bliss_surface.png
Binary files differ
diff --git a/images/lotus_button.svg b/images/lotus_button.svg
new file mode 100644
index 0000000..b4d1936
--- /dev/null
+++ b/images/lotus_button.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 360 360" style="enable-background:new 0 0 360 360;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#010101;}
+</style>
+<g>
+	<path class="st0" d="M185.3,263.9c2.3-3.3,4.5-6.3,6.6-9.3c12.1-16.5,25.2-32,40.2-45.9c12.9-11.9,26.8-22.2,42.6-30
+		c12.8-6.4,26.3-10.5,40.5-12.6c1.9-0.3,3.8-0.6,5.7-0.9c0.1,0.1,0.1,0.2,0.1,0.2c-3.8,8-7.6,16-11.5,24
+		c-7.6,15.6-16.7,30.2-27.9,43.5c-3.5,4.2-7.9,7.3-12.5,10.2c-10,6.2-21,10.2-32.3,13.2c-13.9,3.7-28.1,5.9-42.5,7.1
+		c-2.6,0.2-5.2,0.4-7.8,0.5C186.3,263.9,186,263.9,185.3,263.9z"/>
+	<path class="st0" d="M176.2,263.9c-2.7-0.2-5.1-0.3-7.5-0.5c-14.2-1.1-28.2-3.1-42-6.7c-11.1-2.8-21.9-6.6-31.9-12.3
+		c-8.1-4.6-14.7-10.8-20.3-18.3c-10.9-14.6-19.8-30.4-27.3-46.9c-2.1-4.7-4.4-9.3-6.6-14c0.2,0,0.4,0,0.6,0
+		c27.7,3.3,52,14.3,73.9,31.3c16.2,12.7,30.4,27.4,43.2,43.4c6,7.5,11.5,15.3,17.2,23C175.7,263.2,175.9,263.4,176.2,263.9z"/>
+	<path class="st0" d="M178.9,260.9c-0.5-0.4-0.9-0.6-1.2-1c-5.7-7.6-11.3-15.2-17.1-22.7c-2.7-3.5-5.6-6.8-8.6-10.1
+		c-5.2-5.6-10.4-11.2-15.7-16.6c-3-3-6.3-5.8-9.4-8.7c-0.4-0.4-0.7-0.9-0.9-1.5c-4.5-16.1-5.8-32.5-5.3-49.1
+		c0.4-10.4,1.4-20.6,3.4-30.8c0.1-0.4,0.2-0.8,0.3-1.4c0.4,0.3,0.8,0.5,1.1,0.8c7.7,6.5,14.3,14.2,20.1,22.4
+		c13.9,19.5,22.8,41.2,28,64.6c3.9,17.4,5.5,35.1,5.3,53c0,0.2,0,0.4,0,0.6C179.1,260.5,179.1,260.5,178.9,260.9z"/>
+	<path class="st0" d="M182.5,261c-0.1-0.7-0.1-0.9-0.1-1.1c-0.2-21.1,2-42,7.6-62.4c5.9-21.4,15-41.2,28.4-58.9
+		c5.2-6.9,11-13.4,17.7-18.9c0.2-0.2,0.4-0.3,0.6-0.4c0,0,0.1,0,0.3,0c0.1,0.3,0.2,0.7,0.2,1c3.1,16,4.2,32.2,3.3,48.4
+		c-0.6,10.6-2.1,21.1-5,31.4c-0.2,0.9-0.9,1.7-1.5,2.4c-1.5,1.5-3.1,2.7-4.6,4.2c-3.4,3.3-6.9,6.6-10.2,10
+		c-4.8,5.1-9.6,10.3-14.1,15.7c-6.5,7.9-12.6,16.1-18.9,24.1c-0.8,1.1-1.6,2.3-2.4,3.4C183.6,260.2,183.1,260.5,182.5,261z"/>
+	<path class="st0" d="M181.4,91.8c3.8,4.2,6.8,8.7,9.4,13.6c6.8,12.5,10.8,26,12.8,40.1c0.3,2.3,0.6,4.7,0.8,7.1
+		c0,0.4-0.1,0.9-0.2,1.2c-3.5,6.3-6.8,12.7-9.4,19.4c-2,5.1-4,10.3-5.7,15.5c-2.6,7.9-4.6,16-6,24.2c-0.8,4.7-1.4,9.4-2.1,14.1
+		c0,0-0.1,0.1-0.2,0.2c-0.3-2-0.5-3.9-0.8-5.8c-0.9-5-1.7-10-2.7-14.9c-1.6-8-3.8-15.8-6.6-23.4c-2.2-5.9-4.7-11.6-7.1-17.4
+		c-0.9-2.1-2-4.1-3-6.1c-0.1-0.3-0.2-0.7-0.2-1c1-17.1,4.3-33.7,11.2-49.5c2.5-5.8,5.5-11.3,9.2-16.4
+		C181,92.3,181.2,92.1,181.4,91.8z"/>
+	<path class="st0" d="M121.5,197.1c-2.6-2-5.1-4-7.6-5.8c-6.3-4.7-12.8-9-19.6-12.7c-2.6-1.4-5.3-2.7-7.9-4.1
+		c-0.4-0.2-0.9-0.7-1.1-1.1c-6.1-12.9-10.2-26.3-11.3-40.5c-0.2-2.5,0-5,0-7.7c0.4,0.1,0.9,0.2,1.3,0.4c7.2,2.8,13.7,6.9,19.9,11.4
+		c7.9,5.8,15.1,12.5,21.8,19.7c0.4,0.4,0.6,1.1,0.6,1.6c0.1,2.1-0.1,4.1,0.1,6.2c0.3,5.1,0.5,10.2,1.1,15.2c0.7,5.5,1.8,11,2.8,16.5
+		C121.5,196.5,121.5,196.8,121.5,197.1z"/>
+	<path class="st0" d="M287.6,125.2c0,0.5,0.1,0.9,0.1,1.3c0.1,10.9-2,21.4-5.5,31.6c-1.8,5.2-4,10.1-6,15.2
+		c-0.2,0.6-0.9,1.2-1.5,1.5c-8.4,4-16.3,8.8-23.8,14.2c-3.6,2.6-7.2,5.4-10.9,8.2c0.3-1.4,0.6-2.7,0.8-4c0.7-4.4,1.5-8.8,2.1-13.2
+		c0.5-3.8,0.7-7.5,0.9-11.3c0.2-3.5,0.1-7,0.2-10.5c0-0.4,0.1-0.9,0.4-1.2c9.1-9.8,19-18.7,30.6-25.5c3.8-2.2,7.9-3.9,11.8-5.9
+		C287,125.3,287.2,125.3,287.6,125.2z"/>
+</g>
+<path class="st0" d="M180.9,332.2c-82.8,0-150-67.2-150-150s67.2-150,150-150s150,67.2,150,150S263.8,332.2,180.9,332.2z
+	 M342.1,181.3c0-89.5-72.6-162.1-162.1-162.1S17.9,91.8,17.9,181.3S90.5,343.4,180,343.4S342.1,270.8,342.1,181.3z"/>
+</svg>
diff --git a/index.html b/index.html
index 4802092..2e962ec 100644
--- a/index.html
+++ b/index.html
@@ -1,30 +1,586 @@
-<!DOCTYPE html>
 <html>
 
-  <head>
-    <meta charset='utf-8' />
-    <meta http-equiv="X-UA-Compatible" content="chrome=1" />
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <meta name="description" content="BlissRoms - Command Line Website" />
-    <link rel="stylesheet" type="text/css" media="screen" href="style.css">     
-    <title>BlissRoms.github.io - Command Line Website</title>
-  </head>
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <meta name="description" content="BlissRoms - new site">
+  <meta name="theme-color" content="#0080ff">
+  <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+  <link rel="icon" sizes="192x192" href="images/bliss_icon_small.png">
+  <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
+  <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
+  <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
+  <link rel="stylesheet" type="text/css" href="css/style.css">
+  <title>Bliss OS</title>
+</head>
 
-  <body>
-
-    <!-- HEADER -->
-
-    <div class="stream"></div>
-   <div class="line editline">
-      <p class="time"></p>
-      <p class="name">&gt;</p>
-      <p contenteditable="true" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="information edit"></p>
-   </div>
-
-  </body>
+<body>
+  <!-- Fixed navbar -->
+  <nav class="navbar navbar-default navbar-fixed-top">
+    <div class="container">
+      <div class="navbar-header">
+        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
+        <a class="navbar-brand" href="#">Bliss OS</a>
+      </div>
+      <div id="navbar" class="collapse navbar-collapse">
+        <ul class="nav navbar-nav navbar-right">
+          <li id="nav-about">
+            <a href="#about">About Bliss</a>
+          </li>
+          <li id="nav-portfolio">
+            <a href="#portfolio">Downloads</a>
+          </li>
+          <li id="nav-contact">
+            <a href="#contact">Find Us Online</a>
+          </li>
+          <li id="nav-team">
+            <a href="#team">Our Team</a>
+          </li>
+        </ul>
+      </div>
+      <!--/.nav-collapse -->
+    </div>
+  </nav>
+  <!-- Begin page content -->
+  <div class="container-fluid">
+    <div class="row cover top">
+      <div class="col-xs-12">
+        <div class="row">
+          <div class="col-xs-12 headline">
+            <img class="centered text-center" src="https://i.imgur.com/nzsZTTY.png">
+            <h1 class="text-center">This is Bliss OS</h1>
+            <p class="lead text-center">A Open-Source OS, based on Android, for phones, tablets &amp; PC's</p>
+          </div>
+        </div>
+        <div class="row">
+          <div class="col-xs-12 center-block text-center">
+            <a href="#about"><span id="scrollIcon" class="front-glyph glyphicon glyphicon-menu-down" aria-hidden="true"></span></a>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div id="about" class="row cover">
+      <h2 class="text-center">About Bliss</h2>
+      <div class="row">
+        <div class="col-md-6 text-center about-info">
+          <img class="img-circle text-center profile-img" src="images/bliss_opt_logo.png">
+          <p class="text-center">We are a team of designers, developers, maintainers, and business professionals who work together to help achieve the dreams of our teammates and the Android Community. Our goal is to help provide a unique learning environment, using the FOSS
+            mentality, and not only train people how to make and monetize what they aspire, but also help provide unique business opportunities for already existing projects too. </p>
+          <p class="text-center">If you are interested in joining our team, please fill out the form found here:
+            <a href="https://goo.gl/forms/PdiaAj1PojosmehK2"></a>
+          </p>
+          <li>
+            <a href="https://goo.gl/forms/PdiaAj1PojosmehK2">Join Team Bliss</a>
+          </li>
+          <p></p>
+          <p class="text-center">Or if you represent an already existing project and would like to join the Bliss Family, please fill out the form found here:
+            <a href="https://goo.gl/kAb7ti"></a>
+          </p>
+          <li>
+            <a href="https://goo.gl/kAb7ti">Join Bliss Family</a>
+          </li>
+          <p></p>
+        </div>
+        <div class="col-md-6 about-tools">
+          <p class="text-center">The nature of our business is to train and develop. So we have quite the diverse list of things we have experience with, and the list is growing constantly
+            <br>
+            <br>Here's a few of the types of projects we work on</p>
+          <div class="col-xs-6">
+            <ul>
+              <li>Android Development</li>
+              <li>Graphic Design</li>
+              <li>Web Development</li>
+              <li>IOT Software Development</li>
+              <li>Server Admin</li>
+              <li>Prototype Design</li>
+              <li>Animation</li>
+              <li>Brand Imaging</li>
+            </ul>
+          </div>
+          <div class="col-xs-6">
+            <ul>
+              <li>Development Training</li>
+              <li>Design Training</li>
+              <li>Team Management</li>
+              <li>Marketing</li>
+              <li>Product Technology Strategy</li>
+              <li>New Product Development</li>
+              <li>Product Testing</li>
+              <li>OEM Software Resources</li>
+            </ul>
+          </div>
+        </div>
+        <div class="row break">
+          <div class="centered col-md-6 about-last">
+            <p class="text-center">Head To The Downloads <span class="glyphicon glyphicon-arrow-down"></span></p>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- End #About -->
+    <div id="portfolio" class="row cover">
+      <h2 class="text-center">Downloads</h2>
+      <div class="container">
+        <div class="row portfolio-projects">
+          <!-- Two project row-->
+          <div class="col-lg-6">
+            <!--1st side project -->
+            <div class="row">
+              <div class="col-sm-5 text-center">
+                <h4 class="portfolio-projects--title">Bliss OS - For Phones and Tablets</h4>
+                <p class="portfolio-projects--desc">This is the Bliss you have all come to know and love for your phones and tablets.</p>
+                <p class="portfolio-projects--desc">Devices: axon7, bacon, bullhead, clark, hammerhead, hydrogen, kenzo, kiwi, mako, marlin, oneplus2, shamu, victara, warp4</p>
+                <a class="btn btn-rounded portfolio-projects--btn" href="https://downloads.blissroms.com/Bliss/Official/" role="button">Go To Downloads</a>
+              </div>
+              <div class="col-sm-7 text-center">
+                <img class="portfolio-projects--image" src="images/bliss_nexus.png"> </div>
+            </div>
+          </div>
+          <div class="col-lg-6">
+            <!--2nd side project -->
+            <div class="row">
+              <div class="col-sm-5 text-center pull-right-sm">
+                <!--flipped on small, unflipped on large-->
+                <h4 class="portfolio-projects--title">Bliss x86 - For PC's and Laptops</h4>
+                <p class="portfolio-projects--desc">This is a newer spin on Bliss for your x86 PC's, Laptops, Tablets and x86 maker boards.</p>
+                <p class="portfolio-projects--desc">Devices: Compatible with the growing number of Intel x86 CPU's This includes some AMD and Nvidia CPU's (MBR and UEFI Compatible)</p>
+                <a class="btn btn-rounded portfolio-projects--btn" href="https://downloads.blissroms.com/Bliss/Official/x86/"
+                  role="button">Go To Downloads</a>
+              </div>
+              <div class="col-sm-7 text-center pull-right-sm">
+                <!--flipped on small, unflipped on large-->
+                <img class="img-rounded portfolio-projects--image" src="images/bliss_surface.png"> </div>
+            </div>
+          </div>
+        </div>
+        <!--end Two project row-->
+      </div>
+    </div>
+  </div>
+  <!-- End #Portfolio -->
+  <div id="contact" class="row cover bottom">
+    <h2 class="text-center contact-header">Find Us Online</h2>
+    <p class="text-center contact-email">Get in touch with us <span class="glyphicon glyphicon-arrow-right"></span> blissfamilyroms@gmail.com</p>
+    <div class="text-center contact-social-icons">
+      <h2 style="font-size: 1.45em !important;">Our Socials:</h2>
+      <ul class="centered">
+        <a href="https://t.me/OfficialBlissROMs">
+          <li><i class="fa fa-paper-plane"></i> Bliss ROMs Telegram</li>
+        </a>
+        <a href="https://t.me/blissx86">
+          <li><i class="fa fa-paper-plane"></i> Bliss x86 Telegram</li>
+        </a>
+        <a href="https://www.facebook.com/BlissRoms/">
+          <li><i class="fa fa-facebook"></i> Bliss ROMs Facebook</li>
+        </a>
+        <a href="https://plus.google.com/communities/118265887490106132524">
+          <li><i class="fa fa-google-plus"></i> Bliss ROMs G+</li>
+        </a>
+        <a href="https://twitter.com/Bliss_Roms">
+          <li><i class="fa fa-twitter"></i> Bliss Twitter</li>
+        </a>
+      </ul>
+      <p></p>
+    </div>
+    <!-- End #Contact -->
+    <div class="text-center contact-social-icons">
+      <h2 style="font-size: 1.45em !important;">Our Source:</h2>
+      <ul class="centered">
+        <a href="https://github.com/BlissRoms">
+          <li><i class="fa fa-github"></i> Bliss OS Github</li>
+        </a>
+        <a href="https://github.com/BlissRoms-x86">
+          <li><i class="fa fa-github"></i> Bliss x86 Github</li>
+        </a>
+        <a href="https://github.com/BlissRoms-Devices">
+          <li><i class="fa fa-github"></i> Bliss Devices Github</li>
+        </a>
+        <a href="https://review.blissroms.com">
+          <li><i class="fa fa-github"></i> Bliss OS Gerrit</li>
+        </a>
+        <a href="https://review-x86.blissroms.com">
+          <li><i class="fa fa-github"></i> Bliss x86 Gerrit</li>
+        </a>
+      </ul>
+      <p></p>
+    </div>
+    <!-- End #Contact -->
+  </div>
+  <!-- break -->
   
-     <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
-     <script src="//codepen.io/OfficialAntarctica/pen/dcdf9b1e328493afd4bd982ed98266d3.js"></script>
-     <script src="script.js"></script>
+  <div class="row cover bottom">
+    <div id="team" class="text-center section">
+      <div class="container">
+        <h2><span class="highlight_secondary">Our Team</span></h2>
+        <p> It takes alot of talent to make a team run this smoothly.
+          <br>Here are the people that help make it Bliss </p>
+        <div class="hr big_size_hr invisible_hr"> <i class="fa fa-"></i> </div>
+        <div class="row">
+		  <div class="col-md-2 col-sm-4 col-xs-6">
+			<div class="team">
+			  <div class="team-image">
+				<img src="https://lh3.googleusercontent.com/w7i8JBSfddUp88DpBjjdT_PBODfKTiFV8TKHqyZnsU3m0-ppYXsuafqDtBxakFYW3mjIahKkFYBepZIGRQ=w1920-h1080-no" class="img-circle img-responsive">
+				<div class="team-links">
+				  <div class="team-links-list">
+					<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+				  </div>
+				  <!-- /.team-links-list -->
+				</div>
+				<!-- /.team-links -->
+			  </div>
+			  <!-- /.team-image -->
+			  <div class="team-content">
+				<div class="team-name">JackEagle</div>
+				<div class="team-role">
+				  <h4>CEO / Founder</h4>
+				</div>
+				<div class="team-description"></div>
+			  </div>
+			  <!-- /.team-content -->
+			</div>
+			<!-- /.team -->
+		  </div>
+		  <div class="col-md-2 col-sm-4 col-xs-6">
+			<div class="team">
+			  <div class="team-image">
+				<img src="https://lh3.googleusercontent.com/hcV4Tp81H4TJskQhpKckcDBqwnETos_ZOxXsQbiZGOT5OxMC-3pOD5i22j1tPiaubWW74tmnwB0ixvGwELQ=w1920-h1080-no" class="img-circle img-responsive">
+				<div class="team-links">
+				  <div class="team-links-list">
+					<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+				  </div>
+				  <!-- /.team-links-list -->
+				</div>
+				<!-- /.team-links -->
+			  </div>
+			  <!-- /.team-image -->
+			  <div class="team-content">
+				<div class="team-name">Jon West</div>
+				<div class="team-role">
+				  <h4>CTO / Incorporator</h4>
+				</div>
+				<div class="team-description"></div>
+			  </div>
+			  <!-- /.team-content -->
+			</div>
+			<!-- /.team -->
+		  </div>
+		  <div class="col-md-2 col-sm-4 col-xs-6">
+			<div class="team">
+			  <div class="team-image">
+				<img src="https://lh3.googleusercontent.com/xhKBfn9HcjWayS9gQizUuh7JATtI4i-OvVv9Q6XPy5v5IyiI44lqRoxtMIyI3rlLc7OCyparEB9OqGT_Vg=w1920-h1080-no" class="img-circle img-responsive">
+				<div class="team-links">
+				  <div class="team-links-list">
+					<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+				  </div>
+				  <!-- /.team-links-list -->
+				</div>
+				<!-- /.team-links -->
+			  </div>
+			  <!-- /.team-image -->
+			  <div class="team-content">
+				<div class="team-name">Vaughn Newman</div>
+				<div class="team-role">
+				  <h4>Admin / Board Member</h4>
+				</div>
+				<div class="team-description"></div>
+			  </div>
+			  <!-- /.team-content -->
+			</div>
+			<!-- /.team -->
+		  </div>
+		  <div class="col-md-2 col-sm-4 col-xs-6">
+			<div class="team">
+			  <div class="team-image">
+				<img src="https://lh3.googleusercontent.com/JOdHk7TYY-SLjAANLuK7t68Oz6w4fDFody-Uwj3rtH6oSZkljniUceYFQ52rbJXeBv4kDgoGhrtamLJlwZc=w1920-h1080-no" class="img-circle img-responsive">
+				<div class="team-links">
+				  <div class="team-links-list">
+					<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+				  </div>
+				  <!-- /.team-links-list -->
+				</div>
+				<!-- /.team-links -->
+			  </div>
+			  <!-- /.team-image -->
+			  <div class="team-content">
+				<div class="team-name">Antonio Luciano</div>
+				<div class="team-role">
+				  <h4>Project Manager / Board Member</h4>
+				</div>
+				<div class="team-description"></div>
+			  </div>
+			  <!-- /.team-content -->
+			</div>
+			<!-- /.team -->
+			</div>
+			
+		<div class="col-md-2 col-sm-4 col-xs-6">
+			<div class="team">
+			  <div class="team-image">
+				<img src="https://lh3.googleusercontent.com/LZrBsYT1S4qQI92uCuWx34QSGDcKpwY1G2h3LXT3tEvMPuSA8d6tiY7CsLYvBCznXk4sJhgr6UFk8pg1oA=w1920-h1080-no" class="img-circle img-responsive">
+				<div class="team-links">
+				  <div class="team-links-list">
+					<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+				  </div>
+				  <!-- /.team-links-list -->
+				</div>
+				<!-- /.team-links -->
+			  </div>
+			  <!-- /.team-image -->
+			  <div class="team-content">
+				<div class="team-name">BitOBsession</div>
+				<div class="team-role">
+				  <h4>Board Member / Developer</h4>
+				</div>
+				<div class="team-description"></div>
+			  </div>
+			  <!-- /.team-content -->
+			</div>
+			<!-- /.team -->
+		</div>
+		
+		<div class="col-md-2 col-sm-4 col-xs-6">
+			<div class="team">
+			  <div class="team-image">
+				<img src="https://lh3.googleusercontent.com/9HpKaGSOQnmm649RlvoUvJVNgoTEhX1w8X9l48wzBacggsottSVVIEX76RP2tRI2CZYu799RdAmhD1fwbQ=w1920-h1080-no" class="img-circle img-responsive">
+				<div class="team-links">
+				  <div class="team-links-list">
+					<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+					<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+				  </div>
+				  <!-- /.team-links-list -->
+				</div>
+				<!-- /.team-links -->
+			  </div>
+			  <!-- /.team-image -->
+			  <div class="team-content">
+				<div class="team-name">Blake Leeper</div>
+				<div class="team-role">
+				  <h4>Board Member / Developer</h4>
+				</div>
+				<div class="team-description"></div>
+			  </div>
+			  <!-- /.team-content -->
+			</div>
+			<!-- /.team -->
+		</div>
+		
+		<!-- End LINE -->
+						
+        <div class="hr invisible_hr"> <i class="fa fa-"></i> </div>
+			<div class="row">
+			
+				<div class="col-md-2 col-sm-4 col-xs-6">
+					<div class="team">
+					  <div class="team-image">
+						<img src="https://lh3.googleusercontent.com/eRqBEkS4_cWFEkLce4sVRmyCkAwgsGZwIg1kE12_gjBaghKQ8Omc6V2UJT6q6LwZS8l-LkutUrskyeLFrd0=w1920-h1080-no" class="img-circle img-responsive">
+						<div class="team-links">
+						  <div class="team-links-list">
+							<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+							<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+							<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+							<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+						  </div>
+						  <!-- /.team-links-list -->
+						</div>
+						<!-- /.team-links -->
+					  </div>
+					  <!-- /.team-image -->
+					  <div class="team-content">
+						<div class="team-name">Evan Galvin</div>
+						<div class="team-role">
+						  <h4>Board Member / Product Technology Strategist</h4>
+						</div>
+						<div class="team-description"></div>
+					  </div>
+					  <!-- /.team-content -->
+					</div>
+					<!-- /.team -->
+				</div>
+				
+			  <div class="col-md-2 col-sm-4 col-xs-6">
+				<!-- add col-md-offset-1 for 5 members -->
+				
+				<div class="team">
+				  <div class="team-image">
+					<img src="https://lh3.googleusercontent.com/-zdwriNcIk1c/AAAAAAAAAAI/AAAAAAAAExQ/XBgOqSUsfsY/s750-p-rw-no/photo.jpg" class="img-circle img-responsive">
+					<div class="team-links">
+					  <div class="team-links-list">
+						<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+					  </div>
+					  <!-- /.team-links-list -->
+					</div>
+					<!-- /.team-links -->
+				  </div>
+				  <!-- /.team-image -->
+				  <div class="team-content">
+					<div class="team-name">Eric Park (ideaman924)</div>
+					<div class="team-role">
+					  <h4>Developer</h4>
+					</div>
+					<div class="team-description"></div>
+				  </div>
+				  <!-- /.team-content -->
+				</div>
+				<!-- /.team -->
+				
+			  </div>
+			  
+			  
+			  <div class="col-md-2 col-sm-4 col-xs-6">
+				
+				<div class="team">
+				  <div class="team-image">
+					<img src="https://lh3.googleusercontent.com/-vQGXN3Rstjo/AAAAAAAAAAI/AAAAAAAAEao/o2tOywhBHzs/s750-p-rw-no/photo.jpg" class="img-circle img-responsive">
+					<div class="team-links">
+					  <div class="team-links-list">
+						<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+					  </div>
+					  <!-- /.team-links-list -->
+					</div>
+					<!-- /.team-links -->
+				  </div>
+				  <!-- /.team-image -->
+				  <div class="team-content">
+					<div class="team-name">Patrick Graber (pjgraber03)</div>
+					<div class="team-role">
+					  <h4>Developer</h4>
+					</div>
+					<div class="team-description"></div>
+				  </div>
+				  <!-- /.team-content -->
+				</div>
+				<!-- /.team -->
+				
+			  </div>
+			  
+			  <div class="col-md-2 col-sm-4 col-xs-6">
+				<div class="team">
+				  <div class="team-image">
+					<img src="https://lh3.googleusercontent.com/t5rLm4Gex0mmG9VkXzfoXIl0t31pBJwPP798GYNOaLxvi9qjfka867yJl0P-8EXpO8_zeFe-Vq346C56Ww=w1920-h1080-no" class="img-circle img-responsive">
+					<div class="team-links">
+					  <div class="team-links-list">
+						<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+					  </div>
+					  <!-- /.team-links-list -->
+					</div>
+					<!-- /.team-links -->
+				  </div>
+				  <!-- /.team-image -->
+				  
+				  <!-- END BOARD MEMBERS -->
+				  
+				  <div class="team-content">
+					<div class="team-name">Henri Koivuneva</div>
+					<div class="team-role">
+					  <h4>Product Technology Strategist</h4>
+					</div>
+					<div class="team-description"></div>
+				  </div>
+				  <!-- /.team-content -->
+				</div>
+				<!-- /.team -->
+			  </div>
+			  
+			  <div class="col-md-2 col-sm-4 col-xs-6">
+				<div class="team">
+				  <div class="team-image">
+					<img src="https://lh3.googleusercontent.com/Oq2NnEoAaexFWMacS4dFgu9JPmQxC38k_YXnNrR_N10PhFZ2vZxmlTlv-3UBB_kwqjTfTYin-ZSA0JSNew=w1920-h1080-no" class="img-circle img-responsive">
+					<div class="team-links">
+					  <div class="team-links-list">
+						<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+					  </div>
+					  <!-- /.team-links-list -->
+					</div>
+					<!-- /.team-links -->
+				  </div>
+				  <!-- /.team-image -->
+				  <div class="team-content">
+					<div class="team-name">Călin Neamţu</div>
+					<div class="team-role">
+					  <h4>Lead Development Manager</h4>
+					</div>
+					<div class="team-description"></div>
+				  </div>
+				  <!-- /.team-content -->
+				</div>
+				<!-- /.team -->
+			  </div>
+			  
+			  <div class="col-md-2 col-sm-4 col-xs-6">
+				<div class="team">
+				  <div class="team-image">
+					<img src="https://lh3.googleusercontent.com/8VqQRqDi3dc35qeC_cipzDE5oW8llKvxq0F-uzwmR9jYJvsMtREEaANi874yCBpKvmWy86MwwXC22JDRRKU=w1920-h1080-no" class="img-circle img-responsive">
+					<div class="team-links">
+					  <div class="team-links-list">
+						<a href="#" target="_blank"><i class="fa fa-envelope"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-facebook"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-linked"></i></a>
+						<a href="#" target="_blank"><i class="fa fa-twitter"></i></a>
+					  </div>
+					  <!-- /.team-links-list -->
+					</div>
+					<!-- /.team-links -->
+				  </div>
+				  <!-- /.team-image -->
+				  <div class="team-content">
+					<div class="team-name">Aren Clegg</div>
+					<div class="team-role">
+					  <h4>Developer</h4>
+					</div>
+					<div class="team-description"></div>
+				  </div>
+				  <!-- /.team-content -->
+				</div>
+				<!-- /.team -->
+			  </div>
+			  
+			</div>
+		</div>
+
+      </div>
+      <!-- /.container -->
+    </div>
+  </div>
+  <!-- Close Team -->
   
-</html>
+  <footer class="footer">
+    <div class="container"> </div>
+  </footer>
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
+  <script src="https://cdn.jsdelivr.net/jquery.scrollto/2.1.0/jquery.scrollTo.min.js"></script>
+  <script src="js/script.js"></script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/js/script.js b/js/script.js
new file mode 100644
index 0000000..97504e3
--- /dev/null
+++ b/js/script.js
@@ -0,0 +1,43 @@
+$(document).ready(function() {
+
+        // Transition effect for navbar and back-to-top icon
+        $(window).scroll(function() {
+          // checks if window is scrolled more than 500px, adds/removes solid class
+          if($(this).scrollTop() > 550) { 
+              $('.navbar').addClass('solid');
+              $('.back-to-top').addClass('visible'); 
+          } else {
+              $('.navbar').removeClass('solid');
+              $('.back-to-top').removeClass('visible');  
+          }
+
+        });
+
+
+        // Scrolling effect for Arrow icons
+        $("#scrollIcon").click(function(e) {
+            e.preventDefault();
+            $.scrollTo($("#about"), 1000);
+        });
+        $("#nav-about").click(function(e) {
+            e.preventDefault();
+            $.scrollTo($("#about"), 1000);
+        });
+        $("#nav-portfolio").click(function(e) {
+            e.preventDefault();
+            $.scrollTo($("#portfolio"), 1000);
+        });
+        $("#nav-contact").click(function(e) {
+            e.preventDefault();
+            $.scrollTo($("#contact"), 1000);
+        });
+		$("#nav-team").click(function(e) {
+            e.preventDefault
+            $.scrollTo($("#team"), 1000);
+        });
+        $(".navbar-brand").click(function(e) {
+            e.preventDefault();
+            $.scrollTo(0, 1000);
+        });
+          
+      });
\ No newline at end of file
diff --git a/script.js b/script.js
deleted file mode 100644
index 77b1ea0..0000000
--- a/script.js
+++ /dev/null
@@ -1,386 +0,0 @@
-// JavaScript Document
-$(document).ready(function(e) {
-   /* Todo:
- • Merge this with Node.js, almost done
- • Webpages in a database/more editable version
- • Add cookies to track previous commands? (You can press up and down to browse previous commands this session)
-*/
-   var faviconnumber = 1;
-	function favicon() {
-		favicon = favicon == 1 ? 2 : 1;
-		$('.favicon').attr('href','favicon' + favicon + ".png");
-	}
-   console.clear();
-   var commandlist = [ /*Can be populated with various methods*/
-      ["/help", "Show commands"],
-      ["/list", "List all pages on the website"],
-      ["/nav &lt;location&gt;", "Navigate to location"],
-	   ["/gl", "Generate a url for the current page - not currently working"],
-      ["/clear", "Clear the console"],
-      ["brunch + bliss_device", "Initiate device compile - Example: 'brunch bliss_bacon' will get you a build for bacon, 'brunch bliss_x86' will get you a build for Bliss-x86. You get the idea"],
-      ["/login &lt;username&gt; &lt;password&gt;", "Login to your account - This is not set up and when implemeneted it'll be '/login username' then request password without printing into the cmd prompt"],
-      ["/upload", "Upload file, must be logged in."]
-   ];
-   var previouscommands = [];
-   var currentcommand = 0;
-   var pages = [ /*Can be populated with various methods*/
-      ["index", "Welcome to BlissROMs temporary site", "This is a temporary website we are puting up in order to help with the current transition of our website", "You can find us online or on Telegram using the following links.", "Google+: [https://plus.google.com/communities/118265887490106132524](https://plus.google.com/communities/118265887490106132524)","Telegram: [https://t.me/OfficialBlissROMs](https://t.me/OfficialBlissROMs)"],
-      ["about", "About Bliss", "A little info about us", "We are a family of ROMs, app developers, designers, and tech gurus, that work together to bring our dreams to life.", "To join Bliss Family of ROMs, [https://goo.gl/ZJn2vn](https://goo.gl/ZJn2vn)", "We are currently accepting applications for developers, maintainers, app devs, designers, and marketing/PR."],
-	  ["connect", "Connect with Bliss",
-	  "[mailto:Officialblissroms@gmail.com](Email Bliss)",
-	  "[^https://plus.google.com/communities/118265887490106132524](Google+ Community)",
-	  "[^https://t.me/OfficialBlissROMs](Telegram Community)",
-	  "[^https://review.blissroms.com](Gerrit Code Review for Blissroms)",
-	  "[^https://goo.gl/forms/PdiaAj1PojosmehK2](*Join Team Bliss*)"]
-   ];
-   var pageindex = ["index", "about", "connect"];
-   var currentpage = "landing";
-   var url = "http://blissroms.github.io/"
-      /*
-         Custom Text Syntax
-         Links:      
-            [URLPATH](NAME) - regular
-            [^URLPATH](NAME) - open in new tab
-            
-         Styles:
-            *TEXT* - bold text
-            E! - Text is an error/notification
-            A! - spaces are converted to non-breaking spaces (it's for ascii art - after all, this is a text based website)
-      */
-
-   function init() {
-      setInterval(time);
-      console.clear();
-      console.log(new Date().getTime());
-      log("Website", "A!****************************");
-      log("Website", "A! ____  _     ___ ____ ____  ");
-      log("Website", "A!| __ )| |   |_ _/ ___/ ___| ");
-      log("Website", "A!|  _) | |    | |(___ (___ ) ");
-      log("Website", "A!| |_) | |___ | | ___) |__) |");
-      log("Website", "A!|____/|_____|___|____/____/ ");
-      log("Website", "A!                           *");
-      log("Website", "A!****************************");
-      log("Website", "A!Have A Truly Blissful Experience");
-      log("Website", "A!****************************");
-      log("Website", "");
-      log("Website", "E!Bliss ROMs temporary site [^http://blissroms.github.io/](*blissroms.github.io*)");
-      log("Website", "");
-      log("Website", "A!********************************");
-      log("Website", "");
-      log("Website", "E![^http://downloads.blissroms.com/](*Bliss Downloads*) , [^http://paypal.me/TeamBliss](*Donate to Team Bliss*)");
-	log("Website", "E![^http://review.blissroms.com](*BlissROMs Gerrit Review*) , [^https://goo.gl/forms/PdiaAj1PojosmehK2](*Join Team Bliss*)");
-	log("Website", "");
-      log("Website", "E![^https://goo.gl/kAb7ti](*Join Bliss Family of ROMs*)");
-      log("Website", "");
-      log("Website", "A!********************************");
-	   urlvars();
-      log("Client", "For help say '/help'");
-	  setInterval(favicon,500);
-   }
-
-   function urlvars() {
-	   var pagelocs = window.location.pathname.replace("/","").split("/");
-	   var pageloc = pagelocs[0];
-	   console.log(pageloc);
-	   //alert();
-		if(pageloc != "") {
-            if ($.inArray(pageloc, pageindex) >= 0) {
-               currentpage = pageloc;
-            }
-		}
-      	log("Website", "You are currently on page: *" + currentpage + "*");
-		if(pageloc != "") {
-            if ($.inArray(pageloc, pageindex) >= 0) {
-               currentpage = pageloc;
-               loadpage($.inArray(pageloc, pageindex));
-            } else {
-               //Un-note next line to show 404 errors with wrong urls
-               //log("Client", "404 - The page '" + pageloc + "' does not exist. To "); 
-            }
-		}
-		if(pageloc == "") {
-      		log("Client", "What would you like to access?");	
-		}
-   }
-   function getParam(name){
-		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
-		var regexS = "[\\?&]"+name+"=([^&#]*)";
-		var regex = new RegExp( regexS );
-		var results = regex.exec (window.location.href);
-		if (results == null) {
-			return "";
-		}
-		else  {
-			return results[1];
-		}
-	}
-
-   function log(name, information) {
-      var d = new Date();
-      var hours = ((d.getHours() < 10) ? "0" : "") + d.getHours();
-      var minutes = ((d.getMinutes() < 10) ? "0" : "") + d.getMinutes();
-      var seconds = ((d.getSeconds() < 10) ? "0" : "") + d.getSeconds();
-      var colour = "whitet";
-      var textcolour = "";
-      var postcolour = "";
-
-      switch (name[0]) {
-         case "!":
-            postcolour = " important";
-            name = name.substr(1);
-            break;
-      }
-      switch (name) {
-         case "Website":
-            colour = "redt";
-            break;
-         case "Server":
-            colour = "bluet";
-            break;
-         case "Client":
-            colour = "bluet";
-            break;
-         case "User":
-            colour = "greent";
-            postcolour = " selft";
-            break;
-      }
-      if (information[0] == "A" && information[1] == "!") {
-         information = information.substr(2);
-         information = information.replace(/ /g, '\u00A0');
-      }
-      if (information[0] == "E" && information[1] == "!") {
-         information = information.substr(2);
-         postcolour = " important";
-      }
-
-      while (information.indexOf("](") >= 0) { //URL parser
-
-         var NAMEregExp = /\(([^)]+)\)/;
-         var uname = NAMEregExp.exec(information)[1];
-
-         var URLregExp = /\[([^)]+)\]/;
-         var url = URLregExp.exec(information)[1];
-         var newpage = false;
-         if (url[0] == "^") {
-            newpage = true;
-            url = url.substr(1);
-         }
-         var start = information.indexOf("[");
-         var end = information.indexOf(")");
-         if (newpage) {
-            information = information.replace(information.substring(start, end + 1), "").splice(start, 0, '<a href="' + url + '" target="_blank">' + uname + '</a>');
-         } else {
-            information = information.replace(information.substring(start, end + 1), "").splice(start, 0, '<a href="' + url + '">' + uname + '</a>');
-         }
-         //information = '<a href="' + url + '">' + uname + '</a>'; //working
-
-      }
-      var tobold = true;
-      var boldnumber = 0;
-      for (var i = 0; i < information.length; i++) {
-         if (information[i] == "*" && information[i - 1] != "*" && information[i + 1] != "*") {
-            boldnumber++;
-         }
-      }
-      while (information.indexOf("*") >= 0) { //Bold parser
-         var pos = information.indexOf("*");
-         information = information.replace("*", "");
-         if (tobold) {
-            information = information.splice(pos, 0, '<b>');
-         } else {
-            information = information.splice(pos, 0, '</b>');
-         }
-         tobold = !tobold;
-         if (tobold && boldnumber <= 1) {
-            break;
-         }
-         //information = '<a href="' + url + '">' + uname + '</a>'; //working
-      }
-      var tounderline = true;
-      var underlinenumber = 0;
-      for (var i = 0; i < information.length; i++) {
-         if (information[i] == "*" && information[i - 1] != "*" && information[i + 1] != "*") {
-            underlinenumber++;
-         }
-      }
-      while (information.indexOf("**") >= 0) { //Bold parser
-         var pos = information.indexOf("**");
-         information = information.replace("**", "");
-         if (tounderline) {
-            information = information.splice(pos, 0, '<u>');
-         } else {
-            information = information.splice(pos, 0, '</u>');
-         }
-         tounderline = !tounderline;
-         if (tounderline && underlinenumber <= 1) {
-            break;
-         }
-         //information = '<a href="' + url + '">' + uname + '</a>'; //working
-      } /**/
-      $(".stream").append('<div class="line">' +
-         '<p class="time">[' + hours + ":" + minutes + ":" + seconds + ']</p>' +
-         '<p class="name ' + colour + '">' + name + '</p>' +
-         '<p class="information' + postcolour + '">' + information + '</p>' +
-         '</div>');
-      $(document).scrollTop($(document).height() - $(window).height());
-   }
-	var timestring = "";
-   function time() {
-      var d = new Date();
-      var hours = d.getHours();
-      var minutes = d.getMinutes();
-      var seconds = d.getSeconds();
-      if (hours < 10) {
-         hours = "0" + hours;
-      }
-      if (minutes < 10) {
-         minutes = "0" + minutes;
-      }
-      if (seconds < 10) {
-         seconds = "0" + seconds;
-      }
-	  var temptimestring = "[" + hours + ":" + minutes + ":" + seconds + "]";
-	  if (temptimestring != timestring) {
-		  timestring = temptimestring;
-      	$(".editline .time").text(timestring);
-	  }
-   }
-
-   var ctrldown = false;
-   $(".editline .edit").keydown(function(e) {
-      var text = $(".editline .edit").text();
-      console.log(e.which);
-      if (e.which == 13 && text !== "" && !ctrldown) {
-         var commands = text.split(' ');
-         var output = "";
-         if (commands[0] == "help") {
-            text = "/" + text;
-         }
-         $(".editline .edit").text("");
-         log("User", text);
-
-         previouscommands[currentcommand] = text;
-         currentcommand = previouscommands.length;
-         $(".editline .edit").keydown(35);
-         cmd(commands[0], text, commands);
-         /*Add mod commands*/
-         //modcmd(commands[0], text, commands);
-         /*Add mod commands*/
-
-      }
-      if (e.which == 38) { //up
-         if (currentcommand > 0) {
-            currentcommand--;
-            $(".editline .edit").text(previouscommands[currentcommand]);
-         }
-      }
-      if (e.which == 40) { //down
-
-         if (currentcommand < previouscommands.length) {
-            currentcommand++;
-            $(".editline .edit").text(previouscommands[currentcommand]);
-         }
-      }
-   });
-
-   function cmd(command, words, word) {
-      switch (word[0]) {
-         case "/help":
-         case "help":
-            for (var i = 0; i < commandlist.length; i++) {
-               output = commandlist[i][0] + " : " + commandlist[i][1];
-               //console.log(command[i][0]);
-               log("Client", output);
-            }
-            break;
-		 case "/gl":
-			//window.location.href = "http://koya.io" + (currentpage == "landing" ? "" : "/" + currentpage);
-			window.history.pushState(currentpage, 'InpagePage', (currentpage == "landing" ? "/" : "/" + currentpage));
-			break;
-         case "/clear":
-            $(".stream").text("");
-            break;
-         case "/nav":
-            if ($.inArray(word[1], pageindex) >= 0) {
-               currentpage = word[1];
-               log("Website", "You are now in " + currentpage);
-               loadpage($.inArray(word[1], pageindex));
-            } else {
-               log("Client", "'" + word[1] + "' does not exist.");
-            }
-            break;
-         case "/list":
-            $.each(pageindex, function(id, content) {
-               log("Client", "> " + content);
-            });
-            break;
-         case "/login":
-            if (word.length >= 3) {
-               log("Client", "Attempting to login to " + word[1] + " with " + Array(word[2].length + 1).join("â€¢"));
-               loginreturn = false;
-               //log("Client", "ER1");
-               setTimeout(loginemptyreturn, 20000);
-            } else {
-               log("Client", "Not enough arguments to log in, you need a USERNAME and a PASSWORD.");
-            }
-            break;
-	      case "/brunch":
-         case "brunch":
-         if (word[1] == "bliss_kiwi") {		window.open("https://downloads.blissroms.com/Bliss/Official/kiwi/");
-                                        }
-            else if(word[1] == "bliss_x86") {        	window.open("https://downloads.blissroms.com/Bliss/Official/x86/");
-                                           }
-            else if(word[1] == "bliss_axon7") {        	window.open("https://downloads.blissroms.com/Bliss/Official/axon7/");
-                                             }
-            else if(word[1] == "bliss_bacon") {        	window.open("https://downloads.blissroms.com/Bliss/Official/bacon/");
-                                             }
-            else if(word[1] == "bliss_bullhead") {        	window.open("https://downloads.blissroms.com/Bliss/Official/bullhead/");
-                                                }
-            else if(word[1] == "bliss_clark") {        	window.open("https://downloads.blissroms.com/Bliss/Official/clark/");
-                                             }
-            else if(word[1] == "bliss_hammerhead") {       window.open("https://downloads.blissroms.com/Bliss/Official/hammerhead/");
-                                                  }
-            else if(word[1] == "bliss_hydrogen") {        	window.open("https://downloads.blissroms.com/Bliss/Official/hydrogen/");
-                                                }
-            else if(word[1] == "bliss_kenzo") {        	window.open("https://downloads.blissroms.com/Bliss/Official/kenzo/");
-                                             }
-            else if(word[1] == "bliss_mako") {        	window.open("https://downloads.blissroms.com/Bliss/Official/mako/");
-                                            }
-            else if(word[1] == "bliss_oneplus2") {        	window.open("https://downloads.blissroms.com/Bliss/Official/oneplus2/");
-                                                }
-            else if(word[1] == "bliss_shamu") {        	window.open("https://downloads.blissroms.com/Bliss/Official/shamu/");
-                                              }
-            else if(word[1] == "bliss_victara") {        	window.open("https://downloads.blissroms.com/Bliss/Official/victara/");}
-            else if(word[1] == "bliss_warp4") {        	window.open("https://downloads.blissroms.com/Bliss/Official/warp4/");}
-            else {
-               output = "Unrecognized device";
-               log("Client", output);
-            }
-            break;
-         default:
-            output = "Unrecognised command '" + word[0] + "'.";
-            log("Client", output);
-      }
-   }
-
-   function loadpage(i) {
-      $.each(pages[i], function(id, content) {
-         if (content != pageindex[i]) {
-            log("Website", content);
-         }
-      });
-   }
-   var loginreturn = false;
-
-   function loginemptyreturn() {
-      //log("Client", "ER2");
-      if (!loginreturn) {
-         log("Client", "E![LOGIN] No Return Recieved");
-      }
-   }
-   String.prototype.splice = function(idx, rem, str) {
-      return this.slice(0, idx) + str + this.slice(idx + Math.abs(rem));
-   };
-   init();
-});
diff --git a/style.css b/style.css
deleted file mode 100644
index 54feb97..0000000
--- a/style.css
+++ /dev/null
@@ -1,103 +0,0 @@
-body {
-  background-color: #3A3A3A;
-  color: #FFFFFF;
-  font-family: 'Fira Mono', Monospace;
-  margin: 0;
-  overflow-x: hidden;
-}
-body a {
-  color: inherit;
-}
-body a:hover {
-  color: #00bbff;
-  background-color: #373838;
-}
-body .stream {
-  margin-top: 8px;
-}
-body .line {
-  margin: 0;
-  padding: 0;
-  display: flex;
-  flex-direction: row;
-  margin: 0 4px;
-  padding-top: 2px;
-  width: calc(100% - 12px);
-}
-body .line p {
-  display: inline-block;
-  margin: 0;
-  padding: 0;
-}
-body .line .name {
-  max-width: 80px;
-  min-width: 80px;
-  text-align: right;
-  padding-right: 6px;
-}
-body .editline {
-  background-color: #262626;
-  padding: 2px 4px 0px 4px;
-  width: calc(100%);
-  margin: 0;
-  margin-bottom: 8px;
-}
-body .editline .edit {
-  min-width: calc(100% - 200px);
-  outline: none;
-}
-body .editline .time {
-  user-select: none;
-  cursor: default;
-}
-
-.whitet {
-  color: #00bbff;
-}
-
-.redt {
-  color: #d75f5f;
-}
-
-.important {
-  color: #E3A786;
-}
-
-.bluet {
-  color: #42aaf4;
-}
-
-.greent {
-  color: #afaf00;
-}
-
-.selft {
-  color: #83A598;
-}
-
-::selection {
-  color: #00bbff;
-  background: #373838;
-}
-
-::-webkit-scrollbar {
-  background-color: #3A3A3A;
-  width: 10px;
-  height: 10px;
-}
-
-::-webkit-scrollbar-thumb {
-  background-color: #bcbcbc;
-}
-
-::-webkit-scrollbar-corner {
-  background-color: #3A3A3A;
-}
-
-::-webkit-resizer {
-  background-color: #3A3A3A;
-}
-
-.phjspenheader:hover {
-  background-color: #D44C2A;
-}
diff --git a/style.scss b/style.scss
deleted file mode 100644
index 93c759d..0000000
--- a/style.scss
+++ /dev/null
@@ -1,107 +0,0 @@
-$text:#FFFFFF;
-$highlighttext:#00bbff;
-$black:#262626;
-$darkgrey:#3A3A3A;
-$grey:#bcbcbc;
-$highlight:#373838;
-$selftext:#83A598;
-
-$cream:#00bbff;
-$lightblue:#87afaf;
-$green:#afaf00;
-$red:#d75f5f;
-$textred:#E3A786;
-$orange:#dd6f48;
-$pink:#d787af;
-$gold:#ff8700;
-$yellow:#ffaf00;
-$darkgreen:#878700;
-$turquoise:#87af87;
-$blue:#42aaf4;
-$darkblue:#005f87;
-$purple:#875f87;
-$lighterblue:#83a598;
-
-body {
-   background-color:$darkgrey;
-   color:$text;
-   font-family: 'Fira Mono', Monospace;
-   margin:0;
-   overflow-x:hidden;
-   a {
-      color:inherit;
-      &:hover{
-         color:$highlighttext;
-         background-color:$highlight;
-      }
-   }
-   .stream {
-      margin-top:8px;
-   }
-   .line {
-      margin:0;
-      padding:0;
-      display:flex;
-      flex-direction:row;
-      margin:0 4px;
-      padding-top:2px;
-      width:calc(100% - 12px);
-      p {
-         display:inline-block;
-         margin:0;
-         padding:0;
-      }
-      .name {
-         max-width:80px;
-         min-width:80px;
-         text-align:right;
-         padding-right:6px;
-      }
-   }
-   .editline {
-      background-color:$black;
-      padding: 2px 4px 0px 4px;
-      width:calc(100%);
-      .edit {
-         min-width:calc(100% - 200px);
-         outline:none;
-      }
-      margin:0;
-      margin-bottom:8px;
-      .time {
-         user-select: none;
-         cursor:default;
-      }
-   }
-}
-.whitet {
-   color:$highlighttext;
-}
-.redt {
-   color:$red;
-}
-.important {
-   color:$textred;
-}
-.bluet {
-   color:$blue;
-}
-.greent {
-   color:$green;
-}
-.selft {
-   color:$selftext;
-}
-::selection {
-   color:$highlighttext;
-   background: $highlight;
-}
-::-webkit-scrollbar{background-color:$darkgrey;width:10px;height:10px;}
-::-webkit-scrollbar-thumb{background-color:$grey;}
-::-webkit-scrollbar-corner{background-color:$darkgrey;}
-::-webkit-resizer{background-color:$darkgrey;}
-
-
-.phjspenheader:hover {
-    background-color: #D44C2A 
-}
