Found this post useful: http://forum.nimrod-code.org/t/31
p.s. multimethods scattered around are not suitable because they imply inheritance.
Is using private/public (*) the only way to do that stuff in nim?
Yes, for this stuff Nimrod takes Oberon view. The idea is to reduce typing of the routine header and to eliminate consistency checking between routine header in interface and implementation (as in the realm of Object Pascal / Modula).