anchor.diff:        test('fires a layeradd event immediately if the map is ready', () {
           var layer = new TestLayer();
           map.onLayerAdd.listen((_) {
  -          called = true;
  -        });
  -        map.setView(new LatLng(0, 0), 0);
  -        map.addLayer(layer);
  -        expect(called, isTrue);
  +//          called = true;
  +          comp1.complete(true);
  +        });
  +        map.setView(new LatLng(0, 0), 0);
  +        map.addLayer(layer);
  +//        expect(called, isTrue);
  +        expect(comp1.future, completion(isTrue));
         });
   
         test('fires a layeradd event when the map becomes ready', () {
           var layer = new TestLayer();
           map.onLayerAdd.listen((_) {
  -          called = true;
  +//          called = true;
  +          comp1.complete(true);
           });
           map.addLayer(layer);
           expect(called, isFalse);
           map.setView(new LatLng(0, 0), 0);
  -        expect(called, isTrue);
  +//        expect(called, isTrue);
  +        expect(comp1.future, completion(isTrue));
         });
   
         test('does not fire a layeradd event if the layer is removed before the map becomes ready', () {
           var layer = new TestLayer();
  +        //final c = new Completer<bool>();
           map.onLayerAdd.listen((_) {
  -          called = true;
  -        });
  -        map.addLayer(layer);
  -        map.removeLayer(layer);
  -        map.setView(new LatLng(0, 0), 0);
  -        expect(called, isFalse);
  +//          called = true;
  +          comp1.complete(true);
  +        });
  +        map.addLayer(layer);
  +        map.removeLayer(layer);
  +        map.setView(new LatLng(0, 0), 0);
  +//        expect(called, isFalse);
  +        expect(comp1.future, completion(isFalse));
  +        new Future.delayed(new Duration(milliseconds: 33), () {
  +          comp1.complete(false);
  +        });
         });
   
         test('adds the layer before firing layeradd', (/*done*/) {
           var layer = new TestLayer();
           map.onLayerAdd.listen((LayerEvent e) {
  -          expect(map.hasLayer(layer), isTrue);
  +          //expect(map.hasLayer(layer), isTrue);
   //          done();
  -        });
  -        map.setView(new LatLng(0, 0), 0);
  -        map.addLayer(layer);
  +          comp1.complete(map.hasLayer(layer));
  +        });
  +        map.setView(new LatLng(0, 0), 0);
  +        map.addLayer(layer);
  +        expect(comp1.future, completion(isTrue));
         });
   
         group('When the first layer is added to a map', () {
           test('fires a zoomlevelschange event', () {
             map.onZoomLevelsChange.listen((_) {
  -            called = true;
  +//            called = true;
  +            comp1.complete(true);
             });
             expect(called, isFalse);
             new TileLayer('{z}{x}{y}', new TileLayerOptions()
               ..minZoom = 0
               ..maxZoom = 10).addTo(map);
  -          expect(called, isTrue);
  +//          expect(called, isTrue);
  +          expect(comp1.future, completion(isTrue));
           });
         });
   
  
positive.code:             map.onZoomLevelsChange.listen((_) {
                called = true;
              });
              expect(called, isFalse);
              map.removeLayer(t2);
              expect(called, isTrue);
            });
          });
        });
  
        group('when a tile layer is removed from a map it and it had lesser or the sa,e zoom level coverage as the remainding layer(s)', () {
          test('fires no zoomlevelschange event', () {
            map.whenReady((_) {
              final tl = new TileLayer('{z}{x}{y}', new TileLayerOptions()
  
negative.code: 
            expect(comp1.future, completion(isTrue));
          });
        });
      });
  
      group('setView', () {
  