 				case PropertyKey.Position.rawValue:
 					if let origin = tweenObject.origin {
 						prop = PointProperty(target: tweenObject, from: origin, to: origin)
+					} else {
+						assert(false, "Cannot tween non-existent property `origin` for target.")
 					}
 				case PropertyKey.Center.rawValue:
 					if let center = tweenObject.center {

					if let alpha = tweenObject.alpha {
						let key = (target is CALayer) ? "opacity" : "alpha"
						prop = ObjectProperty(target: tweenObject, keyPath: key, from: alpha, to: alpha)
					}
				case PropertyKey.BackgroundColor.rawValue:
					if let color = tweenObject.backgroundColor {
						prop = ColorProperty(target: tweenObject, property: "backgroundColor", from: color, to: color)
					}
				case PropertyKey.FillColor.rawValue:
					if let color = tweenObject.fillColor {
						prop = ColorProperty(target: tweenObject, property: "fillColor", from: color, to: color)
					}
				case PropertyKey.StrokeColor.rawValue:
					if let color = tweenObject.strokeColor {
						prop = ColorProperty(target: tweenObject, property: "strokeColor", from: color, to: color)
					}
				case PropertyKey.TintColor.rawValue:
					if let color = tweenObject.tintColor {
						prop = ColorProperty(target: tweenObject, property: "tintColor", from: color, to: color)
					}
				case PropertyKey.X.rawValue:
					if let frame = tweenObject.frame {
						let value = CGRectGetMinX(frame)
						prop = StructProperty(target: tweenObject, from: value, to: value)
					}
				case PropertyKey.Y.rawValue:
					if let frame = tweenObject.frame {
						let value = CGRectGetMinY(frame)
						prop = StructProperty(target: tweenObject, from: value, to: value)
					}
				case PropertyKey.CenterX.rawValue:
					if let frame = tweenObject.frame {
						let value = CGRectGetMidX(frame)
						prop = StructProperty(target: tweenObject, from: value, to: value)
					}
				case PropertyKey.CenterY.rawValue:
					if let frame = tweenObject.frame {
						let value = CGRectGetMidY(frame)
						prop = StructProperty(target: tweenObject, from: value, to: value)
					}
				case PropertyKey.Width.rawValue:
					if let frame = tweenObject.frame {
						let value = CGRectGetWidth(frame)
						prop = StructProperty(target: tweenObject, from: value, to: value)
					}
				case PropertyKey.Height.rawValue:
					if let frame = tweenObject.frame {
						let value = CGRectGetHeight(frame)
						prop = StructProperty(target: tweenObject, from: value, to: value)
					}
				default:
					if let target = tweenObject.target, value = target.valueForKeyPath(key) as? CGFloat {
						prop = ObjectProperty(target: tweenObject, keyPath: key, from: value, to: value)
					}
				}
				

						if let pointProp = prop as? PointProperty {
							pointProp.targetCenter = true
						}
					} else {
						assert(false, "Cannot tween non-existent property `center` for target.")
					}
				case PropertyKey.Size.rawValue:
					if let size = tweenObject.size {
						prop = SizeProperty(target: tweenObject, from: size, to: size)
					} else {
						assert(false, "Cannot tween non-existent property `size` for target.")
					}
				case PropertyKey.Transform.rawValue:
					prop = TransformProperty(target: tweenObject)
