move to hand made lexer