 			case .began:
 				willBegin(self)
 			case .updated:
+				targetedAction(self)
 				action(self)
 			case .completed:
+				targetedCompletion(self, true)
+				targetedCompletion = { _ in }
+				targetedAction = { _ in }
+
 				completion(self, true)
 			case .cancelled:
+				targetedCompletion(self, false)
+				targetedCompletion = { _ in }
+				targetedAction = { _ in }
+
 				completion(self, false)
 			}
 			observer?.didChangeState(animator: self)

	}
}

fileprivate protocol YapAnimatorCommonInterface: class {

	var state: YapAnimatorState { get set }

		return isInMotion
	}

	fileprivate func stopExecution() {

		needsUpdate = false
		if needsUpdate || state != .updated {
