add better eval support