Lots of cleanup, removed all the peeking, added a TokenStream