generic data class almost over