Outside code talks only to the aggregate root. Other aggregates are referenced by ID, and one transaction changes one aggregate.