 	
 	private var labels = [String: CFTimeInterval]()
 	
+	// MARK: Lifecycle
+	
+	convenience init(tweens: [Tween]?) {
+		self.init()
+		
+		if let tweens = tweens {
+			for tween in tweens {
+				add(tween)
+			}
+		}
+	}
+	
 	// MARK: Public Methods
 	
 	public func add(tween: Tween) {
 		add(tween, position: endTime)
 	}
 	
-	public func add(tween: Tween, position: CFTimeInterval) {
-//		if let time = position as? CFTimeInterval {
-//			
-//		} else if let label = position as? String {
-//			let regex = try! NSRegularExpression(pattern: "(\\w+)?(?:+|\\-)=(\\d+)", options: [])
-////			let matches = regex.matchesInString(label, options: [], range: NSRange(location: 0, length: label.length))
-////			print(matches)
-//		}
-		
-		// set startTime on tween...
-		tween.startTime = position + tween.delay
+	public func add(tween: Tween, position: AnyObject) {
+		var pos: CFTimeInterval = 0
+		
+		if let time = position as? CFTimeInterval {
+			pos = time
+		} else if let label = position as? NSString {
+			pos = timeFromString(label, relativeToTime: endTime)
+		}
+		tween.startTime = pos + tween.delay
 		
 		// remove tween from existing timeline (if `timeline` is not nil)... assign timeline to this
 		if let timeline = tween.timeline {

		}
	}
	
	public func addLabel(label: String, position: CFTimeInterval = 0) {
		labels[label] = position
	}
	
	public func seekToLabel(label: String, pause: Bool = false) {

		}
		return false
	}
	
	// MARK: Private Methods
	
	private func timeFromString(string: NSString, relativeToTime time: CFTimeInterval = 0) -> CFTimeInterval {
		var position: CFTimeInterval = time
		
		let regex = try! NSRegularExpression(pattern: "(\\w+)?([\\+,\\-]=)(\\d+)", options: [])
		let match = regex.firstMatchInString(string as String, options: [], range: NSRange(location: 0, length: string.length))
		if let match = match {
			var idx = 1
			var multiplier: CFTimeInterval = 1
			while idx < match.numberOfRanges {
				let range = match.rangeAtIndex(idx)
				if range.length <= string.length && range.location < string.length {
					let val = string.substringWithRange(range)
					// label
					if idx == 1 {
						position = timeForLabel(val)
					} else if idx == 2 {
						if val == "-=" {
							multiplier = -1
						}
					} else if idx == 3 {
						position += CFTimeInterval(val)!
					}
					print(range)
					print(string.substringWithRange(range))
				}
				idx++
			}
			position *= multiplier
		}
		
		return position
	}
}