Hi,
We're working with your library and noticed something curious, why does the "substract" function keep parts that don't intersect with the given part?
Imho if they don't intersect then A.difference(B) should just return A
(we ran into a visual issue and now fixed it by first checking if the parts intersect before executing the difference)
