Start simple add the rest later when you needed it. How will you know you need it later? At 3AM. If it makes you feel better add a comment what will be needed when it breaks.
I see over and over wildly overdone code. When all I really wanted was some simple if conditions and a couple of loops. But that doesnt scale to XYZ per ns. Does it need to?
Boring wins almost every time.