works with non-value type, jankify comparison logic