contract Hedgie is ERC721Token, Ownable {
    /**
     * This is the total number of hex colors
     */
    uint256 internal _totalColors = 16777216;

    /**
     * This is the base URI for hedgie data
     */
    string public tokenURIPrefix = "https://api.hedgie.io/api/v1/hedgies/metas/";

    constructor() ERC721Token("Hedgie", "HDG") public {
    }

    /**
    * @dev Mints a token to an address
    * @param _to address of the future owner of the token
    * @param _tokenId the ID of the token to mint
    */
    function mintTo(address _to, uint256 _tokenId) public onlyOwner {
        require(_tokenId < _totalColors);
        _mint(_to, _tokenId);
    }


    function setTokenURIPrefix(string newPrefix) external onlyOwner {
        tokenURIPrefix = newPrefix;
    }

    function tokenURI(uint256 _tokenId) public view returns (string) {
        require(exists(_tokenId));

        string memory tokenIDString = Util.uint2str(uint(_tokenId));
        return Util.strConcat(tokenURIPrefix, tokenIDString);
    }

    function tokensOf(address _owner) public view returns (uint256[]){
        return ownedTokens[_owner];
    }
}
function mintTo(address _to, uint256 _tokenId) public onlyOwner {
    require(_tokenId < _totalColors);
    _mint(_to, _tokenId);
}

/**
 * @dev Mints a token to an address
 * @param _to address of the future owner of the token
 * @param _tokenId the ID of the token to mint
 */