contract Cryptocoin is ERC20, Claimable {
  using SafeMath for uint256;

  string  public name;
  string  public symbol;
  uint8   public decimals;
  address public accICO;

  constructor (
      address _accICO, 
      uint256 _initialSupply)
  public 
  {
      require(_accICO         != address(0));//audit recommendation
      require(_initialSupply  > 0);
      name           = "Cryptocoin";
      symbol         = "CCIN";
      decimals       = 18;
      accICO         = _accICO;
      _totalSupply   = _initialSupply * (10 ** uint256(decimals));
      //Initial token distribution
      _balances[_accICO]         = totalSupply();
      emit Transfer(address(0), _accICO, totalSupply());
  }

  
  function burn(uint256 amount) external {
    require(amount <= _balances[msg.sender]);

    _totalSupply = _totalSupply.sub(amount);
    _balances[msg.sender] = _balances[msg.sender].sub(amount);
    emit Transfer(msg.sender, address(0), amount);
  }

  function() public { } //Audit recommendation


  //Owner can claim any tokens that transfered
  //to this contract address
  function reclaimToken(ERC20 token) external onlyOwner {
      require(address(token) != address(0));
      uint256 balance = token.balanceOf(address(this));
      token.transfer(owner, balance);
      
  }

  //***************************************************************
  // ERC20 part of this contract based on best practices of
  // https://github.com/OpenZeppelin/zeppelin-solidity
  // Adapted and amended by IBERGroup, email:maxsizmobile@iber.group; 
  //     Telegram: https://t.me/msmobile
  //               https://t.me/alexamuek
  // Code released under the MIT License(see git root).
  ////**************************************************************
}
function reclaimToken(ERC20 token) external onlyOwner {
    require(address(token) != address(0));
    uint256 balance = token.balanceOf(address(this));
    token.transfer(owner, balance);
      
}

//Audit recommendation
//Owner can claim any tokens that transfered
//to this contract address