Considering the first remark of @Simonrazer seems point on “How to organize spaghetti ?”
If it can help you, I think that you have to ask yourself some usuals simple Software Architect questions like thereafter
Do I start redesiging/rewriting everything/refactoring ?
Where to start ?
How to start it ?
What to change in first ?
With 1, for example, I think that you have to consider in first some simple points like :
- the behavior of the whole application is it well understood ?
- Is the spaghettis tangled in a large loop or in sub nodes paquets?
- Do my traits have a high cohesion ?
- Is it a question of performance or testability ?
This kind of approach for example could be inspring for a new Architecture design tool with Nodes in Armory. https://flowhub.io/