# Dependency invertion proposal (ListingManager) ``` Item { tokenAddr, tokenId, startDate, endDate } ``` ``` AuctionData inherits Item { currency, buyNowPrice, reservedPrice, minBidStep, } ``` ``` FixedPriceData inherits Item { currencies, buyNowPrices, } ``` ```mermaid sequenceDiagram title: Create Auction/FixedPrice Listing #------- actor Seller actor Buyer #------- participant EnglishAuctionStrategy participant FixedPriceStrategy participant ListingManager Seller->>EnglishAuctionStrategy: createAuction(auctionData) EnglishAuctionStrategy->>ListingManager: createListing(tokenAddr, tokenId, startDate, endDate) Seller->>FixedPriceStrategy: createAuction(fixedPriceData) FixedPriceStrategy->>ListingManager: createListing(tokenAddr, tokenId, startDate, endDate) Buyer->>ListingManager: getListing(...) ListingManager-->>Buyer: returns strategy Buyer->>FixedPriceStrategy: placeBid(...) FixedPriceStrategy->>ListingManager: isStillActive(...) alt isStillActive(...) ListingManager--)FixedPriceStrategy: check status, startDate and endDate end ```