improve to use language lib