public function whitelist(array $whitelist)
	{
		$this->_definitions = array();
		
		foreach ($whitelist as $definition)
		{
			// Pre-configured object
			if (is_object($definition))
			{
				if ($definition instanceof Definition\IDefinition)
					$definitionObject = $definition;
				else
					throw new \InvalidArgumentException('Definition objects must implement IDefinition');
			}
			// IPv4 address
			elseif (preg_match('/[a-z:\/]/', $definition) === 0)
				$definitionObject = new Definition\IPv4Address($definition);
			// IPv4 CIDR notation
			elseif (preg_match('/[a-z:]/', $definition) === 0)
				$definitionObject = new Definition\IPv4CIDR($definition);
			// IPv6 address
			elseif (preg_match('/^[0-9a-f:]+$/', $definition))
				$definitionObject = new Definition\IPv6Address($definition);
			// IPv6 CIDR notation
			elseif (preg_match('/^[0-9a-f:\/]+$/', $definition))
				$definitionObject = new Definition\IPv6CIDR($definition);
			// Wildcard domain
			elseif (preg_match('/^\*\.[\w\.\-]+$/', $definition))
				$definitionObject = new Definition\WildcardDomain($definition);
			// Domain
			elseif (preg_match('/^[\w\.\-]+$/', $definition))
				$definitionObject = new Definition\Domain($definition);
			else
				throw new \InvalidArgumentException('Unable to parse definition "'.$definition.'"');

			$this->_definitions[] = $definitionObject;
		}
	}