move more logic into operands/operators