contract Aavio is IERC20, ERC20, ERC20Detailed, ERC20Capped {
    using SafeMath for uint256;

    constructor()
    ERC20Detailed("Aavio", "AAV", 18)
    ERC20Capped(500000000000000000000000000)
    public  {
        uint256 initialSupply = 300000000000000000000000000;  // 300 million tokens + 18 decimals
        _mint(msg.sender, initialSupply);
    }
    
    /**
    * @dev Transfer token for a specified address
    * @param to The address to transfer to.
    * @param value The amount to be transferred.
    */
    function transfer(address to, uint256 value) public returns (bool) {
        require(to != address(this), "CANT SEND TO TOKEN CONTRACT");
        _transfer(msg.sender, to, value);
        return true;
    }

    /**
     * @dev Transfer tokens from one address to another.
     * Note that while this function emits an Approval event, this is not required as per the specification,
     * and other compliant implementations may not emit the event.
     * @param from address The address which you want to send tokens from
     * @param to address The address which you want to transfer to
     * @param value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        require(to != address(this), "CANT SEND TO TOKEN CONTRACT");
        super.transferFrom(from, to, value);
        return true;
    }

}
function transferFrom(address from, address to, uint256 value) public returns (bool) {
    require(to != address(this), "CANT SEND TO TOKEN CONTRACT");
    super.transferFrom(from, to, value);
    return true;
}

/**
 * @dev Transfer tokens from one address to another.
 * Note that while this function emits an Approval event, this is not required as per the specification,
 * and other compliant implementations may not emit the event.
 * @param from address The address which you want to send tokens from
 * @param to address The address which you want to transfer to
 * @param value uint256 the amount of tokens to be transferred
 */