bugfix: != is not ~=
bugfix: handle metatable callbacks