public function getFusionTagTypes() {

		// Determine existing tag types.

		$types = array();
		$configuration = Config::inst();

		// The tag type exclusions need checking.

		$exclusions = $configuration->get('FusionService', 'tag_type_exclusions');
		$classes = ClassInfo::subclassesFor('DataObject');
		unset($classes['FusionTag']);
		foreach($classes as $class) {

			// Determine the tag types to consolidate, based on data objects ending with "Tag".

			if((strpos(strrev($class), strrev('Tag')) === 0) && !in_array($class, $exclusions) && !ClassInfo::classImplements($class, 'TestOnly')) {

				// Use the title field as a default.

				$types[$class] = 'Title';
			}
		}

		// Determine configuration defined tag types.

		foreach($configuration->get('FusionService', 'custom_tag_types') as $type => $field) {
			if(in_array($type, $classes) && !in_array($type, $exclusions)) {

				// Use the configuration defined field.

				$types[$type] = $field;
			}
		}
		return $types;
	}