             ident = ident.identity?() or ident
 
             if not (n = @find(ident))
-                return
+                return false
 
             if @_isRequired(n)
                 @_triggerRequired [n.get('concept')]
-                return
-
-            if not @_checkRequired() then return
+                return false
+
+            if not @_checkRequired()
+                return false
 
             if (u = @upstream.find(ident))
                 u.set(enabled: false)

        clear: (options={}) ->
            if @_hasRequired()
                @_triggerRequired()
                return

            @upstream.clear(reset: true)


        apply: (ident, options) ->
            ident = ident.identity?() or ident

            if not @_checkRequired()
                return false

            if not (n = @find(ident))
                return false

            # No attributes, which means this is not valid
            if not (attrs = n.toJSON())
                return false

            # Define upstream, this is idempotent
            u = @upstream.define(ident, n.path(), type: n.type)
