More work on eval_tokens, split into eval_loop