public function merge()
	    {
	        $args = func_get_args();
	        if (! $args) {
	            throw new InvalidArgumentException('A Period object is missing');
	        }
	        $res = clone $this;

	        array_walk(
	        	$args, function (Period $period) use (&$res) {
		            $start = $period->getStart();
		            
		            if ($res->getStart() > $start) {
		                $res = $res->startingOn($start);
		            }

		            $end = $period->getEnd();

		            if ($res->getEnd() < $end) {
		                $res = $res->endingOn($end);
		            }
		        }
	        );

	        return $res;
	    }