NaroCad's internal data tree that holds info about the data, undo, redo and knows how to save, open is implemented in C# and has a similar structure with the OCAF package from OpenCascade. Being in C# and not wrapped it offers a lot of advantages like improved code readability, improved debugging and most important possibility to launch events (like when a node is modified it informs the view to redraw it - functionality not easily implementable with wrappers). Also it offers advantages when modifications propagate.
In the last 2 days worked at strengthening the unit tests for the data tree by implementing use cases and data integrity checks. With this occasion found and fixed some of the bugs that were affecting Undo/Redo. The problems were mainly created by the face intersection functionality integration with the data tree. Now the Undo, Redo, Save, Open should work better.
Will continue reviewing the data tree code/architecture. If no major problems found will continue with implementing Dimensions and the Chamfer tool.