substitute implemented