anchor.diff:    /**
      * Shows image as canvas
      * @param array file, the dropped file
  -   * @needs better documentation
      */
     var showFile = function ( file ) {
  +    // Create a file reader
       var reader = new FileReader();
       reader.onload = function( event ) {
  +      // Draw image into canvas
         img.onload = function() {
  +        // center image in canvas
           context.clearRect( 0, 0, canvas.width, canvas.height );
           document.getElementById( 'scale' ).value = 1;
           x = canvas.width / 2 - img.width / 2;
           y = canvas.height / 2 - img.height / 2;
  +        // draw image in canvas
           context.drawImage( img, x, y );
         }
  +      // Read the uploaded file as image
         img.src = reader.result;
  -      // $( '#image-temp' ).src = reader.result;
  -    }
  +    }
  +    // Read uploaded image
       reader.readAsDataURL( file[0] );
     }
   
     /**
  -   * Get this meme started
  -   */
  -  var init = function () {
  -    setupCanvas();
  -
  +   * Handle clicks and change events
  +   */
  +  var handleEvents = function () {
       var credit = document.getElementById( 'credit' );
       credit.addEventListener( 'keyup', addCanvas, false );
       credit.addEventListener( 'input', addCanvas, false );
  
positive.code:     $( '#alignment' ).on( 'change', handleAlignment );
    }
  
    window.onload = function() {
      init();
    }
  
negative.code:     context.fillText( text, 45, 322 );
    }
  
    /**
     * Change font size based on data attribute of option elements
     */
    var handleFontSize = function () {
      fontSize = $( '#fontsize option:selected' ).data( 'size' );
      lineHeight = $( '#fontsize option:selected' ).data( 'height' );
      addCanvas();
    }
  
    /**
     * Change headline alignment (left, right, center)
     */
    var handleAlignment = function () {
      alignment = $( '#alignment option:selected' ).val();
      addCanvas();
  