code: function(a, b) { 
          //swap the groups
          if(b.group === CP && b.group !== CP) {
              var t = a; a = b; b = t; //swap
          }
              
          //scan to eliminate denominators
          if(a.group === CB) { 
              var t = new Symbol(a.multiplier),
                  newRHS = b.clone();
              a.each(function(y) {
                  if(y.power.lessThan(0))
                      newRHS = _.divide(newRHS, y);
                  else
                      t = _.multiply(t, y);
              });
              a = t;
              b = newRHS;
              
          }
          else if(a.group === CP) { 
              //the logic: loop through each and if it has a denominator then multiply it out on both ends
              //and then start over
              for(var x in a.symbols) {
                  var sym = a.symbols[x];
                  if(sym.group === CB) {
                      for(var y in sym.symbols) {
                          var sym2 = sym.symbols[y];
                          if(sym2.power.lessThan(0)) {
                              return removeDenom(
                                      _.expand(_.multiply(sym2.clone().toLinear(), a)),
                                      _.expand(_.multiply(sym2.clone().toLinear(), b))
                              );
                          }
                      }
                  }
              }
          }
              
              
          return _.expand(_.subtract(a, b));
      }
docs: UTILS ##!!