"Do not feel compelled to make design decisions prematurely. Resist, even if you fear your code would dismay the design gurus. [...] When the future cost of doing nothing is the same as the current cost, postpone the decision. Make the decision only when you must with the information you have at that time." (Sandi Metz, "Practical Object-Oriented Design")