Make Add smarter about pointers and by ref types