lexer work, still messy but fun.