 	
 	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 getActive() -> [Tween] {
		var tweens = [Tween]()
		for tween in self.tweens {

		}
	}
	
	public func addLabel(label: String, position: AnyObject = 0) {
		var pos: CFTimeInterval = 0
		
		if let time = position as? CFTimeInterval {
			pos = time
		} else if let label = position as? NSString {
			pos = timeFromString(label, relativeToTime: endTime)
		}
		
		labels[label] = pos
	}
	
	public func removeLabel(label: String) {
		labels[label] = nil
	}
	
	public func timeForLabel(label: String) -> CFTimeInterval {
		if let time = labels[label] {
			return time
		}
		return 0
	}
	
	public func seekToLabel(label: String, pause: Bool = false) {
