An open letter: The failings of MTGO’s trading system, and how to solve them

This was originally posted on the old Wizards of the Coast boards in September 2014. Those boards are now long gone, but I stand by the ideas I posted back then.

I’ve edited for clarity and for the different format of my blog, but the content is the same.

As this was first posted three years ago, it references some card values that are no longer close to accurate.

 

The failings of MTGO’s trading system, and how to fix them.

Rather than explaining why I think the trading system in MTGO is the most serious ‘big problem’ with the client right now, I’ll encourage MTGO players to carry out a small experiment.

Over the next week, play as you normally would, and record how long you spend logged into the MTGO client. Don’t count extended AFK time, just the time you are there, paying attention to the client.

Record how long you spend actually playing games of Magic or other related activities like building draft decks, and how much total downtime you have (time between tournament rounds, or time spent acquiring cards you want for a deck, or time spent checking prices and then selling the cards you just drafted).

I believe that if you play either Limited or competitive Constructed much at all, you will find that collection management related downtime significantly cuts into your Magic playing time.

Collection management downtime is a big part of paper MTG, but like cards becoming accidentally damaged or sleeves becoming marked, trading is something that MTGO can do better than paper.

This letter is about my proposals to decrease the time wasted on collection management by players, so that we can spend more time on the parts of MTGO that we actually enjoy – competitive-minded decision making in a world of incomplete information and nearly unlimited possibilities.

 

An aside on trade history:

This is background info and can be skipped, but may interest some. If that’s not you – just scroll down to the next bold text.

MTGO player-to-player trading was originally designed, like many other parts of the game, to mirror the experience of paper trading closely.

Players stick their currently unneeded cards into virtual trade binders (making them visible to prospective trade partners) or they can keep certain cards in reserve. For example, I might own four City of Traitors that I don’t put in my trade binder, but if you have a Tarmogoyf I want I might be willing to make them visible then.

All transactions are direct player-to-player trades.

Early on, before I started playing on MTGO, the Event Ticket became THE established currency of trading. It could have been packs instead, but for various reasons related to prize support, liquidity of certain boosters, and tickets being a cheaper object than packs, tickets made more sense as a currency. Event tickets being a trade currency has been given ‘official’ approval by WotC in many an article since then, for example in DailyMTG.com articles that focus on budget decks.

Early in MTGO, card liquidity* was low, until around the era of Betrayers of Kamigawa, when human dealers were phased out in favor of bots.

Early bots didn’t handle the whole trade, they just spammed a trade message in various channels over and over alerting you to the offers the human behind the bot was offering.

But soon fully automated bots appeared that used optical character recognition to work out which cards a trading partner had in their binder. They quickly became common.

Owning a trade bot was initially extremely lucrative and their coding was a guarded secret, but in time they became widespread and margins became lower. Now, it is effectively impossible to be a dealer on MTGO without running multiple bots 24/7.

The human element of trading from MTGO’s early days is completely gone, and there is third party bot software available to ‘buy’ a license for in exchange for a fee.

This isn’t an attempt at nostalgia for the old days. There were positives to the pre-bot era, such as the community that developed around the ‘Auctions’ channel.

But overall I think the automation of trading has been a good thing in general – drafters can offload undesired cards with less effort than before, Constructed players (competitive or casual) can assemble decks more easily and at a lower price, and price speculators can quickly acquire 200 copies of the card they expect to be the Next Big Thing. In short, liquidity in the market has increased, and this is a good thing. Collection management downtime has decreased dramatically.

However, it’s not perfect.

* – For those without economics knowledge, ‘liquidity’ means how easily something can be traded. Increased liquidity generally reduces the gap between buy and sell prices. You can see this in paper Magic, where many dealers will offer a higher percentage of their sell price for highly-in-demand Standard cards they can move quickly, and a lower percentage of their sell price for hard-to-sell cards like a Japanese foil Goblin Welder (even though the latter will command a high price if you find the right buyer).

 

Problems with the current system:

Firstly, event tickets are indivisible, meaning that players cannot trade for low value cards without trusting a bot that has a partial ticket accounting system or finding a mutually acceptable low value trade item. This is not a good system at all as more than 95% of the cards opened in booster packs have a value well south of one ticket.

This rewards unscrupulous bot owners (closing one bot and reopening a new account can result in you stealing up to 99 cents from each of a LARGE number of players, this really adds up).

It also has nonmonetary effects – it feels much worse to trade for obscure cards. Consider a card like Clone – making a trade of one event ticket for four copies of Clone feels really bad, even when there is the promise of future credit. (At the time of writing, Clone’s price was 0.03 tickets).

If I wanted Clones, I might be happy ‘throwing away’ USD 0.88 for the convenience of quickly finding four copies of a desired card, but I would still feel bad about hitting ‘confirm’ on a trade where I’m getting only 12% of the value of what I am trading away.

Secondly, if you want a card, there is no easy way to find someone that has the card you want. (This is less true in 2017 than it was in 2014 – there are more dealers that try to stock everything than there were 3 years ago). You can go to the message boards and find someone that claims to have the card you want, but the messageboard reflects only what people claim to have, and with a limited amount of characters that can be typed into a message, it will not necessarily be accurate.

For example, take two cards at opposite ends of the desirability spectrum, Clone and Cryptic Command. (At the time of writing, the first bot I checked is buying a Modern Masters Cryptic Command at 21.01 tickets and selling at 23.49).

A search in the client for the text string ‘Cryptic’ will find a selection of bots that claim to have Cryptic Command in stock at a certain price. This can be misleading.

Often what they mean is ‘The last time I updated this message I was selling Cryptic Command at 23.49 tickets, but since then I sold my last copy’, or worse, it can mean ‘The last time I updated this message I was selling Cryptic Command at 23.49 tickets, but since then I decided to up the price to 24.99 tickets and I hope you don’t notice’.

Your search will also find bots that are offering to buy Cryptic Command at various prices, as well as people that are trading Cryptic Commands but will not disclose their prices, and it will also pick up bots with Cryptic in their name.

A search for ‘Command’ or ‘Cryptic Command’ will also work, but will show less results. Players familiar with Magic lingo often abbreviate the card as just ‘Cryptic’, and those search terms will not connect with this abbreviation.

A player unfamiliar with the nuances of MTGO trading and card nicknames may be disheartened to see only a small number of people claiming to deal with this card.

It’s worse again if you want a specific edition of the card, particularly a rare one like an ME4 Tundra.

A search for ‘Clone’ on the other hand will show very few results, as while a large number of players have the card and are happy to trade it, they do not consider this fact worth advertising.

Thirdly, there is no requirement that players honour their publicly advertised prices. This is a major timewaster for people that are trying to source a card.

Many of the larger bot chains have algorithms written into them that dynamically increase card prices as you try to buy more copies of it. So buying one Cryptic Command might cost you 23.49 tickets, but buying two might cost you 23.79 tickets each, and four might cost 24.49 each. (2017 edit: This has largely changed now – most bots will sell a playset of a card at the same per-unit price as they would sell one).

Fourth, the trade system generally requires people using it to share a language, which in practice means English as I am yet to encounter a bot in any other language.

My suggestions would overcome this barrier, allowing me (a person who speaks only English) to trade to a player that speaks only Japanese. It would also improve the experience of trading with a person who speaks French as a first language alongside just a few words of English.

Fifth, and possibly most importantly, trades require both partners to be online.

Sixth and finally, the trade system does not support large trades well. Several years ago I traded a very large number of tickets (500) for four sets of Return to Ravnica. I had to talk the set seller through a way to do the trade that didn’t expose either of us to potential fraud. Otherwise, I could have let them take 400 tickets in one trade and taken all the mythics and rares and then blocked them, effectively stealing nearly 100 tickets.

This could be much worse with 4x foil sets.

Whilst I believe WotC take a hard line against using deception in trades, it would be better if the system simply did not allow it.

 

My suggestions:

Suggestion #1 – Increased currency granularity:

Firstly, eliminate event tickets and replace them with an account balance that is used to enter tournaments, purchase digital MTGO products from the store and can be used as a currency to conduct trades (but never withdrawn for cash).

2017 edit: Note that these would be separate from Play Points, which would continue to be unable to be traded. (PP did not exist when this letter was originally posted).

If there are legal reasons (gambling laws, money laundering laws), or if credit card fraud risk stops this being viable, instead introduce a new digital object, the ‘chip’, which represents one-thousandth of an event ticket. Allow event tickets to be ‘opened’ like boosters (becoming 1000 chips), and phase out Event Tickets, using chips as the new way to pay tournament entry fees. (For example, you could enter a 2 ticket Constructed 1v1 queue by paying 2 Event Tickets, or alternately by paying 2000 chips).

Either of these would solve problem 1 outright. Low value cards would immediately become readily tradeable, as the vast majority of cards still hold a value of at least one-tenth of a cent.

Secondly, keep the person-to-person trading interface that exists now, but create and heavily promote a new trading system that mirrors the broker-based market in the MMO EVE Online (and consider paying CCP, the makers of EVE, to help you implement it into MTGO).

 

Suggestion #2 – Sell Orders:

This is basically a buyout-only ‘auction house’.

A ‘sell order’ is a pledge to sell a card for a certain price, if a buyer can be found in a given timeframe. When you create a sell order for a card, the card is removed from your collection and placed in escrow for the duration of the sell order.

If a buyer is found, the card is delivered from escrow to that buyer immediately, and the tickets/chips/account balance is transferred to the seller.

If the sell order does not fill, or if the seller elects to cancel their order, the card is returned from escrow to the seller at the end of the time period.

I see no reason to augment the sell order option with an ‘auction house’ or ‘best offer’ options when you have…

Suggestion #3 – Buy Orders:

A ‘buy order is the reverse – a pledge to buy a card for a given price, if a seller can be found in the relevant timeframe. The entire price of the cards in question is deducted from your account balance and put in escrow (alternately, tix and chips are put in escrow).

If a seller is found you get the cards and they get the escrow; if no seller is found, you get the currency back when the order expires or when you elect to cancel it.

In the event of a card being banned or unbanned in any format, all outstanding buy/sell orders up for that card would be immediately suspended until the order placer next logs on, at which point they will receive a message:

“The card Show and Tell has been banned in the Legacy format, do you still want to offer 105.003 tickets for each of four copies of Urza’s Saga foil Show and Tell?”

Buy and sell orders should be anonymous, and treat different versions of a card as totally different objects. (Example: a Mercadian Masques Counterspell would be treated as a different item to a Tempest Counterspell, even though many players would consider them interchangeable. A text search for Counterspell would show both, as well as their foil versions, and the various other printings of the card).

Players could look at their objects in escrow, buy orders and sell orders at any time, cancel orders at any time, and modify an individual buy or sell order once per hour. (Once per hour would prevent 0.001 ticket price wars being won by bots that are programmed to check if they have been undercut or outbid every minute).

 

An example of buy and sell orders in practice:

Imagine I want to acquire three copies of the card Voice of Resurgence. Being a little vain, I want my Voices to be shiny. (At the time of writing in 2014, the first bot I checked was buying foil Voice of Resurgence for 33.42 and selling for 40.49, so ‘fair price’ is around 36-37 tickets)

– I browse the sell orders and see a total four foil Voices for sale, at 36.999, 37.000, 41.000 and 236.000 tickets.

– I decide to buy the two cheaper copies of the card, but feel 41 is more than I’m prepared to pay (and I sure as hell am not paying 236). Without me ever knowing who I am trading with, I select ‘buy’ on the first two. My account balance drops by $73.999 (tracked to a tenth of a cent), the two foil Voices are transferred from escrow into my account, and the account balance of my two trading partners is increased by $36.999 and $37 respectively.

– I then decide to post my own buy order to try to get the third one more cheaply than 41.000. Looking at the buy orders up currently, I see four at 24.777, 28.599, 30.600 and 30.602. I consider offering 30.603, but then think that I will get the card more quickly if I offer a little more, and so I offer 35.000 and set a duration of 72 hours on my offer. My account balance goes down by $35, and this store credit goes into escrow. For the next three days, if anyone wants to sell a foil Voice for 35 tickets, even if I am offline, they can sell it to my order.

– Before anyone fills my order, the DCI shocks everyone by emergency banning Voice of Resurgence in Legacy. (Don’t make banned/restricted list announcements drunk, folks). I don’t care, as I wanted the card for a Modern deck. My order now goes into stasis until I log on and confirm ‘yes, I still want the card at that price’ at which point the three day order period begins again. Alternately, I could elect to cancel the order and offer it again at a lower price.

A second example:

I play an M15 draft, and one of the cards I acquire is an In Garruk’s Wake.

It is my ninth copy. I do not want this card, I don’t want any of the nine, but I cannot be bothered posting a sell order to try to get top dollar for it. I just want them gone.

I right click it in the collection and a list of buy orders for the card appears on my screen. The first person is offering 0.032 tickets for (M15 non-foil) In Garruk’s Wake but is only buying four copies. The second person (presumably a dealer) is offering 0.027 tickets for the card but is willing to buy as many as 233 copies.

I then am given the option ‘Sell four copies for 0.032 tickets each?’ which I click. After a confirmation window, 0.128 tickets leaves the first buyer’s escrow and is credited to my account balance. Then I right-click the In Garruk’s Wakes again, and have the option ‘Sell 5 copies for 0.027 tickets each?’ Again I accept, and the IGWs go to the dealer, and $0.135 is added to my store balance.

Of my six complaints about the trade system, this proposed overhaul would address five. The only one not covered is the availability of obscure cards, as many human players will not bother posting them. However, it is likely that dealers (human or bots) will fill that void, making sure that there is still liquidity in the Chimney Imp market – and more relevantly, in the market for low (non-zero) demand, low supply cards like foil Massacre.

 

Monetizing the Trade System:

WotC are a business, and implementing this system so far looks like a lot of cost for no revenue gain.

There’d be customer goodwill (which is meaningful) and also perhaps some people drafting more often because they can sell their cards more quickly. Those matter but probably would not cover the cost of recoding trading entirely.

There are other ways they could get more out of the system without undermining customer goodwill.

Taking a cut from each trade (even a 0.5% cut) would cost this goodwill, and I don’t even think it’s the best way to monetize the system either.

Presently, a moderate number of players pay third parties for licenses to use their trading bot software.

WotC should have a goal: to get this money in their pockets instead.

A concrete suggestion:

Firstly, impose a limit of buy orders and sell orders active at any time for a given account. 8 buy orders and 8 sell orders, with buy orders capped at 4 copies of the card (no limit for sell orders), and order duration capped at 72 hours, would be a good starting point.

Alternately, consider a limit of having 100 orders total, with orders for multiple copies of a card counting multiple times. So ‘Want to Buy: 3 Wasteland’ would take up 3 of your 100 orders.

That is enough to post buy orders for most of a Constructed deck at once, especially when you consider that you’d be buying many cards directly from other people’s sell orders, but it is not enough to run an online dealership or to build sets at bargain prices for redemption purposes.

Secondly, offer players the option to pay USD6 per month (by credit card, or by event tickets/account balance/chips) to have these restrictions considerably reduced. USD6 is a fairly arbitrary estimate at being a price that is reasonable but generates real, ongoing revenue. Accounts that pay this charge would have a limit of 500 buy orders, 500 sell orders, and a cap of 12 copies of a card per order and 7 day time limits.

Effectively, paying this $6 per month gets you all of the benefits you would get today by running a single bot, but the money goes to WotC, not a third party bot coder.

Finally, offer players the option to pay USD50 per month to have the restrictions entirely removed.

This expensive option would give you the benefits currently reserved for people that run trade bots on a dozen accounts or more.

A second option to monetize the system is to require a deposit on sell order listings and buy order listings, that is refunded in full if the order fills. This would dramatically cut down the number of ‘nuisance’ listings where someone posts a ridiculous lowball price such as ‘Buying foil FUT Tarmogoyf, 12 tix’ in the hopes that someone misreads that as 120 tix. This deposit could be as high as 1% of the order amount, and it would serve as a tax on dealers much more than a tax on the Limited and Constructed players that generate WotC revenue.

In summary:

The people that speak highly of MTGO’s current trading system are mostly dealers that make a living (or at least heavily subsidize their hobby) from being the middleman between buyers and sellers that cannot find each other.

The prevalence of third party bots available for license is a necessary evil right now, but poses major risks to MTGO’s integrity.

There has already been at least one incident where a ‘trading bot’ program had trojans built into it that allowed the bot owners to potentially steal cards from those running the bot. If this happened on a big scale, it would be both a public relations nightmare for Wizards, and a financial risk too.

In addition, it’s hard to know how much strain bot chains put on the server currently, but it must be significant. There seem to be over a thousand bot accounts logged on at any time, most have large numbers of cards for trade, and opening a trade with one would query the server ‘How many of each card does this player have for trade?’ every time.

There’s two more advantages WotC gain before even considering possible revenue from the trading system.

Firstly, by speeding up collection management, players that draft a lot will spend less time on collection management, potentially allowing them to fit in one more draft here and there.

Secondly, by having supply and demand driven broad price guidelines publically available in-client, WotC aren’t intervening in the secondary market, but they still manage to minimize the number of times a new player goes through the experience of being badly ripped off in a trade. This might improve new player retention.

For these reasons, I feel replacing the present trade system with a buy order/sell order system should be the next ‘big project’ undertaken by MTGO management after the completion of leagues.

If done well, it will make customers happy, entice them to spend more, and assist in retention and growth – a trifecta that can only be good for MTGO and WotC.

831 total views, no views today

Design Changes Over The Past 20 Years: A Balance Sheet, Part 2

This is a follow up to Part 1 which looks at the decline of combo (specifically fast mana and tutoring) and proactive control.

The first part focused on design changes that were largely complete by the time Mirrodin came around. Today, I’ll look at design changes that came during the naughties.

These changes may have started earlier (for instance, Counterspell was last printed about two years before Mirrodin), but I associate them personally with the early Modern era.

From Mana Drain, to Counterspell, to Cancel: The decline of Reactive Control

Reactive Control, as a deck archetype, differs from Proactive Control, in that proactive control changes the game rules to prevent its opponent from executing its gameplan at all. Reactive control instead nullifies the opponent’s gameplan.

This artwork looks spectacular, but I just cannot work out what it is supposed to represent. Constipation so powerful it causes flight?

No card exemplifies reactive control as a strategy quite like Counterspell.

Three words of game rule text can say a lot. Vindicate reads “Destroy target permanent”. Tidings reads “Draw four cards”. Simple text, powerful effects.

Counterspell goes further, using three words where one would suffice.

“No”.

For a long time in Magic, two untapped Islands was taken as a sign that any spell the opponent tried to cast could be answered cleanly.

At its best, Counterspell is a tempo blowout, trading one card and two mana for the one card and six mana the opponent invested casting their Shivan Dragon.

But at its worst, Counterspell saw you leave two mana untapped and unused for three turns, after which you eventually gave in and countered a spell that wasn’t central to your opponent’s gameplan.

In this scenario you spent eight mana in total – the six that was held unused, plus the two spent to cast Counterspell – answering a three-drop.

The existence of Counterspell changed Magic fundamentally. One drops could get in under Counterspell and were stronger as a result.

But most of all, whether you had Counterspell in hand or not was hidden information. One of the first articles I wrote after setting up this site looked at how games and matches are often decided by hidden information.

High quality Counterspell effects create all sorts of mindgames and bluffs.

Skilled players would often untap, draw, fake a smile after seeing their card, and then pass the turn with two untapped Islands on the battlefield and four irrelevant lands in hand.

The opponent would often assume that anything they played would be countered, and so would play nothing, giving the bluffer time to draw either an actual answer, or an actual threat. They had no idea that the player representing Counterspell in fact drew a Disenchant that is totally dead in the present matchup.

Counterspell itself appeared in the very first Magic sets. But it wasn’t for a few months, until the release of Legends, that we would see just how absurd counterspells could get.

This card was a mistake, although it was actually a fair Magic card when (almost) reprinted with an additional two green mana added to its cost.

Mana Drain isn’t quite good enough for Vintage these days and is banned everywhere else, although I would be interested to see the effect it would have if legal in Legacy.

Where Counterspell efficiently answers a threat, Mana Drain answers the threat and punishes the opponent severely for trying to progress their gamestate.

This card is an extreme example of an oppressive reactive control card. Put yourself in the mindset of the player facing Mana Drain.

If you do not try to advance your gamestate by casting spells, you will lose.

The Mana Drain player will remain patient and do nothing. Eventually you will have to give in, allowing them an opportunity to spring the Mana Drain trap on a big spell.

If you do not, they will eventually be able to cast their own threat with multiple counterspells to back it up.

But if you do try to advance your own gamestate, the opponent Mana Drains you, then uses the extra mana to cast an overwhelming threat.

This card was rightly retired from the reprint roster. Until quite recently it was a frequent 2-3 of in Vintage, but now the ability to cleanly answer it with Flusterstorm has largely removed it from competitive play.

I would argue that Counterspell, and various alternatives of comparable or slightly lower power (Mana Leak, Forbid, Dismiss, etc) added an enormous amount of strategic complexity and interesting gameplay to Magic.

Too much of a good thing

I love beer. But too much of it will give me a nasty headache the next morning.

Just like this, the ‘Draw Go’ era of Magic took universal answers to unhealthy extremes.

In this era, it was perfectly reasonable to build a deck with 2-4 threats, about 30 hard answer cards (Counterspells and the like, plus some one-for-one removal to answer threats that you miss), and about 27 lands. This did result in a lot of quite dull games, where the first player to be proactive lost the game.

There is a critical mass of powerful reactive control cards that, once all of them are legal in a format, they begin to dominate formats.

This critical mass is far beyond anything that has existed recently in any competitive format. These days we do not even get one card of this calibre in most Standard formats. (We do have Censor at present, which is a high-quality universal answer of a sort; I am hoping this is the first of several).

Removing almost all high-quality Counterspell effects from Standard is like swearing off alcohol entirely in response to one hangover.

I believe Standard would be much better with one or even two Counterspell-calibre universal answers.

But once players can play 4 copies of each of Counterspell, Mana Leak, Forbid, Dismiss, Memory Lapse and Force Spike all at once, these cards reach a critical mass that ruins games.

 

Reanimation: Allowing Players To Ignore Mana Costs

Two mana, and a dead creature comes back worse than it was. Surely this card is fair.

Or is it?

Animate Dead and many, many similar cards break the Third Fundamental Rule of Magic in half.

If you can perform the necessary setup, these cards allow you access to extremely powerful effects for two mana.

Griselbrand’s “Pay 7 life: Draw 7 cards”?

Emrakul, the Aeons Torn’s “Annihilator 6”?

These abilities are potentially yours for as little as one mana and some life, courtesy of Tempest’s Reanimate. (You need to jump through additional hoops to bring back Emrakul, due to her shuffle trigger, but it is still possible).

Reanimation effects have been hit over the head with the nerfbat so hard that you can still hear their families screaming for mercy.

Unconditional reanimation with a manageable drawback cost 1-2 mana from Alpha right through to Apocalypse, and a lot of cards were printed at that power level.

There were also a large number of 2 to 3 mana cards that reanimated a creature, gave it haste, and then exiled it at end of turn.

This card was awesome in Standard. With Bottle Gnomes, it founded the core of a deck named “Disco Gnomes”. Deck names were so cool in the 1990s.

Then in the early days of Modern, we saw a few 4 mana reanimation spells with upside. Dread Return and the instant-speed Makeshift Mannequin were both fine examples.

This card is banned in Modern for very good reason. I dread any day it returns to the format.

Now, we pay 5 mana for unconditional reanimation, with Liliana, Death’s Majesty being as good as these cards get.

I believe this change in design philosophy has been a change for the better.

Unconditional reanimation at low cost imposed considerable design constraints on other cards in early Magic.

Creatures that had a high battlefield impact had to be severely weakened lest they become overpowered in conjunction with reanimation.

Force of Nature is an example of a card that had a drawback designed to hammer anyone that reanimated the card early in the game. Note that if you never pay the upkeep, it kills its controller before killing the opponent.

The other cards that needed to be carefully adjusted to allow for reanimation were mass draw effects and card filtering (draw then discard) effects.

See that clause about exiling cards you discard? The design intention was for that to hose reanimation. Of all the balance issues with this card, you picked THAT one to shut down?

Now, Magic designers are free to print creatures with ridiculous gamestate impacts (like Griselbrand) and also cards like Faithless Looting without worrying that they will enable combo-like reanimation shenanigans.

Losing the ‘fair’ uses of powerful reanimation spells has been an acceptable price to pay to open up this design space. I’m 100% behind the decision to keep reanimation effects to (generally) five mana, although I would not mind seeing this bent every now and again in Standard to test the waters.

 

That’s all for today. Part 3 will come when it is ready, which might be a while. I still need to cover all of the following:

  • Creature power creep
  • Tempo-positive removal
  • Ramp
  • Planeswalkers
  • The threat/answer pendulum

and with that in mind, I think there will need to be a Part 4 as well.

  • sirgog

3,660 total views, no views today