Type safe generic data object library