       currentStep = progress.currentPublicKey + progress.currentSignTransaction + progress.currentTrustedInput + progress.currentTrustedInputProgress + progress.currentHashOutputBase58 + progress.currentUntrustedHash
       stepsCount = progress.publicKeyCount + progress.transactionSignCount + progress.trustedInputsCount + progress.trustedInputsProgressTotal + progress.hashOutputBase58Count + progress.untrustedHashCount
       percent = Math.ceil(currentStep / stepsCount * 100)
-      l percent + "%"
-      l progress
+      d.notify(progress)
       progressCallback?({currentStep, stepsCount, percent})
     .then (@_resumeData) =>
       @_validationMode = @_resumeData.authorizationRequired

      undefined, # Default sigHash
      validationKey,
      @_resumeData
    ).then( (@_signedRawTransaction) =>
      @_isValidated = yes
      $info("Raw TX: ", @getSignedTransaction())
      _.defer => d.resolve(@)
    ).catch( (error) =>
      _.defer => d.rejectWithError(Errors.SignatureError, error)
    ).done()
    d.promise

  ###

  # @param [String] validationKey 4 chars ASCII encoded
  # @param [Function] callback
  # @return [Q.Promise]
  validateWithPinCode: (validationPinCode, callback=undefined, progressCallback=undefined) -> @_validate((char.charCodeAt(0).toString(16) for char in validationPinCode).join(''), callback, progressCallback)

  # @param [String] validationKey 4 chars ASCII encoded
  # @param [Function] callback
  # @return [Q.Promise]
  validateWithKeycard: (validationKey, callback=undefined, progressCallback=undefined) -> @_validate(("0#{char}" for char in validationKey).join(''), callback, progressCallback)

  # @param [String] validationKey 4 bytes hex encoded
  # @param [Function] callback
  # @return [Q.Promise]
  _validate: (validationKey, callback=undefined, progressCallback=undefined) ->
    if not @_resumeData? or not @_validationMode?
      Errors.throw('Transaction must me prepared before validation')
    d = ledger.defer(callback)
