Delay without Delay()?

State is what you can use to be able to write control code into blocks that don't need to be structured to run properly as each block can determine if it should run or not depending on information passed along from previous trips through loop().

In many cases putting the blocks into a switch-case will definitely run faster/cleaner. What works best may vary, I may want blocks that run on more than one state which could get messy in case statements. Switch-case is more for linear structure.

Some blocks I use aren't controlled by state. After the more critical blocks I might have a serial-I/O block for user I/O. That block of course may change state, and I don't have to 'fit it in' to a plate of spaghetti.