contract HasNoTokens is Ownable {

  District0xNetworkToken public district0xNetworkToken;

 /**
  * @dev Reject all ERC23 compatible tokens
  * @param from_ address The address that is transferring the tokens
  * @param value_ uint256 the amount of the specified token
  * @param data_ Bytes The data passed from the caller.
  */
  function tokenFallback(address from_, uint256 value_, bytes data_) external {
    throw;
  }

  function isTokenSaleToken(address tokenAddr) returns(bool);

  /**
   * @dev Reclaim all ERC20Basic compatible tokens
   * @param tokenAddr address The address of the token contract
   */
  function reclaimToken(address tokenAddr) external onlyOwner {
    require(!isTokenSaleToken(tokenAddr));
    ERC20Basic tokenInst = ERC20Basic(tokenAddr);
    uint256 balance = tokenInst.balanceOf(this);
    tokenInst.transfer(msg.sender, balance);
  }
}
function reclaimToken(address tokenAddr) external onlyOwner {
  require(!isTokenSaleToken(tokenAddr));
  ERC20Basic tokenInst = ERC20Basic(tokenAddr);
  uint256 balance = tokenInst.balanceOf(this);
  tokenInst.transfer(msg.sender, balance);
}

/**
 * @dev Reclaim all ERC20Basic compatible tokens
 * @param tokenAddr address The address of the token contract
 */