 	 
 	/** Called any time the IceConnectionState changes. */
 	func peerConnection(_ peerConnection: RTCPeerConnection, didChange newState: RTCIceConnectionState) {
-		let state_str = PluginRTCTypes.iceConnectionStates[newState.rawValue] as String!
-
+		let state_str = PluginRTCTypes.iceConnectionStates[newState.rawValue]
+		
 		NSLog("PluginRTCPeerConnection | oniceconnectionstatechange [iceConnectionState:%@]", String(describing: state_str))
-
+		
 		self.eventListener([
 			"type": "iceconnectionstatechange",
-			"iceConnectionState": state_str!
+			"iceConnectionState": state_str as Any
 		])
 	}
 
 	/** Called any time the IceGatheringState changes. */
 	func peerConnection(_ peerConnection: RTCPeerConnection, didChange newState: RTCIceGatheringState) {
-		let state_str = PluginRTCTypes.iceGatheringStates[newState.rawValue] as String! ?? "default"
+		let state_str = PluginRTCTypes.iceGatheringStates[newState.rawValue]
 
 		NSLog("PluginRTCPeerConnection | onicegatheringstatechange [iceGatheringState:%@]", String(describing: state_str))
 
 		self.eventListener([
 			"type": "icegatheringstatechange",
-			"iceGatheringState": state_str
+			"iceGatheringState": state_str as Any
 		])
 
 		if self.rtcPeerConnection.signalingState == RTCSignalingState.closed {

			if self.rtcPeerConnection.remoteDescription != nil {
				data = [
					"remoteDescription": [
						"type": rtcSdpTypeToString(type: self.rtcPeerConnection.remoteDescription!.type),
						"sdp": self.rtcPeerConnection.remoteDescription!.sdp
					]
				]

		self.eventListener([
			"type": "icecandidate",
			"candidate": [
				"sdpMid": candidate.sdpMid as Any,
				"sdpMLineIndex": candidate.sdpMLineIndex,
				"candidate": candidate.sdp
			],
			"localDescription": [
				"type": RTCSessionDescription.string(for: self.rtcPeerConnection.localDescription!.type),
				"sdp": self.rtcPeerConnection.localDescription!.sdp
			] as [String : Any]
		])
	}
	 
