Simplification to allow older compilers to compile the code
Fixed expansion through BinaryOp types, and added a new var symbol
Adding a unity symbol
Implementation is now consistent between all of its operators and symbols