 }
 
 
-public class CommonLexer: CustomStringConvertible {
+public struct CommonToken: LexerToken {
+  public var bytes: [UInt8]
+  public var startIndex: Int
+  public var endIndex: Int
+  public var type: TokenType
+}
 
-  var stream: ByteStream
+
+public class CommonLexer: Lexer, CustomStringConvertible {
+
+  public var stream: ByteStream
   var status: CommonLexerStatus
 
   init(bytes: [UInt8], status: CommonLexerStatus) {

      } while si < len
  }

  public var description: String {
    return "CommonLexer(status: \(status))"
  }


  func parseTokenStrings(
      fn: (type: TokenType, string: String) throws -> Void) throws

  func parseTokens(fn: (token: LexerToken) throws -> Void) throws

}

