https://www.sourcebaran.com/learn/kotlin-programming-inner-nested-class/