I don't know if this is an actual design pattern, but essentially while working on some web software (initially it was a forum), I realized the amount of features I wanted to add and how most would differ, and how these differences would eventually instantiate different versions/entirely new apps. This led to me realizing that it would be much better to aggregate and abstract these features, so e.g. I would have 'save' as an abstraction, which would be differentiated by some means. But then I kept realizing that the very means of abstraction would better be abstracted itself, in case better ways of improving that were found. So ergo, I find myself in quite a loop -- I want the features to all be individually defined and abstracted, including the very means of doing so, as a means to make it easier to modify without having to route through tons of source, yet I find that it's quite intangible. I realize that some "primitive" abstractions need other "primitive" abstractions, which require tangible source yet I can't help but find it irritating that the tangible source is not the same as everything else. It's quite difficult to explain, but the annoyance is with regards to making everything tangible by some means - an axiom - but at the same time, allowing for that very means to be modified by the same means of itself. I hope that makes sense.
Honestly, the hardest part of this process is naming everything. Lame, huh?