Clean up handling of delimiters and indenting
diff --git a/lib/src/node.dart b/lib/src/node.dart
index ebd3824..1366fd0 100644
--- a/lib/src/node.dart
+++ b/lib/src/node.dart
@@ -30,22 +30,20 @@
       renderer._write(text);
     } else if (lastNode && text.runes.last == _NEWLINE) {
       var s = text.substring(0, text.length - 1);
-      renderer._write(s.replaceAll('\n', '\n$renderer._indent'));
+      renderer._write(s.replaceAll('\n', '\n${renderer._indent}'));
       renderer._write('\n');
     } else {
-      renderer._write(text.replaceAll('\n', '\n$renderer._indent'));
+      renderer._write(text.replaceAll('\n', '\n${renderer._indent}'));
     }
   }
 }
 
 class _VariableNode extends _Node {
   
-  _VariableNode(this.name, int start, int end, this.delimiters,
-      {this.escape: false})
+  _VariableNode(this.name, int start, int end, {this.escape: false})
     : super(start, end);
   
   final String name;
-  final String delimiters;
   final bool escape;
   
   render(_Renderer renderer) {
@@ -86,9 +84,11 @@
   final List<_Node> children = <_Node>[];
   
   //TODO can probably combine Inv and Normal to shorten.
-  void render(_Renderer renderer) => inverse
-      ? renderInv(renderer)
-      : renderNormal(renderer);
+  void render(_Renderer renderer) {
+    // Keep track of delimiters for use in LambdaContext.renderSource().
+    renderer._delimiters = delimiters;
+    return inverse ? renderInv(renderer) : renderNormal(renderer);
+  }
   
   void renderNormal(_Renderer renderer) {
     var value = renderer._resolveValue(name);
@@ -97,7 +97,7 @@
       // Do nothing.
     
     } else if (value is Iterable) {
-      value.forEach((v) => renderer._renderSectionWithValue(this, v));
+      value.forEach((v) => renderer._renderSectionWithValue(this, v)); //FIXME probably pull this code into the node?
     
     } else if (value is Map) {
       renderer._renderSectionWithValue(this, value);
@@ -159,11 +159,10 @@
 
 class _PartialNode extends _Node {
 
-  _PartialNode(this.name, int start, int end, this.delimiters, this.indent)
+  _PartialNode(this.name, int start, int end, this.indent)
     : super(start, end);
   
   final String name;
-  final String delimiters; //FIXME
   
   // Used to store the preceding whitespace before a partial tag, so that
   // it's content can be correctly indented.
@@ -176,7 +175,7 @@
         : renderer._partialResolver(partialName);
     if (template != null) {
       var r = new _Renderer.partial(renderer, template, this.indent);
-      r.render(); //FIXME Hmm change this.
+      r.render();
     } else if (renderer._lenient) {
       // do nothing
     } else {
diff --git a/lib/src/parse.dart b/lib/src/parse.dart
index 63695c6..cbaec3e 100644
--- a/lib/src/parse.dart
+++ b/lib/src/parse.dart
@@ -27,12 +27,12 @@
       case _VARIABLE:
       case _UNESC_VARIABLE:
         var n = new _VariableNode(
-            t.value, t.start, t.end, delim, escape: t.type != _UNESC_VARIABLE);
+            t.value, t.start, t.end, escape: t.type != _UNESC_VARIABLE);
         stack.last.children.add(n);
         break;
 
       case _PARTIAL:
-        var n = new _PartialNode(t.value, t.start, t.end, delim, t.indent); 
+        var n = new _PartialNode(t.value, t.start, t.end, t.indent); 
         stack.last.children.add(n);
         break;
 
@@ -60,7 +60,7 @@
         break;
       
       case _CHANGE_DELIMITER:
-        delimiters = t.value;
+        delim = t.value;
         break;
         
       case _COMMENT:
diff --git a/lib/src/renderer.dart b/lib/src/renderer.dart
index a6ca9f1..f429bf7 100644
--- a/lib/src/renderer.dart
+++ b/lib/src/renderer.dart
@@ -75,7 +75,9 @@
   final String _templateName;
   final String _indent;
   final String _source;
-
+  
+  // Need to keep track of the current delimiters during rendering.
+  // These are used in LambdaContext.renderSource().
   String _delimiters;
   
   void render() {
@@ -94,7 +96,9 @@
     
     _write(_indent);
     
-    nodes.take(nodes.length - 1).map((n) => n.render(this));
+    for (var n in nodes.take(nodes.length - 1)) {
+      n.render(this);
+    }
         
     var node = _root.children.last;
     if (node is _TextNode) {