There are several fundamental problems with trying to manage the state of a function through the use of booleans. The first is often referred to as "boolean explosion". For every boolean we add to a function, we increase the number of possible states at a rate of `2^n`

where `n`

is the number of booleans. Running the math just a few times quickly reveals an absurd amount of states.

The second problem is that many of these states are "impossible states", states our application should never be in. The example in the lesson is that the light bulb should not be `isLit`

and `isBroken`

. It's simply not possible, and is an inaccurate modeling of an actual light bulb.

The way we solve for this problem is by enumerating the possible states. In other lessons in this course, we'll do that with state machines, but for now, we'll do that by enumerating the possible states and updating our function to only utilize these possible states.