implemented evaluated-flag to avoid extra evaluation