seperate groups intermediate implementation