Before simplifying immutables
Simplified immutables (for the final, absolute last time).  Now uses 'withX(X x)' form to create new object with new 'x' value.  Also delegated all parent/child behaviour to ParentManager and ChildManager.