different evaluation logic that prevents stack overflow for infinite loops