add language support and historic function