I feel like I need to bring this up now before Bodies become a container for multiple solids. I've been thinking about a new assembly concept. I'll try to convey this in a few words, the details can come later.
The user brings in a part and then has to dictate all the placement parameters to the program. All the assembly params are stored and the tree gets really complicated. The assembly concept is almost an after-thought to part creation.
Assembly new (using DatumDock)
The user brings in a part and the program automatically places the part using the DatumDock info. The assembly (docking) data was created and stored in the part file when the part was designed .
Put a datum feature in the file with the body/part. When asked to assemble, the program jams two of the datumdock planes together (opposing) using local coordinates. Properties can be used to add mating discretion.
Create a block with two tubing connections, after all the design stuff is finished click the new tool icon "DatumDock", this creates (in the tree) a special datum plane that holds docking info, center the two datumdocks on the center of the tubing ports, create a dock for each pipe port. If you now bring in a tube (with a datumdock on the center of the tube) they will be aligned and docked.
Maybe the Assembler is a macro, something like bring in two parts, highlight two parts and click "Dock" in the macro screen, the macro looks in both part files and finds the docking planes.
That's probably enough for now.