We're starting to get a little wet in the code here (which isn't a pithy acronym or anything, it's just the logical opposite of "DRY" code).  Shops know about buying and selling goods to characters, and characters know about buying and selling goods as well.  I'm not sure whether a given transaction should be called as `@character.sell` or `@shop.buy`.  This is a common problem, and there's a few ways to approach it, but I think in this case I'd advocate for a module.

The way this would work is that we'd have a module called something like "transactionable" (I'm not fond of that name, actually, so maybe it gets a pithy name like "quartermaster" or somesuch).  It would define a few methods: sell_to(customer, good, quantity), buy_from(vendor, good, quantity), and some supporting methods.  Then, on everything that has the capacity to buy and sell (currently, shops and characters), we `include Quartermaster` and it defines all of our supporting methods.