Beyond Zork [Infocom >RESTART]

IFDB page: Beyond Zork
[This review contains many spoilers for Beyond Zork. I’ve written an introduction to these Infocom >RESTART reviews, for those who want some context.]

To play the next game with the Zork brand, Dante and I jumped forward five years, from 1982 to 1987. By this time, Infocom was well-established and successful, but it also found itself reckoning with trends in the computer game industry that threatened interactive fiction, and prominent among those was the CRPG, the Computer Role-Playing Game.

>CONNECT IF TO RPG

As I said in the Zork I review, Zork was created in the shadow of Adventure, which itself was in the shadow of Dungeons and Dragons. Adventure co-creator Will Crowther was partly inspired by his experiences in a D&D group — one which apparently included Zork co-author Dave Lebling! — to combine his caving experiences with his gaming experiences. Zork, in turn, included randomized combat with the troll and thief, though it turns quickly away from the D&D model into something more static and puzzly.

In the meantime, game developers continued to make inroads on replicating the D&D experience via a computer. The Ultima and Wizardry series got their starts shortly after Zork I was released, mapping the initial territory of the CRPG. These games were much lighter on description and puzzles than Infocom’s work, but they offered the joys of hacking and slashing your way through hordes of monsters, and gradually increasing in power as you do so. It took quite a while for a game to surface with the actual D&D license, but the way having been paved by the CRPGs of the early and mid-Eighties, it was only a matter of time before two of the big geek trends of the era combined.

That first D&D game was called Pool of Radiance, which brings us in a rather roundabout way to Beyond Zork. This game is Infocom’s attempt to bridge the gap between IF and CRPG, and in fact it includes an actual pool of radiance. The connection seems far too on-the-nose to be coincidental, but it’s true that the D&D game didn’t come out until 1988, whereas Beyond Zork was released in 1987. Perhaps Brian Moriarty, the author of Beyond Zork, knew the D&D game’s title in advance and decided to write an anticipatory homage? In any case, while Beyond Zork tries to bridge a chasm betwen two genres, it also itself features a chasm whose bridge cannot be crossed. Moriarty’s subconscious may have been telling him something, because the connection between IF and CRPG is a pretty uncomfortable one, at least in Beyond Zork.

Like most RPGs, this game starts out by asking you to build a character, and Dante and I obligingly did so. We named him Azenev. (If you know Dante well, you might guess that this is an N.K. Jemisin reference, and you’d be right. It’s a backwards spelling of a character name from Jemisin’s The City We Became.) We built Azenev from six attributes: endurance, strength, dexterity, intelligence, compassion, and luck — a pretty close mapping to D&D‘s strength, intelligence, wisdom, dexterity, constitution, and charisma. Here’s where Problem Number One surfaced: we had no idea which attributes would be important. We tried to make him pretty balanced, though Dante felt like luck could make a big difference in everything, so we poured some extra points into that.

Well, it turns out that luck doesn’t seem to make a substantial difference in very much of anything, so Azenev version 1 met his demise almost immediately. One would hope that with a balanced character you’d be able to survive and thrive in an RPG, but not in this one. Apparently endurance is the key stat, given that attacks reduce it and you die when it runs out. So we rebuilt Azenev with more endurance and less luck, but still didn’t fare much better, because of Problem Number Two: monster mismatches.

In a typical RPG, be it computer or tabletop, your character starts out weak — level one. With a character like this, you can’t go out and fight dragons or ogres, so a well-designed game throws you some monsters you can handle — maybe big spiders, or little goblins, or medium-sized rats. When you conquer those, eventually you level up, and can face the next tier of danger, continuing through that cycle until you finally can smite mighty dragons.

Image from the Beyond Zork feelies, describing the cruel puppet and the dust bunnies.

Beyond Zork allows players no such accommodation! You start at level 0 (even weaker than level 1!), but you can encounter powerful adversaries at any time, with no real way to tell how powerful they are, except how fast they kill you. One of the first monsters we ran into is called a “cruel puppet”. It’s an entertaining enough creation — a marionette-looking thing that drains your endurance with vicious insults. But it is in no way appropriate for a zero-level character to face. Dante and I died over and over and OVER to the cruel puppet. We died after using a healing potion. We died after figuring out how to wield our weapon. We died after leveling up our character. We died after upgrading our weapon. We died after retreating to heal and then coming back. We just. Kept. Dying.

This is not fun, but I think I understand why Moriarty designed the game this way. He was wrestling with the tension between Infocom’s bias towards large-world exploration and the RPG’s tendency to tailor the story and encounters towards the character’s level. In addition, he was trying to reconcile IF’s narrative qualities against “crunchy” RPG mechanics that show you things like the level, attack power, defense strength, and health of everybody in the fictional world. Getting to explore the whole world right off the bat meant that we could easily and quickly wander way out of our depth, and leaning towards IF narrative meant that we had none of that crunchiness available to tell us that we’d need to be much more powerful before venturing in.

Defining the problems suggests the solutions. Maybe the game could have scaled encounters to character level, so that any monster you meet is just powerful enough to present a reasonable challenge. Maybe it could have shown more stats on monsters — as it is, the only way to tell a monster’s health is by examining it, and not only does that cost you a turn where the monster can attack you, it also gives vague descriptions like “gravely wounded” and “seriously wounded” — which is worse? Or maybe it could cordon off areas of the game until you’re powerful enough to face them. The trouble is, Infocom likes to cordon off game sections with puzzles, and your ability to solve a puzzle has little bearing on the power of your character.

There is an area where Moriarty blends all these things quite successfully: the cellar of the Rusty Lantern inn. You enter this cellar in search of a particular bottle of wine, and the cook slams and locks the door behind you. In the course of exploring the cellar, you’ll encounter low-level monsters that can be defeated by a weak character, treasures that can be sold to buy better gear, magic items that also upgrade you, and a means of improving one of your character’s stats, in this case dexterity. Staying alive in the cellar and getting out of it require puzzle-solving, and when you emerge you’ll likely have leveled up, improved your stats, and acquired some good loot. It’s very satisfying!

I’m inclined to think that maybe Beyond Zork should have forced that sequence first, or at least steered us toward it much more emphatically, rather than letting us traipse around a bunch of set pieces that were much too hazardous for us. In fact, if the entire game had been structured as a series of these compact mini-games, with interconnections between them and a common landing place to buy gear, that would have gone a long way toward settling the conflict between the IF and RPG conventions.

However, that on its own wouldn’t have been enough to deal with Problem Number Three: challenges that depend on stats. In trying to meld RPG mechanics with traditional IF, Moriarty runs into serious friction between the two, created by basing story barriers around the character’s attribute scores. In a tabletop RPG, each character has strengths and limitations, but multiple characters bind themselves together into a party who balance each other out. In IF, the character is solo, but typically not bound to attribute scores, so they are a purer proxy for the player’s puzzle-solving. So in a solo RPG, the PC’s limitations remain unchecked, which risks making certain barriers difficult or impossible to pass. Solo CRPGs typically manage this by adding numerous NPCs to the player’s party. Solo tabletop RPGs are certainly possible, but they require a DM or an adventure that is flexible enough to shape the story around that one player’s character. Beyond Zork does neither of these things, and therefore the elements never quite jell.

For example, if your intelligence score is too low in Beyond Zork, you’ll be unable to read the magic scrolls that are critical to solving certain puzzles. There’s no brainy wizard in your party to help out, so a low score in that stat means you’re just out of luck. (Your luck stat does not help.) Now, there are ways to possibly make up these deficits, and in the case of intelligence, one gets provided for free, though Dante and I still lost access to it, for reasons I’ll explain later. For other attributes and weaknesses, though, the improvements tend to cost money, and the game’s major source of money is locked behind its worst puzzle. More about that later, too. Other times, the improvements are locked behind layers of puzzles, none of which are terrible but due to the interwoven nature of everything, it’s very difficult to get past those puzzles until you’ve defeated the enemies that you needed the improvement for in the first place. The strength-enhancing morgia root is a perfect example of this — only available after large portions of the game have already been conquered, by which point it makes little difference.

Cover of Beyond Zork

There’s a Problem Number Four, or perhaps Problem Number Zero, because it’s fundamental to the others: hidden mechanics. If you’re playing a tabletop RPG, the rules are available. Sure, the DM may have some nasty surprises in store for you, but everybody is playing from the same set of books. Now, there’s a discussion about metagaming to be had here. Metagaming, for those who don’t know, is the term for when a player makes decisions based on information that would be unavailable to that player’s character, such as, “I’ve read the Monster Manual, and I know that the cruel puppet has 200 hit points, so my character runs away.” This sort of thing is emphatically frowned upon in RPG circles. So it’s fair enough to say that the game master (or game designer as the case may be) must keep some things hidden in order to keep the narrative’s boundaries logical. However, at least for Dante and I, understanding the mechanics behind this game’s pronouncements would have saved us a lot of frustration.

For instance, there’s a scrystone (read: crystal ball), about which we’re told: “Visions of things yet to be lie within its depths, for those with enough wit to see them.” When we look into it, we just see an “unintelligible swirl.” Well that sure sounds like we need to boost our intelligence stat, and hooray, we know just what to do — let’s buy that Potion of Enlightenment and drink it. So we do that, it boosts our intelligence stat, we look in the scrystone again, and… our boosted intelligence makes zero difference. Now, behind the scenes, it turns out that the scrystone requires an extremely high intelligence, and there is only one item in the game that provides that kind of massive boost. Without understanding that requirement, though, we were left to feel that the game simply misled us, and that improved intelligence is not the way to solve the puzzle.

>KILL INVENTORY LIMIT

For our entire playthrough, we found ourselves frequently guessing blindly at how our stats were affecting gameplay. For example, would this game’s extremely annoying inventory limits have been relieved had we had more strength or dexterity? Because if so, boy oh boy would I have maxed those stats. I ran into more infuriating inventory limit nonsense in this game than in any other Infocom game before or since in this >RESTART series. Here’s a prime example — we’re wandering through the market when somebody drops a “fish cake”. We’ve read in the feelies that eating fish increases intelligence, so we want that thing. But…

>n
"Oof!"
The street hawker you just bumped into glowers. "Watch where I'm goin', will ya!" You clumsily help to pick up her spilled wares; she stomps away without a word of thanks.
As you dust yourself off, you notice something lying in the dust.

>get fish cake
Your hands are full.

>put all in pack
The scroll of Fireworks: Done.
The potion of Forgetfulness: Done.
The rabbit's foot: Done.
The staff of Eversion: Done.
The scroll of Mischief: Done.
The bit of salt: Done.
An alley cat races between your legs, snatches the fish cake and disappears into the crowd.

ARGH! Tightly timed object availability plus clunky inventory mechanics equals super frustrated IF player. (Also, I wonder how it is that I help her to pick up her spilled wares if my hands are so full?) By this time in our play session, Dante and I had made a fair bit of progress but hadn’t saved recently; we just didn’t have the appetite for replaying through all of it just to make sure we bumped into a totally sudden and arbitrary encounter with our hands free. We decided to just forego the intelligence boost, since we were at least able to read. That did make for a moment, though, after the potion of Enlightenment failed to help us read the scrystone, where I wondered through my curses if we had been blocked from winning the entire game due to a frickin’ inventory limit early on.

You may note that the game provides a pack. This is very helpful! However, Infocom never quite got to the point that Graham Nelson reached in the Inform libraries, where not only does the player carry a sack object, but the game automatically handles all the tedium of putting something old into the sack when the PC picks up something new. Consequently, we’re unable to grab that fish cake even though we know exactly how to do it.

We ran into this very same issue when trying to accept the goblet from the Implementors. A group of gods tries to hand us a holy object, and Beyond Zork is hitting us with, “Your load is too heavy.” By this point, we were carrying enough around that even the pack didn’t help. (That’s right, it too has a limit.) The Implementors get more and more annoyed at our “contrariness” in not picking up the goblet, and they eventually force it into our hands, only for it to immediately clatter to the ground again. The hilarious part is that if anybody should understand why we can’t pick it up, it should be the Implementors! God how I would have loved it if one of them had said, “Oh hey, looks like his load is too heavy. Let me just do away with that problem forever so he can take this nice goblet.”

Instead, the pack helped just enough with the problem of carrying things that we weren’t using our previous Zorky method of leaving a bunch of stuff at one location, but it didn’t help so much that we didn’t still find ourselves unable to pick up things in timed situations. In fact, about three-quarters of the way through the game, we did resort to our old Zorky ways, leaving a pile of objects at the Hilltop starting location.

Part of what made our inventory so dang full was the profusion of items in this game. Magic items abound — scrolls, potions, and all manner of point-and-enchant doohickeys. There’s a cane, a wand, a rod, a stick, and both a staff and a stave. The identity of these items changes from one playthrough to the next — you might find a stave of Sayonara in one game, but if you restart you could end up with a stave of Dispel. That’s one of several ways that Moriarty brings in the RPG trope of randomness.

The "Southland of Quendor" map from the Beyond Zork feelies

Of course there’s the randomized combat — get lucky enough with your hidden dice rolls and maybe you can overcome that strong monster in your way. (Not the cruel puppet, though. Never the cruel puppet.) But even beyond that, items are randomized, and the very landscape is randomized. Though the general layout of regions in Beyond Zork is a constant, the internal geography of those regions varies by playthrough. The geographical randomization works pretty well, thanks in part to the handy onscreen map provided. For each region (forest, swamp, jungle, etc.) Moriarty provides a grab-bag of locations with evocative names and descriptions, and then the game decides randomly (within set parameters) how they’re laid out in relation to each other in that region. Then within those locations, items and monsters are also placed randomly. This can sometimes affect difficulty, such as when two key areas that interact in a puzzle get randomly placed far apart, but for the most part it just adds flavor.

Randomization of items can be a little more frustrating, as it can determine whether a certain item is just lying on the ground, or whether it costs money in a shop. In the latter case, you have to defeat some monsters and gain some treasures in order to purchase said item. As I’ve mentioned, that’s not always so straightforward a task with an under-leveled character.

>CRY ABOUT TEAR

Now that we’re back to the topic of purchasing, let’s dig into the puzzle that nearly ruins this game: the Crocodile’s Tear. In my first encounter with Beyond Zork, as a teenager in the 1980s, this puzzle really did ruin the game for me — I abandoned the whole thing after a long struggle. Abandoning a game was quite a last resort in those days, as it had cost a lot of money to acquire, and I had pretty much unlimited time to spend on it. But after a year (not exaggerating) of on-and-off struggling against this puzzle, I simply could not find a way through it, and there was no Internet full of answers to consult. By that point, I was too disgusted to consider buying Invisiclues. I felt like somehow the game wasn’t playing fair with me, and I turned out to be correct.

When Dante and I encountered the puzzle, there was no question that we’d get through it, just a question of whether we’d need to consult hints — easy enough to do in the 21st century but still a sign of failure on someone’s part, either the game’s or ours. But like my teenaged self, Dante could not solve the puzzle on his own, and I must have repressed the solution, because I needed a hint too.

I’ll break this puzzle down, but first a little digression to give some background. Recall that one of the PC’s attributes is a compassion score. This seems like a bit of an odd stat for an RPG — it’s certainly not any good in a fight, and it doesn’t seem to help with using magic or solving puzzles. (Turns out it matters in the endgame, but there’s obviously no way of knowing that until you reach it.) You can boost your compassion score, though, by doing compassionate things, like rescuing a unicorn locked in a stable, or saving a minx (cute cat-like creature) from a hunter. These scenes are written and constructed beautifully, particularly the minx. Rescuing these poor creatures and raising our compassion is far more heartstring-tugging than anything in the original trilogy. (It helps that we have a very fluffy cat at home, who does not say “minx” but might as well.)

Keep all that in mind as we talk about the Crocodile’s Tear. The Tear is a legendary sapphire, found in Beyond Zork‘s jungle section. It’s worth much more money than all the other treasures in the game put together. You find it attached to a huge stone crocodile idol, at the back of the idol’s gaping maw. Trouble is, when you climb the lower jaw to get to the jewel, the jaw tilts like a seesaw, making it so that you can’t quite reach the treasure, and when you lean too hard, the jaw tilts backward and drops you into the idol’s interior.

So far, so fair. Maybe we need a stick to reach to the gem, or a projectile to knock it loose, or a counterweight to allow us to keep climbing the jaw after we pass its fulcrum. We tried all these things, in many permutations. We were especially hopeful when we acquired a sea chest, which is definitely both heavy and bulky — I’ve got the painful inventory management transcripts to prove it. We set that sea chest on the maw — which the parser allows without complaint — but it did absolutely nothing to counterbalance us. Sigh. Finally, after lots of failed attempts at getting this jewel, we turned to the hints, and were shocked at the intended solution.

Pages from the Beyond Zork feelies describing the hungus and spenseweed.

See, nearby the idol (well, nearby or a ways away, depending on how the jungle region was randomly laid out) is a heart-rending scene. A mother hungus (part hippo, part sheep) is with her baby. The baby is trapped in a pool of quicksand. The mother gazes anxiously at the baby. She bellows impotently, and the baby responds. If you should walk away, the baby hungus bellows mournfully. Well, the answer to this one is obvious. We’ve got a stick of Levitation, so we point that at the baby hungus, and this happens:

The baby hungus bellows with surprise as he rises out of the quicksand! Sweat breaks out on your forehead as you guide the heavy burden over the mud and safely down to the ground.
The ungainly creature nuzzles you with his muddy snout, and bats his eyelashes with joy and gratitude. Then he ambles away into the jungle to find his mother, pausing for a final bellow of farewell.
[Your compassion just went up.]

Fantastic! We’ve raised our compassion again. What does this have to do with the Crocodile’s Tear, you may be asking? Well, it turns out that the solution to that puzzle is to attack the baby hungus while it’s stuck in the quicksand. (Strangely, attacking the baby hungus does not make your compassion score go down, though it surely should.) That gets the mother mad enough that she’ll chase after us, and if we climb onto the stone maw, she’ll stand on the other end, counterbalancing it so we can get the jewel.

We found this outrageous. The notion of attacking a baby animal in peril is so completely against the grain of everything else Beyond Zork asks us to do, and so generally repellent, that it absolutely should not be the solution to anything. Not only that, doing the compassionate thing actually makes the game unwinnable! Let me say that again: saving a baby animal from dying (or at least, doing so before attacking it first) ensures that you cannot win the game, because the hunguses disappear from the game after you rescue the baby. This might be the worst puzzle in the entire Infocom canon. It’s all the more surprising coming from Moriarty, who had already done such brilliant work in Trinity exploring player complicity and moral culpability with an animal-killing puzzle. Here, instead of a metaphorically freighted moment of tragedy, the animal cruelty is treated as a mere mechanical device — it’s both disappointing and baffling.

If you’ve read other entries in this series, you might recall that every Zork game so far has forced Dante and I to restart, for one reason or another. Well, this puzzle forced us to restart Beyond Zork, because of course it did. Who attacks a baby animal before saving it? Actually, this was the second time we’d had to restart. The first was caused by a different sort of inventory limit — magic items that only had a limited number of uses. Certain areas of the game are unreachable except via these items, and if you run out of “charges” for them before you’ve solved everything in the area, it’s off to restart-land you must travel.

>ENJOY GAME

So, that was a lot of ranting. I’m out of breath. Let me wind this up by talking about some of the things we really enjoyed in Beyond Zork, of which there were really quite a few, despite all my complaints above. I haven’t spoken at all about the game’s primary technical innovation, a multi-windowed display which always shows a boxes-and-lines map and relevant information such as inventory contents, room description or character stats alongside the game’s main text. That’s how, in the text above, we knew to say “get fish cake” even though the transcript only said “you notice something lying in the dust” — the room description window identified the fish cake. This display was very slick for an Infocom game at the time, and still works pretty well. I think my favorite thing, though, is the way you can use the number pad to navigate — for instance, pressing 8 on the number pad automatically enters “NORTH” and a carriage return into the parser. Combined with the map, this was an awesomely fast and easy way to get around. I wish more IF games did it now.

A screenshot from Beyond Zork, showing the onscreen map, the description window, and the parser interaction below both.

Another highlight of the game is its humor. Moriarty knows his way around a joke, such as this bit from a gondola conductor, which continued to amuse us throughout the game, despite how many times we saw it:

“Thirsty?” asks the conductor. “Stop by the Skyway Adventure Emporium for a tall, frosty Granola Float.” He smacks his lips dispiritedly. “Mmm, so good.”

Moriarty also does a lovely job of tapping into the general joy of Infocom’s tone and culture. By 1987, a whole lot of love had gone into the Zork universe — although this was the first game to carry the “Zork” name since Zork III, there were several intervening games set in the milieu that filled the gap, namely the Enchanter series and Moriarty’s own Wishbringer. With all this history established, Moriarty can draw on quite a few sources for references, jokes, and general explanations of what’s going on.

Now, we hadn’t played all those other games at the time we ran through Beyond Zork, so many of the references were lost on Dante, and sometimes only dimly recalled by me. But writing this review now that we’ve played them all, I can appreciate the game’s easy command of Enchanter-ese, such as “yonked a girgol just in time.” There’s another mailbox, with another leaflet, this one yielding a burin, which is a co-star of Spellbreaker, the game at the other end of the Zork spectrum. The unicorns all wear gold keys around their necks, a la Zork II. The boot crushed by the farmhouse is quite reminiscent of the Boot Patrol in Wishbringer, and the platypus recalls that game’s feelies, not to mention being emblematic of Moriarty’s sense of humor. All these allusions gave us (especially me) that warm insider feeling of, “Hey, I understood that reference.” Similarly, the scenes of recent or future Infocom games visible in the scrystone (Hitchhiker’s Guide, Zork Zero, Shogun) are a delight.

There are plenty of good puzzles in the game, too — it isn’t all attacking babies. This was our first game with copy protection via feelies, and it was a lot of fun leaning on The Lore and Legends of Quendor to help solve puzzles. The dust bunnies and dornbeast were particularly successful examples of this. The gray fields area is another pretty successful puzzle box. We appreciated the way it unfolds in layers — first entry, then understanding the scarecrows, then figuring out the use of the sense organ, and finally the Wizard of Oz sequence, relying on what you’d learned in the other parts. The subtle changes with the corbies and the corn are the kind of thing that work gangbusters in text but would be very hard to pull off with the same nuance in graphics.

Overall, we had a lot of fun with Beyond Zork despite its flaws, and I looked forward to replaying the next Infocom Zork game — the most technically sophisticated of them all, and certainly the biggest. Ahead of us was final Zork game from Infocom as an actual artistic ensemble rather than just a brand name, though in another way, it was the first: Zork Zero.

4 thoughts on “Beyond Zork [Infocom >RESTART]”

  1. Well, you’re right about pretty much everything. I replayed Beyond Zork and it has more problems than a coneflower has aphids.

    I appreciate its ambition, though. I like the idea of it more than I like Zork Zero’s idea, and Moriarity tries to tie various strands of the Zork universe together in an interesting way. I think I recall the Digital Antiquarian stating that Moriarity and Meretzky cared more about Zork’s lore than the original Implementers did (though I’m not sure this applies to Lebling)–if I’ve gotten the source wrong I hope someone will correct me.

    How did you feel about the implications for Spellbreaker’s ending? I think it’s felt a bit off to a number of people over the years (including me).

    1. Honestly, I’m a little befuddled by Zork continuity. I’ve never bothered to try to map out (even in my own head) how everything relates into a larger story. I guess I thought BZ didn’t mean much for Spellbreaker’s ending, because BZ ends prior to Spellbreaker? Certainly none of the failing of magic happens in BZ. But I’d be interested to hear how you see them relating.

      1. Zork continuity is mostly nonsense, though I think Wishbringer is a fun tie-in.

        [Spellbreaker spoilers]
        Unless I misremember, the events of Spellbreaker and Beyond Zork happen in parallel. The guildhall filled with amphibians at the beginning of Spellbreaker is, some minutes later, the guildhall where BZ’s Y’Gael addresses a group of amphibians.

        The strong ending of Spellbreaker is probably my favorite conclusion to an Infocom game. After three games of spellcasting, the protagonist remakes the fabric existence without magic: “Your score is 600 of a possible 600, in 835 moves. This puts you in the class of Scientist.”

        The goal of BZ is to undermine/counteract that ending by preserving magic in a coconut (!) before the protagonist of Spellbreaker can put an end to it.

        I would have preferred that Spellbreaker be left alone; it’s one of my favorites. However, I like the way Moriarity writes (and the way he plans his writing), so it’s hard to bear a grudge.

  2. Ahhhhh! Funny, I’ve played through both of these multiple times, but they were always far enough apart that although I had the nagging feeling I was missing something, I never grokked that overlap. That makes sense, and with that in mind, I absolutely agree with you. Spellbreaker has a fantastic ending, and it shouldn’t be undone by this crazy coconut thing. Also, if BZ is supposed to be happening in parallel with Spellbreaker, magic(k) really should not work with 100% consistency. Possibly this is part of why I never understood that was the intention.

Leave a Reply

Your email address will not be published. Required fields are marked *