function createAuction(
        uint256 _tokenId
    )
        external payable
    {
        
        require(auctionsEnabled);
        require(_owns(msg.sender, _tokenId) || msg.sender == authorityAddress);
        
        require(!tokenIdToAuction[_tokenId].live);

        uint startPrice = pixelPrice;
        if (msg.sender == authorityAddress) {
            startPrice = 0;
        }

        require(msg.value == startPrice);
        
        pixelIndexToApproved[_tokenId] = address(this);

        tokenIdToAuction[_tokenId] = Auction(
            msg.sender,
            startPrice,
            block.timestamp + duration,
            true
        );
        AuctionStarted(_tokenId);
    }