implemented lazy propagation through eval