This _add is to be in Level 0. I have added support to domains. I was having some difficulty including domains in  the previous and it also has to be stand-alone function not a method. So I reimplemented it. I have use binary search and things like taking the matrix with fewer elements before to speed things up.