lexer most functionality working