add cartesian fn, attempt to fix bug pickle fcn