Adding unit testing file and seperating interface code. Adding structs for cleaner input processing.