         scope.popup.state.isOpen = false
 
     do () ->
+      scope.watchers.watchSource (
+        scope.watchers.watchPopupResult()
+        scope.watchers.watchBModel()
+      )
       if not scope.bRange
         scope.bRefresh()
       else

            scope.watchers.popup.result.handler = scope.$watch 'popup.result', (newVal, oldVal) ->
              if callback
                callback newVal, oldVal
#return if newVal is oldVal
#              return if not newVal
#              return if angular.equals {}, newVal
#              if (not scope.bRange)
#                scope.bModel = getFormattedDate(scope.popup.result)
#              else
#                scope.bModel = getFormattedDateRange(scope.popup.result)
            ,
              true
            return scope.watchers.popup.result.handler
          stop: () ->
            scope.watchers.popup.result.handler()
            scope.watchers.popup.result.handler = null
      bModel:
        handler: null
        start: (callback) ->

        stop: () ->
          scope.watchers.bEndSource.handler()
          scope.watchers.bEndSource.handler = null
      watchSource: (callback) ->
        if not scope.bRange
          scope.watchers.bSource.start (val) ->
            return if not val
            scope.isSourceReady = true
            scope.watchers.bSource.stop()
            callback val
        else
          isStartSourceReady = false
          isEndSourceReady = false
