I saw this drop this morning and decided I had to ask this before I head out. So the new SystemBase promises automatic dependency management. If this is robust, it is really awesome. However, looking at how it appears to be implemented from SystemBase's perspective, I am skeptical of that. I'm quite suspicious you created an alchemated monster that falls flat on its face the moment you do something other than the bread-and-butter simple jobs that are not enough on their own to build real games (other than tiny games). Which of these jobs will have their dependencies injected correctly? Entities.ForEach IJobForEach and variants IJobChunk IJob and IJobParallelFor and other custom jobs using ComponentDataFromEntity or ArchetypeChunkComponentType Job.WithCode Any of the above after manually assigning the Dependency property (for example, populating the noise map) Similar question for automatically writing back to Dependency? How I would expect this to work: I would expect that every ComponentType has a pair of read and write JobHandles associated with it. Before OnUpdate in a SystemBase, SystemBase tells the World to register it as the active JobHandle keeper. After OnUpdate, it deregisters. Whenever an ECS job (relies on an EntityQuery) from anywhere gets scheduled, it fetches and combines all ComponentType handles it knows about along with an input JobHandle or the active JobHandle from a SystemBase. Whenever an ECS job gets scheduled, its output JobHandle gets written back to all ComponentTypes as well as the active JobHandle from SystemBase (if a SystemBase is registered). Whenever a ComponentType iterator (ComponentDataFromEntity and friends or ArchetypeChunkComponentType and friends or ArchetypeChunkIterator) is acquired, the JobHandle of the ComponentType is merged into the active JobHandle of SystemBase. Whenever a new JobHandle gets written back to Dependency from outside internal code, all JobHandles of the acquired ComponentType iterators are updated as well. EntityManager Get/Set completes the JobHandle of the ComponentType in question. EntityManager Create/Destroy/Add/Remove/ect only completes the JobHandles of ComponentTypes of the components affected. EntityCommandBuffer playback completes all jobs of all ComponentTypes. (Not sure if it makes sense to have a universal JobHandle in addition to per ComponentType for this) ExclusiveEntityTransaction acts as an iterator for all ComponentTypes at once and uses the same rules as the other iterators except applied to all ComponentTypes. Any non-ECS job could keep the automatic dependency system up to date simply by scheduling the job with Dependency as a parameter and writing back to Dependency. Job.WithCode generates code which does the previous point. SimpleDependencyMode replaces Dependency to be a property to the World's JobHandle.