contract ReallocatableCrowdsale is StandardCrowdsale, Ownable {

  /**
   * @dev reallocate funds from this crowdsale to another
   */
  function reallocate(uint256 _value)
    external
    onlyOwner
  {
    require(!hasEnded());
    reallocation(_value);
  }

  /**
   * @dev perform the actual reallocation
   * @dev must be overridden to do anything
   */
  function reallocation(uint256 _value)
    internal
  {
  }
}
function reallocate(uint256 _value)
  external
  onlyOwner
{
  require(!hasEnded());
  reallocation(_value);
}

/**
 * @dev reallocate funds from this crowdsale to another
 */