function createAuction(
        uint256 _tokenId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _startingPriceEth,
        uint256 _endingPriceEth,
        uint256 _duration,
        address _seller
    )
        public
        canBeStoredWith128Bits(_startingPrice)
        canBeStoredWith128Bits(_endingPrice)
        canBeStoredWith128Bits(_startingPriceEth)
        canBeStoredWith128Bits(_endingPriceEth)
        canBeStoredWith64Bits(_duration)
    {
        require(msg.sender == address(nonFungibleContract));
        _escrow(_seller, _tokenId);
        Auction memory auction = Auction(
            _seller,
            uint128(_startingPrice),
            uint128(_endingPrice),
            uint128(_startingPriceEth),
            uint128(_endingPriceEth),
            uint64(_duration),
            uint64(now)
        );
        _addAuction(_tokenId, auction);
        addressIndexToAuctionCount[_seller][_calculateDayPass()] += 1;
    }