more lines of code, but more control/predictability