I mean, in general you can just call the generic explicitly with `update[Enemy](self)` like so: type Enemy = ref object EntGroup[T] = ref object items: seq[T] proc update[T](self: EntGroup[T]) = echo "general update loop" proc update(self: EntGroup[Enemy]) = ## << What to put here to call the `update[T]()` code? ## update[Enemy](self) echo "enemy code" var eg = EntGroup[Enemy]() eg.update() Run
Outputs as you expect. Generally though what you're currently implementing looks to me more like you're thinking in patterns of dynamic dispatch with method (Namely that there's a "base-entity" that you can perform a "base-task" on that should always be run). If that's how you think about your code then imo it's best you also implement it in that fashion using methods etc. as blackmius suggested.