diff --git a/pages/01189998819991197253.js b/pages/01189998819991197253.js
new file mode 100644
index 0000000..7421556
--- /dev/null
+++ b/pages/01189998819991197253.js
@@ -0,0 +1,23 @@
+import Header from '../Components/Header'
+
+export default function Error() {
+	return (
+		<>
+			<Header
+				name="0118 999 881 999 119 7253"
+				subtext={<>
+					Dear Sir/Madam,<br />
+					Fire! Fire! Help me!<br />
+					123 Cavendon Road.<br />
+					Looking forward to hearing from you,<br />
+					All the best, Maurice Moss
+				</>}
+				embedDescription="This is the internet"
+				gradient={["F27878", "D96B6B"]}
+				wave="web/waves/header/rsm"
+				buttons={[{color: "F27878", buttonText: "ffffff", text: "No that's too formal", link: "/#"}]}
+				fullscreen={true}
+			/>
+		</>
+	)
+}
diff --git a/pages/api/nucleus/verify/complete.js b/pages/api/nucleus/verify/complete.js
new file mode 100644
index 0000000..1b58a04
--- /dev/null
+++ b/pages/api/nucleus/verify/complete.js
@@ -0,0 +1,22 @@
+import Axios from 'axios';
+import qs from 'querystring';
+
+const Complete = async (req, res) => {
+    const chk = await Axios.post('http://localhost:3000/api/nucleus/verify/verifyToken', qs.stringify({
+        tkn: req.body.tkn
+    }))
+    if ( !chk.data.success ) {
+        return res.status(200).send({success: false})
+    }
+    let secret = "slwu0rZV5W6WdmGtgI16du8Ar2tQGMr3Q9dE6u3poKiVODNV9SweaA3buawgkTmTuITXDWOUpBcTFA0qWrUvoshi1JB180WOFwA7"
+    try {
+        await Axios.post(`http://192.168.0.18:10000/verify/${req.body.code}`, {
+            secret: secret
+        });
+    } catch (e) {
+        return res.status(200).send({success: false})
+    }
+    return res.status(200).send({success: true});
+}
+
+export default Complete;
\ No newline at end of file
diff --git a/pages/api/nucleus/verify/fetch.js b/pages/api/nucleus/verify/fetch.js
new file mode 100644
index 0000000..ba7aa04
--- /dev/null
+++ b/pages/api/nucleus/verify/fetch.js
@@ -0,0 +1,22 @@
+import Axios from 'axios';
+
+const Validate = async (req, res) => {
+    try {
+        // var out = await Axios.get(`http://192.168.102.7:10000/verify/${req.body.code}`)
+        // out = out.data
+        // let props = {
+        //     user: out.user,
+        //     role: out.role,
+        //     role_name: out.role_name,
+        //     guild: out.guild,
+        //     guild_name: out.guild_name,
+        //     guild_icon_url: out.guild_icon_url,
+        //     guild_size: out.guild_size
+        // }
+        return res.status(200).send(props)
+    } catch (err) {
+        return res.status(400).end()
+    }
+}
+
+export default Validate;
\ No newline at end of file
diff --git a/pages/api/nucleus/verify/verifyToken.js b/pages/api/nucleus/verify/verifyToken.js
new file mode 100644
index 0000000..b44624e
--- /dev/null
+++ b/pages/api/nucleus/verify/verifyToken.js
@@ -0,0 +1,15 @@
+import Axios from 'axios';
+import qs from 'querystring';
+
+const verifyToken = async (req, res) => {
+    const chk = await Axios.post('https://hcaptcha.com/siteverify', qs.stringify({
+        response: req.body.tkn,
+        secret: '0x19C699BFfce07b2a026121DE6702706BB2d51D6c',
+        sitekey: '85074411-fa13-4d9b-b901-53095c6d1fc6'
+    }))
+
+    // return res.send({ success: false });
+    return res.send({ success: chk.data.success });
+}
+
+export default verifyToken;
\ No newline at end of file
diff --git a/pages/clicksforms.js b/pages/clicksforms.js
index e4d96dc..35437b6 100644
--- a/pages/clicksforms.js
+++ b/pages/clicksforms.js
@@ -53,14 +53,14 @@
           <Panel halfSize={true} id="services" style={this.state.toHighlight == "services" ? {border: "solid 10px red"} : {}}>
             <Title>Services</Title>
             <Divider toHighlight={this.state.toHighlight} highlightColour="6576CC" name="services"/>
-            <Text>ClicksForms supports services such as <a href="https://docs.google.com/forms">Google Forms</a> through our Add-on.</Text>
+            <Text>ClicksForms supports services such as <Link href="https://docs.google.com/forms">Google Forms</Link> through our Add-on.</Text>
             <Text>Our API is public. You can view it <Link href="/clicksforms/docs">here</Link>.</Text>
           </Panel>
           <Panel halfSize={true} id="privacy">
             <Title>Privacy</Title>
             <Divider toHighlight={this.state.toHighlight} highlightColour="6576CC" name="privacy"/>
-            <Text>You should always know what we know and store about you, so <a href="https://clicksminuteper.github.io/policies/clicksforms">here</a> is the complete list.</Text>
-            <Text>We also have a list of terms for using ClicksForms, it can be viewed <a href="https://clicksminuteper.github.io/policies/clicksformstos">here</a>.</Text>
+            <Text>You should always know what we know and store about you, so <Link href="https://clicksminuteper.github.io/policies/clicksforms">here</Link> is the complete list.</Text>
+            <Text>We also have a list of terms for using ClicksForms, it can be viewed <Link href="https://clicksminuteper.github.io/policies/clicksformstos">here</Link>.</Text>
           </Panel>
           <Panel halfSize={true} id="invite">
             <Title>Invite</Title>
diff --git a/pages/nucleus.js b/pages/nucleus.js
new file mode 100644
index 0000000..b0bd1f4
--- /dev/null
+++ b/pages/nucleus.js
@@ -0,0 +1,117 @@
+import { Card, CardRow } from '../Components/Card';
+import Header from '../Components/Header'
+import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
+import { List, ListItem, Code } from '../Components/Texttools';
+import { useColorMode } from 'theme-ui';
+import Link from 'next/link';
+
+export default function Home() {
+  const [theme, setTheme] = useColorMode()
+
+  return (
+    <>
+      <Header
+        name="Nucleus"
+        customImage="https://assets.clicks.codes/web/logos/nucleus.svg"
+        embedImage="https://assets.clicks.codes/bots/nucleus/normal.png"
+        subtext="The core of your server"
+        gradient={["F27878", "D96B6B"]}
+        wave="web/waves/header/nucleus"
+        buttons={[
+          // {color: "424242", buttonText: "FFFFFF", link: "#features", text: "Features"},
+          {color: "424242", buttonText: "FFFFFF", link: "#commands", text: "Commands"},
+          {color: "424242", buttonText: "FFFFFF", link: "#privacy", text: "Privacy"},
+          {color: "F27878", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
+        ]}
+      />
+      <AutoLayout>
+        <Panel halfSize={true} id="commands">
+          <Title>General Commands</Title>
+          <Divider />
+          <Text>Standard commands to use Nucleus</Text>
+          <List colour="F27878">
+            <ListItem><Code colour="F27878">/help</Code> Shows all commands and info.</ListItem>
+            <ListItem><Code colour="F27878">/settings</Code> Shows all settings and info.</ListItem>
+            <ListItem>Theres a lot more settings commands but they&apos;re subject to change before release.</ListItem>
+            <ListItem>Expect this list to be longer</ListItem>
+          </List>
+        </Panel>
+        <Panel halfSize={true}>
+          <Title>Moderation Commands</Title>
+          <Divider />
+          <Text>Commands to manage your users and channels</Text>
+          <List colour="F27878">
+            <ListItem><Code colour="F27878">/mod warn</Code> Warns a member.</ListItem>
+            <ListItem><Code colour="F27878">/mod kick</Code> Kicks a member.</ListItem>
+            <ListItem><Code colour="F27878">/mod softban</Code> Soft bans a member.</ListItem>
+            <ListItem><Code colour="F27878">/mod ban</Code> Bans a member.</ListItem>
+            <ListItem><Code colour="F27878">/mod unban</Code> Unbans a member.</ListItem>
+            <ListItem><Code colour="F27878">/mod purge</Code> Deletes messages in the channel.</ListItem>
+            <ListItem><Code colour="F27878">/mod mute</Code> Mutes a member.</ListItem>
+            <ListItem><Code colour="F27878">/mod unmute</Code> Unmutes a member.</ListItem>
+            <ListItem><Code colour="F27878">/mod nick</Code> Changes the nickname of a member.</ListItem>
+            <ListItem><Code colour="F27878">/mod lock</Code> Stops people from sending messages in a channel.</ListItem>
+            <ListItem><Code colour="F27878">/mod slowmode</Code> Edits the slowmode in a channel.</ListItem>
+            <ListItem><Code colour="F27878">/mod viewas</Code> Allows you to view the server as a member or role.</ListItem>
+          </List>
+        </Panel>
+        <Panel halfSize={true}>
+          <Title>Internal Commands</Title>
+          <Divider />
+          <Text>Commands to check the status of and information about Nucleus</Text>
+          <List colour="F27878">
+            <ListItem><Code colour="F27878">/nucleus guide</Code> Shows the setup guide and tips for setup.</ListItem>
+            <ListItem><Code colour="F27878">/nucleus invite</Code> Shows the invite link for Nucleus.</ListItem>
+            <ListItem><Code colour="F27878">/nucleus ping</Code> Shows the latency of the bot.</ListItem>
+            <ListItem><Code colour="F27878">/nucleus stats</Code> Shows the stats of the bot.</ListItem>
+            <ListItem><Code colour="F27878">/nucleus suggest</Code> Sends a feature request to the developers.</ListItem>
+          </List>
+        </Panel>
+        <Panel halfSize={true} id="server">
+          <Title>Server Management</Title>
+          <Divider />
+          <Text>Commands to manage your server and members</Text>
+          <List colour="F27878">
+            <ListItem><Code colour="F27878">/server about</Code> Shows the server information.</ListItem>
+            <ListItem><Code colour="F27878">/server rules</Code> Shows the server rules.</ListItem>
+            <ListItem><Code colour="F27878">/ticket create</Code> Creates a ticket.</ListItem>
+            <ListItem><Code colour="F27878">/ticket close</Code> Closes a ticket.</ListItem>
+            <ListItem><Code colour="F27878">/user about</Code> Shows the user information.</ListItem>
+            <ListItem><Code colour="F27878">/user avatar</Code> Shows the user avatar.</ListItem>
+            <ListItem><Code colour="F27878">/user track</Code> Allows you to move a user up and down a role track.</ListItem>
+            <ListItem><Code colour="F27878">/verify</Code> Verifies a member to give them access to the server.</ListItem>
+          </List>
+        </Panel>
+        <Panel halfSize={false} id="verify">
+            <Title>Verification</Title>
+            <Divider />
+            <Text>Verification ensures all members in your server are human, and prevents automated accounts from joining.</Text>
+            <Text>For more information, see the <Link href="/nucleus/verify/about">about</Link> page.</Text>
+        </Panel>
+        <Panel halfSize={true} id="privacy">
+          <Title>Privacy</Title>
+          <Divider />
+          <Text>You can run <Code colour="F27878">/privacy</Code> to view and manage all data stored about your server</Text>
+          <Text>You should always know what we know and store about you, so <Link href="https://clicksminuteper.github.io/policies/nucleus">here</Link> is the complete list.</Text>
+        </Panel>
+        <Panel halfSize={true} id="invite">
+          <Title>Invite</Title>
+          <Divider />
+          <CardRow>
+            <Card
+              wave="nucleus"
+              icon="bots/nucleus/circle"
+              buttonText={"FFFFFF"} gradient={["F27878", "D96B6B"]}
+              title="Nucleus"
+              subtext="Invite Nucleus to your server"
+              buttons={[
+                  {color: "424242", link: "https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands", text: "Invite"}
+              ]}
+              url="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands"
+            />
+          </CardRow>
+        </Panel>
+      </AutoLayout>
+    </>
+  )
+}
diff --git a/pages/nucleus/verify/about.js b/pages/nucleus/verify/about.js
new file mode 100644
index 0000000..3144db4
--- /dev/null
+++ b/pages/nucleus/verify/about.js
@@ -0,0 +1,78 @@
+import React, { Component } from 'react'
+import Header from '../../../Components/Header'
+import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../../../Components/Panels'
+import { Code } from '../../../Components/Texttools'
+import { Card, CardRow } from '../../../Components/Card'
+import HCaptcha from 'react-hcaptcha';
+import { useReward } from 'react-rewards'
+import Link from 'next/link'
+
+function About(props) {
+    const { reward, isAnimating } = useReward('confetti', 'confetti', {
+        elementSize: 12,
+        spread: 85,
+        position: "absolute",
+        colors: ["#F27878", "#E5AB71", "#E5DC71", "#A1CC65", "#68D49E", "#71AFE5", "#6576CC", "#8D58B2", "#BF5E9F"]
+    });
+
+    return (
+        <>
+            <Header
+                name="Nucleus Verification"
+                subtext="Remove automated accounts from your server"
+                customImage={"https://assets.clicks.codes/web/logos/nucleus.svg"}
+                embedImage={"https://assets.clicks.codes/bots/nucleus/normal.png"}
+                gradient={["F27878", "D96B6B"]}
+                wave="web/waves/header/nucleus"
+                buttons={[
+                    {color: "424242", buttonText: "FFFFFF", link: "#about", text: "About"},
+                    {color: "424242", buttonText: "FFFFFF", link: "#privacy", text: "Privacy"},
+                    {color: "F27878", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
+                ]}
+            />
+            <AutoLayout>
+                <Panel halfSize={false} id="about">
+                    <Title>About Verification</Title>
+                    <Divider />
+                    <Text>Nucleus is designed to help keep your server safe. Verification is how we remove bots from your server.</Text>
+                    <Text>Many bot accounts are designed to join and spam in servers, and verification can prevent this easily:</Text>
+                    <HCaptcha
+                        id="Captchas mitigate problems"
+                        sitekey="85074411-fa13-4d9b-b901-53095c6d1fc6"
+                        onVerify={reward}
+                        theme="dark"
+                    />
+                    <Text>Users will need to run <Code colour="F27878">/verify</Code> when they join, and will be given a link to complete this check online.</Text>
+                    <Text>It is completely free to use verification, and for users to verify.</Text>
+                    <div id="confetti" />
+                </Panel>
+                <Panel halfSize={true} id="privacy">
+                    <Title>Privacy</Title>
+                    <Divider />
+                    <Text>Verification stores the smallest amount of data required to function, and is deleted automatically.</Text>
+                    <Text>This includes the user&apos;s ID, the server ID, role name and server icon.</Text>
+                    <Text>The full list of data stored by Nucleus can be found <Link href="https://clicksminuteper.github.io/policies/nucleus">here</Link>.</Text>
+                </Panel>
+                <Panel halfSize={true} id="invite">
+                    <Title>Invite</Title>
+                    <Divider />
+                    <CardRow>
+                        <Card
+                            wave="nucleus"
+                            icon="bots/nucleus/circle"
+                            buttonText={"FFFFFF"} gradient={["F27878", "D96B6B"]}
+                            title="Nucleus"
+                            subtext="Invite Nucleus to your server"
+                            buttons={[
+                                {color: "424242", link: "https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands", text: "Invite"}
+                            ]}
+                            url="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands"
+                        />
+                    </CardRow>
+                </Panel>
+            </AutoLayout>
+        </>
+    )
+}
+
+export default About;
\ No newline at end of file
diff --git a/pages/nucleus/verify/alreadyVerified.js b/pages/nucleus/verify/alreadyVerified.js
new file mode 100644
index 0000000..c31290a
--- /dev/null
+++ b/pages/nucleus/verify/alreadyVerified.js
@@ -0,0 +1,24 @@
+import { Component } from 'react'
+import Header from '../../../Components/Header'
+
+class Failed extends Component {
+    constructor(props) {
+        super(props)
+    }
+
+    render() {
+        return (
+            <Header
+                name="Already verified"
+                subtext="You are already verified, and cannot verify again"
+                gradient={["65CC76", "60B258"]}
+                wave="web/waves/header/nucleus"
+                buttons={[]}
+                fullscreen={true}
+            />
+        )
+    }
+
+}
+
+export default Failed;
\ No newline at end of file
diff --git a/pages/nucleus/verify/failure.js b/pages/nucleus/verify/failure.js
new file mode 100644
index 0000000..75c2296
--- /dev/null
+++ b/pages/nucleus/verify/failure.js
@@ -0,0 +1,25 @@
+import { Component } from 'react'
+import Header from '../../../Components/Header'
+import Link from 'next/link'
+
+class Failed extends Component {
+    constructor(props) {
+        super(props)
+    }
+
+    render() {
+        return (
+            <Header
+                name="Verification failed"
+                subtext={<p>Please try again, and if the error persists please contact us at <Link href="mailto:verification@clicks.codes" target="_blank" rel="noopener noreferrer">verification@clicks.codes</Link></p>}
+                gradient={["F27878", "D96B6B"]}
+                wave="web/waves/header/nucleus"
+                buttons={[]}
+                fullscreen={true}
+            />
+        )
+    }
+
+}
+
+export default Failed;
\ No newline at end of file
diff --git a/pages/nucleus/verify/index.js b/pages/nucleus/verify/index.js
new file mode 100644
index 0000000..1f55dec
--- /dev/null
+++ b/pages/nucleus/verify/index.js
@@ -0,0 +1,135 @@
+import HCaptcha from 'react-hcaptcha';
+import Axios from 'axios';
+import Router from 'next/router';
+import React from 'react';
+import Header from '../../../Components/Header'
+import { useReward } from 'react-rewards';
+import { Card, CardRow } from '../../../Components/Card'
+import Link from 'next/link'
+
+import { AutoLayout, Panel, Title, Text, Divider } from '../../../Components/Panels';
+import { List, ListItem } from '../../../Components/Texttools';
+import { useColorMode } from 'theme-ui';
+
+function Verify(props) {
+    const [clicked, setClicked] = React.useState(false);
+    const [theme, setTheme] = useColorMode()
+
+    if (clicked) {
+        Router.push('/nucleus/verify/alreadyVerified', '/nucleus/verify/success');
+    }
+
+    const { reward: reward, isAnimating: isAnimating } = useReward('confetti', 'confetti', {
+        elementSize: 10,
+        elementCount: 150,
+        startVelocity: 35,
+        lifetime: 300,
+        decay: 0.94,
+        spread: 170,
+        position: "absolute",
+        colors: ["#68D49E"]
+    });
+
+    async function submitForm(tkn) {
+        if ( clicked ) {
+            return
+        }
+        setClicked(true);
+        reward();
+        let code = await Axios.post('/api/nucleus/verify/complete', {
+            code: props.code,
+            tkn: tkn
+        });
+        setTimeout(() => {
+            if (code.data.success === true ) return Router.push('/nucleus/verify/success','/nucleus/verify')
+            else return Router.push('/nucleus/verify/failure','/nucleus/verify')
+        }, 2500);
+    }
+
+    return <>
+        <Header
+            name={props.guild_name}
+            customImage={props.guild_icon_url}
+            roundImage={true}
+            subtext={`${props.memberCount} members`}
+            gradient={["F27878", "D96B6B"]}
+            wave="web/waves/header/nucleus"
+            buttons={[]}
+        />
+        <AutoLayout>
+            <Panel>
+                <Title>Verify</Title>
+                <Divider name="commands"/>
+                <Text>Complete the check below to join {props.guild_name}</Text>
+                <div style={{height: "125px"}}>
+                    <HCaptcha
+                        id="Captchas mitigate problems"
+                        sitekey="85074411-fa13-4d9b-b901-53095c6d1fc6"
+                        onVerify={tkn => submitForm(tkn)}
+                        theme="dark"
+                    />
+                </div>
+                <List colour="F27878">
+                    <ListItem>This is an automatic check performed by Nucleus.</ListItem>
+                    <ListItem>By clicking Proceed, you will be given the <code>{props.role_name}</code> role in <code>{props.guild_name}</code>.</ListItem>
+                    <ListItem>For the full list of data stored by Nucleus, please check <Link href="https://clicksminuteper.github.io/policies/nucleus#verification">here</Link></ListItem>
+                </List>
+                <div id="confetti" />
+            </Panel>
+            <Panel halfSize={false} id="invite">
+            <Title>Invite</Title>
+            <Divider />
+            <CardRow>
+                <Card
+                    wave="nucleus"
+                    icon="bots/nucleus/circle"
+                    buttonText={"FFFFFF"} gradient={["F27878", "D96B6B"]}
+                    title="Nucleus"
+                    subtext="Invite Nucleus to your server"
+                    buttons={[
+                        {color: "424242", link: "https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands", text: "Invite"}
+                    ]}
+                    url="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands"
+                />
+            </CardRow>
+        </Panel>
+        </AutoLayout>
+    </>
+}
+
+export default Verify;
+export async function getServerSideProps(ctx) {
+    if(!ctx.query.code) {
+        return {
+            redirect: {
+                destination: '/nucleus/verify/about',
+                permanent: true
+            }
+        }
+    }
+    let code;
+    try {
+        await Axios.patch(`http://localhost:10000/verify/${ctx.query.code}`);
+        code = await Axios.get(`http://localhost:10000/verify/${ctx.query.code}`, {code:ctx.query.code});
+    } catch (e) {
+        return {
+            redirect: {
+                destination: '/nucleus/verify/failure',
+                permanent: true
+            }
+        }
+    }
+    let headers = ctx.req.headers;
+    return {
+        props: {
+            uID: code.data.uID,
+            role_name: code.data.rName,
+            gID: code.data.gID,
+            guild_name: code.data.gName,
+            guild_icon_url: code.data.gIcon,
+            memberCount: code.data.mCount,
+            headers: headers,
+            code: ctx.query.code
+        }
+    }
+}
\ No newline at end of file
diff --git a/pages/nucleus/verify/success.js b/pages/nucleus/verify/success.js
new file mode 100644
index 0000000..de5b4d8
--- /dev/null
+++ b/pages/nucleus/verify/success.js
@@ -0,0 +1,24 @@
+import { Component } from 'react'
+import Header from '../../../Components/Header'
+
+class Success extends Component {
+    constructor(props) {
+        super(props)
+    }
+
+    render() {
+        return (
+            <Header
+                name="Verified"
+                subtext="You can now close this tab or window."
+                gradient={["65CC76", "60B258"]}
+                wave="web/waves/header/rsm"
+                buttons={[]}
+                fullscreen={true}
+            />
+        )
+    }
+
+}
+
+export default Success;
\ No newline at end of file
diff --git a/pages/nucleus/verify/testing.js b/pages/nucleus/verify/testing.js
new file mode 100644
index 0000000..036178d
--- /dev/null
+++ b/pages/nucleus/verify/testing.js
@@ -0,0 +1,96 @@
+import HCaptcha from 'react-hcaptcha';
+import Axios from 'axios';
+import Router from 'next/router';
+import React from 'react';
+import Header from '../../../Components/Header'
+import { useReward } from 'react-rewards';
+import { Card, CardRow } from '../../../Components/Card'
+
+import { AutoLayout, Panel, Title, Text, Divider } from '../../../Components/Panels';
+import { List, ListItem } from '../../../Components/Texttools';
+import { useColorMode } from 'theme-ui';
+import Link from 'next/link'
+
+function Verify(props) {
+    const [clicked, setClicked] = React.useState(false);
+    const [theme, setTheme] = useColorMode()
+
+    const { reward: reward, isAnimating: isAnimating } = useReward('confetti', 'confetti', {
+        elementSize: 10,
+        elementCount: 150,
+        startVelocity: 35,
+        lifetime: 300,
+        decay: 0.94,
+        spread: 170,
+        position: "absolute",
+        colors: ["#68D49E"]
+    });
+
+    async function submitForm(tkn) {
+        if ( clicked ) {
+            return
+        }
+        setClicked(true);
+        reward();
+        let code = await Axios.post('/api/nucleus/verify/complete', {
+            code:"TEST",
+            tkn: tkn
+        });
+        setTimeout(() => {
+            if (code.data.success === true ) return Router.push('/nucleus/verify/success','/nucleus/verify')
+            else return Router.push('/nucleus/verify/failure','/nucleus/verify')
+        }, 2500);
+    }
+
+    return <>
+        <Header
+            name="Clocks finite state machine"
+            customImage={"https://i1.sndcdn.com/artworks-000045941811-q634od-t500x500.jpg"}
+            roundImage={true}
+            subtext={`-5 members`}
+            gradient={["F27878", "D96B6B"]}
+            wave="web/waves/header/nucleus"
+            buttons={[]}
+        />
+        <AutoLayout>
+            <Panel>
+                <Title>Verify</Title>
+                <Divider name="commands"/>
+                <Text>Complete the check below to join ERROR</Text>
+                <div style={{height: "125px"}}>
+                    <HCaptcha
+                        id="Captchas mitigate problems"
+                        sitekey="85074411-fa13-4d9b-b901-53095c6d1fc6"
+                        onVerify={tkn => submitForm(tkn)}
+                        theme="dark"
+                    />
+                </div>
+                <List colour="F27878">
+                    <ListItem>This is an automatic check performed by Nucleus.</ListItem>
+                    <ListItem>By completing the CAPTCHA, you will be given the <code>MISSING</code> role in <code>ERROR</code>.</ListItem>
+                    <ListItem>For the full list of data stored by Nucleus, please check <Link href="https://clicksminuteper.github.io/policies/nucleus#verification">here</Link></ListItem>
+                </List>
+                <div id="confetti" />
+            </Panel>
+            <Panel halfSize={false} id="invite">
+                <Title>Invite</Title>
+                <Divider />
+                <CardRow>
+                    <Card
+                        wave="nucleus"
+                        icon="bots/nucleus/circle"
+                        buttonText={"FFFFFF"} gradient={["F27878", "D96B6B"]}
+                        title="Nucleus"
+                        subtext="Invite Nucleus to your server"
+                        buttons={[
+                            {color: "424242", link: "https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands", text: "Invite"}
+                        ]}
+                        url="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands"
+                    />
+                </CardRow>
+            </Panel>
+        </AutoLayout>
+    </>
+}
+
+export default Verify;
diff --git a/pages/privacy.js b/pages/privacy.js
new file mode 100644
index 0000000..c8a9b08
--- /dev/null
+++ b/pages/privacy.js
@@ -0,0 +1,35 @@
+import Header from '../Components/Header'
+import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
+import { List, ListItem, Code } from '../Components/Texttools';
+import Link from 'next/link';
+
+
+export default function Home() {
+    return (
+        <>
+            <Header
+                name="Privacy"
+                subtext="Privacy is a right - Here's how we handle it"
+                gradient={["71AFE5", "6576CC"]}
+                wave="web/waves/header/clicksforms"
+                buttons={[]}
+            />
+            <AutoLayout>
+                <Panel halfSize={true}>
+                    <Title>Transparency</Title>
+                    <Text>Everything we store about you and your Discord servers will be listed.</Text>
+                    <List colour={"6576CC"}>
+                        <ListItem><Link href="https://clicksminuteper.github.io/policies/rsm">RSM</Link></ListItem>
+                        <ListItem><Link href="https://clicksminuteper.github.io/policies/clicksforms">ClicksForms</Link></ListItem>
+                        <ListItem>GPS does not store any information</ListItem>
+                    </List>
+                    <Text>Have any questions or concerns? <Link href="/support">Let us know</Link> and we can investigate if you believe there are any mistakes</Text>
+                </Panel>
+                <Panel halfSize={true}>
+                    <Title>Security</Title>
+                    <Text>We will do everything we can to protect user data, including high security. You can <Link href="/support">message us</Link> if you would like to learn more about how we do this</Text>
+                </Panel>
+            </AutoLayout>
+        </>
+    )
+}
diff --git a/pages/rsm.js b/pages/rsm.js
index b1e9233..b996197 100644
--- a/pages/rsm.js
+++ b/pages/rsm.js
@@ -2,6 +2,7 @@
 import Header from '../Components/Header'
 import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
 import { List, ListItem, Code } from '../Components/Texttools';
+import Link from 'next/link'
 
 // import FeatureImages from '../public/Features/RSM/Images.svg';
 // import FeatureAutomate from '../public/Features/RSM/Automate.svg';
@@ -89,7 +90,7 @@
         <Panel halfSize={true} id="privacy">
           <Title>Privacy</Title>
           <Divider />
-          <Text>You should always know what we know and store about you, so <a href="https://clicksminuteper.github.io/policies/rsm">here</a> is the complete list.</Text>
+          <Text>You should always know what we know and store about you, so <Link href="https://clicksminuteper.github.io/policies/rsm">here</Link> is the complete list.</Text>
         </Panel>
         <Panel halfSize={true} id="invite">
           <Title>Invite</Title>
diff --git a/pages/rsmv/failure.js b/pages/rsmv/failure.js
index f3b0feb..b66bacd 100644
--- a/pages/rsmv/failure.js
+++ b/pages/rsmv/failure.js
@@ -1,5 +1,6 @@
 import { Component } from 'react'
 import Header from '../../Components/Header'
+import Link from 'next/link'
 
 class Failed extends Component {
     constructor(props) {
@@ -10,7 +11,7 @@
         return (
             <Header
                 name="Verification failed"
-                subtext={<p>Please try again, and if the error persists please contact us at <a href="mailto:verification@clicks.codes" target="_blank" rel="noopener noreferrer">verification@clicks.codes</a></p>}
+                subtext={<p>Please try again, and if the error persists please contact us at <Link href="mailto:verification@clicks.codes" target="_blank" rel="noopener noreferrer">verification@clicks.codes</Link></p>}
                 gradient={["F27878", "D96B6B"]}
                 wave="web/waves/header/rsm"
                 buttons={[]}
diff --git a/pages/rsmv/index.js b/pages/rsmv/index.js
index 175a271..0bed09b 100644
--- a/pages/rsmv/index.js
+++ b/pages/rsmv/index.js
@@ -5,6 +5,7 @@
 import Router from 'next/router';
 import React from 'react';
 import Header from '../../Components/Header'
+import Link from 'next/link'
 
 import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../../Components/Panels';
 import { List, ListItem, Code } from '../../Components/Texttools';
@@ -86,9 +87,9 @@
                     <List colour="F27878">
                         <ListItem>This is an automatic check performed by RSM.</ListItem>
                         <ListItem>By clicking Proceed, you will be given the <code>{this.props.role_name}</code> role in <code>{this.props.guild_name}</code>.</ListItem>
-                        <ListItem>For the full list of data stored by RSM, please check <a href="https://clicksminuteper.github.io/policies/rsm#verification">Here</a></ListItem>
+                        <ListItem>For the full list of data stored by RSM, please check <Link href="https://clicksminuteper.github.io/policies/rsm#verification">Here</Link></ListItem>
                     </List>
-                    <Text>You can add RSM to your server by inviting it <a href="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands">here</a>.</Text>
+                    <Text>You can add RSM to your server by inviting it <Link href="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands">here</Link>.</Text>
                 </Panel>
             </AutoLayout>
         </>
diff --git a/pages/rsmv/rsmvtesting.js b/pages/rsmv/rsmvtesting.js
index 8587221..7620324 100644
--- a/pages/rsmv/rsmvtesting.js
+++ b/pages/rsmv/rsmvtesting.js
@@ -5,6 +5,7 @@
 import Router from 'next/router';
 import React from 'react';
 import Header from '../../Components/Header'
+import Link from 'next/link'
 
 import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../../Components/Panels';
 import { List, ListItem, Code } from '../../Components/Texttools';
@@ -82,9 +83,9 @@
                     <List colour="F27878">
                         <ListItem>This is an automatic check performed by RSM.</ListItem>
                         <ListItem>By clicking Proceed, you will be given the <code>MISSING</code> role in <code>ERROR</code>.</ListItem>
-                        <ListItem>For the full list of data stored by RSM, please check <a href="https://clicksminuteper.github.io/policies/rsm#verification">Here</a></ListItem>
+                        <ListItem>For the full list of data stored by RSM, please check <Link href="https://clicksminuteper.github.io/policies/rsm#verification">Here</Link></ListItem>
                     </List>
-                    <Text>You can add RSM to your server by inviting it <a href="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands">here</a>.</Text>
+                    <Text>You can add RSM to your server by inviting it <Link href="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands">here</Link>.</Text>
                 </Panel>
             </AutoLayout>
         </>
diff --git a/pages/support.js b/pages/support.js
index 1c35a68..61586d2 100644
--- a/pages/support.js
+++ b/pages/support.js
@@ -1,6 +1,7 @@
 import Header from '../Components/Header'
 import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
 import { List, ListItem, Code } from '../Components/Texttools';
+import Link from 'next/link'
 
 export default function Home() {
   return (
@@ -16,12 +17,12 @@
         <Panel halfSize={true}>
           <Title>Email</Title>
           <Divider />
-          <Text>Send us an email at <a href="mailto:support@clicks.codes">support@clicks.codes</a> and we will get back to you as quick as possible.</Text>
+          <Text>Send us an email at <Link href="mailto:support@clicks.codes">support@clicks.codes</Link> and we will get back to you as quick as possible.</Text>
         </Panel>
         <Panel halfSize={true}>
           <Title>Discord</Title>
           <Divider />
-          <Text>For a faster response, you can join our <a href="https://discord.gg/bPaNnxe">Discord server</a> where our staff members can help you with any questions.</Text>
+          <Text>For a faster response, you can join our <Link href="https://discord.gg/bPaNnxe">Discord server</Link> where our staff members can help you with any questions.</Text>
           <Text>Type <Code colour="71AFE5">m!mail</Code> in <Code colour="71AFE5">#ticketmaster</Code> to create a support ticket.</Text>
         </Panel>
       </AutoLayout>
