refactoring methods for intersection and Rule application.  getting close to a generation