While the implementation is going to be non-trivial, I'm hoping I can do most of the bookkeeping behind the scenes. For instance, one of my goals is for the support code to do the node allocation 'on the fly', so you'll be able to do call like:
track.addSupport(NLPoint(0.0,1.0,0.0), NLPoint(0.0,5.0,0.0),LARGE_TUBE);
track.addSUpport(NLPoint(0.0,5.0,0.0), NLPoint(5.0,5.0,0.0),LARGE_TUBE);
And the library will take care of actually creating the 3 nessesary freenodes, and making the two tubes reference the same node.