Actually cache results of unions and intersections