private void fireTargets(GameObject offender, FireTargetBase.TriggerType type = FireTargetBase.TriggerType.GENERAL)
	{
		foreach(FireTargetBase target in InteractionTargets) {
			if(!target) {
				if(Debug.isDebugBuild)
					m_DebugMessage.Append("Attempted to fire target, but target did not exist ...\n");

				continue;
			}

			if(Debug.isDebugBuild) {
				m_DebugMessage.Append("<");
				m_DebugMessage.Append(target.gameObject.transform.name);
				m_DebugMessage.Append("> firing.\n");
			}

			target.Fire(offender, type);
		}
	}
	protected void processInteraction(GameObject offender, FireTargetBase.TriggerType type = FireTargetBase.TriggerType.GENERAL)
	{
		if(InteractionTargets.Count == 0)
			return;

		if(Debug.isDebugBuild) {
			m_DebugMessage.Append("Interactable: [INFO] <");
			m_DebugMessage.Append(this.gameObject.name);
			m_DebugMessage.Append("> was interacted with. Triggering listeners ... \n");
		}

		this.fireTargets(offender, type);

		if(Debug.isDebugBuild) {
			Debug.Log(m_DebugMessage.ToString());

			m_DebugMessage.Length = 0; // .NET 4.0 anytime, Unity :)
		}
	}