 	/**
 		:name:	search(bond: group: property)
 	*/
-	public func search(bond type: String, group names: Array<String>? = nil, property pairs: Array<(key: String, value: AnyObject?)>? = nil) -> OrderedSet<Bond> {
-		// type
-		let nodes: OrderedSet<Bond> = search(Bond: type)
+	public func search(bond types: String..., group names: Array<String>? = nil, property pairs: Array<(key: String, value: AnyObject?)>? = nil) -> OrderedSet<Bond> {
+		return search(bond: types, group: names, property: pairs)
+	}
+	
+	/**
+		:name:	search(bond: group: property)
+	*/
+	public func search(bond types: Array<String>, group names: Array<String>? = nil, property pairs: Array<(key: String, value: AnyObject?)>? = nil) -> OrderedSet<Bond> {
+		let nodes: OrderedSet<Bond> = OrderedSet<Bond>()
+		
+		// types
+		for i in types {
+			nodes += search(Bond: i)
+		}
 		
 		// groups
 		if let n: Array<String> = names {

	/**
		:name:	search(entity: group: property)
	*/
	public func search(entity type: String, group names: Array<String>? = nil, property pairs: Array<(key: String, value: AnyObject?)>? = nil) -> OrderedSet<Entity> {
		// type
		let nodes: OrderedSet<Entity> = search(Entity: type)
		
		// groups
		if let n: Array<String> = names {

	/**
		:name:	search(action: group: property)
	*/
	public func search(action types: String..., group names: Array<String>? = nil, property pairs: Array<(key: String, value: AnyObject?)>? = nil) -> OrderedSet<Action> {
		return search(action: types, group: names, property: pairs)
	}
	
	/**
		:name:	search(action: group: property)
	*/
	public func search(action types: Array<String>, group names: Array<String>? = nil, property pairs: Array<(key: String, value: AnyObject?)>? = nil) -> OrderedSet<Action> {
		let nodes: OrderedSet<Action> = OrderedSet<Action>()
		
		// types
		for i in types {
			nodes += search(Action: i)
		}
		
		// groups
		if let n: Array<String> = names {
