add support for subtraction
refactor to pull the addition and subtraction logic into their own modules