add unary ops
clean up user data and provide operator overloads using meta methods