While it is important to separate concerns where applicable (might be user related functionality and caching) generalization most of the time just adds complexity.