language code must be lowercase
updated unit tests
refactorings and fixed unittests