contract EPCToken is ERC20, Math, owned {
  // metadata
  string public name;
  string public symbol;
  uint8 public decimals = 18;
  string public version;

  // events
  event Reward(address indexed _to, uint256 _value);
  event MintToken(address indexed _to, uint256 _value);
  event Burn(address indexed _to, uint256 _value);

  // constructor
  function EPCToken(
   string _name,
   string _symbol,
   string _version
  ) public {
    name = _name;
    symbol = _symbol;
    version = _version;
  }

  /*
   * mint token
   */
  function mintToken(address target, uint256 mintedAmount) public onlyOwner {
    balances[target] += mintedAmount;
    totalSupply += mintedAmount;
    MintToken(target, mintedAmount);
  }

  /*
   * burn the tokens, cant never get back
   */
  function burn(uint256 amount) public returns (bool success) {
    require(balances[msg.sender] >= amount);
    balances[msg.sender] -= amount;
    totalSupply -= amount;
    Burn(msg.sender, amount);
    return true;
  }

  /*
   * reward token
   */
  function reward(address target, uint256 amount) public onlyOwner {
    balances[target] += amount;
    Reward(target, amount);
  }

  /*
   * kill the contract from the blockchain
   * and send the balance to the owner
   */
  function kill() public onlyOwner {
    selfdestruct(owner);
  }
}
function kill() public onlyOwner {
  selfdestruct(owner);
}

/*
 * kill the contract from the blockchain
 * and send the balance to the owner
 */