diff --git a/Components/Header.js b/Components/Header.js
index 5aed6f3..89a6d1e 100644
--- a/Components/Header.js
+++ b/Components/Header.js
@@ -3,15 +3,15 @@
 import Head from 'next/head';
 
 class Header extends Component {
-	constructor(props) {
-		super(props);
+    constructor(props) {
+        super(props);
         this.keys = []
-	}
+    }
 
-	render() {
-		return (
+    render() {
+        return (
             <div className={Styles.header} style={{
-                backgroundImage:`linear-gradient(69.44deg, #${this.props.gradient[0]} 0%, #${this.props.gradient[1]} 100%)`,
+                backgroundImage: `linear-gradient(69.44deg, #${this.props.gradient[0]} 0%, #${this.props.gradient[1]} 100%)`,
                 margin: "0"
             }} id={this.props.id ? this.props.id : null}>
                 <Head>
@@ -25,7 +25,7 @@
                     <meta name="author" content="Clicks Minute Per" />
                     <meta name="og:author" content="Clicks Minute Per" />
                 </Head>
-                <img draggable={false} alt="" className={Styles.backgroundImage} src={`/Headers/${this.props.wave}.svg`} />
+                <img draggable={false} className={Styles.backgroundImage} src={`/Headers/${this.props.wave}.svg`} />
                 <div className={Styles.panel}>
                     <div className={Styles.titleContainer}>
                         <h1 className={Styles.title}>{this.props.name}</h1>
@@ -37,11 +37,11 @@
                                 return <a
                                     key={index}
                                     className={Styles.button}
-                                    style={{backgroundColor:`#${button.color}`, color:`#${button.buttonText}`}}
+                                    style={{ backgroundColor: `#${button.color}`, color: `#${button.buttonText}` }}
                                     href={button.link}
                                     target={button.target ? "_blank" : null}
                                     rel="noreferror">
-                                        {button.text}
+                                    {button.text}
                                 </a>
                             }) : null
                         }
@@ -51,8 +51,8 @@
                     <a href="#start" draggable={false}><img alt="Down arrow" src="/Arrow.svg" className={Styles.arrow} draggable={false} /></a>
                 </span>
             </div>
-		)
-	}
+        )
+    }
 }
 
 export default Header;
\ No newline at end of file
diff --git a/pages/clicksforms.js b/pages/clicksforms.js
index efe2699..68bd3e3 100644
--- a/pages/clicksforms.js
+++ b/pages/clicksforms.js
@@ -33,7 +33,7 @@
             <img alt="Up to 25 questions"    src="/Features/ClicksForms/Questions.svg" />
             <img alt="Many question types"   src="/Features/ClicksForms/Types.svg" />
             <img alt="Easily view responses" src="/Features/ClicksForms/Responses.svg" />
-            </TileRow>
+          </TileRow>
             <SectionHeading id="commands">Commands</SectionHeading>
             <Paragraph><code>/accept</code>: Completes a form you are asked to fill in</Paragraph>
             <Paragraph><code>/apply</code>: Apply to a form</Paragraph>
@@ -43,7 +43,7 @@
             <Paragraph><code>/responses</code>: Lets you view responses to your servers form</Paragraph>
             <Paragraph><code>/manage</code>: Lets you manage your servers forms</Paragraph>
             <SectionHeading id="services">Services</SectionHeading>
-            <Paragraph>ClicksForms support services like <a href="https://forms.google.com">Google Forms</a> through our Add-on (Awaiting approval)</Paragraph>
+            <Paragraph>ClicksForms support services like <a href="https://forms.google.com">Google Forms</a> through our Add-on</Paragraph>
             <Paragraph>Our API is public. You can view it on <a href="https://clicksminuteper.github.io/docs/clicksforms">GitHub</a></Paragraph>
             <SectionHeading id="invite">Invite</SectionHeading>
             <CardRow>
diff --git a/pages/rsm.js b/pages/rsm.js
index f5b4488..8b7ed65 100644
--- a/pages/rsm.js
+++ b/pages/rsm.js
@@ -36,18 +36,18 @@
       <AutoSpacing>
           <SectionHeading id="features">Features</SectionHeading>
           <Paragraph>For a full list of features, check our commands</Paragraph>
-          {/* <TileRow divless={false}>
-          <FeatureImages />
-          <FeatureAutomate />
-          <FeatureCAPTCHA />
-          <FeatureDeveloped />
-          <FeatureLogging />
-          <FeatureNSFW />
-          <FeaturePunish />
-          <FeatureRaids />
-          <FeatureStatistics />
-          <FeatureTags />
-          </TileRow> */}
+          <TileRow divless={false}>
+            <FeatureImages />
+            <FeatureAutomate />
+            <FeatureCAPTCHA />
+            <FeatureDeveloped />
+            <FeatureLogging />
+            <FeatureNSFW />
+            <FeaturePunish />
+            <FeatureRaids />
+            <FeatureStatistics />
+            <FeatureTags />
+          </TileRow>
           <SectionHeading id="commands">Commands</SectionHeading>
           <Paragraph><code>m!info</code>: Shows all commands and info.</Paragraph>
           <Paragraph><code>m!stats</code>: Shows the bot statistics</Paragraph>
