Das Problem ist, daß Du nicht mal gesagt hast, um was es genau geht. Insofern helfen bei so einer Frage eben nur Beispiele, wenn überhaupt. Einiges sollte man bei der Komponentenentwicklung aber doch beachten :
Es ist mehr oder weniger mühsam, diese selber zu machen. Gehen tut das aber schon. Ist sie fertig, dann besteht kein großer Bedarf mehr, sie zu ändern. Aber nur, wenn sie gut geplant wurde und tatsächlich funktioniert. Dies bedeutet dann aber auch, daß man lange nichts damit zu tun hat, eben erst dann, wenn man doch wieder etwas ändern muß wegen schlechter Planung. Und dann fängt man eben wieder an sich reinzudenken.
Jetzt gibt es verschiedene Methoden, sich das Leben schwer zu machen : man schreibe eigene Units für jede Komponente, selbst wenn sie aufeinander aufbauen. Das ist das, was du vorhast. Verfeinern kann man das Spaghetti-Gericht dann noch mit diversen abstracten Zutaten. 8) Als Krönung der Mahlzeit könnte man diese Units dann noch in eigene Unterverzeichnisse packen und im Endeffekt den Compiler zur Kapitulation zwingen.