use metatable to implement x.