diff --git a/Components/Card.js b/Components/Card.js
index af068f5..00a2df4 100644
--- a/Components/Card.js
+++ b/Components/Card.js
@@ -2,7 +2,6 @@
 import Styles from '../styles/Components/card.module.css';
 import react from 'react'
 import { withRouter } from "next/router";
-import Link from 'next/link'
 
 class Card extends Component {
 	constructor(props) {
@@ -27,14 +26,14 @@
                     <div className={Styles.buttonLayout}>
                         {
                             this.props.buttons ? this.props.buttons.map((button, i) => {
-                                return <Link
+                                return <a
                                     key={i}
                                     className={Styles.button}
                                     style={{backgroundColor:`#${button.color}`, color:`#${this.props.buttonText}`}}
                                     href={button.link}
                                     target={button.newTab ? "_blank" : undefined}
                                     rel="noreferrer">{button.text}
-                                </Link>
+                                </a>
                             }) : null
                         }
                     </div>
diff --git a/Components/Header.js b/Components/Header.js
index 5738a4a..7e96ba6 100644
--- a/Components/Header.js
+++ b/Components/Header.js
@@ -4,7 +4,6 @@
 import { useColorMode } from "theme-ui";
 import { useReward } from "react-rewards";
 import ScrollContainer from 'react-indiana-drag-scroll'
-import Link from 'next/link'
 
 function Header(props) {
     const [ clickTotal, setClickTotal ] = React.useState(0);
@@ -82,7 +81,7 @@
                     <h1 className={Styles.title}>{props.name}</h1>
                 </div>
                 <p className={Styles.subtext + " " + (props.buttons.length ? Styles.subtextExtra : null)}>{props.subtext}</p>
-                <Link href="#skipNav" id="skipNav" style={{display: "none"}} />
+                <a href="#skipNav" id="skipNav" style={{display: "none"}} />
                 { props.buttons.length ?
                     <div className={Styles.buttonOverflow}>
                         <img className={Styles.indicator + " " + Styles.leftArrow} draggable={false} alt="" src={`https://assets.clicks.codes/web/icons/arrow.svg`}/>
@@ -96,7 +95,7 @@
                             <div className={Styles.buttonLayout}>
                                 {
                                     props.buttons ? props.buttons.map((button, index) => {
-                                        return <Link
+                                        return <a
                                             key={index}
                                             className={Styles.button}
                                             style={{ backgroundColor: `#${button.color}`, color: `#${button.buttonText}` }}
@@ -106,7 +105,7 @@
                                             draggable={false}
                                             rel="noreferrer">
                                             {button.text}
-                                        </Link>
+                                        </a>
                                     }) : null
                                 }
                             </div>
diff --git a/Components/NavBar.js b/Components/NavBar.js
index 2f6308f..1d19e4c 100644
--- a/Components/NavBar.js
+++ b/Components/NavBar.js
@@ -1,7 +1,6 @@
 import React, { Component } from "react";
 import Styles from '../styles/Components/navbar.module.css';
 import ThemeChangeButton from './ThemeChangeButton';
-import Link from 'next/link'
 
 class Divider extends Component {
     render() {
@@ -22,14 +21,14 @@
 		return (
             <>
                 <div className={Styles.container}>
-                    <Link href="#skipNav" className={Styles.skipNav}><a>Skip navigation</a></Link>
-                    <Link className={Styles.icon} href="/"><img alt="Clicks" className={Styles.icon} src="https://assets.clicks.codes/web/logos/clicks.svg" /></Link>
+                    <a href="#skipNav" className={Styles.skipNav}><a>Skip navigation</a></a>
+                    <a className={Styles.icon} href="/"><img alt="Clicks" className={Styles.icon} src="https://assets.clicks.codes/web/logos/clicks.svg" /></a>
                     <Divider />
-                    <Link className={Styles.icon} href="/rsm"><img alt="RSM" className={Styles.icon} src="https://assets.clicks.codes/bots/rsm/circle.svg" /></Link>
-                    {/* <Link className={Styles.icon} href="/nucleus#"><img alt="Nucleus" className={Styles.icon} src="https://assets.clicks.codes/bots/nucleus/circle.svg" /></Link> */}
-                    <Link className={Styles.icon} href="/clicksforms"><img alt="ClicksForms" className={Styles.icon} src="https://assets.clicks.codes/bots/clicksforms/circle.svg" /></Link>
-                    <Link className={Styles.icon} href="/gps"><img alt="GPS" className={Styles.icon} src="https://assets.clicks.codes/bots/gps/circle.svg" /></Link>
-                    <Link className={Styles.icon} href="/hooky"><img alt="Hooky" className={Styles.icon} src="https://assets.clicks.codes/bots/hooky/circle.svg" /></Link>
+                    <a className={Styles.icon} href="/rsm"><img alt="RSM" className={Styles.icon} src="https://assets.clicks.codes/bots/rsm/circle.svg" /></a>
+                    {/* <a className={Styles.icon} href="/nucleus#"><img alt="Nucleus" className={Styles.icon} src="https://assets.clicks.codes/bots/nucleus/circle.svg" /></a> */}
+                    <a className={Styles.icon} href="/clicksforms"><img alt="ClicksForms" className={Styles.icon} src="https://assets.clicks.codes/bots/clicksforms/circle.svg" /></a>
+                    <a className={Styles.icon} href="/gps"><img alt="GPS" className={Styles.icon} src="https://assets.clicks.codes/bots/gps/circle.svg" /></a>
+                    <a className={Styles.icon} href="/hooky"><img alt="Hooky" className={Styles.icon} src="https://assets.clicks.codes/bots/hooky/circle.svg" /></a>
                     <Divider />
                     <ThemeChangeButton/>
                 </div>
diff --git a/Components/ThemeChangeButton.js b/Components/ThemeChangeButton.js
index 48b84ee..616c14a 100644
--- a/Components/ThemeChangeButton.js
+++ b/Components/ThemeChangeButton.js
@@ -2,7 +2,6 @@
 import { useColorMode } from 'theme-ui';
 import Styles from '../styles/Components/navbar.module.css';
 import { useState, useEffect } from 'react';
-import Link from 'next/link'
 
 
 const ThemeChangeButton = () => {
@@ -15,14 +14,14 @@
 
     return (
         <>
-            <Link className={Styles.icon + " " + Styles.ThemeChangeButton} onClick={(e) => {
+            <a className={Styles.icon + " " + Styles.ThemeChangeButton} onClick={(e) => {
                 e.preventDefault();
                 setColorMode(colorMode === 'light' ? 'dark' : 'light');
             }} href="#">
                 <img className={Styles.icon} alt="Theme" src={"https://assets.clicks.codes/web/icons/" + (
                     colorMode == 'light' ? "light-white" : "dark"
                 ) + ".svg"} />
-            </Link>
+            </a>
         </>
     )
 }
