rework for a new struct