refactored everything. tests green
refactored message returning to use singleton object (kinda of....) all tests green, code NOT THAT bad