Added cells, singular reduction, and fixed a bug in plus()