separated complex method