anchor.diff:          container.querySelectorAll('[data-bind-event]').forEach((Element element) {
               _bindParameters(element.dataset['bind-event'], dataSource, (left_key, right_key, value) {
                   if (left_key != null) {
  -                    element.on[left_key].listen(value);
  +                    element.on[left_key].listen((event) {
  +                        if (value is EventCallback) {
  +                            value(event, router);                            
  +                        } else if (value is EventWithDataCallback) {
  +                            value(event, router, dataSource);                            
  +                        }
  +                    });
                   }
               }, expectFunction: true);
               element.dataset.remove('bind-event');
  
positive.code:     }
      
      /// Resolve all bindings inside a container element
      Template.bindContainer(Element container, Map dataSource) {
          // Allow additional elements when adding new content to the DOM
          _validator = new NodeValidatorBuilder.common()
              ..allowElement('a', attributes: ['href'])
  
negative.code: /// key inside the data source and [value] refers to the value inside
  /// the data source for the [right_key].
  typedef BindingCallback(String left_key, String right_key, value);
  
  /// Event callback with [router] definition
  typedef EventCallback(Event event, Router router);
  
  /// Event callback with [router] and [dataSource] definition
  typedef EventWithDataCallback(Event event, Router router, Map dataSource);
   
  /// This class provides an easy to use templating system with data bindings
  ///  
  