     IO.puts("Counts from a minimum number to a maximum number.")
     IO.puts("Fizz multiples are replaced with 'Fizz', buzz multiples with 'Buzz' and multiples of fizz and buzz with 'FizzBuzz'.")
     IO.puts("Usage:")
-    IO.puts("  fizz_buzz [--fizz FIZZ] [--buzz BUZZ] [--min MIN] [--max MAX] [--skip SKIP] [--help]")
-    IO.puts("    --fizz FIZZ : fizz multiple, default 3")
-    IO.puts("    -f     FIZZ : fizz multiple, default 3")
-    IO.puts("    --buzz BUZZ : buzz multiple, default 5")
-    IO.puts("    -b     BUZZ : buzz multiple, default 5")
-    IO.puts("    --min  MIN  : number to count from, default 1")
-    IO.puts("    -n     MIN  : number to count from, default 1")
-    IO.puts("    --max  MAX  : number to count to, default 100")
-    IO.puts("    -x     MAX  : number to count to, default 100")
-    IO.puts("    --skip SKIP : multiple to count by, default 1")
-    IO.puts("    -s     SKIP : multiple to count by, default 1")
-    IO.puts("    --index     : display count number for each line of output")
-    IO.puts("    -i          : display count number for each line of output")
-    IO.puts("    --help      : display this usage summary")
-    IO.puts("    -?          : display this usage summary")
+    IO.puts("  fizz_buzz [--fizz-word FIZZWORD] [--buzz-word BUZZWORD] [--fizzbuzz-word FIZZBUZZWORD] [--fizz FIZZ] [--buzz BUZZ] [--min MIN] [--max MAX] [--skip SKIP] [--help]")
+    IO.puts("    --fizz-word FIZZWORD         : word to say on fizz multiple, default \"Fizz\"")
+    IO.puts("    -F                           : word to say on fizz multiple, default \"Fizz\"")
+    IO.puts("    --buzz-word BUZZWORD         : word to say on buzz multiple, default \"Buzz\"")
+    IO.puts("    -B                           : word to say on buzz multiple, default \"Buzz\"")
+    IO.puts("    --fizzbuzz-word FIZZBUZZWORD : word to say on fizzbuzz multiple, default \"FizzBuzz\"")
+    IO.puts("    -W                           : word to say on fizzbuzz multiple, default \"FizzBuzz\"")
+    IO.puts("    --fizz FIZZ                  : fizz multiple, default 3")
+    IO.puts("    -f     FIZZ                  : fizz multiple, default 3")
+    IO.puts("    --buzz BUZZ                  : buzz multiple, default 5")
+    IO.puts("    -b     BUZZ                  : buzz multiple, default 5")
+    IO.puts("    --min  MIN                   : number to count from, default 1")
+    IO.puts("    -n     MIN                   : number to count from, default 1")
+    IO.puts("    --max  MAX                   : number to count to, default 100")
+    IO.puts("    -x     MAX                   : number to count to, default 100")
+    IO.puts("    --skip SKIP                  : multiple to count by, default 1")
+    IO.puts("    -s     SKIP                  : multiple to count by, default 1")
+    IO.puts("    --index                      : display count number for each line of output")
+    IO.puts("    -i                           : display count number for each line of output")
+    IO.puts("    --help                       : display this usage summary")
+    IO.puts("    -?                           : display this usage summary")
     IO.puts("Examples:")
     IO.puts("  fizz_buzz")
+    IO.puts("  fizz_buzz -s 2 -F Big... -B Scary... -W Monsters!")
     IO.puts("  fizz_buzz -n 50 -x 75")
     IO.puts("  fizz_buzz -n 50 -x 75 -s 5")
     IO.puts("  fizz_buzz -f 2 -b 3")

      help: :boolean,
    ]
    aliases = [
      f: :fizz,
      b: :buzz,
      n: :min,

defmodule Script do
  def main(args) do
    defaults = [
      fizz_word: "Fizz",
      buzz_word: "Buzz",
      fizzbuzz_word: "FizzBuzz",
      fizz: 3,
      buzz: 5,
      min: 1,
