 			.start { event in
 				switch event {
 				case let .Next(newValue):
-					self.property?.value = newValue.map(self.representation.extractValue(fromRepresentation:))
+					self.property?.value = newValue.map(self.representation.extractValue)
 				case let .Failed(error):
 					fatalError("Received unexpected error from KVO signal: \(error)")
 				case .Interrupted, .Completed:

	/// Coding.
	public var value: Value? {
		get {
			return object?.valueForKeyPath(keyPath).map(representation.extractValue(fromRepresentation:))
		}

		set(newValue) {
			object?.setValue(newValue.map(representation.represent(value:)), forKeyPath: keyPath)
		}
	}


	private let represent: Value -> AnyObject

	init<Base: ObjectiveCRepresentable where Base.Value == Value>(_ base: Base) {
		self.extract = base.extractValue
		self.represent = base.represent
	}

	func extractValue(fromRepresentation representation: AnyObject) -> Value {
