Previously, we assumed the network was "optimal". Now, we're using real numbers.
While the previous version "worked", this version nicely separates out the state for the separate stages. Hopefully, we'll be able to use this to build different pipelines with different configs.