docs: function(spec) {
  
              spec = spec || {};
  
              let aMask = spec.mask || [],
                  start = spec.start || {},
                  x = start.c || 0,
                  y = start.r || 0;
  
              this.fill(0);
  
              for( var mKey in aMask ) {
                  var mask = aMask[mKey];
                  this.mask(mask.c,mask.r);
              }
  
              let maxDepth = this.xSize * this.ySize;
  
              this.carveMaze(x,y,0,maxDepth);
  
              // derived class can parse extra spec parameters
  
              this.afterGenerate(spec);
  
          }