modify to refactor language interfaces