         }
         
         for I0 in base.mDegrees {
-            let I1 = I0 + d.mDegree
-            let I2 = I1 + d.mDegree
+            let I1 = I0 + dDegree
+            let I2 = I1 + dDegree
             
             guard let s0 = self[I0],
                   let s1 = self[I1],

        }
        
        // case: obviously isom
        if  let Ain = dMatrix(I - d.mDegree), Ain.isZero,
            let Aout = dMatrix(I), Aout.isZero {
            return self[I]
        }

    }
    
    public func homology(name: String? = nil) -> ModuleGrid<Dim, A, R> {
        let list = base.mDegrees.map{ I in (I, homology(I)) }
        let exList = (base.defaultObject == .zeroModule)
            ? list.exclude { (_, s) in s?.isTrivial ?? false }
            : list
            
        return ModuleGrid(
            name: name ?? "H(\(base.name))",
            default: base.defaultObject,
            list: exList
        )
    }
    
