OOP has always been my choice but not the whole drag and drop thing. although I use lazarus rarely do I use the Vcl I prefer to start with my own base class and go from there. trying to follow your way back through the many class inheritances is some what of a pain. that and most of whats there is no use to me. The other thing that is important to me is having scripting built into the class which is why I use my own base class. it has scripting built into the base so every class that desends from it will naturally inherit this. whether I need to dump the contents of a single object or an entire tree it is always there and I am in control. with a single import I and pull in a very complex scene without the need to hard code it. each object can literally contain its own language that exists only as long as the object exists. scripts can run locally from within the object or globally from the top of the tree. it would be difficult to pull that off procedurally.