docs: function(node, type, s) {
      	var $C = function(a, b) { 
            return function(){
              return node.pos.add(new Complex(a, b));
            }; 
          };
          var dim = this.node;
          var w = node.getData('width');
          var h = node.getData('height');
  
          if(type == 'begin') {
              if(dim.align == "center") {
                  return this.dispatch(s, $C(0, h/2), $C(-w/2, 0),
                                       $C(0, -h/2),$C(w/2, 0));
              } else if(dim.align == "left") {
                  return this.dispatch(s, $C(0, h), $C(0, 0),
                                       $C(0, 0), $C(w, 0));
              } else if(dim.align == "right") {
                  return this.dispatch(s, $C(0, 0), $C(-w, 0),
                                       $C(0, -h),$C(0, 0));
              } else throw "align: not implemented";
              
              
          } else if(type == 'end') {
              if(dim.align == "center") {
                  return this.dispatch(s, $C(0, -h/2), $C(w/2, 0),
                                       $C(0, h/2),  $C(-w/2, 0));
              } else if(dim.align == "left") {
                  return this.dispatch(s, $C(0, 0), $C(w, 0),
                                       $C(0, h), $C(0, 0));
              } else if(dim.align == "right") {
                  return this.dispatch(s, $C(0, -h),$C(0, 0),
                                       $C(0, 0), $C(-w, 0));
              } else throw "align: not implemented";
          }
      }