diff --git a/lib/mustache.dart b/lib/mustache.dart
index 23c2c4d..3993230 100644
--- a/lib/mustache.dart
+++ b/lib/mustache.dart
@@ -19,12 +19,12 @@
 	/// [values] can be a combination of Map, List, String. Any non-String object
 	/// will be converted using toString(). Null values will cause a 
 	/// FormatException, unless lenient module is enabled.
-	String renderString(values, {bool lenient : false});
+	String renderString(values, {bool lenient : false, bool htmlEscapeValues : true});
 
 	/// [values] can be a combination of Map, List, String. Any non-String object
 	/// will be converted using toString(). Null values will cause a 
 	/// FormatException, unless lenient module is enabled.
-	void render(values, StringSink sink, {bool lenient : false});
+	void render(values, StringSink sink, {bool lenient : false, bool htmlEscapeValues : true});
 }
 
 /// MustacheFormatException is used to obtain the line and column numbers
diff --git a/lib/scanner.dart b/lib/scanner.dart
index 0cd1c42..deb3c5d 100644
--- a/lib/scanner.dart
+++ b/lib/scanner.dart
@@ -9,8 +9,9 @@
 const int _OPEN_INV_SECTION = 5;
 const int _CLOSE_SECTION = 6;
 const int _COMMENT = 7;
+const int _UNESC_VARIABLE = 8;
 
-tokenTypeString(int type) => ['?', 'Text', 'Var', 'Par', 'Open', 'OpenInv', 'Close', 'Comment'][type];
+tokenTypeString(int type) => ['?', 'Text', 'Var', 'Par', 'Open', 'OpenInv', 'Close', 'Comment', 'UnescVar'][type];
 
 const int _EOF = -1;
 const int _NEWLINE = 10;
@@ -121,18 +122,16 @@
 
 			// Escaped text {{{ ... }}}
 			case _OPEN_MUSTACHE:				
-				throw new UnimplementedError('Escape tag {{{ ... }}}');
-				//_read();
-				//_addStringToken(_TEXT);
-				//_expect(_CLOSE_MUSTACHE);
-				//break;
+				_read();
+				_addStringToken(_UNESC_VARIABLE);
+				_expect(_CLOSE_MUSTACHE);
+				break;
       			
 			// Escaped text {{& ... }}
 			case _AMP:
-				throw new UnimplementedError('Escape tag {{& ... }}');
-				//_read();
-				//_addStringToken(_TEXT);
-				//break;
+				_read();
+				_addStringToken(_UNESC_VARIABLE); //FIXME Do I need to read a space after the '&'?
+				break;
 
 			// Comment {{! ... }}
 			case _EXCLAIM:
diff --git a/lib/template.dart b/lib/template.dart
index a00751b..fef9907 100644
--- a/lib/template.dart
+++ b/lib/template.dart
@@ -68,17 +68,19 @@
 	final List _stack = new List();
 	final Map _htmlEscapeMap = new Map<int, String>();
 	final bool _lenient;
-
+	
+	bool _htmlEscapeValues;
 	StringSink _sink;
 
-	renderString(values, {bool lenient : false}) {
+	String renderString(values, {bool lenient : false, bool htmlEscapeValues : true}) {
 		var buf = new StringBuffer();
-		render(values, buf, lenient: lenient);
+		render(values, buf, lenient: lenient, htmlEscapeValues: htmlEscapeValues);
 		return buf.toString();
 	}
 
-	render(values, StringSink sink, {bool lenient : false}) {
+	void render(values, StringSink sink, {bool lenient : false, bool htmlEscapeValues : true}) {
 		_sink = sink;
+		_htmlEscapeValues = htmlEscapeValues;
 		_stack.clear();
 		_stack.add(values);	
 		_root.children.forEach(_renderNode);
@@ -95,6 +97,9 @@
 			case _VARIABLE:
 				_renderVariable(node);
 				break;
+			case _UNESC_VARIABLE:
+				_renderVariable(node, escape: false);
+				break;
 			case _OPEN_SECTION:
 				_renderSection(node);
 				break;
@@ -112,7 +117,7 @@
 		_write(node.value);
 	}
 
-	_renderVariable(node) {
+	_renderVariable(node, {bool escape : true}) {
 		final value = _stack.last[node.value];
 		if (value == null) {
 			if (!_lenient)
@@ -121,7 +126,10 @@
 					'variable: ${node.value}, '
 					'at: ${node.line}:${node.column}.', node.line, node.column);
 		} else {
-			_write(_htmlEscape(value.toString()));
+			var output = !escape || !_htmlEscapeValues 
+				? value.toString()
+				: _htmlEscape(value.toString());
+			_write(output);
 		}
 	}
 
