The first approach I took was for an actual generic proc type to define it: https://github.com/mattsah/mininim-core/blob/main/src/mininim/dic.nim#L10 This originally looked more like: `DelegateHook[T] = proc(self: typedesc[T], app: var App): T` Then I was trying to simply pass in the symbol from the class that needed the delegate e.g.: `builder: build` Then back in the `app.get()` proc trying to do something along the lines of: `delegate.Delegate.builder(T, app)` The problem is trying to `var builder: DelegateHook` on the `Delegate` class basically said an object couldn't be a non concrete type.