turns out metamethods are necessary...