contract ClinicAllToken is MintableToken, DetailedERC20, CappedToken, PausableToken, BurnableToken, TokenDestructible, TransferableToken {
  constructor
  (
    string _name,
    string _symbol,
    uint8 _decimals,
    uint256 _cap
  )
  DetailedERC20(_name, _symbol, _decimals)
  CappedToken(_cap)
  public
  {

  }

  /*/
  *  Refund event when ICO didn't pass soft cap and we refund ETH to investors + burn ERC-20 tokens from investors balances
  /*/
  function burnAfterRefund(address _who) public onlyOwner {
    uint256 _value = balances[_who];
    _burn(_who, _value);
  }

  /*/
  *  Allow transfers only if token is transferable
  /*/
  function transfer(
    address _to,
    uint256 _value
  )
  public
  whenTransferable
  returns (bool)
  {
    return super.transfer(_to, _value);
  }

  /*/
  *  Allow transfers only if token is transferable
  /*/
  function transferFrom(
    address _from,
    address _to,
    uint256 _value
  )
  public
  whenTransferable
  returns (bool)
  {
    return super.transferFrom(_from, _to, _value);
  }

  function transferToPrivateInvestor(
    address _from,
    address _to,
    uint256 _value
  )
  public
  onlyOwner
  returns (bool)
  {
    require(_to != address(0));
    require(_value <= balances[_from]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

  function burnPrivateSale(address privateSaleWallet, uint256 _value) public onlyOwner {
    _burn(privateSaleWallet, _value);
  }

}
function transferFrom(
    address _from,
    address _to,
    uint256 _value
  )
  public
  whenTransferable
  returns (bool)
  {
    return super.transferFrom(_from, _to, _value);
  }
/*/
 *  Allow transfers only if token is transferable
 /*/