reuse complex method