modifed setmetatable