This is exactly what I did when I started the project. The problem is the way root handles templates which leads to dependencies between all classes which use the FairWriteoutBuffer. Therefore this solution was ruled out and I had to come up with the inheritance scheme.