Lexer refactor + Cleanup