     class func toTag(s: String) -> Tag {
         var maybeTag: Tag?
         if s.hasPrefix("{{{") {
-            maybeTag = .UnescapedVariable("")
+            maybeTag = self.mkTagUnescapedVariable(s)
         } else if s.hasPrefix("{{#") {
             maybeTag = .Section("", "")
         } else if s.hasPrefix("{{^") {

            return sname

        case .Variable(let vname):
            var type = context[vname]
            if type == nil {
                return "NIL TYPE"
            }

            var result: String
            switch type! {
            case .Str(let s):
                result = s
            default:
                result = "unsupported"
            }
            return result

        case .UnescapedVariable(let uname):
            return "unsupported"
        case .Section(let sname, let contents):
            return "unsupported"
        case .InvertedSection(let iname, let contents):
            return "unsupported"
        }
    }

    class func toTags(template: String) -> [Tag] {

        var name = Array(s).dropWhile({(char: Character) -> Bool in char == "{" }).takeWhile({(char: Character) -> Bool in char != "}" })
        return .Variable(String(seq: name))
    }

    class func mkTagUnescapedVariable(s: String) -> Tag? {
        let prefix = "{{{"
        let suffix = "}}}"
        if !s.hasPrefix(prefix) || !s.hasSuffix(suffix) {
            return nil
        }

        var name = Array(s).dropWhile({(char: Character) -> Bool in char == "{" }).takeWhile({(char: Character) -> Bool in char != "}" })
        return .UnescapedVariable(String(seq: name))
    }
}
