  Boolean networks have been used in a variety of settings, as models for
general complex systems as well as models of specific systems in diverse
fields, such as biology, engineering, and computer science. Traditionally,
their properties as dynamical systems have been studied through simulation
studies, due to a lack of mathematical structure. This paper uses a common
mathematical technique to identify a class of Boolean networks with a "simple"
structure and describes an algorithm to construct arbitrary extensions of a
collection of simple Boolean networks. In this way, all Boolean networks can be
obtained from a collection of simple Boolean networks as building blocks. The
paper furthermore provides a formula for the number of extensions of given
simple networks and, in some cases, provides a parametrization of those
extensions. This has potential applications to the construction of networks
with particular properties, for instance in synthetic biology, and can also be
applied to develop efficient control algorithms for Boolean network models.
