public function setMeta($key, $value){
		$metas = $this->getMetas();

		// keywords behave slightly differently here.
		if($key == 'keywords' || $key == 'keywords[]'){
			if(!is_array($value)) $value = array($value => $value);

			// I need to make sure that each value is a key/value pair.
			foreach($value as $valueidx => $valueval){
				if(trim($valueval) == ''){
					// Empty value, empty value!
					unset($value[$valueidx]);
				}
				elseif(is_numeric($valueidx)){
					// This will replace any numeric based key with the url version of the value.
					// This may have an odd side effect of transposing numeric values like 2013,
					// but since the url version of a number is just the number itself, it should be ok.
					unset($value[$valueidx]);
					$value[ \Core\str_to_url($valueval) ] = $valueval;
				}
				// No else needed, it's acceptable as-is.
			}

			foreach($metas as $idx => $meta){
				/** @var $meta \FileMetaModel */

				// I'm only interested in these!
				if($meta->get('meta_key') != 'keyword') continue;

				if(isset($value[ $meta->get('meta_value') ])){
					// Yay, update the value title
					$meta->set('meta_value_title', $value[ $meta->get('meta_value') ]);
					$meta->save();
					unset($value[ $meta->get('meta_value') ]);
				}
				else{
					// Nope?  Delete it!
					$meta->delete();
					unset($this->_metas[$idx]);
				}
			}

			// Any new incoming keywords left?
			foreach($value as $metavalue => $metavaluetitle){
				$meta = new \FileMetaModel($this->_filename, 'keyword', $metavalue);
				$meta->set('meta_value_title', $metavaluetitle);
				$meta->save();
				$this->_metas[] = $meta;
			}
		}
		elseif($key == 'license'){
			// Match this up to the value if it's available.
			$all = \Core\Licenses\Factory::GetLicenses();
			if(isset($all[$value])){
				$valuetitle = $all[$value]['title'];
			}
			else{
				$valuetitle = $value;
			}

			foreach($metas as $idx => $meta){
				/** @var $meta \FileMetaModel */

				// I'm only interested in this one!
				if($meta->get('meta_key') != $key) continue;

				// It must be the one I'm looking for.
				$meta->set('meta_value', $value);
				$meta->set('meta_value_title', $valuetitle);
				$meta->save();
				return; // :)
			}

			// Doesn't exist?
			$meta = new \FileMetaModel($this->_filename, $key, $value);
			$meta->set('meta_value_title', $valuetitle);
			$meta->save();
			$this->_metas[] = $meta;
		}
		elseif($key == 'authorid'){
			// This affects the author tag instead, look for that!
			foreach($metas as $idx => $meta){
				/** @var $meta \FileMetaModel */

				// I'm only interested in this one!
				if($meta->get('meta_key') != 'author') continue;

				// It must be the one I'm looking for.
				$meta->set('meta_value', $value);
				$meta->save();
				return; // :)
			}

			// Doesn't exist?
			$meta = new \FileMetaModel($this->_filename, 'author', $value);
			$meta->save();
			$this->_metas[] = $meta;
		}
		elseif($key == 'file'){
			// Skip this one!
		}
		// Default action, one to one!
		else{
			// Look for this key to see if it exists.
			foreach($metas as $idx => $meta){
				/** @var $meta \FileMetaModel */

				// I'm only interested in this one!
				if($meta->get('meta_key') != $key) continue;

				// It must be the one I'm looking for.
				if($value){
					// Does it have a value?
					$meta->set('meta_value_title', $value);
					$meta->save();
				}
				else{
					// It's blank but exists... I can fix that :p
					$meta->delete();
					unset($this->_metas[$idx]);
				}
				return; // :)
			}

			// Doesn't exist?
			if($value){
				$meta = new \FileMetaModel($this->_filename, $key, '');
				$meta->set('meta_value_title', $value);
				$meta->save();
				$this->_metas[] = $meta;
			}
		}
	}