fixed the last part of the intersection as well as a few specialcases, also a few principal tests, but it would really need some unit testing for some of the inner methods