Headers first, blocks first, concurrent blocks, validation, confirmation, org, reorg, disorg, block hash malleation, bip30… all working very well together in the event-driven model, which allows them to be well isolated and easy to follow while still being necessarily interdependent.