a) There are several things that seem to share common meta-data - name, description, displayId. I think it would make sense to factor this out into its own interface. This will help keep the naming consistent, and allow client code to abstract over the meta-data-annotated thing where that makes sense - e.g. a GUI component for rendering meta-data. Bioinformatics is littered with things that are associated with some set of IDs, names and descriptions, possibly with issues of internationalisation, so it would make sense to model this once and re-use it across SBOL.