title: Pushing an ERC721 token into a wallet after auction completion
body: <p>I'm trying to develop a set of contracts in where an ERC721 token is auctioned off, then the winner gets the token placed into their wallet. I'm not entirely sure how to structure this. These are the contracts I was thinking would be needed.</p>
  
  <p>WALLET</p>
  
  <ol>
  <li>Contains the mapping of addresses to tokens owned</li>
  <li>Upon deployment, creates deploys an <code>AuctionFactory</code> contract and saves the address</li>
  </ol>
  
  <p>AUCTIONFACTORY </p>
  
  <ol>
  <li>Deploys an <code>Auction</code> contract upon command, with the item being the ERC721 token specified</li>
  </ol>
  
  <p>AUCTION</p>
  
  <ol>
  <li>Contains all the logic for an auction</li>
  <li>Inherits from <code>Wallet</code>, allowing manipulation of the <code>mapping</code> state variable found in the contract, placing ERC721 tokens won into the winners wallet</li>
  </ol>
  
  <p>The problem is that <code>Auction</code> can't inherit from <code>Wallet</code>. The compiler will throw an error when <code>AuctionFactory</code> tries to deploy an auction - <code>cannot create instance of derived or same contract</code>. And that makes sense to me, since <code>Wallet</code> deploys the factory, and if the factory deploys an <code>Auction</code> that inherits from <code>Wallet</code>, it's technically deploying its parent contract.</p>
  
  <p>So my question is, how can I structure this set of contracts? How can I allow an instance of an auction contract to communicate and manipulate with a store on another contract? </p>