operators for user-defined types