new version based on Scala language