diff --git a/modules/encoders/number/random_from_range/manifests/.no_puppet b/modules/encoders/cipher/morse_code/manifests/.no_puppet
similarity index 100%
rename from modules/encoders/number/random_from_range/manifests/.no_puppet
rename to modules/encoders/cipher/morse_code/manifests/.no_puppet
diff --git a/modules/encoders/number/random_from_range/random_from_range.pp b/modules/encoders/cipher/morse_code/morse_code.pp
similarity index 100%
rename from modules/encoders/number/random_from_range/random_from_range.pp
rename to modules/encoders/cipher/morse_code/morse_code.pp
diff --git a/modules/encoders/cipher/morse_code/secgen_local/local.rb b/modules/encoders/cipher/morse_code/secgen_local/local.rb
new file mode 100644
index 000000000..9b7472eb3
--- /dev/null
+++ b/modules/encoders/cipher/morse_code/secgen_local/local.rb
@@ -0,0 +1,80 @@
+#!/usr/bin/ruby
+require_relative '../../../../../lib/objects/local_string_encoder.rb'
+class MorseCodeEncoder < StringEncoder
+ attr_accessor :morse_code_hash
+
+ def initialize
+ super
+ self.module_name = 'Morse Code Encoder'
+ self.strings_to_encode = []
+
+ self.morse_code_hash = {'a' => '.-',
+ 'b' => '-...',
+ 'c' => '-.-.',
+ 'd' => '-..',
+ 'e' => '.',
+ 'f' => '..-.',
+ 'g' => '--.',
+ 'h' => '....',
+ 'i' => '..',
+ 'j' => '.---',
+ 'k' => '-.-',
+ 'l' => '.-..',
+ 'm' => '--',
+ 'n' => '-.',
+ 'o' => '---',
+ 'p' => '.--.',
+ 'q' => '--.-',
+ 'r' => '.-.',
+ 's' => '...',
+ 't' => '-',
+ 'u' => '..-',
+ 'v' => '...-',
+ 'w' => '.--',
+ 'x' => '-..-',
+ 'y' => '-.--',
+ 'z' => '--..',
+ ' ' => '/',
+ '1' => '.----',
+ '2' => '..---',
+ '3' => '...--',
+ '4' => '....-',
+ '5' => '.....',
+ '6' => '-....',
+ '7' => '--...',
+ '8' => '---..',
+ '9' => '----.',
+ '0' => '-----',
+ '.' => '.-.-.-',
+ ',' => '--..--',
+ ':' => '---...',
+ '?' => '..--..',
+ '\'' => '.----.',
+ '-' => '-....-',
+ '/' => '-..-.',
+ '(' => '-.--.-',
+ ')' => '-.--.-',
+ '[' => '-.--.-',
+ ']' => '-.--.-',
+ '<' => '-.--.-',
+ '>' => '-.--.-',
+ '{' => '-.--.-',
+ '}' => '-.--.-',
+ '"' => '.-..-.',
+ '@' => '.--.-.',
+ '=' => '-...-',
+ }
+ end
+
+ def encode(str)
+ morse_string = ''
+ str.each_char { |char|
+ # if the character is in the hash convert it. if not, drop the character.
+ if morse_code_hash.key? char.downcase
+ morse_string << morse_code_hash[char.downcase] + ' '
+ end
+ }
+ morse_string
+ end
+end
+MorseCodeEncoder.new.run
diff --git a/modules/encoders/cipher/morse_code/secgen_metadata.xml b/modules/encoders/cipher/morse_code/secgen_metadata.xml
new file mode 100644
index 000000000..41d2b82b4
--- /dev/null
+++ b/modules/encoders/cipher/morse_code/secgen_metadata.xml
@@ -0,0 +1,26 @@
+
+
+
+ Morse Code Encoder
+ Thomas Shaw
+ MIT
+ Encodes a string into Morse code.
+
+ morse_code_encoder
+ ascii_reversable
+ string_encoder
+ linux
+ windows
+
+ https://gist.github.com/mikedamage/105081
+
+ strings_to_encode
+
+
+
+
+
+ encoded_strings
+
diff --git a/scenarios/examples/parameterised_examples/encoder_examples/morse_code.xml b/scenarios/examples/parameterised_examples/encoder_examples/morse_code.xml
new file mode 100644
index 000000000..61734c618
--- /dev/null
+++ b/scenarios/examples/parameterised_examples/encoder_examples/morse_code.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ example_server
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+