 			// Store its PluginMediaStreamTracks' into the dictionary.
 			for (trackId, pluginMediaStreamTrack) in pluginMediaStream.audioTracks {
 				pluginMediaStream.removeTrack(pluginMediaStreamTrack);
-				deleteMediaStreamTrack(trackId);
+				deleteMediaStreamTrack(pluginMediaStreamTrack);
 			}
 
 			for (trackId, pluginMediaStreamTrack) in pluginMediaStream.videoTracks {
 				pluginMediaStream.removeTrack(pluginMediaStreamTrack);
-				deleteMediaStreamTrack(trackId);
+				deleteMediaStreamTrack(pluginMediaStreamTrack);
 			}
 
-			deleteMediaStream(streamId);
+			deleteMediaStream(pluginMediaStream);
 		}
 
 		// Close All MediaStreamTracks without MediaStream
 		for (trackId, pluginMediaStreamTrack) in self.pluginMediaStreamTracks {
-			pluginMediaStreamTrack.stop()
-			deleteMediaStreamTrack(trackId);
+			deleteMediaStreamTrack(pluginMediaStreamTrack);
 		}
 	}
 }

	@objc(RTCPeerConnection_removeTrack:) func RTCPeerConnection_removeTrack(_ command: CDVInvokedUrlCommand) {
		let pcId = command.argument(at: 0) as! Int
		let trackId = command.argument(at: 1) as! String
		let streamId = command.argument(at: 2) as! String
		let pluginRTCPeerConnection = self.pluginRTCPeerConnections[pcId]
		let pluginMediaStream = self.pluginMediaStreams[streamId]
		let pluginMediaStreamTrack = self.pluginMediaStreamTracks[trackId]

		if pluginRTCPeerConnection == nil {
			NSLog("iosrtcPlugin#RTCPeerConnection_removeTrack() | ERROR: pluginRTCPeerConnection with pcId=%@ does not exist", String(pcId))
			return;
		}

		if pluginMediaStream == nil {
			NSLog("iosrtcPlugin#RTCPeerConnection_removeTrack() | ERROR: pluginMediaStream with id=%@ does not exist", String(streamId))
			return;
		}



		if self.pluginMediaStreams[streamId] == nil {
			let rtcMediaStream : RTCMediaStream = self.rtcPeerConnectionFactory.mediaStream(withStreamId: streamId)
			let pluginMediaStream = PluginMediaStream(rtcMediaStream: rtcMediaStream, streamId: streamId)
			pluginMediaStream.run()

			self.saveMediaStream(pluginMediaStream)
