finish rework for the OO stuff