better lazyness in eval -- still not quite right