It needs to be generic while also being as simple as possible. So you're building the module for a specific situation but leave it as open as possible for other situations without explicitly optimizing for them.