Near total rewrite of construct_intersection(). Fixes #33