 		
 	}
 	
+	
+	/**
+	This function returns all clips within an element and its sub-elements.
+	- Note: The clips in the resulting array are not ordered by where they appear in the XML document.
+	
+	- returns: An array of clips as XMLElement objects.
+	*/
+	public func clips() -> [XMLElement] {
+		
+		let clipTypes = [FCPXMLElementType.clip, FCPXMLElementType.audio, FCPXMLElementType.video, FCPXMLElementType.gap, FCPXMLElementType.transition, FCPXMLElementType.title, FCPXMLElementType.audition, FCPXMLElementType.multicamClip, FCPXMLElementType.compoundClip, FCPXMLElementType.synchronizedClip, FCPXMLElementType.assetClip]
+		
+		var matchingClips: [XMLElement] = []
+		
+		for clipType in clipTypes {
+			matchingClips.append(contentsOf: self.elements(forName: clipType.rawValue, inElement: self, usingAbsoluteMatch: true))
+		}
+		
+		return matchingClips
+	}
+	
+	
+	/// This function goes through the element and all its children, returning all clips that match the given FCPX clip name.
+	///
+	/// - Parameters:
+	///   - fcpxName: A String of the clip name in FCPX to match with.
+	///   - usingAbsoluteMatch: A boolean value of whether names must match absolutely or whether clip names containing the string will yield a match.
+	/// - Returns: An array of matching clips as XMLElement objects.
+	public func clips(forFCPXName fcpxName: String, usingAbsoluteMatch: Bool) -> [XMLElement] {
+		
+		let allClips = self.clips()
+		
+		var matchingClips: [XMLElement] = []
+		
+		for clip in allClips {
+			
+			guard let clipName = clip.fcpxName else {
+				continue
+			}
+			
+			if usingAbsoluteMatch == true {
+				
+				if clipName.uppercased() == fcpxName.uppercased() {
+					matchingClips.append(clip)
+				}
+				
+			} else {
+				
+				if clipName.uppercased().contains(fcpxName.uppercased()) == true {
+					matchingClips.append(clip)
+				}
+			}
+		}
+		
+		return matchingClips
+		
+	}
 	
 	/**
 	This function goes through the element and all its children, finding clips that match the given type.

	
	- returns: An array of matching clips as XMLElement objects.
	*/
	public func clips(forElementType elementType: FCPXMLElementType, inElement element: XMLElement) -> [XMLElement] {
		
		var matchingElements: [XMLElement] = []
		

	
	- returns: An array of matching clips as XMLElement objects.
	*/
	private func elements(forName name: String, inElement element: XMLElement, usingAbsoluteMatch: Bool) -> [XMLElement] {
		
		var matchingElements: [XMLElement] = []
		
