public function setOptions($options)
	{
		if (!is_array($options) && !$options instanceof Traversable) {
			throw new \InvalidArgumentException(sprintf(
				'Expected an array or Traversable; received "%s"',
				(is_object($options) ? get_class($options) : gettype($options))
			));
		}
		
		foreach ($options as $key => $value){
			
			$key = strtolower($key);
			
			switch ($key) {
			    case 'services':
			        $this->registerServices($value);
			        break;
			    case 'locator':
			    case 'service_locator':
			        $this->setServiceLocator($value);
			        break;
		        case 'service_manager':
		            $this->configureServiceManager($value);
		            break;
			}
		}
		
		return $this;
	}