     id: 'address-form'
     tagName: 'article'
 
+    ui:
+      balance: '.address-balance'
+      currencyType: '.currency-type'
+      inputAddress: '.address-public-address'
+      inputName: '.address-name'
+      hiddenAddress: '.hidden-public-address'
+      hiddenAddressFirstbits: '.hidden-public-firstbits'
+      btnQrScan: '.scan-qr'
+      btnSave: '.btn-save'
+      btnCancel: '.btn-cancel'
+
     events:
-      'keydown .address-public-address': '_handleKeyupInput'
-      'paste .address-public-address': '_handlePasteInput'
-      'cut .address-public-address': '_handleCutInput'
-      'click .btn-save': '_handleSave'
-      'click .btn-cancel': '_handleCancel'
+      'keydown @ui.inputAddress': '_handleKeyupInput'
+      'paste @ui.inputAddress': '_handlePasteInput'
+      'cut @ui.inputAddress': '_handleCutInput'
+      'click @ui.btnSave': '_handleSave'
+      'click @ui.btnCancel': '_handleCancel'
 
     initialize: ->
       @listenTo App.vent, 'scan:qr', @_handleScanQr
-
-    onShow: ->
-      @balance = @$('.address-balance')
-      @currencyType = @$('.currency-type')
-      @inputAddress = @$('.address-public-address')
-      @inputName = @$('.address-name')
-      @hiddenAddress = @$('.hidden-public-address')
-      @hiddenAddressFirstbits = @$('.hidden-public-firstbits')
-      @btnQrScan = @$('.scan-qr')
-      @btnSave = @$('.btn-save')
-      @btnCancel = @$('.btn-cancel')
 
     _handleKeyupInput:
       _.debounce (event) ->

      @_reset(false)

    _setCurrencyImage: (response) ->
      @currencyType.addClass('is-filled').html $('<img />',
        src: response.currency_image_path
        alt: response.currency)

    _isValidAddress: (response) ->
      @_setCurrencyImage response
      @btnQrScan.hide()
      @btnSave.css('display', 'inline-block')
      @btnCancel.css('display', 'inline-block')
      @hiddenAddressFirstbits.text @inputAddress.val().slice(0,8)
      @inputAddress
        .addClass('is-valid')
        .css('width', @hiddenAddressFirstbits.outerWidth())
        .prop('disabled', true)
      @balance.text("#{response.balance} #{response.shortname}").show()
      inputNameWidth = @$('.address-input').outerWidth() - @inputAddress.outerWidth() - @balance.outerWidth() - 10
      @inputName.css('width', inputNameWidth).show().focus()
      @

    _addError: ->
      @inputAddress.addClass 'is-invalid'

    _clearErrors: ->
      @inputAddress.removeClass 'is-invalid'

    _clearCurrencyImage: ->
      @currencyType.removeClass('is-filled').html('')

    _reset: (clearAddress = true) ->
      @_clearErrors()
      @_clearCurrencyImage()
      @btnQrScan.show()
      @btnSave.hide()
      @btnCancel.hide()
      @inputName.val('').hide()
      @balance.text('').hide()
      @inputAddress.removeClass('is-valid').prop('disabled', false).css('width', '100%')
      @inputAddress.val('') if clearAddress

                  isSelectAllKey(event) or
                  isArrowKey(event)

        inputVal = @ui.inputAddress.val()
        @_clearErrors()

        if inputVal.length is 0
