I see lot of couping between different solidity contracts and it makes more difficult to understand how they can be composed. It is not intuitive and you need a deep understanding of the framework to really know what you are doing.
I think would be much more intuitive to have a Base contract with features added as decorations following something as decorator pattern, with no coupling at all between decorations, e.g.:
contract ERC20 is Feature1, Feature2, Feature3, Feature4..... {
}
Developers could contribute decorations to make it extensible.
Is this feasible?