anchor.diff:        this.makePort('err:failed');
   
         this.port('in:val').forceCondition(Elements.elementExist(this.elem));
  +      this.port('in:val').forceCondition(Valids.isString);
         this.port('in:val').tap((n){
             if(!this.elem.classes.contains(n.data)) return this.port('err:failed').send(n);
             this.elem.remove(n.data);
  
positive.code:     }
  }
  
  class DataAttr extends AttrCore{
  
      DataAttr(){
        this.meta('id','DataAttr');
        this.enableSubnet();
  
        this.makePort('in:get');
        this.makePort('in:set');
        this.makePort('out:res');
  
        this.network.add('elements/GetDataAttr',(com){
  
        });
  
        this.network.add('elements/SetDataAttr',(com){
  
        });
  
      }
  }
  
  
  class Element extends Component{
    html.Element elem;
  
negative.code: 
  }
  
  class HasClass extends AttrCore{
  
      HasClass(){
        this.meta('id','HasClass');
  
        this.makePort('in:val');
        this.makePort('out:success');
        this.makePort('err:failed');
  
        this.port('in:val').forceCondition(Elements.elementExist(this.elem));
        this.port('in:val').forceCondition(Valids.isString);
        this.port('in:val').tap((n){
            if(!this.elem.classes.contains(n.data)) return this.port('err:failed').send(n);
            this.port('out:success').send(n);
        });
      }
  
  }
  
  class GetDataAttr extends AttrCore{
  
      GetDataAttr(){
  