anchor.diff:      * animate over time, slowly decreasing that threshold
          */
         if(imageData == null) {
  -          imageData=imageCanvas.context2D.getImageData(0, 0, imageCanvas.width, imageCanvas.height);
             //don't want a clear canvas
             canvas.width = imageCanvas.width;
             canvas.height = imageCanvas.height;
  -         // canvas.context2D.drawImage(imageCanvas,0,0);
  +          debugCanvas.width = imageCanvas.width;
  +          debugCanvas.height = imageCanvas.height;
  +          //canvas.context2D.drawImage(imageCanvas,0,0);
             CanvasElement sacrifice = new CanvasElement(width: imageCanvas.width, height: imageCanvas.height);
  -          coverWithGradient(sacrifice);
  -          canvas.context2D.drawImage(sacrifice,0,0);
  +          coverWithLinearGradient(sacrifice);
  +          debugCanvas.context2D.drawImage(sacrifice,0,0);
  +          debugCanvas.context2D.globalAlpha = 0.4;
  +          debugCanvas.context2D.drawImage(imageCanvas,0,0);
  +          debugCanvas.context2D.globalAlpha = 1.0;
  +          imageData= debugCanvas.context2D.getImageData(0, 0, debugCanvas.width, debugCanvas.height);
  +          outputImageData =canvas.context2D.getImageData(0, 0, canvas.width, canvas.height);
  +
         }
  -
  -
  -
  -  }
  -
  -}
  -
  +      thresholdFunction();
  +      await window.animationFrame;
  +      new Timer(new Duration(milliseconds: 90), () => noise);
  +
  +    }
  +
  +}
  +
  
positive.code:       sacrificeCanvas.context2D.putImageData(boxImageData, 0,0);
    }
  
    @override
    void noise([int speed=1]) {
        /*
        TODO
         take in an image
  
negative.code: Future<Null> main() async{
      loadNavbar();
      contents = querySelector("#contents");
      Element dream = new DivElement();
      Element taint = new DivElement();
      contents.append(dream);
      contents.append(taint);
      ButtonElement button = new ButtonElement()..text = "Dream?";
      dream.append(button);
  
      ButtonElement buttonTaint = new ButtonElement()..text = "Dream of Taint?";
      taint.append(buttonTaint);
      image = await Loader.getResource("images/New_Trees_Background_Plus_Prince.png");
      //TODO let the input file either be a dream or taint dream
      InputElement fileElement = new InputElement();
      fileElement.type = "file";
      fileElement.classes.add("fileUploadButton");
      dream.append(fileElement);
  
      InputElement fileElementTaint = new InputElement();
      fileElementTaint.type = "file";
      fileElementTaint.classes.add("fileUploadButton");
      taint.append(fileElementTaint);
      await Doll.loadFileData();
  
      LabelElement label = new LabelElement()..text = "Doll String";
      TextAreaElement dollUpload = new TextAreaElement();
      dream.append(label);
      dream.append(dollUpload);
  
      LabelElement unitLabel = new LabelElement()..text = "Unit Width: $imageWidth";
      RangeInputElement widthElement = new RangeInputElement();
      widthElement.min = "1";
      widthElement.value="$imageWidth";
      widthElement.max="113";
      dream.append(unitLabel);
      dream.append(widthElement);
  
      contents.append(canvas);
      button.onClick.listen((Event e) {
  