https://medium.com/@husayn.fakher/choosing-between-sealed-classes-and-enum-classes-in-kotlin-60b71948264c