diff --git a/src/base4.rs b/src/base4.rs
index e5c50fc..bd99416 100644
--- a/src/base4.rs
+++ b/src/base4.rs
@@ -12,6 +12,13 @@ pub fn char_length() -> u32 {
     return 3;
 }
 
+/// Encodes english text into base 4 catspeak
+/// 
+/// ```
+/// use cat2text::base4::encode;
+/// 
+/// assert_eq!("meow mreow mrrp; meow mrow meow meow mrow mrow mrrp mrrp mreow meow mrrp mrrp; meow meow mrow meow meow mrrp mrrp mrrp meow mrrp meow mrow", encode("i love cats".to_string().))
+/// ```
 pub fn encode(text: String) -> String {
     // makes it lowercase and split by spaces
     let words: Vec<String> = text
@@ -58,7 +65,7 @@ pub fn decode(text: String) -> String {
     let mut output: String = String::new();
     for engl_word in catspeak_words {
         let mut word = "".to_string();
-        for engl_letter in core::split_every_3(engl_word) {
+        for engl_letter in core::split_every_x(engl_word, 3) {
             let char_num = core::cat_to_num(
                 engl_letter
                     .split(" ")
diff --git a/src/core.rs b/src/core.rs
index 8dfdf25..9a427eb 100644
--- a/src/core.rs
+++ b/src/core.rs
@@ -58,24 +58,24 @@ pub fn cat_to_num(text: Vec<String>, alphabet: Vec<String>, char_length: u32) ->
     return num;
 }
 
-/// Splits a cat word into every 3 segments
+/// Splits a cat word into every x segments
 ///
 /// ```
-/// use cat2text::core::split_every_3;
+/// use cat2text::core::split_every_x;
 ///
-/// assert_eq!(vec!["meow meow mrrp".to_string(), "meow mreow mrrp".to_string(), "mreow meow mrrp".to_string()], split_every_3("meow meow mrrp meow mreow mrrp mreow meow mrrp".to_string()));
+/// assert_eq!(vec!["meow meow mrrp".to_string(), "meow mreow mrrp".to_string(), "mreow meow mrrp".to_string()], split_every_x("meow meow mrrp meow mreow mrrp mreow meow mrrp".to_string(), 3));
 /// ```
-pub fn split_every_3(text: String) -> Vec<String> {
+pub fn split_every_x(text: String, x: usize) -> Vec<String> {
     let delim = " ";
     let tmp: Vec<String> = text.split(delim).map(|item| item.to_string()).collect();
     let mut output: Vec<String> = Vec::new();
     for i in 0..tmp.len() {
-        if i % 3 == 0 {
+        if i % x == 0 {
             output.push(String::new())
         }
-        output[i / 3] += tmp[i].as_str();
-        if i % 3 != 2 {
-            output[i / 3] += " ";
+        output[i / x] += tmp[i].as_str();
+        if i % x != 2 {
+            output[i / x] += " ";
         }
     }
     return output;