diff --git a/frontend/src/components/atoms/.gitkeep b/frontend/src/components/atoms/.gitkeep
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/frontend/src/components/atoms/BottomBarItem/index.tsx b/frontend/src/components/atoms/BottomBarItem/index.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..5758739b9ab46858ca805dd27d33ece91894f2fb
--- /dev/null
+++ b/frontend/src/components/atoms/BottomBarItem/index.tsx
@@ -0,0 +1,34 @@
+import React from "react";
+import Button from "react-bootstrap/Button";
+import {
+  IconDefinition
+} from "@fortawesome/free-solid-svg-icons";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { NavLink } from "react-router-dom";
+
+export interface BottomBarItemProps {
+  page: {
+    name: string;
+    path: string;
+    icon: IconDefinition;
+  };
+}
+
+const BottomBarItem: React.FC<BottomBarItemProps> = ({ page }: BottomBarItemProps) => {
+
+  return (
+    <Button
+      activeClassName="active"
+      as={NavLink}
+      to={page.path}
+      id={"bottom-" + page.name}
+      key={page.name}
+    >
+      <div className="button-holder">
+        <FontAwesomeIcon icon={page.icon} size="lg" />
+      </div>
+    </Button>
+  );
+};
+
+export default BottomBarItem;
diff --git a/frontend/src/components/atoms/NavBarTabItem/index.tsx b/frontend/src/components/atoms/NavBarTabItem/index.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..cde151d208443ed01c5194433d74193af2714101
--- /dev/null
+++ b/frontend/src/components/atoms/NavBarTabItem/index.tsx
@@ -0,0 +1,29 @@
+import React from "react";
+import Nav from "react-bootstrap/Nav";
+import { NavLink } from "react-router-dom";
+
+export interface NavBarItemProps {
+  page: {
+    name: string;
+    path: string;
+  };
+}
+
+const NavBarTabItem: React.FC<NavBarItemProps> = ({
+  page,
+}: NavBarItemProps) => {
+  return (
+    <Nav.Item key={page.name}>
+      <Nav.Link
+        as={NavLink}
+        activeClassName="active"
+        to={page.path}
+        className="page-button"
+      >
+        {page.name}
+      </Nav.Link>
+    </Nav.Item>
+  );
+};
+
+export default NavBarTabItem;
diff --git a/frontend/src/components/molecules/NavBarBrand/index.tsx b/frontend/src/components/molecules/NavBarBrand/index.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..4fa3f7c5d16331bd8852c574e34791816a12c027
--- /dev/null
+++ b/frontend/src/components/molecules/NavBarBrand/index.tsx
@@ -0,0 +1,34 @@
+import React from "react";
+import Navbar from "react-bootstrap/Navbar";
+import logo from "images/logo.svg";
+import { Link } from "react-router-dom";
+
+const NavBarBrand: React.FC = () => {
+
+  return (
+        <Navbar.Brand className="brand-container">
+          <img
+            src={logo}
+            width="30"
+            height="30"
+            className="d-inline-block align-center brand-image"
+            alt="React Bootstrap logo"
+            onClick={(e) => {
+							// TODO: change to using react states
+              e.preventDefault();
+              const wrapper = document.querySelector("#wrapper") || document.createElement("div");
+              if (wrapper.classList.contains("toggled")) {
+                wrapper.classList.remove("toggled");
+              } else {
+                wrapper.classList.add("toggled");
+              }
+            }}
+          />{" "}
+          <Link to="/" style={{ textDecoration: "none" }}>
+            Scientia
+          </Link>
+        </Navbar.Brand>
+  );
+};
+
+export default NavBarBrand;
diff --git a/frontend/src/components/molecules/NavBarTabGroup/index.tsx b/frontend/src/components/molecules/NavBarTabGroup/index.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..dd7cbdd7e9621393f0d911c6279bc7ee2a6d1100
--- /dev/null
+++ b/frontend/src/components/molecules/NavBarTabGroup/index.tsx
@@ -0,0 +1,27 @@
+import React from "react";
+import Navbar from "react-bootstrap/Navbar";
+import Nav from "react-bootstrap/Nav";
+import NavBarTabItem from "components/atoms/NavBarTabItem";
+
+export interface NavBarTabGroupProps {
+  pages: {
+    name: string;
+    path: string;
+  }[];
+}
+
+const NavBarTabGroup: React.FC<NavBarTabGroupProps> = ({
+  pages,
+}: NavBarTabGroupProps) => {
+  return (
+    <Navbar className="page-button-group m-auto" id="responsive-navbar-nav">
+      <Nav variant="pills">
+        {pages.map((page) => (
+          <NavBarTabItem page={page} />
+        ))}
+      </Nav>
+    </Navbar>
+  );
+};
+
+export default NavBarTabGroup;
diff --git a/frontend/src/components/organisms/BottomBar/index.tsx b/frontend/src/components/organisms/BottomBar/index.tsx
index c84d30d21c34c26cddcd0db92c720b62c9d7f826..85f043c19574932542cc95e39c6e55d881915c61 100644
--- a/frontend/src/components/organisms/BottomBar/index.tsx
+++ b/frontend/src/components/organisms/BottomBar/index.tsx
@@ -1,12 +1,10 @@
 import React from "react";
 import Navbar from "react-bootstrap/Navbar";
-import Button from "react-bootstrap/Button";
 import ButtonGroup from "react-bootstrap/ButtonGroup";
 import {
   IconDefinition
 } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { NavLink } from "react-router-dom";
+import BottomBarItem from "components/atoms/BottomBarItem"
 
 export interface BottomBarProps {
   pages: {
@@ -17,24 +15,11 @@ export interface BottomBarProps {
 }
 
 const BottomBar: React.FC<BottomBarProps> = ({ pages }: BottomBarProps) => {
-  const BottomBarItems = pages.map(({ name, path, icon }) => (
-    <Button
-      activeClassName="active"
-      as={NavLink}
-      to={path}
-      id={"bottom-" + name}
-      key={name}
-    >
-      <div className="button-holder">
-        <FontAwesomeIcon icon={icon} size="lg" />
-      </div>
-    </Button>
-  ));
 
   return (
     <Navbar className="bottom-bar footer">
       <ButtonGroup aria-label="Basic example" className="bottom-bar-buttons">
-        {BottomBarItems}
+        {pages.map((page => <BottomBarItem page={page}/>))}
       </ButtonGroup>
     </Navbar>
   );
diff --git a/frontend/src/components/organisms/TopBar/index.tsx b/frontend/src/components/organisms/TopBar/index.tsx
index 2704b81ce8368bffbcd46e180cc2d63cdf214e92..494e168b110af76e2ac1b4b56925f9aee7722347 100644
--- a/frontend/src/components/organisms/TopBar/index.tsx
+++ b/frontend/src/components/organisms/TopBar/index.tsx
@@ -1,10 +1,9 @@
 import React from "react";
 import Container from "react-bootstrap/Container";
 import Navbar from "react-bootstrap/Navbar";
-import Nav from "react-bootstrap/Nav";
-import logo from "images/logo.svg";
 import userPic from "images/user.png";
-import { Link, NavLink } from "react-router-dom";
+import NavBarTabGroup from "components/molecules/NavBarTabGroup";
+import NavBarBrand from "components/molecules/NavBarBrand";
 
 export interface TopBarProps {
   pages: {
@@ -14,48 +13,14 @@ export interface TopBarProps {
 }
 
 const TopBar: React.FC<TopBarProps> = ({ pages }: TopBarProps) => {
-  const NavItems = pages.map(({ name, path }) => (
-    <Nav.Item key={name}>
-      <Nav.Link
-        as={NavLink}
-        activeClassName="active"
-        to={path}
-        className="page-button"
-      >
-        {name}
-      </Nav.Link>
-    </Nav.Item>
-  ));
 
   return (
     <Navbar className="top-bar" sticky="top" expand="lg" variant="light">
       <Container fluid>
-        <Navbar.Brand className="brand-container">
-          <img
-            src={logo}
-            width="30"
-            height="30"
-            className="d-inline-block align-center brand-image"
-            alt="React Bootstrap logo"
-            onClick={(e) => {
-							// TODO: change to using react states
-              e.preventDefault();
-              const wrapper = document.querySelector("#wrapper") || document.createElement("div");
-              if (wrapper.classList.contains("toggled")) {
-                wrapper.classList.remove("toggled");
-              } else {
-                wrapper.classList.add("toggled");
-              }
-            }}
-          />{" "}
-          <Link to="/" style={{ textDecoration: "none" }}>
-            Scientia
-          </Link>
-        </Navbar.Brand>
 
-        <Navbar className="page-button-group m-auto" id="responsive-navbar-nav">
-          <Nav variant="pills">{NavItems}</Nav>
-        </Navbar>
+        <NavBarBrand/>
+
+        <NavBarTabGroup pages={pages}/>
 
         <img
           src={userPic}
diff --git a/frontend/src/components/templates/.gitkeep b/frontend/src/components/templates/.gitkeep
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/frontend/src/components/molecules/Buttons.tsx b/frontend/src/components/templates/ExampleButtons.tsx
similarity index 100%
rename from frontend/src/components/molecules/Buttons.tsx
rename to frontend/src/components/templates/ExampleButtons.tsx
diff --git a/frontend/src/components/templates/ExamplePage.tsx b/frontend/src/components/templates/ExamplePage.tsx
index 44b9765785faa34e4ed452255b8e8326e2e240be..77d9e7e9efc3b221db6c6031f01aa4a1eddac0be 100644
--- a/frontend/src/components/templates/ExamplePage.tsx
+++ b/frontend/src/components/templates/ExamplePage.tsx
@@ -3,8 +3,8 @@ import React from "react";
 import Jumbotron from "react-bootstrap/Jumbotron";
 import Container from "react-bootstrap/Container";
 
-import ButtonsShowcase from "components/molecules/Buttons";
-import ToastsShowcase from "components/molecules/Toasts";
+import ButtonsShowcase from "components/templates/ExampleButtons";
+import ToastsShowcase from "components/templates/ExampleToasts";
 
 export interface ExamplePageProps {
   name: string;
diff --git a/frontend/src/components/molecules/Toasts.tsx b/frontend/src/components/templates/ExampleToasts.tsx
similarity index 100%
rename from frontend/src/components/molecules/Toasts.tsx
rename to frontend/src/components/templates/ExampleToasts.tsx