There are oddities with overloading functions. For example:
if user enters a function in a subtype and then enters a function into
a super type that the first one will overload, then both will appear in
the subtype's table.
Think of a good framework to deal with this without it being a hack.