It's a very minor style nit, but it feels weird to me to use an upper case name for a variable that's not available outside the package, and also to be shadowing the `WantsName` interface. Might it be better to use lower case for your local var here? i.e.:

```go
if wantsName, ok := plugin.(WantsName); ok {
    wantsName.SetName(sectionName)
}
```

There's one other case of this same code below, other than that r+.