implemented intersection