support multiple implementation roles
tests for interface attributes
implementation might not be defined yet. attr might be an object
tests for interface roles
tests for no-implementation
tests for no interface