function start(
    uint256 _startTimestamp,
    uint256 _endTimestamp,
    address _fundingAddress
  )
    public
    onlyManager()   
    hasntStarted()  
    hasntStopped()  
  {
    require(_fundingAddress != address(0));

    
    require(_startTimestamp >= block.timestamp);

    
    require(_endTimestamp > _startTimestamp);
    duration = _endTimestamp - _startTimestamp;

    
    require(duration >= MIN_CROWDSALE_TIME && duration <= MAX_CROWDSALE_TIME);

    startTimestamp = _startTimestamp;
    endTimestamp = _endTimestamp;
    fundingAddress = _fundingAddress;

    
    started = true;

    CROWDSALE_START(_startTimestamp, _endTimestamp, _fundingAddress);
  }