assignGettersSetters = (propName) => {

				// add to flash state that we will store

				const capName = `${propName.substring(0, 1).toUpperCase()}${propName.substring(1)}`;

				dm[`get${capName}`] = () => {
					if (dmPlayer !== null) {
						const value = null;

						// figure out how to get dm dta here
						switch (propName) {
							case 'currentTime':
								return dmPlayer.currentTime;
							case 'duration':
								return isNaN(dmPlayer.duration) ? 0 : dmPlayer.duration;
							case 'volume':
								return dmPlayer.volume;
							case 'paused':
								return dmPlayer.paused;
							case 'ended':
								return dmPlayer.ended;
							case 'muted':
								muted = dmPlayer.muted;
								return muted;
							case 'buffered':
								const percentLoaded = dmPlayer.bufferedTime,
									duration = dmPlayer.duration;
								return {
									start: () => {
										return 0;
									},
									end: () => {
										return percentLoaded / duration;
									},
									length: 1
								};
							case 'src':
								return mediaElement.originalNode.getAttribute('src');
							case 'readyState':
								return readyState;
						}

						return value;
					} else {
						return null;
					}
				};

				dm[`set${capName}`] = (value) => {
					if (dmPlayer !== null) {
						switch (propName) {
							case 'src':
								const url = typeof value === 'string' ? value : value[0].src;
								dmPlayer.load(DailyMotionApi.getDailyMotionId(url));
								break;
							case 'currentTime':
								dmPlayer.seek(value);
								break;
							case 'muted':
								if (value === true) {
									dmPlayer.setVolume(0);
								}
								dmPlayer.setMuted(value);
								muted = value;
								setTimeout(() => {
									const event = mejs.Utils.createEvent('volumechange', dm);
									mediaElement.dispatchEvent(event);
								}, 50);
								break;
							case 'volume':
								dmPlayer.setVolume(value);
								if (value === 0 && !dmPlayer.muted) {
									dmPlayer.setMuted(true);
									muted = true;
								} else if (value > 0 && dmPlayer.muted) {
									dmPlayer.setMuted(false);
									muted = false;
								}

								setTimeout(() => {
									const event = mejs.Utils.createEvent('volumechange', dm);
									mediaElement.dispatchEvent(event);
								}, 50);
								break;
							case 'readyState':
								const event = mejs.Utils.createEvent('canplay', dm);
								mediaElement.dispatchEvent(event);
								break;
							default:
								console.log('dm ' + dm.id, propName, 'UNSUPPORTED property');
								break;
						}
					} else {
						// store for after "READY" event fires
						apiStack.push({type: 'set', propName: propName, value: value});
					}
				};

			}
Create the player instance and add all native events/methods/properties as possible

@param {MediaElement} mediaElement Instance of mejs.MediaElement already created
@param {Object} options All the player configuration options passed through constructor
@param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
@return {Object}