add unit tests & change language behavior