             
             arr = dataunit.getFrame(0)
             [min, max] = dataunit.getExtent(arr)
-            width = dataunit.width
-            height = dataunit.height
+            {width, height} = dataunit
             calibration = @getCalibration(header)
             # VICS82:
             provenance = @getProvenance(header)

    super
    
    @calibrations = {}
    # VICS82:
    @provenances = {}
    @dfs =
      webfits: new $.Deferred()
      fitsjs: new $.Deferred()
    
    @getApi()
  
  getApi: ->
    # Get the browser vendor and version
    userAgent = browserDialog.testAgent(navigator.userAgent)
    
    unless (DataView?)
      alert 'Sorry, your browser does not support features needed for this tool.'
      return
    
    # Determine if WebGL is supported, otherwise fall back to canvas
    canvas  = document.createElement('canvas')
    for name in ['webgl', 'experimental-webgl']
      try
        context = canvas.getContext(name)
        
        # Check if browser support floating-point textures
        ext = context.getExtension('OES_texture_float')
        
      catch error
        continue
      break if context?
    
    lib = if context? then 'gl' else 'canvas'
    
    # Default to canvas if browser does not support WebGL floating-point texture extension
    lib = if ext? then 'gl' else 'canvas'
    
    # Default to canvas if Safari regardless of WebGL
    lib = 'canvas' if userAgent.browser is 'safari'
    
    # Load appropriate WebFITS library asynchronously
    url = "javascripts/webfits-#{lib}.js"
    $.getScript(url, =>
      @dfs.webfits.resolve()
    )
    # Load fitsjs asynchronously
    $.getScript("javascripts/fits.js", =>
      @dfs.fitsjs.resolve()
    )

        
        # Remove the callback
        document.onkeydown = null
    
    @append("""
      <div class='viewer-tools'>
