better eval logic