diff --git a/archetypes/anope.md b/archetypes/anope.md
new file mode 100644
index 00000000..a6cbb4d3
--- /dev/null
+++ b/archetypes/anope.md
@@ -0,0 +1,8 @@
+---
+title: "{{ .Name | title }}"
+date: {{ .Date }}
+draft: false
+type: multipage-index
+weight: 999
+---
+
diff --git a/archetypes/extbans.md b/archetypes/extbans.md
new file mode 100644
index 00000000..a6cbb4d3
--- /dev/null
+++ b/archetypes/extbans.md
@@ -0,0 +1,8 @@
+---
+title: "{{ .Name | title }}"
+date: {{ .Date }}
+draft: false
+type: multipage-index
+weight: 999
+---
+
diff --git a/archetypes/help.md b/archetypes/help.md
index ad394a78..a6cbb4d3 100644
--- a/archetypes/help.md
+++ b/archetypes/help.md
@@ -2,7 +2,7 @@
title: "{{ .Name | title }}"
date: {{ .Date }}
draft: false
-type: help
-weight: 2
+type: multipage-index
+weight: 999
---
diff --git a/archetypes/modes.md b/archetypes/modes.md
new file mode 100644
index 00000000..a6cbb4d3
--- /dev/null
+++ b/archetypes/modes.md
@@ -0,0 +1,8 @@
+---
+title: "{{ .Name | title }}"
+date: {{ .Date }}
+draft: false
+type: multipage-index
+weight: 999
+---
+
diff --git a/archetypes/rules.md b/archetypes/rules.md
new file mode 100644
index 00000000..a6cbb4d3
--- /dev/null
+++ b/archetypes/rules.md
@@ -0,0 +1,8 @@
+---
+title: "{{ .Name | title }}"
+date: {{ .Date }}
+draft: false
+type: multipage-index
+weight: 999
+---
+
diff --git a/content/anope.md b/content/anope.md
deleted file mode 100644
index 03e21a2a..00000000
--- a/content/anope.md
+++ /dev/null
@@ -1,588 +0,0 @@
----
-title: "Anope"
-date: 2019-01-10T21:54:56Z
-draft: false
-type: page
----
-
-**You can use our [web services portal](https://anope.snoonet.org) to modify any and all settings. This will allow you to change the same options shown on this page, but with a friendly GUI!**
-
-
----
-
-#### Help Categories:
-
-**NickServ **
-
-**ChanServ **
-
-**MemoServ **
-
-**BotServ **
-
-**HostServ **
-
----
-**Key**:
-
-`` denote required information.
-
-`{these brackets}` denote that you may pick one of the options presented.
-
-`[these brackets]` denote entirely optional parameters.
-
-| Command | Optional Alias |
-|---|---------------------------------|
-|`/msg NickServ [COMMAND]` | `/ns [COMMAND]` |
-|`/msg ChanServ [COMMAND]` | `/cs [COMMAND]` |
-|`/msg MemoServ [COMMAND]` | `/ms [COMMAND]` |
-|`/msg BotServ [COMMAND]` | `/bs [COMMAND]` |
-
-
-
----
----
-
-
-
-# NickServ
-*^back ^to ^top *
-
-**General NickServ in-network help:**
-
-`/msg NickServ HELP [COMMAND]`
-
-*Without a [COMMAND] parameter, this will list the NickServ commands and descriptions. If you fill in the [command] parameter it will give you detailed instructions on that command.*
-
----
-
-To use the awesome features from NickServ, you must first register your nick. Make sure you're using the nick that you want by typing:
-
-`/nick `
-
-Then type this to register your nick:
-
-`/msg NickServ REGISTER `
-
-Make sure that you use a valid email, as you'll have to confirm that it is yours. If you don't get the email you may have the server resend it to you using this command:
-
-`/msg NickServ RESEND`
-
----
-
-
-Every time you join Snoonet after registering your nick, you'll be prompted for your password. Just type this:
-
-`/msg NickServ IDENTIFY `
-
-and you'll be logged in!
-
-*Most clients offer a way to save your password so that you do not have to manually type it each time. For client specific help, visit [#TechSupport!](http://webchat.snoonet.org/techsupport)*
-
----
-
-Forgot your password? No problem. Use this:
-
-`/msg NickServ RESETPASS `
-
----
-
-Sometimes you get disconnected, but your nick is still present on the network. When this happens you can regain control of your nick by typing:
-
- `/msg NickServ GHOST `
-
-Or
-
- `/msg NickServ RECOVER `
-
----
-
-You can have multiple nicks. Just switch to the nick you want to add to your registered nick and type:
-
-`/msg NickServ GROUP `
-
-to undo it, type: `/msg NickServ UNGROUP [nick]`
-
-To see all the nicknames you have in your group, type:
-
- `/msg NickServ GLIST`
-
----
-
-If you no longer wish to have your nickname registered, type:
-
-`/msg NickServ DROP `
-
----
-
-To view the information about your nick, such as when you registered, type:
-
- `/msg NickServ INFO `
-
----
-
-To edit the items that people can view about you with the INFO command such as your facebook or email, type:
-
-`/msg NickServ SET [option]`
-
----
-
-You can also set up a list of channels to join automatically when you log in! The command for this is:
-
-`/msg NickServ AJOIN {ADD|DEL} [nickname] [key]`
-
-To view your autojoin channels, type:
-
-`/msg NickServ AJOIN LIST`
-
-List channels you have access on:
-
-`/msg ChanServ ALIST`
-
----
-
----
-
-
-
-# ChanServ
-*^back ^to ^top *
-
-**General ChanServ in-network help:**
-
-`/msg ChanServ HELP [COMMAND]`
-
-*Without a [COMMAND] parameter, this will list the ChanServ commands and descriptions. If you fill in the [command] parameter it will give you detailed instructions on that command.*
-
-
-
----
-
-**Register a channel:**
-
-`/msg ChanServ REGISTER [description]`
-
----
-
-**Cancel the registration of a channel:**
-
-`/msg ChanServ DROP `
-
-*Note: enter the same channel name twice. You can only do this if it is YOUR channel or you have a Snoonet admin do it for you.*
-
----
-
-**List information about a registered channel:**
-
-`/msg ChanServ INFO `
-
-*This includes its founder, time of registration, and last time used. If the user issuing the command has the appropriate access for it, then the description, successor, last topic set, settings and expiration time will also be displayed when applicable.*
-
----
-
-**Invite someone to a channel:**
-
-`/msg ChanServ INVITE `
-
-*Note: You can invite yourself into a channel if you have the correct flags in that channel.
-
----
-
-**Set an entry message for a channel**
-
-`/msg ChanServ ENTRYMSG ADD `
-
----
-
-**Remove an entry message for a channel**
-
-`/msg ChanServ ENTRYMSG CLEAR`
-
----
-
- **Kick a user:**
-
-`/msg ChanServ KICK {nick | mask} [reason]`
-
-or
-
-`!kick {nick | mask} [reason]`
-
-*Kicks a specified nick from a channel. You may kick by username or by hostmask.*
-
----
-
-**Ban a user:**
-
-`/msg ChanServ BAN [+expiry] {nick | mask} [reason]`
-
-or
-
-`!ban {nick | mask} [reason]`
-
-*Bans specified nick from a channel. You may ban by username or by hostmask.*
-
----
-
-
-
-`/msg ChanServ UNBAN [nick]` Remove all bans preventing a user from entering a channel
-
-or
-
-`!unban {nick | mask} [reason]`
-
----
-
-**View user flags:**
-
-
-`/msg ChanServ FLAGS LIST [mask | +flags]`
-
-or
-
-`!flags {nick | mask} [reason]`
-
----
-
-**Clear all flags:**
-
-`/msg ChanServ LIST channel CLEAR`
-
----
-
-**Add user flags:**
-
-`/msg ChanServ FLAGS channel MODIFY <+/- changes>`
-
-or
-
-`!flags modify {nick | mask} [reason]`
-
-For example `/msg ChanServ FLAGS #snoonet modify *!*@snoonet/* +Bc` will set all Snoonet staff to be allowed to use Botserv SAY and ACT commands, as well as grant them the ability to use fantasy commands.
-
-| Flag | Use |
-|---|---------------------------------|
-|`b` | Allowed to ban users |
-|`B` | Allowed to use SAY and ACT commands |
-|`c` | Allowed to use fantasy commands |
-|`f `| Allowed to modify or view the access list |
-|`F` | Allowed to issue commands restricted to channel founders |
-|`G` | Allowed to use GETKEY command |
-|`g` | Greet message displayed on join |
-|`H` | Automatic halfop upon join |
-|`h` | Allowed to (de)halfop users and him/herself |
-|`I` | Allowed to get full INFO output |
-|`i` | Allowed to use the INVITE command |
-|`K` | Allowed to use the AKICK command, modify badwords list |
-|`k` | Allowed to use the KICK command |
-|`m` | Allowed to read channel memos |
-|`N` | Prevents users being kicked by Services |
-|`O` | Automatic channel operator status upon join |
-|`o` | Allowed to (de)op users and him/herself |
-|`s` | Allowed to assign/unassign a bot, use MODE commands and set channel settings |
-|`t` | Allowed to change channel topics |
-|`u` | Allowed to unban users |
-|`V` | Automatic voice on join |
-|`v` | Allowed to (de)voice users and him/herself |
-
-You can also view the list of users that have access in a given channel by using `/msg ChanServ ACCESS list`
-
-To find out more about the access list and levels, type `/msg ChanServ HELP ACCESS`
-
-Additionally, if you are curious as to what channels you have access flags for, type `/msg NickServ LISTCHANS`
-
----
-
-
-**Stats**
-
-
-To turn on/off stats tracking for your channel:
-
-`/msg ChanServ SET chanstats #channel on/off`
-
-`/msg ChanServ STATS [channel]` Displays your Channel Stats
-
-`/msg ChanServ TOP [channel]` Displays the top 3 users of a channel
-
-`/msg ChanServ TOP10 [channel]` Displays the top 10 users of a channel
-
-`/msg ChanServ GSTATS` Displays your Global Stats.
-
-`/msg ChanServ GTOP` Displays the top 3 users of the network
-
-`/msg ChanServ GTOP10` Displays the top 10 users of the network
-
-To opt out of statistics:
-
-`/msg NickServ SET chanstats off`
-
----
----
-
-
-
-# BotServ
-*^back ^to ^top *
-
-**General BotServ in-network help:**
-
-`/msg BotServ HELP [COMMAND]`
-
-*Without a [COMMAND] parameter, this will list the BotServ commands and descriptions. If you fill in the [command] parameter it will give you detailed instructions on that command.*
-
----
-
-**Botlist:**
-
-`/msg BotServ BOTLIST`
-
-*Lists all available bots on Snoonet.*
-
----
-
-**BotServ Info:**
-
-`/msg BotServ INFO {channel | nickname}`
-
-*Allows you to see BotServ information about a channel or a bot. If the parameter is a channel, then you'll get information such as enabled kickers. If the parameter is a nick, you'll get information about a bot, such as creation time or number of channels it is on.*
-
----
-
-**Assign a bot:**
-
-`/msg BotServ ASSIGN `
-
-*Assigns a bot to a channel. You can then configure the bot for the channel so it fits your needs. You can only assign one bot through BotServ at a time.*
-
----
-
-**Configure bot options:**
-
-`/msg BotServ SET (channel | bot) `
-
-*For more information on a particular option and it’s settings, type `/msg BotServ HELP set `.*
-
-| Set | Use |
-|---|---------------------------------|
-| BANEXPIRE | Configures the time bot bans expire in |
-| DONTKICKOPS | Protects ops against bot kicks |
-| DONTKICKVOICES | Proctects voices against bot kicks |
-| FANTASY | Enables fantaisist commands |
-| GREET | Enables greet messages |
-| NOBOT | Prevents a bot from being assigned to a channel |
-| PRIVATE | Prevents a bot from being assigned by non IRC operators |
-
----
-
-**Configure kickers:**
-
-`/msg BotServ KICK {ON|OFF} [settings]`
-
-*For more information on a particular option and it’s settings, type `/msg BotServ HELP kick `*
-
-| Kick | Use |
-|---|---------------------------------|
-| AMSG | Allows bot to kick users who send the same message to multiple channels where BotServ bots are. |
-| BADWORDS | Allows bot to kick users who say certain words on the channels. |
-| BOLDS | Allows bot to kick users who use bolds. |
-| CAPS | Allows bot to kick users who are talking in caps. |
-| COLORS | Allows bot to kick users who use colors. |
-| FLOOD | Allows bot to kick users who are flooding the channel with multiple lines of text. |
-| ITALICS | Allows bot to kick users who use italics. |
-| REPEAT | Allows bot to kick users who are repeating themselves. |
-| REVERSES | Allows bot to kick users who use reverses. |
-| UNDERLINES | Allows bot to kick users who use underlines. |
-
-**Maintain Badwords:**
-
-To add a word to the badwords list
-
-`/msg BotServ BADWORDS ADD [SINGLE | START | END]`
-
-To delete a word from the badwords list
-
-`/msg BotServ BADWORDS DEL {word | entry-num | list}`
-
-To display the badwords list
-
-`/msg BotServ BADWORDS LIST [mask | list]`
-
-To clear all entries from the badwords list
-
-`/msg BotServ BADWORDS CLEAR`
-
-*Maintains the bad words list for a channel. This list determines which words users are to be kicked for using when the bad words kicker is enabled.*
-
----
-
-**Say command:**
-
-`/msg BotServ SAY `
-
-*Makes the bot say the given text on the given channel.*
-
----
-
-**Act command:**
-
-`/msg BotServ ACT `
-
-*Makes the bot do the equivalent of a "/me" command on the given channel using the given text.*
-
----
-
-**Unassign a bot:**
-
-`/msg BotServ UNASSIGN `
-
-*Unassigns the assigned bot from the channel. When you use this command, the bot won't join the channel anymore. However, bot configuration for the channel is kept, so you will always be able to reassign a bot later without having to reconfigure it entirely.*
-
----
----
-
-
-
-# MemoServ
-*^back ^to ^top *
-
-**General MemoServ in-network help:**
-
-`/msg MemoServ HELP [COMMAND]`
-
-*Without a [COMMAND] parameter, this will list the MemoServ commands and descriptions. If you fill in the [command] parameter it will give you detailed instructions on that command.*
-
----
-
-**Information:**
-
-*MemoServ is a utility allowing IRC users to send short messages to other IRC users, whether they are online at the time or not, or to channels. Both the sender's nickname and the target nickname or channel must be registered in order to send a memo.*
-
-`/msg MemoServ INFO`
-
-*Displays information on the number of memos you have, how many of them are unread, and how many total memos you can receive.*
-
-`/msg MemoServ INFO `
-
-*Displays information on the number of memos the channel has, how many of them are unread, and how many total memos the channel can receive.*
-
----
-
-**Set options:**
-
-`/msg MemoServ SET `
-
-*Sets various memo options.*
-
-| Option | Description |
-|---|---------------------------------|
-| NOTIFY | Changes when you will be notified about new memos (only for nicknames) |
-| LIMIT | Sets the maximum number of memos you can receive. |
-
-*For more information on a specific option type `/msg MemoServ HELP SET `.*
-
----
-
-**Read memos:**
-
-`/msg MemoServ READ [channel] {LAST | NEW | num | list}`
-
-*Sends you the text of the memos specified. If LAST is given, sends you the memo you most recently received. If NEW is given, sends you all of your new memos. Otherwise, sends you memo number num. You can also give a list of numbers, as in this example:*
-
-`/msg MemoServ READ 2-5,7-9`
-
-Displays memos numbered 2 through 5 and 7 through 9.
-
----
-
-**List memo:**
-
-`/msg MemoServ LIST [channel] [NEW | list]`
-
-*Lists any memos you currently have. With NEW, lists only new (unread) memos. Unread memos are marked with a "*" to the left of the memo number. You can also specify a list of numbers, as in the example below:
-
-`/msg MemoServ LIST 2-5,7-9`
-
-Lists memos numbered 2 through 5 and 7 through 9.
-
----
-
-**Ignore feature:**
-
-To add a new ignore entry
-
-`/msg MemoServ IGNORE [channel] ADD entry`
-
-To delete an existing ignore entry
-
-`/msg MemoServ IGNORE [channel] DELETE entry`
-
-To list all ignore entries
-
-`/msg MemoServ IGNORE [channel] LIST`
-
-*Allows you to set users (by nick or host) to ignore, keeping them from sending a memo to you or a channel. If someone on the memo ignore list tries to memo you or a channel they will not be told that you have them ignored.*
-
----
-
-**Delete memos:**
-
-`/msg MemoServ DEL [channel] {LAST | ALL | num | list}`
-
-*Deletes the specified memo or memos. If LAST is given, the last memo will be deleted. If ALL is given, deletes all of your memos. To delete a certain memo, specify the memo number.*
-
-`/msg MemoServ DEL 1`
-
-This will delete memo number 1.
-
-*To delete multiple memos, you can list multiple memo numbers or ranges of numbers:*
-
-`/msg MemoServ DEL 2-5,7-9`
-
-This will delete memos numbered 2 through 5 and 7 through 9.
-
----
-
-
-**Send memos:**
-
-`/msg MemoServ SEND {nick | channel} `
-
-*Sends the named nick or channel a memo containing memo-text. When sending to a nickname, the recipient will receive a notice that he/she has a new memo. The target nickname/channel must be registered.*
-
-*To send a memo with a read receipt type `/msg MemoServ RSEND {nick | channel} memo-text`. Once the memo is read by its recipient, an automatic notification memo will be sent to the sender informing him/her that the memo has been read.*
-
----
-
-**Check sent memo:**
-
-`/msg MemoServ CHECK `
-
-*Checks whether the last memo you sent to nick has been read or not. Note that this does only work with nicks, not with channels.*
-
----
-
-**Cancel last memo:**
-
-`/msg MemoServ CANCEL {nick | channel}`
-
-*Cancels the last memo you sent to the given nick or channel, provided it has not been read at the time you use the command. You can not cancel a memo once it has been read.*
-
----
----
-
-
-
-# HostServ
-*^back ^to ^top *
-
-**General HostServin-network help:**
-
-`/msg HostServ HELP [COMMAND]`
-
-*Without a [COMMAND] parameter, this will list the HostServ commands and descriptions. If you fill in the [command] parameter it will give you detailed instructions on that command.*
-
----
----
-
diff --git a/content/anope/_index.md b/content/anope/_index.md
new file mode 100644
index 00000000..fcc03b65
--- /dev/null
+++ b/content/anope/_index.md
@@ -0,0 +1,9 @@
+---
+title: "Anope"
+date: 2018-12-30T21:43:20Z
+draft: false
+type: multipage-index
+---
+
+You can use our [web services portal](https://anope.snoonet.org) to modify any and all settings. This will allow you to change the same options shown on this page, but with a friendly GUI!**
+
diff --git a/content/anope/botserv.md b/content/anope/botserv.md
new file mode 100644
index 00000000..e4437183
--- /dev/null
+++ b/content/anope/botserv.md
@@ -0,0 +1,121 @@
+---
+title: "BotServ"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 4
+---
+
+**General BotServ in-network help:**
+
+`/msg BotServ HELP [COMMAND]`
+
+*Without a [COMMAND] parameter, this will list the BotServ commands and descriptions. If you fill in the [command] parameter it will give you detailed instructions on that command.*
+
+---
+
+**Botlist:**
+
+`/msg BotServ BOTLIST`
+
+*Lists all available bots on Snoonet.*
+
+---
+
+**BotServ Info:**
+
+`/msg BotServ INFO {channel | nickname}`
+
+*Allows you to see BotServ information about a channel or a bot. If the parameter is a channel, then you'll get information such as enabled kickers. If the parameter is a nick, you'll get information about a bot, such as creation time or number of channels it is on.*
+
+---
+
+**Assign a bot:**
+
+`/msg BotServ ASSIGN `
+
+*Assigns a bot to a channel. You can then configure the bot for the channel so it fits your needs. You can only assign one bot through BotServ at a time.*
+
+---
+
+**Configure bot options:**
+
+`/msg BotServ SET (channel | bot) `
+
+*For more information on a particular option and it’s settings, type `/msg BotServ HELP set `.*
+
+| Set | Use |
+|---|---------------------------------|
+| BANEXPIRE | Configures the time bot bans expire in |
+| DONTKICKOPS | Protects ops against bot kicks |
+| DONTKICKVOICES | Proctects voices against bot kicks |
+| FANTASY | Enables fantaisist commands |
+| GREET | Enables greet messages |
+| NOBOT | Prevents a bot from being assigned to a channel |
+| PRIVATE | Prevents a bot from being assigned by non IRC operators |
+
+---
+
+**Configure kickers:**
+
+`/msg BotServ KICK {ON|OFF} [settings]`
+
+*For more information on a particular option and it’s settings, type `/msg BotServ HELP kick `*
+
+| Kick | Use |
+|---|---------------------------------|
+| AMSG | Allows bot to kick users who send the same message to multiple channels where BotServ bots are. |
+| BADWORDS | Allows bot to kick users who say certain words on the channels. |
+| BOLDS | Allows bot to kick users who use bolds. |
+| CAPS | Allows bot to kick users who are talking in caps. |
+| COLORS | Allows bot to kick users who use colors. |
+| FLOOD | Allows bot to kick users who are flooding the channel with multiple lines of text. |
+| ITALICS | Allows bot to kick users who use italics. |
+| REPEAT | Allows bot to kick users who are repeating themselves. |
+| REVERSES | Allows bot to kick users who use reverses. |
+| UNDERLINES | Allows bot to kick users who use underlines. |
+
+**Maintain Badwords:**
+
+To add a word to the badwords list
+
+`/msg BotServ BADWORDS ADD [SINGLE | START | END]`
+
+To delete a word from the badwords list
+
+`/msg BotServ BADWORDS DEL {word | entry-num | list}`
+
+To display the badwords list
+
+`/msg BotServ BADWORDS LIST [mask | list]`
+
+To clear all entries from the badwords list
+
+`/msg BotServ BADWORDS CLEAR`
+
+*Maintains the bad words list for a channel. This list determines which words users are to be kicked for using when the bad words kicker is enabled.*
+
+---
+
+**Say command:**
+
+`/msg BotServ SAY `
+
+*Makes the bot say the given text on the given channel.*
+
+---
+
+**Act command:**
+
+`/msg BotServ ACT `
+
+*Makes the bot do the equivalent of a "/me" command on the given channel using the given text.*
+
+---
+
+**Unassign a bot:**
+
+`/msg BotServ UNASSIGN `
+
+*Unassigns the assigned bot from the channel. When you use this command, the bot won't join the channel anymore. However, bot configuration for the channel is kept, so you will always be able to reassign a bot later without having to reconfigure it entirely.*
+
diff --git a/content/anope/chanserv.md b/content/anope/chanserv.md
new file mode 100644
index 00000000..2f204b44
--- /dev/null
+++ b/content/anope/chanserv.md
@@ -0,0 +1,172 @@
+---
+title: "ChanServ"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 3
+---
+
+**General ChanServ in-network help:**
+
+`/msg ChanServ HELP [COMMAND]`
+
+*Without a [COMMAND] parameter, this will list the ChanServ commands and descriptions. If you fill in the [command] parameter it will give you detailed instructions on that command.*
+
+---
+
+**Register a channel:**
+
+`/msg ChanServ REGISTER [description]`
+
+---
+
+**Cancel the registration of a channel:**
+
+`/msg ChanServ DROP `
+
+*Note: enter the same channel name twice. You can only do this if it is YOUR channel or you have a Snoonet admin do it for you.*
+
+---
+
+**List information about a registered channel:**
+
+`/msg ChanServ INFO `
+
+*This includes its founder, time of registration, and last time used. If the user issuing the command has the appropriate access for it, then the description, successor, last topic set, settings and expiration time will also be displayed when applicable.*
+
+---
+
+**Invite someone to a channel:**
+
+`/msg ChanServ INVITE `
+
+*Note: You can invite yourself into a channel if you have the correct flags in that channel.
+
+---
+
+**Set an entry message for a channel**
+
+`/msg ChanServ ENTRYMSG ADD `
+
+---
+
+**Remove an entry message for a channel**
+
+`/msg ChanServ ENTRYMSG CLEAR`
+
+---
+
+**Kick a user:**
+
+`/msg ChanServ KICK {nick | mask} [reason]`
+
+or
+
+`!kick {nick | mask} [reason]`
+
+*Kicks a specified nick from a channel. You may kick by username or by hostmask.*
+
+---
+
+**Ban a user:**
+
+`/msg ChanServ BAN [+expiry] {nick | mask} [reason]`
+
+or
+
+`!ban {nick | mask} [reason]`
+
+*Bans specified nick from a channel. You may ban by username or by hostmask.*
+
+---
+
+
+
+`/msg ChanServ UNBAN [nick]` Remove all bans preventing a user from entering a channel
+
+or
+
+`!unban {nick | mask} [reason]`
+
+---
+
+**View user flags:**
+
+
+`/msg ChanServ FLAGS LIST [mask | +flags]`
+
+or
+
+`!flags {nick | mask} [reason]`
+
+---
+
+**Clear all flags:**
+
+`/msg ChanServ LIST channel CLEAR`
+
+---
+
+**Add user flags:**
+
+`/msg ChanServ FLAGS channel MODIFY <+/- changes>`
+
+or
+
+`!flags modify {nick | mask} [reason]`
+
+For example `/msg ChanServ FLAGS #snoonet modify *!*@snoonet/* +Bc` will set all Snoonet staff to be allowed to use Botserv SAY and ACT commands, as well as grant them the ability to use fantasy commands.
+
+| Flag | Use |
+|---|---------------------------------|
+|`b` | Allowed to ban users |
+|`B` | Allowed to use SAY and ACT commands |
+|`c` | Allowed to use fantasy commands |
+|`f `| Allowed to modify or view the access list |
+|`F` | Allowed to issue commands restricted to channel founders |
+|`G` | Allowed to use GETKEY command |
+|`g` | Greet message displayed on join |
+|`H` | Automatic halfop upon join |
+|`h` | Allowed to (de)halfop users and him/herself |
+|`I` | Allowed to get full INFO output |
+|`i` | Allowed to use the INVITE command |
+|`K` | Allowed to use the AKICK command, modify badwords list |
+|`k` | Allowed to use the KICK command |
+|`m` | Allowed to read channel memos |
+|`N` | Prevents users being kicked by Services |
+|`O` | Automatic channel operator status upon join |
+|`o` | Allowed to (de)op users and him/herself |
+|`s` | Allowed to assign/unassign a bot, use MODE commands and set channel settings |
+|`t` | Allowed to change channel topics |
+|`u` | Allowed to unban users |
+|`V` | Automatic voice on join |
+|`v` | Allowed to (de)voice users and him/herself |
+
+You can also view the list of users that have access in a given channel by using `/msg ChanServ ACCESS list`
+
+To find out more about the access list and levels, type `/msg ChanServ HELP ACCESS`
+
+Additionally, if you are curious as to what channels you have access flags for, type `/msg NickServ LISTCHANS`
+
+## Stats
+
+To turn on/off stats tracking for your channel:
+
+`/msg ChanServ SET chanstats #channel on/off`
+
+`/msg ChanServ STATS [channel]` Displays your Channel Stats
+
+`/msg ChanServ TOP [channel]` Displays the top 3 users of a channel
+
+`/msg ChanServ TOP10 [channel]` Displays the top 10 users of a channel
+
+`/msg ChanServ GSTATS` Displays your Global Stats.
+
+`/msg ChanServ GTOP` Displays the top 3 users of the network
+
+`/msg ChanServ GTOP10` Displays the top 10 users of the network
+
+To opt out of statistics:
+
+`/msg NickServ SET chanstats off`
+
diff --git a/content/anope/hostserv.md b/content/anope/hostserv.md
new file mode 100644
index 00000000..af2b8c2c
--- /dev/null
+++ b/content/anope/hostserv.md
@@ -0,0 +1,14 @@
+---
+title: "HostServ"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 6
+---
+
+**General HostServ in-network help:**
+
+`/msg HostServ HELP [COMMAND]`
+
+*Without a [COMMAND] parameter, this will list the HostServ commands and descriptions. If you fill in the [command] parameter it will give you detailed instructions on that command.*
+
diff --git a/content/anope/key.md b/content/anope/key.md
new file mode 100644
index 00000000..919c998b
--- /dev/null
+++ b/content/anope/key.md
@@ -0,0 +1,21 @@
+---
+title: "Key"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 1
+---
+
+`` denote required information.
+
+`{these brackets}` denote that you may pick one of the options presented.
+
+`[these brackets]` denote entirely optional parameters.
+
+| Command | Optional Alias |
+|---|---------------------------------|
+|`/msg NickServ [COMMAND]` | `/ns [COMMAND]` |
+|`/msg ChanServ [COMMAND]` | `/cs [COMMAND]` |
+|`/msg MemoServ [COMMAND]` | `/ms [COMMAND]` |
+|`/msg BotServ [COMMAND]` | `/bs [COMMAND]` |
+
diff --git a/content/anope/memoserv.md b/content/anope/memoserv.md
new file mode 100644
index 00000000..78c3c4d7
--- /dev/null
+++ b/content/anope/memoserv.md
@@ -0,0 +1,130 @@
+---
+title: "MemoServ"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 5
+---
+
+**General MemoServ in-network help:**
+
+`/msg MemoServ HELP [COMMAND]`
+
+*Without a [COMMAND] parameter, this will list the MemoServ commands and descriptions. If you fill in the [command] parameter it will give you detailed instructions on that command.*
+
+---
+
+**Information:**
+
+*MemoServ is a utility allowing IRC users to send short messages to other IRC users, whether they are online at the time or not, or to channels. Both the sender's nickname and the target nickname or channel must be registered in order to send a memo.*
+
+`/msg MemoServ INFO`
+
+*Displays information on the number of memos you have, how many of them are unread, and how many total memos you can receive.*
+
+`/msg MemoServ INFO `
+
+*Displays information on the number of memos the channel has, how many of them are unread, and how many total memos the channel can receive.*
+
+---
+
+**Set options:**
+
+`/msg MemoServ SET `
+
+*Sets various memo options.*
+
+| Option | Description |
+|---|---------------------------------|
+| NOTIFY | Changes when you will be notified about new memos (only for nicknames) |
+| LIMIT | Sets the maximum number of memos you can receive. |
+
+*For more information on a specific option type `/msg MemoServ HELP SET `.*
+
+---
+
+**Read memos:**
+
+`/msg MemoServ READ [channel] {LAST | NEW | num | list}`
+
+*Sends you the text of the memos specified. If LAST is given, sends you the memo you most recently received. If NEW is given, sends you all of your new memos. Otherwise, sends you memo number num. You can also give a list of numbers, as in this example:*
+
+`/msg MemoServ READ 2-5,7-9`
+
+Displays memos numbered 2 through 5 and 7 through 9.
+
+---
+
+**List memo:**
+
+`/msg MemoServ LIST [channel] [NEW | list]`
+
+*Lists any memos you currently have. With NEW, lists only new (unread) memos. Unread memos are marked with a "*" to the left of the memo number. You can also specify a list of numbers, as in the example below:
+
+`/msg MemoServ LIST 2-5,7-9`
+
+Lists memos numbered 2 through 5 and 7 through 9.
+
+---
+
+**Ignore feature:**
+
+To add a new ignore entry
+
+`/msg MemoServ IGNORE [channel] ADD entry`
+
+To delete an existing ignore entry
+
+`/msg MemoServ IGNORE [channel] DELETE entry`
+
+To list all ignore entries
+
+`/msg MemoServ IGNORE [channel] LIST`
+
+*Allows you to set users (by nick or host) to ignore, keeping them from sending a memo to you or a channel. If someone on the memo ignore list tries to memo you or a channel they will not be told that you have them ignored.*
+
+---
+
+**Delete memos:**
+
+`/msg MemoServ DEL [channel] {LAST | ALL | num | list}`
+
+*Deletes the specified memo or memos. If LAST is given, the last memo will be deleted. If ALL is given, deletes all of your memos. To delete a certain memo, specify the memo number.*
+
+`/msg MemoServ DEL 1`
+
+This will delete memo number 1.
+
+*To delete multiple memos, you can list multiple memo numbers or ranges of numbers:*
+
+`/msg MemoServ DEL 2-5,7-9`
+
+This will delete memos numbered 2 through 5 and 7 through 9.
+
+---
+
+
+**Send memos:**
+
+`/msg MemoServ SEND {nick | channel} `
+
+*Sends the named nick or channel a memo containing memo-text. When sending to a nickname, the recipient will receive a notice that he/she has a new memo. The target nickname/channel must be registered.*
+
+*To send a memo with a read receipt type `/msg MemoServ RSEND {nick | channel} memo-text`. Once the memo is read by its recipient, an automatic notification memo will be sent to the sender informing him/her that the memo has been read.*
+
+---
+
+**Check sent memo:**
+
+`/msg MemoServ CHECK `
+
+*Checks whether the last memo you sent to nick has been read or not. Note that this does only work with nicks, not with channels.*
+
+---
+
+**Cancel last memo:**
+
+`/msg MemoServ CANCEL {nick | channel}`
+
+*Cancels the last memo you sent to the given nick or channel, provided it has not been read at the time you use the command. You can not cancel a memo once it has been read.*
+
diff --git a/content/anope/nickserv.md b/content/anope/nickserv.md
new file mode 100644
index 00000000..616ec6ba
--- /dev/null
+++ b/content/anope/nickserv.md
@@ -0,0 +1,99 @@
+---
+title: "NickServ"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 2
+---
+
+**General NickServ in-network help:**
+
+`/msg NickServ HELP [COMMAND]`
+
+*Without a [COMMAND] parameter, this will list the NickServ commands and descriptions. If you fill in the [command] parameter it will give you detailed instructions on that command.*
+
+---
+
+To use the awesome features from NickServ, you must first register your nick. Make sure you're using the nick that you want by typing:
+
+`/nick `
+
+Then type this to register your nick:
+
+`/msg NickServ REGISTER `
+
+Make sure that you use a valid email, as you'll have to confirm that it is yours. If you don't get the email you may have the server resend it to you using this command:
+
+`/msg NickServ RESEND`
+
+---
+
+
+Every time you join Snoonet after registering your nick, you'll be prompted for your password. Just type this:
+
+`/msg NickServ IDENTIFY `
+
+and you'll be logged in!
+
+*Most clients offer a way to save your password so that you do not have to manually type it each time. For client specific help, visit [#TechSupport!](http://webchat.snoonet.org/techsupport)*
+
+---
+
+Forgot your password? No problem. Use this:
+
+`/msg NickServ RESETPASS `
+
+---
+
+Sometimes you get disconnected, but your nick is still present on the network. When this happens you can regain control of your nick by typing:
+
+ `/msg NickServ GHOST `
+
+ Or
+
+`/msg NickServ RECOVER `
+
+---
+
+You can have multiple nicks. Just switch to the nick you want to add to your registered nick and type:
+
+`/msg NickServ GROUP `
+
+to undo it, type: `/msg NickServ UNGROUP [nick]`
+
+To see all the nicknames you have in your group, type:
+
+`/msg NickServ GLIST`
+
+---
+
+If you no longer wish to have your nickname registered, type:
+
+`/msg NickServ DROP `
+
+---
+
+To view the information about your nick, such as when you registered, type:
+
+ `/msg NickServ INFO `
+
+ ---
+
+ To edit the items that people can view about you with the INFO command such as your facebook or email, type:
+
+ `/msg NickServ SET [option]`
+
+ ---
+
+ You can also set up a list of channels to join automatically when you log in! The command for this is:
+
+ `/msg NickServ AJOIN {ADD|DEL} [nickname] [key]`
+
+ To view your autojoin channels, type:
+
+ `/msg NickServ AJOIN LIST`
+
+ List channels you have access on:
+
+ `/msg ChanServ ALIST`
+
diff --git a/content/extbans.md b/content/extbans.md
deleted file mode 100644
index dc81b915..00000000
--- a/content/extbans.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: "Extended bans"
-date: 2019-01-10T21:57:32Z
-draft: false
-type: page
----
-
-Extbans come in two flavors on Snoonet. Matching and Acting extbans. Matching extbans match users based on a series of criteria, and can be used anywhere that accepts a hostmask. Acting extbans, though, can only be used with `+b` and `+e` chanmodes. An `+e` chanmode will *always* take precedence over a `+b` chanmode
-
-# Matching Extbans
-
-| Name | Syntax | Effect |
-| ---------------- | --------------------- | --------------------------------------------------------------------------------- |
-| Oper | `O:[operlevel]` | Matches the opertype. Can accept wildcards for all opers |
-| Account | `R:[account]` | Matches the service account. Accepts a wildcard |
-| Unregistered | `U:[ban]` | Matches an unregistered user who matches the [ban] |
-| Channel | `j:[state][#channel]` | Matches a user in the channel. State defines the user's level, such as +, %, or @ |
-| Gecos (realname) | `r:[gecos]` | Matches against the gecos (real name field) |
-| Server | `s:[server]` | Matches against all users on the servername |
-| SSL Fingerprint | `z:[fingerprint]` | Matches against all users with the ssl fingerprint. Accepts a wildcard |
-
-# Acting Extbans
-
-| Syntax | Effect |
-| --------- | --------------------------------------------------------------------------- |
-| `A:[ban]` | Blocks matching users from using `/INVITE` |
-| `B:[ban]` | Disallows matching users from using ALL CAPS. |
-| `C:[ban]` | Blocks CTCPs from matching users. |
-| `N:[ban]` | Disallows matching users from changing their nickname while in the channel. |
-| `Q:[ban]` | Disallows /KICK from matching users. |
-| `S:[ban]` | Strips control codes from messages matching users. |
-| `T:[ban]` | Disallows NOTICEs from matching users to the channel |
-| `c:[ban]` | Blocks messages from matching users if they contain color codes. |
-| `m:[ban]` | Blocks messages to the channel from matching users. |
-| `p:[ban]` | Hides part messages from matching users. |
-
diff --git a/content/extbans/_index.md b/content/extbans/_index.md
new file mode 100644
index 00000000..e4cb6204
--- /dev/null
+++ b/content/extbans/_index.md
@@ -0,0 +1,13 @@
+---
+title: "Channel Modes"
+date: 2018-12-30T21:43:20Z
+draft: false
+type: multipage-index
+---
+
+Channel modes can be set by using the *mode* command. It looks like this: `/mode #channel +m`
+
+Some modes take params, and their syntax is displayed next to their description.
+
+Keep in mind modes **are** case sensitive. `+B` and `+b` are different.
+
diff --git a/content/extbans/acting_extbans.md b/content/extbans/acting_extbans.md
new file mode 100644
index 00000000..120f109e
--- /dev/null
+++ b/content/extbans/acting_extbans.md
@@ -0,0 +1,21 @@
+---
+title: "Acting Extbans"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 2
+---
+
+| Syntax | Effect |
+| --------- | --------------------------------------------------------------------------- |
+| `A:[ban]` | Blocks matching users from using `/INVITE` |
+| `B:[ban]` | Disallows matching users from using ALL CAPS. |
+| `C:[ban]` | Blocks CTCPs from matching users. |
+| `N:[ban]` | Disallows matching users from changing their nickname while in the channel. |
+| `Q:[ban]` | Disallows /KICK from matching users. |
+| `S:[ban]` | Strips control codes from messages matching users. |
+| `T:[ban]` | Disallows NOTICEs from matching users to the channel |
+| `c:[ban]` | Blocks messages from matching users if they contain color codes. |
+| `m:[ban]` | Blocks messages to the channel from matching users. |
+| `p:[ban]` | Hides part messages from matching users. |
+
diff --git a/content/extbans/matching_extbans.md b/content/extbans/matching_extbans.md
new file mode 100644
index 00000000..c7c1c7c5
--- /dev/null
+++ b/content/extbans/matching_extbans.md
@@ -0,0 +1,18 @@
+---
+title: "Matching Extbans"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 1
+---
+
+| Name | Syntax | Effect |
+| ---------------- | --------------------- | --------------------------------------------------------------------------------- |
+| Oper | `O:[operlevel]` | Matches the opertype. Can accept wildcards for all opers |
+| Account | `R:[account]` | Matches the service account. Accepts a wildcard |
+| Unregistered | `U:[ban]` | Matches an unregistered user who matches the [ban] |
+| Channel | `j:[state][#channel]` | Matches a user in the channel. State defines the user's level, such as +, %, or @ |
+| Gecos (realname) | `r:[gecos]` | Matches against the gecos (real name field) |
+| Server | `s:[server]` | Matches against all users on the servername |
+| SSL Fingerprint | `z:[fingerprint]` | Matches against all users with the ssl fingerprint. Accepts a wildcard |
+
diff --git a/content/help/_index.md b/content/help/_index.md
index bba8ff71..0af71d97 100644
--- a/content/help/_index.md
+++ b/content/help/_index.md
@@ -2,7 +2,7 @@
title: "How to use Snoonet"
date: 2018-12-30T21:43:20Z
draft: false
-type: help
+type: multipage-index
---
***If you are looking for help with other users or need live support,
diff --git a/content/help/authing-on-connect.md b/content/help/authing-on-connect.md
index f5267e39..237bb2b9 100644
--- a/content/help/authing-on-connect.md
+++ b/content/help/authing-on-connect.md
@@ -2,7 +2,7 @@
title: "Authing on connect"
date: 2019-01-10T19:50:32Z
draft: false
-type: help
+type: multipage-index
weight: 6
---
diff --git a/content/help/connecting-to-the-network.md b/content/help/connecting-to-the-network.md
index 1951f7b2..8f9399f4 100644
--- a/content/help/connecting-to-the-network.md
+++ b/content/help/connecting-to-the-network.md
@@ -2,7 +2,7 @@
title: "Connecting to the network"
date: 2019-01-10T19:49:57Z
draft: false
-type: help
+type: multipage-index
weight: 5
---
diff --git a/content/help/desktop-client.md b/content/help/desktop-client.md
index 2e829ac8..bfdd9359 100644
--- a/content/help/desktop-client.md
+++ b/content/help/desktop-client.md
@@ -2,7 +2,7 @@
title: "Using a desktop IRC client"
date: 2019-01-10T19:46:30Z
draft: false
-type: help
+type: multipage-index
weight: 4
---
diff --git a/content/help/external-links.md b/content/help/external-links.md
index 2a392e45..ed8cbbed 100644
--- a/content/help/external-links.md
+++ b/content/help/external-links.md
@@ -2,7 +2,7 @@
title: "External Links"
date: 2019-01-10T21:50:11Z
draft: false
-type: help
+type: multipage-index
weight: 2
---
diff --git a/content/help/getting-help.md b/content/help/getting-help.md
index 1a2e12f5..3270904a 100644
--- a/content/help/getting-help.md
+++ b/content/help/getting-help.md
@@ -2,7 +2,7 @@
title: "Getting help"
date: 2019-01-10T19:59:55Z
draft: false
-type: help
+type: multipage-index
weight: 8
---
diff --git a/content/help/introduction.md b/content/help/introduction.md
index c92feffa..9ed46f4f 100644
--- a/content/help/introduction.md
+++ b/content/help/introduction.md
@@ -2,7 +2,7 @@
title: "Introduction"
date: 2019-01-10T19:35:48Z
draft: false
-type: help
+type: multipage-index
weight: 1
---
diff --git a/content/help/joining-channels.md b/content/help/joining-channels.md
index 0f079327..2cc40c71 100644
--- a/content/help/joining-channels.md
+++ b/content/help/joining-channels.md
@@ -2,7 +2,7 @@
title: "Joining channels"
date: 2019-01-10T19:58:52Z
draft: false
-type: help
+type: multipage-index
weight: 7
---
diff --git a/content/help/mobile-client.md b/content/help/mobile-client.md
index 0f49383c..3c53c79d 100644
--- a/content/help/mobile-client.md
+++ b/content/help/mobile-client.md
@@ -2,7 +2,7 @@
title: "Using a mobile IRC client"
date: 2019-01-10T19:47:10Z
draft: false
-type: help
+type: multipage-index
weight: 5
---
diff --git a/content/help/webchat.md b/content/help/webchat.md
index adafcd38..5e0133a1 100644
--- a/content/help/webchat.md
+++ b/content/help/webchat.md
@@ -2,7 +2,7 @@
title: "Using webchat (the super easy way)"
date: 2019-01-10T19:37:33Z
draft: false
-type: help
+type: multipage-index
weight: 3
---
diff --git a/content/modes/_index.md b/content/modes/_index.md
new file mode 100644
index 00000000..e4cb6204
--- /dev/null
+++ b/content/modes/_index.md
@@ -0,0 +1,13 @@
+---
+title: "Channel Modes"
+date: 2018-12-30T21:43:20Z
+draft: false
+type: multipage-index
+---
+
+Channel modes can be set by using the *mode* command. It looks like this: `/mode #channel +m`
+
+Some modes take params, and their syntax is displayed next to their description.
+
+Keep in mind modes **are** case sensitive. `+B` and `+b` are different.
+
diff --git a/content/modes.md b/content/modes/modes.md
similarity index 83%
rename from content/modes.md
rename to content/modes/modes.md
index 25ce3a1c..93297684 100644
--- a/content/modes.md
+++ b/content/modes/modes.md
@@ -1,16 +1,11 @@
---
-title: "Channel modes"
-date: 2019-01-10T21:55:49Z
+title: "Modes"
+date: 2019-01-14T22:31:47Z
draft: false
-type: page
+type: multipage-index
+weight: 1
---
-Channel modes can be set by using the *mode* command. It looks like this: `/mode #channel +m`
-
-Some modes take params, and their syntax is displayed next to their description.
-
-Keep in mind modes **are** case sensitive. `+B` and `+b` are different
-
| Name | Syntax | Description |
| ----------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Allow invite | `A` | Allows anyone to invite anyone else to the channel. |
@@ -58,45 +53,3 @@ Keep in mind modes **are** case sensitive. `+B` and `+b` are different
| Auto Mode | `w [mode]:[n!u@h]` | Automatically gives users matching the mask the flag. See below |
| Global Message Flood | `x [num]:[sec]` | Snoonet custom mode which will notify opers of a channel flood |
| SSL users only | `z` | Prevents users who aren't connected to the network using SSL from joining |
-
-# Notes
-
-## Auto-mode
-`w [mode]:[n!u@h]`
-
-Auto-mode allows you to automatically voice, op, or set other modes on users joining your channel. This is a powerful feature, that can replace the necessity for *some* bots
-
-`[mode]` is one of the prefix modes, such as h for halfop, o for operator, or v for voiced.
-
-Hostmask is any matching mask, including extbans
-
-## Exempt Modes
-`X [permission]:[mode]`
-
-Exempt modes allows you to set more granular permissions, based on user modes
-Example: /mode #channel +X censor:v will allow voiced users and higher to bypass the censorship(chanmode +g) filters
-
-`[mode]` is one of the prefix modes, such as h for halfop, o for operator, or v for voiced.
-
-`[permission]` is one of the following:
-
-+ **topiclock:** permission required to change the topic if +t is set
-+ **auditorium-vis:** permission required to always be visible in a `+u` channel
-+ **auditorium-see:** permission required to see all the users in a `+u` channel
-+ **blockcaps:** permission to send caps in a `+B` channel
-+ **blockcolor:** permission to use color in a `+c` channel
-
-+ **filter:** permission to bypass channel-level filters in a `+g` channel
-+ **flood:** Permission to bypass flood limits in a `+f` channel
-+ **nickflood:** Permission to bypass nick flood limits in a `+F` channel
-+ **noctcp:** Permission to send CTCPs in a `+C` channel
-+ **nonick:** Permission to change nicks in a `+N` channel
-+ **nonotice:** Permission to send notices in a `+T` channel
-+ **regmoderated:** Permission to bypass `+R` and `+M`
-+ **slowmode:** Permission to bypass the rate limit in a `+U` channel
-+ **stripcolor:** Permission to bypass color stripping in a `+S` channel
-
-# See Also
-
-+ [User Modes](/umodes)
-+ [Extended Ban Syntax](/extbans)
diff --git a/content/modes/notes.md b/content/modes/notes.md
new file mode 100644
index 00000000..3781edc9
--- /dev/null
+++ b/content/modes/notes.md
@@ -0,0 +1,43 @@
+---
+title: "Notes"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 2
+---
+
+## Auto-mode
+`w [mode]:[n!u@h]`
+
+Auto-mode allows you to automatically voice, op, or set other modes on users joining your channel. This is a powerful feature, that can replace the necessity for *some* bots
+
+`[mode]` is one of the prefix modes, such as h for halfop, o for operator, or v for voiced.
+
+Hostmask is any matching mask, including extbans
+
+## Exempt Modes
+`X [permission]:[mode]`
+
+Exempt modes allows you to set more granular permissions, based on user modes
+Example: /mode #channel +X censor:v will allow voiced users and higher to bypass the censorship(chanmode +g) filters
+
+`[mode]` is one of the prefix modes, such as h for halfop, o for operator, or v for voiced.
+
+`[permission]` is one of the following:
+
++ **topiclock:** permission required to change the topic if +t is set
++ **auditorium-vis:** permission required to always be visible in a `+u` channel
++ **auditorium-see:** permission required to see all the users in a `+u` channel
++ **blockcaps:** permission to send caps in a `+B` channel
++ **blockcolor:** permission to use color in a `+c` channel
+
++ **filter:** permission to bypass channel-level filters in a `+g` channel
++ **flood:** Permission to bypass flood limits in a `+f` channel
++ **nickflood:** Permission to bypass nick flood limits in a `+F` channel
++ **noctcp:** Permission to send CTCPs in a `+C` channel
++ **nonick:** Permission to change nicks in a `+N` channel
++ **nonotice:** Permission to send notices in a `+T` channel
++ **regmoderated:** Permission to bypass `+R` and `+M`
++ **slowmode:** Permission to bypass the rate limit in a `+U` channel
++ **stripcolor:** Permission to bypass color stripping in a `+S` channel
+
diff --git a/content/modes/see_also.md b/content/modes/see_also.md
new file mode 100644
index 00000000..6937f8fb
--- /dev/null
+++ b/content/modes/see_also.md
@@ -0,0 +1,11 @@
+---
+title: "See Also"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 3
+---
+
++ [User Modes](/umodes)
++ [Extended Ban Syntax](/extbans)
+
diff --git a/content/rules/_index.md b/content/rules/_index.md
new file mode 100644
index 00000000..a7169439
--- /dev/null
+++ b/content/rules/_index.md
@@ -0,0 +1,9 @@
+---
+title: "Network Rules"
+date: 2018-12-30T21:43:20Z
+draft: false
+type: multipage-index
+---
+
+All communities are welcome until they bring hatred to other communities or users. If your users are being consistently disruptive and bothersome to other communities, your channel may face removal. While we do understand that no one user represents an entire community, we strive to bring the best experience possible to all users on Snoonet.
+
diff --git a/content/rules/channel.md b/content/rules/channel.md
new file mode 100644
index 00000000..611cdc97
--- /dev/null
+++ b/content/rules/channel.md
@@ -0,0 +1,20 @@
+---
+title: "Channel Rules"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 3
+---
+
+## Registering a Channel
+
++ Channels may be freely registered and/or opened on Snoonet so long as they do not violate network policy.
++ If you would like to claim an abandoned channel please /join #help and request assistance. Channels no longer in use may be dropped. This is offered as a privilege and not a right, and such decisions are subject to staff discretion.
++ Snoonet has the right to suspend or close any channels that encourage illegal activity or otherwise expose the network to liability.
++ Unicode channel names are not allowed.
++ A maximum of 10 channels may be registered by a single user.
++ Please do not mass register channels that have no meaning or to "reserve" a channel you do not intend on using. These channels are subject to being dropped; repeat offenders may be banned.
+
+## Logging
++ Private logging of channels is permitted unless explicitly prohibited by a specific channel. Snoonet requests that channel logs not be made public unless consent has been given by the channel in question.
+
diff --git a/content/rules/network_conduct.md b/content/rules/network_conduct.md
new file mode 100644
index 00000000..2acf19c0
--- /dev/null
+++ b/content/rules/network_conduct.md
@@ -0,0 +1,26 @@
+---
+title: "Network Conduct"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 2
+---
+
+## Network-Wide Rules
+
++ Repeated and/or intentional ban evasion may earn you a timed network ban. To request a ban appeal, follow the policy of appeals (where one exists) or message the banning OP. Bans from Snoonet network channels or the Snoonet IRC network in its entirety must be addressed via [support ticket](https://support.snoonet.org).
++ Please respect your fellow users. Do not intentionally harass other users. This includes “trolling”. Action may be taken on a channel-to-channel basis, where such rules exist. If harassment is persistent, across multiple channels or targets a specific user for a length of time, the offending user may be banned.
++ Get along with others! We understand that there are multiple types of humor, but do not excessively attack any other user on this network. Please note that sarcasm doesn’t translate well over IRC.
++ Posting the personal information of others is grounds for a permanent network ban. Attempting to collect personal info of users is dealt with in the same manner.
++ No solicitation. This includes, but is not limited to, public spam, private message spam, repeated solicitation of services, solicitation of other network channels, and vote brigading on social media (eg. encouraging others to upvote/downvote a thread on reddit).
++ Solicitation of services for financial gain is only permitted by asking the channel operators.
++ No user is to request money from others. While we understand many are in times of need, please register a gofundme account and state why you are asking for money. Please ask permission from the channel operators. Begging, and contacting multiple users requesting money is a network offense and will be dealt with warnings and removal from the network.
++ Listen to network staff. They can be identified by the “snoonet/rank/nickname” hostmask. /whois NICKNAME to confirm that they are a Snoonet staff member. You can view the staff directory [here](http://snoonet.org/staff)
++ Consider against ignoring network operators and consider against ignoring channel operators. If you have an issue with the conduct of a network operator, kindly modmail [/r/Snoonet](https://reddit.com/r/snoonet/) or message a [Snoonet Manager](https://snoonet.org/staff) on IRC and your complaint will be noted and addressed.
++ User impersonation is prohibited. If you're found to be intentionally impersonating Snoonet users, you may face removal from the network for a length of time to be decided at the time of incident.
+
+## For Your Information
+
++ Please don't spam/flood the network. If you need to paste a large chunk of text, consider https://paste.snoonet.org/ or https://pastebin.com/. Automated tools are in use that have the capability of accidentally banning innocent flooders.
++ If a channel is getting spammed and no operators are around, or if you just need help with something network-related, join [#help](http://webchat.snoonet.org/help).
+
diff --git a/content/rules/user.md b/content/rules/user.md
new file mode 100644
index 00000000..c70a1975
--- /dev/null
+++ b/content/rules/user.md
@@ -0,0 +1,28 @@
+---
+title: "User Rules"
+date: 2019-01-14T22:31:47Z
+draft: false
+type: multipage-index
+weight: 1
+---
+
+## Nicknames / NickServ
+
++ Available names may be freely registered with NickServ so long as they do not violate network policy.
++ There is a maximum of 5 grouped nicknames per account. Use [NickServ](https://snoonet.org/anope#NickServ)'s GROUP command as opposed to REGISTER.
++ Nickname squatting is not permitted. We ask that all registered or grouped names be put to use.
++ Users may request ownership of their chosen nickname on Snoonet, but this is offered as a privilege and not a right. To request a specific nickname, please contact us in #help. Requests will be considered and discussed at the sole discretion of Snoonet staff. We may refuse to drop nicknames that violate Snoonet rules, are historically significant, are reserved for network purposes, or for any other reason. Nicknames must be inactive for at least 3 months before requested to be dropped.
++ Your nickname may not contain any racial slurs or bigotry. Names in violation of this are subject to being dropped and/or prohibited, with repeat offenders being banned.
++ Temporary/disposable email addresses are prohibited. Snoonet reserves the right to delete your registration if you register with a false/throwaway email address.
++ By default, nicknames have an insane expiration date. Single accounts with 1 name and 6+ months of inactivity may be dropped if someone requests the name. Nicknames grouped to any single account may be ungrouped after 3+ months of inactivity and upon request of another user.
+
+## Hostmasks
+
++ You will receive an initial hostmask when you connect to Snoonet. This hostmask does not show your IP address. When you register an account with Snoonet and confirm your registration via e-mail, you will receive a default user cloak. If you do not wish to have a user cloak after confirming your name, please ask for it to be removed in #help.
++ For channels of a specific size, vanity hosts may be available. At this time, this option is available for users with specific privileges in channels with fifty (50) users or more. Please visit #help for assistance.
++ Custom vanity hosts are not offered except in special circumstances, such as network events.
+
+## Bots
+
++ You may freely run an IRC bot on this network, providing that it conforms to our terms of service and other network rules as outlined both above and below. Bots should have their own registered account and must have a user/USERNAME/bot/BOTNAME vhost. You may also wish to set the +B user mode on your bot so it may be identified as a bot on the network. For assistance in getting your bot up and running, please join #help and someone will be happy to assist you.
+
diff --git a/themes/Snoonet/layouts/help/list.html b/themes/Snoonet/layouts/multipage-index/list.html
similarity index 100%
rename from themes/Snoonet/layouts/help/list.html
rename to themes/Snoonet/layouts/multipage-index/list.html