add completion handlers