anchor.diff:      _bodies.add(minify(body));
     }
   
  -  void addTopLevel(String name, String body) {
  -    _topLevel.add("var ${name} = ${body}");
  +  void addTopLevel(String a, [String b]) {
  +    if (b == null) {
  +      _topLevel.add(a);
  +    } else {
  +      addTopLevel("var ${a} = ${b}");
  +    }
     }
   
     List<String> _topLevel = [];
  -
  -  void writePrelude() {
  +  List<String> _includes = [];
  +
  +  String generatePrelude() {
  +    var x = buff.toString();
  +    _includes = _names.where((it) => x.contains(it)).toList();
  +
  +    var b = new StringBuffer();
       if (_topLevel.isNotEmpty) {
  -      buff.write(_topLevel.join(";"));
  -      buff.write(";");
  -    }
  -    buff.write('(function(${_names.join(",")}){var λ = {"args": args};');
  +      b.write(_topLevel.join(";"));
  +      b.write(";");
  +    }
  +    b.write('(function(${_includes.join(",")}){var λ = {${_includes.contains("args") ? '"args": args' : ''}};');
  +    return b.toString();
     }
   
     final RegExp _WHITESPACE = new RegExp(r'''\s{2,}(?=([^"]*("|')[^"']*("|'))*[^"']*$)''');
  
positive.code:       function(block, value) {
          for (var i in value) {
            if (value.hasOwnProperty(i)) {
              block(v);
            }
          }
        }
  
negative.code:     return input;
    }
  
    String generatePostlude() {
      var map = {};
  
      var i = 0;
      for (var n in _names) {
        if (_includes.contains(n)) {
          map[n] = _bodies[i];
        }
        i++;
      }
  
      return "})(${_bodies.where((it) => map.values.contains(it)).join(",")});";
    }
  }
  