refactored add, sub, div