provide a clean interface for lexing
snapshot the change