Why do we need to split evalLocal and evalLocalDef?