* encoding input variable added
* encoding input variable added
* encoding input variable added
* corrected unit tests
* corrected unit tests
* prettier edits
* working on tests
* working on tests
* working on tests
* minor edits
* minor edits
* better logic structure
* added tests for edge cases
* edited to enum