And by quick, I mean that I wrote it quickly... But it does pass an initial test: mt = { __methods = { show = print } } obj = setmetatable( {}, mt ) obj.show() -- yields an error obj:show() -- prints the address of obj Mark