I was able to get encrypting and decrypting to work both in testing and using txt files. When decrypting an encrypted message a new file is automatically created called decrypted that returns the origional message. The command line also prints out which file was created, with which keys and the date it was created. My encrypt and decrypt methods are a bit lengthy but they do seem to be performing one task of either encrypting and decrypting messages. I created a helper method to check for special characters to ensure anything that isn't in the alphabet array is automatically pushed into the encrypted message. Every method has a test and multiple expects for all the edge cases I could think of. I was able to encrypt and decrypt a longer message of song lyrics that also maintained the new lines. I was unable to get the code cracker to work but was able to get it to the point of returning the first 2 digits of the keys but was struggling to get it to return the 73 key as the alphabet does multiple rotates with that one and I couldn't quite figure out the logic to get it to recognize that while still remaining dynamic.