         _that = $ @
         _requiredWith = _that.data 'required-with'
         _requireWith = _that.data 'require-with'
+        console.log 'validating'
+
+        validate =
+            status: null
+            message: null
+            issuer: 'requiredWith'
 
         if _requiredWith
-            validate =
-                status: null
-                message: null
-                issuer: 'requiredWith'
 
             if _requiredWith.search(':') isnt -1
                 _requiredWith = _requiredWith.split ':'


        # validate empty fields
        
        body.on 'blur', '[required]', -> 
            value = self.getValue.call @
            validate = self.validateRequired.call @, value
            if validate?
                validateField.call @, value, validate

        body.on 'blur', ':input:not([required])', ->
            value = self.getValue.call @
            if not value
                self.removeValidationClass.call @
                self.removeAllNotices.call @, self.speed
        
        body.on 'blur', ':input[data-required-with]', ->
            # need to monitor required field also
            value = self.getValue.call @
            validate = self.validateRequiredWith.call @, value
            if validate?
                validateField.call @, value, validate
        
        body.on 'blur', ':input[data-require-with]', ->
            # need to monitor required field also
            value = self.getValue.call @
            validate = self.validateRequiredWith.call @, value
            if validate?
                validateField.call @, value, validate
        
        body.on 'blur', ':input[data-allowed-with]', ->
            value = self.getValue.call @
            validate = self.validateAllowedWith.call @, value
            if validate?

            else
                requireFieldId = _requireWith

        _evaluate = (value, requiredFieldId, fieldValue) ->
            # if criteria is met then required field must be filled out
            fieldId = _that.attr 'id'
            requiredField = $ "##{requiredFieldId}"
            requiredFieldValue = $.trim requiredField.val()

            _checkValue = ->
                if not requiredFieldValue
                    validate.status = 'danger'
                    validate.message = "#{requiredFieldId} is required with #{fieldId}"
                else
                    validate.message = null
                    validate.status = 'success'
                validate

            if not value
                console.log 'do nothing'
            else if fieldValue? and (value is fieldValue)
                _checkValue()
            else if value.length > 0 and (not fieldValue?)
                _checkValue()
            
            validate

        _evaluate value, requiredFieldId, fieldValue

            # _evaluate = (value, requireFieldId, fieldValue) ->
            #     # if criteria is met then required field must be filled out
            #     fieldId = _that.attr 'id'
            #     requireField = $ "##{requireFieldId}"
            #     requireFieldValue = $.trim requireField.val()

            #     _checkValue = ->
            #         if not value
            #             validate.status = 'danger'
            #             validate.message = "#{fieldId} is required with #{requireFieldId}"
            #         else
            #             validate.message = null
            #             validate.status = 'success'
            #         validate

            #     if not requireFieldValue
            #         console.log 'do nothing'
            #     else if fieldValue? and (requireFieldValue is fieldValue)
            #         _checkValue()
            #     else if requireFieldValue.length > 0 and (not fieldValue?)
            #         _checkValue()
                
            #     validate

            # _evaluate value, requireFieldId, fieldValue
            
    validateAllowedWith: (value) ->
        _that = $ @
        _allowedWith = _that.data 'allowed-with'
