DeepSOIC's active container is nice in someways, but abstracting away active part and active body to one active container is going too far, IMO. All that I really want is all geometry objects to go into the active part including new parts. I also find it strange that you can have an active body in a different part than the active one (by activating another part after activating a body).
I propose the following behavior:
1. All new geometry objects, including parts, will be added to the active part if they are not otherwise controlled (draft auto group, path job, etc.).
2. Activating a part will deactivate the body in the previously active part.
Implementation wise, I think there could be too many special cases for one function to decide if a new object should be added to the active part. Therefore, I think it should be up to the code that calls "document.addObject" to decide what to do with the new object. This basically means that all commands that create geometry objects will need to be modified to call an "addToActivePart" function.
What do you think?