contract DAOToken is ERC827Token, MintableToken, BurnableToken {

        string public name;
        string public symbol;
        uint8 public constant decimals = 18;
        uint public cap;

        /**
        * @dev Constructor
        * @param _name - token name
        * @param _symbol - token symbol
        * @param _cap - token cap - 0 value means no cap
        */
        function DAOToken(string _name, string _symbol,uint _cap) public {
            name = _name;
            symbol = _symbol;
            cap = _cap;
        }

        /**
         * @dev Function to mint tokens
         * @param _to The address that will receive the minted tokens.
         * @param _amount The amount of tokens to mint.
         * @return A boolean that indicates if the operation was successful.
         */
        function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
            if (cap > 0)
                require(totalSupply_.add(_amount) <= cap);
            return super.mint(_to, _amount);
        }
    }
/**
 * @title DAOToken, based on zeppelin contract.
 * @dev ERC20 compatible token. It is a mintable and burnable token.
 */
function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    if (cap > 0)
        require(totalSupply_.add(_amount) <= cap);
    return super.mint(_to, _amount);
}

/**
 * @dev Function to mint tokens
 * @param _to The address that will receive the minted tokens.
 * @param _amount The amount of tokens to mint.
 * @return A boolean that indicates if the operation was successful.
 */