contract CappedCrowdsale is Crowdsale {
	using SafeMath for uint256;

	uint256 public cap;

	/**
	* @dev Constructor, takes maximum amount of wei accepted in the crowdsale.
	* @param _cap Max amount of wei to be contributed
	*/
	function CappedCrowdsale(uint256 _cap) public {
		require(_cap > 0);
		cap = _cap;
	}

	/**
	* @dev Checks whether the cap has been reached. 
	* @return Whether the cap was reached
	*/
	function capReached() public view returns (bool) {
		return weiRaised >= cap;
	}

	/**
	* @dev Extend parent behavior requiring purchase to respect the funding cap.
	* @param _beneficiary Token purchaser
	* @param _weiAmount Amount of wei contributed
	*/
	function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal {
		super._preValidatePurchase(_beneficiary, _weiAmount);
		require(weiRaised.add(_weiAmount) <= cap);
	}

}
/**
 * @title CappedCrowdsale
 * @dev Crowdsale with a limit for total contributions.
 */
function capReached() public view returns (bool) {
	return weiRaised >= cap;
}

/**
 	* @dev Checks whether the cap has been reached. 
 	* @return Whether the cap was reached
 	*/