it can be private class in the companion object