refactor with language module