define([

], function(

) {
	return function(tree, cbs) {
		var storage = {}; // permet aux cbs de renvoyer une valeur pour la stocker
		var add = function(key) {
			var ret = cbs.add(key);
			storage[key] = ret;
		};
		var remove = function(key) {
			cbs.remove(key, storage[key]);
			delete storage[key];
		};

		if (cbs.init) {
			// permet d'avoir une logique d'initialisation différente de la logique incrémentale
			// je ne sais pas si c'est très utile...
			cbs.init(Object.keys(tree.keys()));
		} else {
			Object.keys(tree.keys()).forEach(add);
		}
		var keyAddedHandler = tree.onKeyAdded(add);
		var keyRemovedHandler = tree.onKeyRemoved(remove);

		return function() {
			keyAddedHandler();
			keyRemovedHandler();
		};
	};

});
@@ -139,16 +139,27 @@
 ar add =
+ cbs.add &&
  functio
@@ -236,16 +236,30 @@
 remove =
+ cbs.remove &&
  functio
@@ -534,16 +534,23 @@
 se %7B%0A%09%09%09
+add && 
 Object.k
@@ -599,32 +599,39 @@
 eyAddedHandler =
+ add &&
  tree.onKeyAdded
@@ -662,16 +662,26 @@
 andler =
+ remove &&
  tree.on
@@ -745,15 +745,55 @@
 dler
-();%0A%09%09%09
+ && keyAddedHandler();%0A%09%09%09keyRemovedHandler && 
 keyR

allow omitting some callbacks in bindBranch