A method for a first network controller that distributes forwarding state data to a managed forwarding element in order to configure the managed forwarding element to forward data in a network, the method comprising: receiving a plurality of sets of input forwarding state data for a transaction from a second controller that generates the input forwarding state data; for each set of input forwarding state data of the plurality of sets: determining whether the set of input forwarding state data has external dependencies, wherein the set of input forwarding state data has external dependencies when a response from the managed forwarding element is required before a resulting set of output state data can be produced; when the set of input forwarding state data has external dependencies: processing at least a portion of the received set of input forwarding state data to generate a set of output forwarding state data; distributing the set of output forwarding state data to the managed forwarding element as a request for additional data; and modifying the set of output forwarding state data based on a response from the managed forwarding element to produce a resulting set of output state data; and when the set of input forwarding state data does not have external dependencies: processing the received set of input forwarding state data to generate a resulting set of output forwarding state data; and distributing the resulting sets of output forwarding state data to the managed forwarding element only after processing all of the plurality of sets of input forwarding state data of the transaction. receiving a plurality of sets of input forwarding state data for a transaction from a second controller that generates the input forwarding state data; for each set of input forwarding state data of the plurality of sets: determining whether the set of input forwarding state data has external dependencies, wherein the set of input forwarding state data has external dependencies when a response from the managed forwarding element is required before a resulting set of output state data can be produced; when the set of input forwarding state data has external dependencies: processing at least a portion of the received set of input forwarding state data to generate a set of output forwarding state data; distributing the set of output forwarding state data to the managed forwarding element as a request for additional data; and modifying the set of output forwarding state data based on a response from the managed forwarding element to produce a resulting set of output state data; and when the set of input forwarding state data does not have external dependencies: processing the received set of input forwarding state data to generate a resulting set of output forwarding state data; and distributing the resulting sets of output forwarding state data to the managed forwarding element only after processing all of the plurality of sets of input forwarding state data of the transaction. determining whether the set of input forwarding state data has external dependencies, wherein the set of input forwarding state data has external dependencies when a response from the managed forwarding element is required before a resulting set of output state data can be produced; when the set of input forwarding state data has external dependencies: processing at least a portion of the received set of input forwarding state data to generate a set of output forwarding state data; distributing the set of output forwarding state data to the managed forwarding element as a request for additional data; and modifying the set of output forwarding state data based on a response from the managed forwarding element to produce a resulting set of output state data; and processing at least a portion of the received set of input forwarding state data to generate a set of output forwarding state data; distributing the set of output forwarding state data to the managed forwarding element as a request for additional data; and modifying the set of output forwarding state data based on a response from the managed forwarding element to produce a resulting set of output state data; and when the set of input forwarding state data does not have external dependencies: processing the received set of input forwarding state data to generate a resulting set of output forwarding state data; and distributing the resulting sets of output forwarding state data to the managed forwarding element only after processing all of the plurality of sets of input forwarding state data of the transaction. processing the received set of input forwarding state data to generate a resulting set of output forwarding state data; and distributing the resulting sets of output forwarding state data to the managed forwarding element only after processing all of the plurality of sets of input forwarding state data of the transaction.