refactored rectangle._intersection and ._difference