         if isUnescaped {
           p = p! + 3 // skip }}}
           let s = String.fromCString(marker, length: len)!
-          return .UnescapedTag(s)
+          return .unescapedTag(s)
         }
         
         p = p! + 2 // skip }}

  
  public init() {}
  
  enum MustacheToken {
    case Text(String)
    case Tag(String)
    case UnescapedTag(String)
    case SectionStart(String)
    case InvertedSectionStart(String)
    case SectionEnd(String)
    case Partial(String)
  }
  
  private var start   : UnsafePointer<CChar>? = nil

        switch typec {
          case sStart: // #
            let s = String.fromCString(marker + 1, length: len - 1)!
            return .sectionStart(s)
  
          case isStart: // ^
            let s = String.fromCString(marker + 1, length: len - 1)!
            return .invertedSectionStart(s)
  
          case sEnd: // /
            let s = String.fromCString(marker + 1, length: len - 1)!
            return .sectionEnd(s)
            
          case pStart: // >
            var n = marker + 1 // skip >
            while n.pointee == 32 { n += 1 } // skip spaces
            let len = p! - n - 2
            let s = String.fromCString(n, length: len)!
            return .partial(s)

          case ueStart /* & */:
            if (marker + 1).pointee == 32 {
              let s = String.fromCString(marker + 2, length: len - 2)!
              return .unescapedTag(s)
            }
            fallthrough
          
          default:
            let s = String.fromCString(marker, length: len)!
            return .tag(s)
        }
      }
      
      p = p! + 1
    }
    
    return .text(String(cString: start))
  }
  
  mutating private func parseText() -> String {
