#10 added template implementations of token and lexer