contract CryptoAngelCrowdsale is CryptoAngelConstants, FinalizableCrowdsale {

    function CryptoAngelCrowdsale(
            uint _startTime,
            uint _endTime,
            address _wallet
    ) public
        FinalizableCrowdsale(_startTime, _endTime, _wallet) {
        token.mint(TEAM_ADDRESS, TEAM_TOKENS);
    }

  /**
   * @dev Allows the current owner to set the new start time if crowdsale is not finalized.
   * @param _startTime new end time.
   */
    function setStartTime(uint256 _startTime) public onlyOwner notFinalized {
        require(_startTime < endTime);
        startTime = _startTime;
    }

  /**
   * @dev Allows the current owner to set the new end time if crowdsale is not finalized.
   * @param _endTime new end time.
   */
    function setEndTime(uint256 _endTime) public onlyOwner notFinalized {
        require(_endTime > startTime);
        endTime = _endTime;
    }

  /**
   * @dev Allows the current owner to change the hard cap if crowdsale is not finalized.
   * @param _hardCapTokens new hard cap.
   */
    function setHardCap(uint256 _hardCapTokens) public onlyOwner notFinalized {
        require(_hardCapTokens * TOKEN_DECIMAL_MULTIPLIER > hardCap);
        hardCap = _hardCapTokens * TOKEN_DECIMAL_MULTIPLIER;
    }
}
function setStartTime(uint256 _startTime) public onlyOwner notFinalized {
    require(_startTime < endTime);
    startTime = _startTime;
}

/**
 * @dev Allows the current owner to set the new start time if crowdsale is not finalized.
 * @param _startTime new end time.
 */