public function invoke($model, $name, $mustExist=true)
	{

		// Check if callback exists
		if ($mustExist && !array_key_exists($name, $this->registry)) {
			throw new ActiveRecordException("No callbacks were defined for: $name on " . get_class($model));
		}

		// if it doesn't exist it might be a /(after|before)_(create|update)/ so we still need to run the Save callback
		if (!array_key_exists($name, $this->registry)) {
			$registry = array();
		} else {
			$registry = $this->registry[$name];
		}

		//@TODO: Make this work with the new names, and a preg_match...
		//
		// starts with /(after|before)_(create|update)/
		// 
		if (preg_match('/^(?<when>after|before)(?<action>Create|Update)$/', $name, $matches))
		{

			// Replace action with Save
			$temporalSave = $matches['when'] . "Save";

			if (!isset($this->registry[$temporalSave]))
				$this->registry[$temporalSave] = array();

			$registry = array_merge($this->registry[$temporalSave], $registry ? $registry : array());
		}
		

		if ($registry)
		{
			foreach ($registry as $method)
			{
				$ret = ($method instanceof Closure ? $method($model) : $model->$method());

				if (false === $ret && $first === 'before')
					return false;
			}
		}
		return true;
	}