for what it is worth, we do this...
I have a shallow-ish hierachacy somthing like ths:
actor <-- device <-- type_of_device <-- concrete_implementation
We have some scipting code to help us make a new instance of type_of_device <-- concrete_implementation
I have a template with the last two in a .lvlib, and we clone them as needed to two brand new classes.
To further complicate, our stuff is in PPLs.