Tumgik
#the second one was actually based on a thought i had in the mo server
beebatrnn · 10 months
Text
Tumblr media Tumblr media Tumblr media Tumblr media
which mychael are you?
truck freak
crazy ass
Ужасы за пределами человеческого понимания.
Steve!
141 notes · View notes
otomegamesandme · 2 years
Text
Game Recs for Pride: 2022 edition
Hey all! Finally put together another rec list. This one isn't /exactly/ on theme with the blog as it has some games that aren't otome/amare games and three that aren't even visual novels, but I wanted to throw something together.
If you want to see my previous list, it's here:
Tumblr media
Blooming Panic
Platform: PC (itch.io)
Price: Free
Summary:
Depressed day-in and day-out from a draining corporate job, you become invested in a fantasy webnovel and find a mysterious link to a fan server. Everyone is warm and welcoming, but four members take a special interest in you!
[An indie darling. The updated Full Bloom editions allows you to choose your pronouns/gender and it really feels like being on a discord server with friends. It was a great time, I binged both editions in a night aha.]
Tumblr media
Teisatsu
Platform: PC (itch.io)
Price: Free
Summary:
After a comical series of events, you are suddenly recruited into a spy agency!
Your goal is to conquer your first spy mission! Easier said than done, right? Thankfully, you will be assigned a trainer during your time at the agency. Who’s to say you won’t end up conquering their heart as well…?
[This was for the NaNoReNo game jam, and it was a really fun and quick game. It feels more like a prelude to something bigger on it's own, but as it was for a game jam, I think it works well!]
Tumblr media
Violette (milkcoffees)
Platform: PC (itch.io)
Price: Free
Summary:
Play as Mo The Cat, in this queer and trans stream-of-consciousness style Twine game, helping him advise his friends in the way that only a cat can.   
This game follows Mo as he explores Violeta, talks to his friends Xo and Fran, and offers them an ear to listen to their thoughts and concerns.  Listen and advise Xo and Fran as they think critically about their actual desires, reconcile with the overlap between their personal desires and external pressures, and question the heteronormative structures that are the pillars of American society.  
[This was a quick, ten minute experience that really stuck with me. Something about it felt comforting as a whole and being the cat was a cute idea.]
Tumblr media
Validate (coming August 2022)
Platform: PC (steam), Xbox, Switch
Price: ?
Summary:
ValiDate is a visual novel about thirteen struggling singles navigating through soul-sucking 9-to-5s, quarter-life crises, and the harsh truths millennials learn as soon as they hit their 20’s.Set in the Jercy City area, our cast of lovers trudge through the dregs of capitalism - a journey, a transition - a rite-of-passage that leads into uncertain mid-adulthood. On one side but not yet out on the other, 13 playable characters find romance amongst cosplay, trash mixtapes, and even poetry straight from the soul.With over 30 routes to choose from and hours of content, the lives of these singles are in your good (or bad!) decision-making hands.
[First, if a price point was set for this game, I haven't found it;;;. However! This game is one I've been following for a while now and it's been so cool to see it evolve and grow. I love the characters a lot, and there's a demo available on steam. I highly recommend.]
[Non-vn/text based games]
Tumblr media
Rune Factory 5
Platform: PC (steam)/Switch
Price: 59.99
Summary:
After losing their memories in a strange accident, the protagonist arrives in Rigbarth, a quiet town surrounded by great natural beauty. There they become the newest member of a peacekeeping organization, make lots of friends, and set off on countless adventures.
[I have played the Rune Factory series since the second one came out ages ago, and I've played every one since. It's so nostalgic to have a new Rune Factory to play, and the fact they added gay marriage was really neat. While not the strongest in the series in my personal opinion, I still had a great time with it.]
Tumblr media
You and Me (Kathinka)
Platform: PC (itch.io)
Price: Free
Summary:
You're visiting an old temple. Do you wish to make an offering?
[Another short ten-minute experience that I just really liked. The art style/washi tape usage made it feel like collages, which is one of my favorite styles in games.]
Tumblr media
Celeste
Platform: PC (itch.io/Steam/Epic games store), PS4, XBox One
Price: 19.99
Summary:
Help Madeline survive her inner demons on her journey to the top of Celeste Mountain, in this super-tight, hand-crafted platformer from the creators of multiplayer classic TowerFall.
[This and Rune Factory are decently popular, but I wanted to include it anyway. I actually only recently got around to finally playing this game, and it certainly reminded me that I'm Bad at platformers. However, the journey was really memorable, even if it was super difficult.]
Andddddd with all that being said, I thought I'd mention there's currently a Queer Games Bundle running on itch.io for pride month! The original one is 60, however there's a pay what you want one starting at 10! 588 games are included in the bundle, so if you have the money, check it out:
10 notes · View notes
sehun-smut-blog · 6 years
Text
Deceitful - Chanyeol
Tumblr media
some people bring out the worst in you, others bring out the best. Then there are those remarkably rare, addictive ones who just bring out the most. They make you feel so alive that you’d follow them straight into hell, just to get your fix
one | two | three | four | five | +
This post contains intense and possibly triggering themes. Viewer discretion is advised. Rated [M] for mature.
Five
You and Chanyeol may have made amends, but that doesn’t mean you were going to go easy on him.
So maybe that justified why you were waiting patiently for him, in nothing but your black silk housecoat and matching black lace set, twiddling your thumbs until he would eventually walk through your door.
He was supposed to be giving you a briefing on some opportunity that had come up with Neoculture. Simple, really, should only take an hour or so. Just running over body language and discreet questions you could ask, maybe see if you could get into their headquarters. That’s the goal, anyway. Since the gala, it had been nothing but radio silence for a few days, making you nervous. The deadline was approaching, it was now becoming hard to ignore how in a few short weeks everything you had grown to love could come burning to a heap at your feet.
If you even survived the infiltration, that is.
But that didn’t make you nervous, somehow. What made you anxious was, impossibly, the six foot man that was scheduled to arrive any second. 
And you didn’t know how to feel about that. Because you don’t get nervous! The sweaty hands, racing heartbeat was all new to you, not something you typically came by. It was stupid to be almost afraid of anything that came out of Chanyeol’s mouth these days, considering that after your whole spilling-of-the-heart he had seemed to ditch the asshole behaviour. There was no reason your chest should contract whenever he brushed too close, or how sometimes the teasing he would subject you to would make you blush.��
So this? The silk robe and sexy set was to ensure he wouldn’t be able to resist. It was sexual frustration, certainly. You hadn’t gotten laid since that damn on-call room in the basement, and you were aching for something to fill the void - literally.
Which also explained why you almost leapt to your feet when you heard your door swing open. 
Almost.
Chanyeol called your name through the small apartment, booming voice echoing through your place for just a moment before he turned the corner to your living room, the words immediately dying on his lips.
His eyes widened to the size of saucers as he drank you in, jaw slack. You noticed with a grin how his ears immediately grew red, from underneath his - now black - hair.
“You changed the hair?” You hummed with a smirk, nonchalantly picking at your nails as though this - you in lingerie, alone in your apartment - was completely normal. 
“Y-You’re naked.” He huffed, stammering slightly as he flopped into the chair opposite you. You could tell he was trying to appear just as nonchalant as you were, but the fact that he couldn’t get his eyes off you was a dead giveaway.
“No, I’m not?” You hummed sweetly, cocking your head at him as though you were confused. “I’m wearing a robe.”
He scoffed, head lolling until he was staring at the ceiling. You watched him gulp, knowing by how his hands tightened on the armrests that he was fighting to not come tear it off you. 
“A robe doesn’t count as clothing.”
“Says who?” 
“Says me.” He growled, finally locking his gaze on you once again. You could tell he was fighting it, the opportunity to not hold you down and fuck you into submission, the urge to admire the way your breasts dipped into your bra. “We’re supposed to discuss work.”
You laughed, crossing your legs quickly and ignoring how his eyes traced the movement. “And I can’t do that in a bra and panties? I’m focused, come on Chanyeol, control yourself.” You teased, now fiddling with the belt that was the only thing keeping the robe from spilling open. 
“Don’t undo that.” He warned, but it was too late, the silk already slipping from your torso to reveal the black, sparkly bra he had been so fond of only a week or so ago. “Oh, fuck sakes.”
“What? Come on, let’s talk about work then, you big pussy.” You said with a laugh, leaning back onto the couch with a sigh. “I’m fine.”
“Of course you are, but if I whipped out my cock would you feel the same?”
“Is that an offer, Chanyeol-ah?” You said with a wicked grin, making him scoff.
“Nope. You’re not winning this thing.” He huffed, leaning forward to rest his elbows his knees, giving you a slight grin with a shake of his head. You liked the dark hair - it suited him, made him look older than the fiery red had.
“What if I said you’re new hair looks good? Sexy, even. Would you let me win then?” You hummed, returning his grin slightly as you watched him lick his lips.
He groaned at that, blinking away the thought with a wave of his hand. “No, no, come on, we’ve got to discuss work.”
“No fun.” You pouted, but understood anyway. Hell, as great as it would be to wind up screaming Chanyeol’s name tonight, he was right. There was still plenty to be done in the meantime. “What did you guys find out?”
“Minseok managed to file into their email server, they have something booked for tomorrow night.” Chanyeol sighed, eyes still closely tracing your body as he spoke. It made you want to set on fire. “A club downtown, they’re going to make some deals while they’re there. It’ll be a good time for you to socialize again.”
“Sounds good. Do you know who’s all going to be there?” You hummed, but your mind was elsewhere as you admired the way his legs looked in those sinfully tight jeans.
“Stop undressing me with your eyes.” He huffed, snapping at you with his right hand slowly. “Eyes up here.”
You let out a huff of a laugh, rolling your eyes at him. “I was not!”
“It’s distracting.” He scoffed back, rolling his eyes. “Come on, I’m trying to be a good supervisor!”
You scoffed at that, hating how the one time he thought with his head was also the time you wanted the exact opposite. Even then, your promise to try listening to him held steady. “Fine, fine. Go ahead, I’m listening.” You relented with a sigh, giving him a nod.
He nodded back at that with a relieved smirk. “Thank you.” He huffed, leaning back in his chair slowly. “Now, where was I?”
“Before you caught me lusting after your thighs? I think you were going to tell me the guest list.”
“Ah, perfect.” He said with a smirk, giving your body one last drag with his gaze. “Not too sure on that one, but it’ll definitely be that cult circle they call their men. His men, Tayeong’s. They like to handle most things themselves.”
You nodded, shifting forward in your seat slightly. “That’s good, I know them from the gala.”
“Exactly. Have you touched base with the mo - Baekhyun?” He huffed, watching as you started to correct him. When he corrected himself though, you fought to grin. “He might have gotten notice, you should see if he knows any more.”
You hummed. “Nah, haven't heard anything but I’ll text him and see. I’ll probably need to go with him anyway, make it seem organic, right?”
He nodded in approval, his eyes glittering slightly. “Feel that? It’s called learning.” He grunted teasingly, watching you roll your eyes with a grumble.
“Whatever. We should still go over what information I should get.” You huffed, crossing your arms slightly.
“Right. Well, I don’t really know what to tell you.” He hummed, watching the way your breasts squeezed together with your motion. He couldn’t help himself! “It’s probably more important that you just keep making connections, get as close as you can.”
You nodded, chewing on your lips out of habit. It was something you developed after what seemed like never-ending glimpses of Chanyeol lusting after you. It was the only thing that made you not jump his bones like a maniac.
“Okay, how?” You hummed, giving him a timid grin. “You’ve been doing this job longer than me, any tricks of the trade?”
Chanyeol hummed slightly at that, his gaze narrowing in a devilish fashion. It made your lip chewing grow in intensity, blinking the thoughts out of your head quickly.
It wasn’t fair how quickly he could turn the tables on you. One second he was fighting to not touch you, and the next, his gaze had your palms sweaty. He could flick a switch in you with just a glance, make you want to subject your body to him in a flash. Anything he said, you would do tenfold, so long as it made him brush his hands over your skin.
“So you like learning now? Willing to actually listen to my ideas? Huh, who would have thought.” He gruffed with his signature smirk, now unabashedly watching the way your chest rose and fell with your breathing.
“Shut up and teach me, you asshole.” You sighed, heart thudding at the way his gaze was glued to you.
“Hey, I thought we were going to ditch the asshole thing.”
You rolled your eyes at him with a playful grumble. “I agreed to ditch the undermining-your-authority thing. It was you who was supposed to ditch the asshole thing.”
“Well this asshole is going to teach you a thing or two, so how about you keep your half of the promise and do what I say, hm?” He asked nonchalantly, but his gaze was poison as he made eye contact, flicking you a lazy grin. “Now stand up and approach me like you’re at a bar.”
You scoffed. “What?”
He grinned, gesturing for you to rise with a flick of his fingers, egging you closer. “You heard what I said. Come on, approach me. i’m sure you’ve done it before.”
You rolled your eyes at his insistence but stood anyway, trying to ignore how Chanyeol watched your legs rise and meet the black lace of your panties with a hungry gaze.
But you couldn’t ignore it, hard as you tried. So instead, you muttered, “How should I start?”
He cocked his head slightly, giving you a blatant look. “How about hey? That’s usually a great conversation starter.”
You rolled your eyes but somehow your feet still moved to approach him until you were just a foot away. His hands were drumming the armrest of the chair, his aura still dominating and cocky, making you want to hop onto his lap immediately.
Some may take it as daddy issues, but you liked to call it common sense.
So, you breathed. “Hey.”
“Hi.” He responded, eyes glittering with delight. “What now?”
“I-Um...” You faltered, breaking under his stare. “Can I buy you a drink?”
Chanyeol laughed at that, shaking his head slightly. With his new hair, it didn’t make it fall into a mop around his face, which made it even harder to ignore the straight slope of his nose, cut of his exceptional jaw. “Try to not be so foreword. You’ll want to play a little hard to get, at least.”
“Okay, so what?” You grunted, crossing your arms with a huff. He really didn’t like making these things easy.
“Wait for him to lead the conversation. Makes him feel in control, guys love that.” Chanyeol hummed, before cocking his head at you with a grin. His tongue poked from between his teeth slightly, endearing. “So, what are you doing here?”
You scoffed at his tone when he was in the role, how he tried to sound dignified and... Tayeong-ish. It made you squirm. 
Chanyeol’s voice was so much nicer, but you’d never tell him that.
“Came with someone. Baekhyun.” You sighed, flicking your hair over your shoulder. “Thought it would be fun.”
“Well, I hope it will be.” Chanyeol acted, nonchalantly glancing around the room as though it was actually a pulsing club. “Don’t usually see women as hot as you around here.”
You scoffed, rolling your eyes. “Tayeong would never say that.”
Chanyeol shook his head with a laugh, mimicking your eye roll. “You’re right, he’d probably call you exquisite, or immaculate or something as stupid. But I’m not going to do that like I’m from the eighteen hundreds, so just go with it.”
You sighed, shaking your head and fighting a grin at his words. Hell, he wasn’t wrong. “Okay. Well, I would tell him I tend to follow wherever the excitement is.”
Chanyeol nodded at that, giving you a grin. “Well, could I buy you a drink?”
Even the words off his lips made your knees weak, gulping slightly. “Only if you ask nicely.”
“Good, don’t make it easy.” He breathed, hands now folding on his lap slightly. “So, may I please buy you a drink? It would be an honour.”
Scoffing out a laugh, you nodded, even going so far as to pretend to grab a drink from an imaginary bartender. “Thank you.”
“From this point on conversation would be harder, you’ll have to keep it light so he doesn’t suspect anything. It’ll be more important to use body language.” Chanyeol hummed with a grin, watching you swirl imaginary ice in your imaginary glass. “Which is a lot more fun to teach.”
You fought the urge to swat him, shaking your head with a laugh. “Stop, you’re the one insisting on work. You’re distracting me.”
He laughed quickly, running a hand through his hair. “This is work, shouldn’t you be distracting me? Come on, body language.”
You scoffed but used a hand to brush your hair off your chest slowly, pulse tingling at the way he watched your motion. “So, how has the company been?” You hummed nonchalantly, cocking your head at him with a smirk.
He smirked right back. Cocky bastard. “Great! Love it, being an unfair murderer and thief and all. Favourite thing in the world.” He huffed quickly, as though the world tasted sour in his tongue.
“That’s good.” You hummed, now stepping even closer to brush your fingers across his shoulder quickly. Tayeong did this to you at the gala, it would only make sense to do it back to him. It made sense for you to mimic his own motion - plus, you loved how he stiffened under your touch, the way his pupils slowly dilated as you brush some imaginary lint off his shoulder with a sultry grin. “Mind if I take a seat?”
He hummed, eyes flicking to the couch behind you where you had once sat. It would be easy for you to sit back down, continue practicing, but his devilish grin made it clear that he wasn’t wanting easy.  “This club is so busy, there’s no other unattended chairs. Now how are you going to simulate that?”
Heart drumming, you rolled your eyes with a scoff. “Oh, Yeol, I’m sure I can figure something out. In fact, here looks great.” You breathed, shuffling forward until your knees were brushing his.
You expected him to say no at your intentions, but instead his head lolled to the side, eyes flooding with darkness as he pondered it. His lips were twisting into a smirk, his knuckles white in the fists on his lap. He wanted you to crawl onto his thighs, you could see it in the way his eyes traced yours. Still, you were surprised when he spoke.
Finally, he growled. “Well, I’m nothing if not a realist.”
You laughed at that, placing your knees on either side of his thighs until you were balanced in his lap. He was warm underneath you, a feeling you hadn���t felt in what seemed like years making your head spin.
“Well I guess chivalry isn’t dead after all.” You hummed sweetly, hands softly draped onto his shoulders for balance. “Now tell me, any big plans for the company?”
The feeling of his body under you was making your heart rattle like a bird in a cage, your palms sweaty. He was dizzyingly warm, his hands slowly coming to rest on your legs outside his own, deathly still. 
“Nothing too huge. Attacking a far superior gang, probably going to die. You know,” He shot your a grin, his face so close to yours you could see each of his individual eyelashes. “The usual.” His eyes were dark brown but still, somehow, impossibly warm. You weren’t sure how you had missed if before becoming... friends, or whatever the hell this was. Now, the warmth in his gaze was drowning you.
You it down the need to gulp for air, hyper focused on the feeling of his hands on you. “The usual.” You hummed instead slightly, feeling his chest rising and falling as your hands travelled to his front. It was so intense you thought you were going to pass out, this feeling that had you weak in the knees. 
He nodded slowly, the grin slipping off his face as suddenly, he seemed to become enraptured in watching you as well. His eyes flickered over your features, breathing falling slow, until suddenly, he slowly began to lean forward.
You had kissed boys. Plenty, in fact. They had started it, you had started it, they had been mutual or forced, but you had plenty of experience in the kissing department. That still didn’t explain why you felt your lungs were going to give out when his eyes drifted shut, how the tilting of his head gave made your hands tremble like you were about to faint. 
The new feeling quickly claimed your previous nerved of steel, corroding them until you spoke, just a second before his lips would have brushed yours. “Who wins?”
Slowly, his eyes flickered open again, focusing on your lips before they flickered up to your own. “What?”
“Who wins? If we kiss right now, who seduced who?” You breathed, fingers tightening on his shirt slowly. Because God did you want to kiss him, kiss him until you passed out, but it made you impossibly terrified at the idea.
He shook his head slowly, hands slowly beginning to trail to your hips. The path left your skin erupting in goosebumps, made you chew your lips slowly to fight the urge to immediately kiss the living daylights out of him. “Does it matter?”
Those three words were all it took. Because Hell no, it didn’t fucking matter. All that mattered was having his lips on yours.
You barely had time to mutter “no,” before he did just that, his mouth immediately meeting yours in the start of a slow, careful kiss. It was new, to have him carefully slot his lips onto yours like you were glass, his hands loosely draped on your hips. It made you grin, smiling profusely as you pressed back, eyes fluttering shut. Chanyeol’s scent was heavy in your nostrils, spiced and warm, your head spinning with it. 
Chanyeol felt you smile, his own slowly growing to reflect it as he began moving, the kiss growing deeper with his every move. Soon enough you opened your jaw, allowing him to deepen the kiss impossibly further. It was heady and thick, the air surrounding your bodies as his hands tightened their grip, rocking you back and forth slowly on his lap with a growl.
“Chanyeol.” You groaned at the feeling, arms going limp and allowing the sleeves of the robe to slip off your shoulder.
“Since when do you call me that?” He grumbled, biting your lip slightly and making you squirm with a grin.
“Yeol.” You hummed, enjoying the vibration of his chest when he growled at the name. With the word, his hands tightened their grip on your ass, making you shriek playfully.
“I thought you hated that nickname.” You laughed against his lips, hands threding themselves into his hair. It was shorter than last time, allowing you to tug at the new short locks with pleasure.
“I do.” He scoffed, hands returning to your hips and giving you a squeeze. “Unless you’re the one calling me it.”
You leaned back with a satisfied grin, eyes igniting as you relished in his admittance of the affection towards the name. “Oh, I so told you so.”
“Shut it.” He laughed, shaking his head at you with an embarrassed grin. “If you tell anyone, I’m going to kill you.”
“I don’t doubt that.” You grinned, leaning back down to press a quick kiss against his jaw. It was fucking impeccable, it would be a crime not to, especially when he let out a grumble at the feeling. “Now,” You hummed, leaning back slowly and giving him a sultry grin. “To the bedroom?”
Chanyeol grinned back up at you at that, but to your surprise, he shook his head slowly. You tried to ignore how your chest deflated, smile dampened at the rejection from him, especially when he had seemed so... desperate for you as well.
“No, no. I would, trust me, but I don’t have time, I’ve got to get back to headquarters.” He sighed, cocking his head at you with a half-apologetic grin. “But trust me, I’m definitely considering that invitation a point in the desperation games.”
“Oh, so that’s what we’re calling that now? The desperation games?” You scoffed half-heartedly, rolling your eyes at him. You hated how when he smirked, the flushed redness of his lips made ache to cover them again with your own. 
“Yeah, I came up with it. All on my own. Pretty good, eh?” He grinned, but you just rolled your eyes, shifting until you could clamber off his lap, cheeks burning. Suddenly, you felt impossibly exposed in your ridiculous ensemble, struggling to tie it with your shaky hands.
“Yeah, fantastic.” You huffed, tying the belt into a rough bow with a slight sigh. You tugged your hair out of your face quickly, your gaze suddenly unable to look at him.
The feeling was back, but this time it was worse. Had you gone too far? Maybe he didn’t like it. It was stupid that you felt like throwing a fit, gnawing on your lip harshly to forget the feeling of his on your own. 
“Hey, what’s wrong now?” He asked lowly, and you could see out of your peripheral vision that his head was cocked at you slightly. It made you want to squirm.
“Nothing’s wrong Chanyeol.” You hummed nonchalantly, eyes meeting his warm ones with a half-grin. “You should get back to headquarters, you could defiantly use some target practice.”
He scoffed at that as he rose to his feet, shaking his head slightly. “I could kick your ass at target practice and you know it.” He said back, shooting you a slight smirk with the motion. He had dropped the matter relatively easily - the fact that you were still being strange, fidgety. You were grateful for it.
“Yeah, yeah, whatever you could.” You said back, forcing out a laugh that sounded just as empty as your chest felt. 
He scoffed at that, giving you a playful shove when he brushed past. It just made your skin ignite to a scalding temperature though, knocking your breath away.
Jesus, you had to get laid.
“I would bet on it, but we have enough competition already, so I won’t.” Chanyeol hummed as he nosed on his sneakers, turning to give you a wink over his shoulder as he said it. It just made you grumble, rolling your eyes slightly as you leaned on the wall facing the door with a slight scowl.
“Or you could give up on the competition all together and admit you’re attracted to me.” You said with a grumble, rolling your eyes when he barked out a laugh.
“I never said I wasn’t attracted to you.” He laughed, ears flushing a bright red when he spared you a glance.
The words made you smile slightly to yourself, even though just a moment ago his actions had wiped it off your face. “So you are?”
Chanyeol grumbled under his breath at the confrontation, ears growing a brighter scarlet by the second. “Don’t push it.” He hummed, shrugging on his black bomber jacket slowly.
But you had to, your heart screamed. Just this once, you had to make sure he wasn’t three steps ahead of you like he usually was, wasn’t feigning attraction for the sake of the desperation games. He wouldn’t lie to you, that you knew for a fact. He never had so far. 
“You are? I’m pushing it.” You urged, hand coming to rest on your hip as an excited smile drifted past your face, which you were hoping came across as cocky.
He glanced back over at you, and for a second, you could have sworn your heart stopped. 
Finally, against the blush on his cheeks, he nodded quickly. “You’re the most attractive girl I've seen in a long time.” He hummed quickly. The words made your skin crawl in pleasure, already wanting to drink them up like a fine wine. You allowed yourself, just this once, to relish in his admittance.
But the moment was gone far too soon. 
“But just because you’re hot doesn't mean I’m going to sacrifice my manhood in this competition.” He said with a devilish grin, and suddenly, you were back to square one.
“Ugh, whatever. Go back to Exodus, tell me if you find out anything else about tomorrow.” You grumbled with a wave of your hand, only appreciating his laugh for a second before he shut the door softly behind himself.
You slammed the door to the cab before quickly darting inside, the chill in the air making your freshly-shaved legs already erupt in tiny, prickly goosebumps. God, that was the worst! It had taken you far too long to get them as smooth as they were, and already the feeling of their sandpaper texture brushing against each other made you grit your teeth.
It was far too cold for you to be out in this weather dressed like this anyway, but the club you were attending made it obvious that there was certainly a dress code. Even though the code didn’t call for much clothing at all, you were already longing for a jacket to brace against the wind.
Finally, you stepped inside with a grumble, hands already coming to rub at your arms and make the frigid chill disappear. It was everywhere, all the way up your legs to just where the skintight dress covered the curve of your ass, down to your cleavage that was dripping in chains of silver jewelry. It would look extra nice under the flashing lights of the club, which you were going to head to, right after you met Baekhyun at headquarters.
Speaking of, the man was nowhere to be seen in the empty foyer, so you sat on one of the couches to your right quickly. You felt damn near naked in the little black number, which was accentuating your body so tightly you could barely breathe.
It’ll be worth it, you reminded yourself, brushing off your lap with a slight scowl. Even if tonight just resulted in making more damn connections, this dress was memorable.
“Nice outfit.” You heard a hum from behind you, somewhere in the hallway. Your head spun, toking eyes with Kyungsoo, from where he must have seen you waiting.
“Ah, Kyungsoo. Thank you.” You said with a slight, embarrassed laugh. It was barely there, slinky and almost embarrassing under his stoic gaze. “I’ve got to get their attention somehow.”
“Of course, that’s your job.” Kyungsoo said with a nod, walking in front of you. He was strictly professional, his gaze never wandering past your own, until his lips quirked into a slight smile.
“Do you like it so far?” He asked, adjusting his stance slightly. “The job, I mean.”
You nodded, smiling back slightly with a huff. ‘Yeah, it’s... it’s great so far.”
“Good, I’m happy to hear it.” Kyungsoo said with a nod, cocking his head at you slightly. “Not many women would be up for a job like this, we’ve had a lot leave before.”
You laughed slightly at that with a shake of your head. “I guess I’m not most girls, then.”
“You can say that again.” Another grunt interrupted you, the voice returning a flush to your cheeks more quickly than you could bite it back.
Chanyeol paced in front of you slowly, smirk dripping off his lips as his gaze drank you in. Again, your heart was thudding, but you hid it with a scoff.
“Ready? You brought the earpiece?” He hummed, even though his eyes were unable to focus on your face. You could feel him, his desperation to reach out and brush against your leg, and you would have let him too, until Kyungsoo’s voice cut your thoughts short.
“Chanyeol.” He hummed lowly, shooting him a look from the corner of his eye.
“What? I’m just asking!” 
“Well you can ask without eyeing her up. She’s going to work, treat her like a colleague.” Kyungsoo snapped lowly, his voice laced with a growl.
Chanyeol shot him a low gaze, leaking with slight disdain for Kyungsoo’s words. He was fond of him, you knew that, but right now, an unspoken tension was clouding the air. It made you squirm, desperate for something to shatter it like glass. You had no idea what the hell their problem was, but you wanted it to be resolved - and quickly.
“Yeah, I have the earpiece in and connected, I’ll call you once I get into the car.” You nodded quickly, offering him an awkward half smile when his eyes finally tore off Soo.
“Okay.” He said with an affirmative nod, biting his lip slightly when he refused to speak further. He could be a good actor when he wanted, but right now that skill seemed to fail him as his gaze flickered between you and his superior.
Kyungsoo let out a sigh, pushing his black-rimmed glasses off the bridge of his nose. “You should focus on setting up another meeting with Tayeong after tonight. Time is ticking, we have to get as close as possible.” He hummed lowly, his voice returning to it’s usual serious business tone.
You nodded. “Of course, I’ve been thinking about what to say so I can do just that.”
“Oh, you’ve been... practicing?” Chanyeol said with a cocky smirk, crossing his arms slowly. His face was dripping in a knowing look, his mind certainly thinking back to the practicing he had tried to help you with.
Gulping slightly, you nodded. “Yep. Practicing hard, in fact.” You said with a slight smirk of your own, watching his oversized, calloused hands as they tightened on his biceps slowly.
“Hard?” Chanyeol grinned, his tongue poking out from between his teeth with the motion.
“What the hell are you guys talking about that I don’t understand?” Kyungsoo growled, snapping your gaze back to him. 
“Nothing.” The two of you said in unison, which didn’t seem to help your case. Kyungsoo’s gaze narrowed as it flickered between your two forms, gears grinding in his mind. He was thinking hard, you could tell from the furrowing of his gaze, but thankfully you didn’t need to hear his thoughts before you were interrupted.
“Sorry, sorry!” Baekhyun muttered, loping from the elevator quickly. He ran a hand through his mussed hair, white dress shirt perfectly casually unbuttoned, shoes polished to a shine. “I was at the range, lost track of time.”
He stopped in front of you, till breathing heavily but offering you a grin and hand nonetheless. “Well you look fucking amazing, not that I should be surprised.”
You shook your head with a grin, but took his hand anyway and stood. Hell, the towering heels on your feet made it hard enough to stand on your own, his help was basically necessary. 
“Oh, this old thing? Just found it in the back of my closet.” You laughed, releasing your grip on him to brush your lap one last time. You were lucky he wore dark black skinny jeans, torn at the knees. It almost looked like you matched, both of you dressed perfectly unkempt and sexy for the club.
“You should look in the back of your closet more often.” He scoffed, glancing over your form slowly. 
“She’s going for information on Tayeong, not to impress you.” Chanyeol sneered slightly at him, making you shoot him a look.
“Chanyeol.” You cut at the same time as Kyungsoo did. Thankfully, he didn’t seem to notice you had said anything at all.
“It’s his job to bring her along, don’t berate him because of it.” He growled, locking his jaw defiantly against Chanyeol’s poisonous glare. It was low and set staunchly on Baekhyun, his arms locked in their folded manner, but you could see his fists forming against his chest.
“I’m not berating, I’m reminding.” Chanyeol huffed, locking his jaw slightly. 
“Well, stop it.” Kyungsoo said harshly, before looking at you and Baekhyun. He rolled his eyes slightly, but gave you a nod anyway. “Go on, you’re late enough as is.”
“Okay, I’ll talk to you later Chanyeol.” You hummed, offering the pair of them a slight wave as Baekhyun’s hand on your back ushered you out the door. 
You pretended not to notice their eyes on your retreating frame every step of the way.
It was only a short walk to Baekhyun’s parked car, only slightly up the street from the parked door. Unlocking it, he made sure to swing the door open for you with a grin. “After you.” He hummed, eyes twinkling.
You just rolled your eyes with a scoff, clambering into his front seat quickly. He got onto the drivers side quickly, immediately letting the engine roar to life under his hands.
“Excited?” He hummed, turning to give you a smile when you pulled away from the curb.
You grinned right back. “Yeah, hopefully I can get a good connection formed.” You said, turning to flick on your cell phone quickly. Now that you were en route, you knew Chanyeol wouldn’t be nice if you took too long to call him.
Unfortunately for you, though, your phone began buzzing before you could even attempt.
You slid to accept the call before even glancing at the contact, figuring that Chanyeol would have already gotten impatient with you. Hell, you were half expecting him to growl at you, but you were surprised when smooth velvet whispered through the earpiece instead.
“Hey, I’m going to be listening in for tonight. Chanyeol’s been too highly involved with your placements as is, so I told him I’d take over.” Kyungsoo hummed, his voice slow like molasses in your ear.
Your brow furrowed slightly with the information. What the hell? Chanyeol was your supervisor, it was his job to watch over you the way he had been. Every step of the way, he was beside you, coaching you like a mentor. How come tonight was the night he was suddenly pulled off duty?
“Are you not going to say anything?” Kyungsoo questioned, his voice biting in a way that made your stomach twist with anxiety. His authoritative aura was still heavy over the call, somehow hinting that you should be saying something to indicate that no, you weren’t wanting Kyungsoo on the other end of the line. It was stupid, but that was exactly what was tying your innards into knots. Now, you began to get nervous.
But moreover than that, you weren’t speaking because Chanyeol had told you not to let Baekhyun know last time.
“I-Isn’t this secret?” You hummed quietly, but watched as Baekhyun shot you a glance from the corner of his eye as you pulled up to a red light.
“What did you say?” He hummed, giving you a teasing smirk. He thought you were being crazy, surely.
“Secret? From Neotech, sure, but you can talk now. You and Baekhyun are on the same team, aren't you?”
“Um, sorry,” You hummed to Baekhyun, pointing at your ear quickly. “It’s Kyungsoo, I’m on the phone.”
If he was surprised, he didn’t show it. Instead, he nodded quickly, giving you a slight grin. “Oh, I thought you were talking to yourself! Sorry, keep talking. You can be louder, I don’t care.”
You nodded back with a half smile, fingers fiddling slightly on your lap. Now, you let your words grow in volume. “Sorry Kyungsoo, I didn’t think...”
“Didn’t think Baekhyun could know? I figured Chanyeol would be weird like that, he’s always overly engaged. He was probably watching Baekhyun closer than he was watching you.”
You nibbled your lip slightly. “Why would he care about what Baekhyun does?”
The car slowly pulled to a stop outside a large, concrete building. Neon lights illuminated the name of the club; Moscato, in garish blue. You had arrived, further proven by Baekhyun throwing the car into park.
You opened the door and clambered out just as Kyungsoo’s response came. His answer, however, just made more questions flood your mind.
“Don’t you know?”
“Well, you’re back already.” A voice said as you closed the car door, making you turn quickly and face the speaker. As soon as you did, a fake, sweet smile slipped onto your cheeks out of habit.
“Jaehyun.” You hummed, walking to give him a hug in greeting. It was fleeting, but his hands rested on your hips even after you pulled away. The feeling made you want to hiss, but instead you covered it with a smile at him.
“You look as stunning as ever.” He hummed, eyes tracing down your neck and along the jewelry adorning it. It was hungry and intense, as he licked his lips at the sight of you, a piece of meat for a starving man.
“Thank you.” You laughed, hands clapping together in your front. Otherwise, you would have no choice but to rest them on Jaehyun’s chest, which was essentially exposed in his attire. His burgundy shirt was buttoned lowly, leaving his collarbones exposed to the chill. All he had to brace against the wind was a black suit jacket, dressed with a sparkling, shiny cufflink. “It’s cold out, what are you doing here? Shouldn’t you be inside?”
“I could ask you the same, for the first question at least.” He hummed, his hands still refusing to leave your waist.
“I brought her along, she wanted to see everything again.” Baekhyun said, tucking his keys into his pocket and giving Jaehyun a lopsided grin. “You’re on watch?”
Jaehyun nodded, finally releasing your left hip to brush aside his jacket. The thick black handle of his strap was tucked into the waistband of his jeans, dark distressed denim a stark contrast to the seriousness of the weapon. “Nothing’s going to happen but Tayeong didn’t want to risk anything, especially so close to... well, you know.” He grinned, showing his array of pearly white teeth confidently.
Little did he know, you knew too. Tayeong didn’t want to screw anything up before the ambush.
“Yeah, I know.” Baekhyun laughed, giving Jaehyun a clap on the shoulder quickly, a signal for him to drop his remaining hand off your hip. For someone who had been told that Baekhyun was pining after you, he didn’t seem to care much that the man himself was watching.
“We’re going in, text if anything happens.” Baekhyun finished with a firm nod, tugging his arm around your waist and leading you away from the man outside. As you turned though to give him a little wave, you cut short at the image of him, carelessly staring at your ass with each step you took. His gaze was dark, lip tugged between his teeth, and suddenly you wanted to throw up.
Because that look made you realize just what you were to these men. At home, in Exodus territory, the guys watched you with respect. They seemed to genuinely like you, took your presence right from the beginning as a new member of their team. You didn’t have a family anymore, but Exodus had done everything for you so far that let yourself change your mind. Now, like Chanyeol, you felt like they were your family, in a way. Here, you were nothing but a piece of ass, a pretty accessory to adorn someone’s arm. 
The warmth of hundreds of pulsing, sweaty bodies engulfed you as soon as you stepped inside. Shrouded in darkness, the only sources of light were large chandeliers along the walls, illuminating large booths that were separated by walls of hanging crystals. The floor was thundering with feet, making the building seem to sway alongside the thudding music. Even through the aura of extravagant sinnery, the stench of sweat made you scrunch your nose.
“There aren't security cameras there so you’re going to be on your own. If anything goes badly I’ll be able to hear it, but not see, got it?”
And even though Kyungsoo couldn’t see you, you gulped with a nod. 
“Come on, let’s get started with a drink.” Baekhyun hummed into your ear, his arms leading you towards the booths. They were mostly occupied, making you relax slightly once you realized that the bar, tucked into the corner of the doom was your final destination.
“Rye and coke.” Baekhyun told the bartender. She was young, your age or even younger, so when the attractive Baekhyun slipped her a smirk you could see her ears flush bright red.
“Of course, sir!” She chirped, her smile deflating when she noticed Baekhuun’s arm was still wound around your waist. “A-anything for you, miss?”
You shot her a smile, laughing slightly as you leaned onto the bar. “Vodka soda, please. And don’t call me miss, I’m not much older than you.”
Even though your words were meant to make her more at ease, she blinked profusely with a nod. “Yes, I’m sorry. I’ll get those drinks for you guys.” She stammered slightly, before scampering away to the wide bottles on the wall.
“Jesus, did I skin her cat or something?” You huffed at her jumpy demeanour, the smile drifting off your face.
Baekhyun scoffed, removing his arm from your hips and instead settling into an empty barstool to his left. “You just scared her, who cares.”
“Why would I scare her?” You said with an eye roll, turning to give him a look.
Baekhyun smirked. “You’re intimidating, you know.”
“What? No, I’m not.”
“Yeah, you are.” He hummed, eyes flickering over you slowly. Still, it wasn’t like you were a commodity - instead, he seemed to be measuring your scare factor in his head. “Pretty face, great body. Dripping in diamonds. Confident, sexy. You’d scare anyone in their right mind.”
You rolled your eyes, fighting the urge to turn red under his words. They were compliments, not things that should make anyone scared of your presence. You had a resting bitch face, you knew that - the way people spoke of you confirmed it more than enough. Still, you didn’t want to be feared for your appearance. You wanted to be respected for your skills.
Something that most guys seemed to get without batting an eye.
So, you scoffed. “If she’s scared of me now, she should see me with a rifle in my hands.”
“You’re not intimidating to me, if that helps.” Kyungsoo hummed in your ear, making your lips twist into a slight smile.
But that’s because Kyungsoo was intimidating to everyone. That doesn’t count.
That made Baekhyun laugh, even when the girl brought back your drinks. You pretended not to notice that she didn’t make eye contact with you, instead rolling your eyes as you took a sip.
The drink was fizzy and tart against our tongue, the bite of lime a refreshing break from the scent that was still plaguing your nostrils. Neotech was good at pretending, getting only the best venues for their events. This club was screaming wealth, with everyone you saw wearing satin dress shirts and barely-there dresses, every limb coated in jewelry. The crystals separating each booth were swaying softly, scattering broken rainbows onto the walls like art. Even then, they always had their telltale stench of deceit oozing out - in this case, literally.
“Where is everyone? Mark, Yuta, the other guys?” You hummed, taking another slow sip as you surveyed the area.
“Probably on watch too, or with Tayeong. He’s getting a shipment tonight and doesn’t want them to pull a fast one on him. This club is always a good distraction to have plenty of cars coming and going - and he’ll need plenty to move the goods.” Baekhyun said lowly, making his voice nearly masked by the pulsing music.
“The goods?” You responded, turning to shoot him a look. What goods, exactly?
Baekhyun seemed to catch your unspoken question, giving you a low gaze. Even then, the words seemed too weighty for the setting, as he instead rose to his feet. “Dance with me.”
It was more of a statement than a question, prompting you to nod and follow him onto the dance floor. It was packed and humid, every person having a drink in their hands if they weren’t on another person. It was sleazy, the way people grappled at limbs like they were worth millions, the couples making out almost everywhere you turned. Thankfully, your free hand was holding to the back of Baekhyun’s white dress shirt, other one still occupied with he heavy glass of your drink. It seemed to be the only thing preventing hands and hungry eyes from latching onto you.
Finally, Baekhyun slowed to a stop, in a dark corner near a set of speakers. It was thuddingly loud, making you wince that poor Kyungsoo would have to endure the sound as well.
Nevertheless, when Baekhyun turned to shoot you a playful grin, you returned it. These clubs were like a second home during your adolescence, although never this high-class. Even though, the atmosphere was the same, sparking your muscle memory to switch into gear.
Eyes fluttering shut, your hips began to trace lazy circles, fingers dancing imaginary patterns into the air to the beat of the music. When you opened your eyes again, Baekhyun was watching with a playful smirk, hands grabbing at yours to tug you into a playful spin.
Your hair swung with the motion until you spun against his back, laughing the entire way. Your hips swayed in unison, his body never pushing it to become anything more than a playful dance. You liked that about him, how he knew there was a line. He would tease and poke and prod, but never took it too far. So while the two of you were happily dancing together, it was just fun. Not expecting anything more, not wanting anything more, he kept it purely amusing as his hands wrapped around your wrists, making the two of you do stupid, silly moves. If he had tried to take it too far, you probably would have snapped off one of his limbs, but he never did. He never would.
Plus, you only really let one guy consistently take it too far.
At the realization, your eyes snapped back open, skin growing sweaty under Baekhyun’s grasp. Because Baekhyun was your friend, and you were imagining someone else in his place. Someone who was entirely too tall, with an endearing smirk and warm eyes.
This sucked. The fact that he was always there, and you couldn’t place why. He wasn't even breathing down your ear, had been considerably more bearable lately, but still the gnawing, heart thudding feeling followed you. It was everywhere, the idea of him all-consuming. You were surprised it hadn’t burned you to ash yet.
“Okay?” Baekhyun hummed into your ear, thankfully the opposite one of where Kyungsoo was listening.
You took another quick sip with a nod. Because yes, you were okay, just... delirious, or something. Horny, probably. At least, that’s what you’d been telling yourself. “Yeah, I’m fine.”
“Okay then.” Baekhyun said with a smile, before sending you into another quick spin that made all those weird thoughts slip from your head.
It could have been minutes or hours, the time you spent with Baekhyun on the dance floor. Spinning and swaying, bouncing on your feet to the beat of the songs as they rolled through. Uninterrupted and amusing, you had all but forgotten you were actively on the job.
Until with another spin, you watched as Baekhyun’s eyes, previously glowing with a grin, flickered to someone behind you and immediately lost all life.
You felt cool hands tighten on your hip when you brushed into someone, their body immediately stepping all too close to yours. They towered over you, your heart racing, until you glanced to look at who’s arms you had stumbled into.
The sight made your heart thunder to a halt. “Tayeong.” You hummed under your breath, immediately moving to shuffle out of his grasp.
At your motion, however, his grip just tightened, to an almost painful point. You could feel each of the thick, dark silver rings digging into your hipbone, but you had already tried to move once. You would be stupid to try again.
“Hello, darling.” He grinned, showing off his teeth from behind his thin lips. Up close, with you pressed up against his body, you could really see every flaw - or lack, thereof - on his pale, porcelain skin. He looked even more sharp since the last time you had met, all high cheekbones and burning, deep black gaze. The notch above his brow was still carved sharply, his copper-red hair slicked off his forehead. He even had a faux silver lip ring, curled around his bottom lip like a snake. “You look just as ravishing as I remember.”
Against the thudding of your pulse, you smiled up at him quickly. The music was so loud, it justified you leaning closer to him, mouth nearly brushing his ear as you spoke. “It’s nice to see you again, Mr. Lee.” You smiled sweetly. 
The name made him tug you closer, the curve of your ass now staunchly pressed against his groin. You could feel the brush of denim against your spandex, making you want to tremble slightly. “I told you, anyone as beautiful as you gets to call me Tayeong.”
You faked a fluttering giggle at that, free hand coming rest atop his on your hip. Against the blazing heat of the dance floor, he was ice cold under your warmth. “Thank you, Tayeong.” You hummed, even going to far as to give him another smirk before your eyes fell back on Baekhyun.
“Good, you’ve got him. Keep close, make conversation.” Kyungsoo whispered in your ear, your eyes blinking quickly at Baekhyun even though you made no attempt to move.
Before you could even decide what to speak, Tayeong seemed to sense your action about to move away, tensing up behind you like an attack dog. “Byun, you should be on watch. I’ll take care of this pet, go watch the left flank with Lucas.”
Baekhyun set his jaw but nodded nonetheless, giving you a slight smile before he slipped into the crowd.
Leaving you with the wolf himself.
“You’re a good dancer.” Tayeong hummed lowly, his head ducking to growl it into your ear. “Absolutely exquisite.”
He’d probably call you exquisite, or immaculate or something as stupid. But I’m not going to do that like I’m from the eighteen hundreds.
Chanyeol’s voice echoed in your head, making you want to physically eject ourself from Tayeong’s arms. It wasn’t an option though, no matter how much you hated being in his grasp. Instead, you grinned, taking another slow sip from your glass. You didn’t want to say anything further - in fact, if it were up to you, you would have torn his hands off you the minute you recognized him. But it wasn’t your choice to make. This was your job now, not your crazy teenage years.
So instead, you shot him a dangerous smirk. “Want to see more?” You asked innocently, watching his eyes flood with desire at the idea.
“Of course.” He hummed, finally loosening his hold on your waist and letting you step away from his frigid body. You turned to face him slightly, taking in the torn up Aint It Black tee and equally as torn black jeans, silver watch matching the silver rings. Before, he had seemed regal and cunning, a stone-cold businessman. Now, he looked downright dangerous, especially when he quirked his notched brow at you quickly.
 He was waiting. So, you didn’t disappoint.
Any rhythmic, smooth bone you had in your body was activated under his eye, making your hips snap to the beat of the music. Your arms were raised above your head, brushing your hair over our shoulder as you turned, griding your body with every motion you made. It was hot, and downright dirty as you watched his eyes flash from your breasts to your ass, taking in your lean torso and long legs like he was deciding which would feel better under his tongue.
Finally, with another spin you felt him, his hand wrapping around your middle to rest on your stomach. He gave you a quick shove until you were firmly pressed against him with a gasp, his other hand quickly falling aim on your throat. 
His grip tightened slightly, making your heart thunder in your chest. Immediately, your hands snatched to his, tightening around his digits as you choked out a gasp. His fingers were digging into your windpipe, making you gasp for air. Every maneuver, kick or punch that Chanyeol had taught you was racing through your mind, but you knew better than to use them this early. His grip was certainly going to leave bruises, but wasn’t enough to kill you. If he wanted to, you would have been dead by now.
“So pretty when you’re gasping for me. Come along, I’m going to buy you a drink, pretty girl.” He growled into your ear, and you could feel the cool silver of his lip ring brushing against you.
You squeaked slightly with a nod, making him chuckle lowly when he finally released your throat. Your hand cupped the aching flesh tenderly as you gulped down breath, eyes already feeling glassy from the intense moment.
Tayeong’s hand slipped from your stomach to your ass as he turned, dragging you along to a secluded booth in the corner. This one was different - the crystals strung from the ceiling circled it completely, only offering small glimpses behind the shield until Tayeong spread them apart with a sweep of his arm.
The crystals crackled as they knocked against each other, with Tayeong pushing you through them with his opposite arm. You stepped in quickly, heels clinking against the faux hardwood with each pace. You sat on the velvet seat, your dress slipping easily over the material as Tayeong matched your motion on the opposite side.
His gaze was hungry on you as he settled into the plush booth, hands immediately folding on the tabletop as he shot you a subtle smirk. “What would you like, I’ll have someone fetch it for you.”
You smiled slightly, ignoring the thudding of your heart or the ghost of his hands on your neck. “Um, vodka soda please.” You hummed, your own hand coming up to trace where his had previously been pressing.
He grinned as he watched your motion, biting at his lip ring slightly. “Sorry about that, your throat just looked so stunning, I couldn’t resist.” He laughed, slipping his arms across the table until he could grasp your free one from where it was resting.
His grip was still cool but firm in yours, making you want to tug it away quickly. It felt foreign in your grasp, only increasing the jump when he barked.
“Yuta!” He snapped his head twisting to the sheath of crystals suspended from the ceiling. His voice was laced with a snarl, a stark contrast to the faux sweetness he always used with you. 
Almost immediately, the crystals were swept aside, revealing a scowling Yuta. Almost immediately, his gaze snapped to you, full of seething. “She’s back already?” He growled at Tayeong, making him tighten his grasp.
“Yes, and you are going to fetch this beautiful woman a drink. And lose the attitude, understood?” Tayeong said to him lowly, giving him a low glare with the words. 
Yuta seemed less than pleased, but he seemed to understand that Tayeong’s tone was not to be messed with. You didn’t like Yuta, not in the slightest, which made you send him a slight smirk when he spun of his heel with a growl, the crystal curtain swaying back not place.
“As I was saying,” Tayeong turned to look back at you, the sweetness leeching back into his voice and making you want to gag. “You look stunning with those diamonds around your neck.”
You squeezed his hand slightly with a twinkling laugh, crossing your legs under the table. “Thank you, they’re not much but I wanted to look nice.” You hummed, flicking your hair over our shoulder with a grin. 
Tayeong laughed slightly at that, his hand as cool as ice in yours. “Well, you may be right, but on you they look fantastic. I hope you don’t mind my ask, but I’d certainly love to add to your jewelry collection, if you’d let me.”
“Don’t accept right away. Make him want it.”
“Oh God, Tayeong, you don’t have to do that.” You said with a slight laugh, finally succumbing to the urge to release his hand from yours and instead trace the chains softly. “That’s far too much.”
“No, I insist.” Tayeong said, a slight growl lacing his tone. Now that his hand was free, it curled into a soft fist, dragging across the table until he could entwine his own fingers together. “It would be an honour to have a gift from me adorned on your body.”
You smiled softly, finally dropping your hand from the necklaces and instead resting them on your lap. “Well, I’d love to accept but it’s too much to accept.”
“Accept it.” He finally broke slightly, his voice growing slightly more gravelly, with his narrowed gaze. It made you jump, the action causing him to let out a large, fake smile. You could see through him like glass. “You wouldn’t want to make me upset, would you doll?”
His voice was sharpened like a knife, making your gut twist. “N-No, I wouldn’t.”
He smirked. “I love how you take orders.” He said, finally leaning back into his seat slightly. Almost as though summoned, and thank God for it, Yuta returned.
“Your drink.” He scowled, setting it in front of you with a slight, mocking grin.It made you want to kick in his knees and stomp on his fingers one by one, the way his faux grin gave way to him blatantly glancing at our cleavage. He was angled in just a way that Tayeong couldn’t see, something that he was definitely certain of.
Before you gave in to the urge to beat him into next week, he stepped back, turning on his heel to gave Tayeong a glance. “The last of the shipment has been loaded, should I take it over?”
Tayeong shook his head, instead gesturing for you to take a drink. “No, I’ll take it myself. We were just getting ready to finish up, weren’t we, beautiful?”
Even though your conversation had been nowhere near done, you nodded, not wanting to hear his voice raise at you yet again. “Yes.” You hummed, taking a large sip from the glass quickly.
Tayeong laughed slightly at your action, moving to stand and offering you a hand. “Don’t worry about that, you can just take it in the car. Come on, I want to show you something before we depart each other again.”
You wanted to roll your eyes at his distinguished, flowery language. If Chanyeol was here, maybe you would have. Instead, you just furrowed your row. “I’s a glass, won’t the bar want it back?”
Tayeong scoffed harder than your words seemed justified for. “God, they won’t have the nerve to even question me on a few missing glasses. Come on, don’t dawdle.”
You pursed your lips but nodded, taking his exposed hand and shuffling to stand alongside him. As soon as you had, he yanked you tightly to his side, giving you a coy smirk. 
“Don’t need to be so far away, I want everyone to see you on my arm.” He hummed, stepping out of the secluded booth and dragging you along every step of the way.
While your pace was behind him and Yuta, you finally let yourself scowl. He treated you like another watch or ring, a fancy addition to his arsenal of pretty little objects. It was as disgusting as it was irritating.
But you replaced it with an excited grin when he stopped, giving you a quick glance. At your reaction, he smirked slightly, having no idea that beneath your curled lips you were holding back a scream.
“Yuta,” He hummed, giving the tall man a glance. “You and Jaehyun are to watch over thing here. If anything happens, and I mean anything,” He narrowed his gaze, making you squirm. “Call me. If something goes wrong on your watch, you know the consequences.”
If Yuta was phased by his thinly-veiled threat, he didn’t show it. Instead, he just gave a curt nod. “Of course, boss.” He hummed, before giving you one final, twisted smile. “And have fun, miss. I’m sure Tayeong won’t disappoint.” He snarled, before twisting on his heel and dispersing into the crowd.
Tayeong didn’t react to his last comment. If anything, his chest slightly puffed in pride, making your skin flash cold. He was disgustingly confident in his charms, barely sparing you a second look before he was pulling you through a back door, labelled Emergency Exit.
You half expected the alarm to sound, but weren’t surprised when it didn’t. If anything, it just made you want to roll your eyes, how the man pulling you into the crisp night air seemed to have little regard for anything apart from dragging out outside.
The back alley was dark and seedy, trash littering the pavement as you clambered down the steel stairs to meet it. In front of you, a car was parked, the engine idling. It was nice, sure, but not nearly as extravagant as you were expecting from Tayeong. Hell, you wouldn’t be surprised if the guy had a helicopter on the roof, just in case anyone wanted to doubt his wealth.
Suddenly, a head popped from behind the rear of the car, slamming the trunk shut with a heavy bang. “It’s all loaded up for you.” Mark hummed, giving the steel a few slight thumps with his fist. “Biggest run of tonight.”
Tayeong smirked at him, teeth glinting under the lights lining the building. “Perfect, I’ll take it from here. Watch the flank and make sure nobody follows.” He hummed, before releasing your hand and gesturing for you to climb into the passenger side with a wave. “Go in, I’ll be following.”
You nodded with a slight smile, turning and heading around the front of the car. You had barely taken a few steps before Kyungsoo was back, whispering in your ear.
“License plate.”
You glanced down at your feet, taking in the worn numbers quickly. K1S 5B7. You repeated them in your head, a mantra as you tugged open the door, slipping onto the leather seat and shutting it softly behind you.
You tried to remain inconspicuous as you watched, Tayeong’s form crossing his arms as he likely discussed more business with Mark. In the silence and solidarity of the enclosed space, you allowed yourself to reply. 
“K1S 5B7.” You huffed quickly, disguising your motion with a quick adjustment of your hair.
“Got it, I’ll see if it’s registered.”
You just nodded at that, taking a quick sip of your drink to cool your nerves. Hell, you were about to be in a car with one of the most dangerous men in the city, you would need some liquid courage to keep you from wanting to choke him out as soon as he stepped into the vehicle. It didn’t help that the car was fully loaded, you thought, turning slightly to glance into the backseat.
Almost immediately, your throat wanted to close up.
There were vacuum sealed blocks of bags - had to be hundreds, you thought. The trunk was filled to the ceiling, blocking any view from the back window, and the seats were also packed full. bags on bags as far as your eyes could see, and the floor was littered with dozens of guns.
The door opening made you snap your eyes back, watching Tayeong slip into the drivers seat alongside you.
His eyes immediately found yours, the way your body was twisted, giving away that you had been looking around. “Ah, curious girl.” He laughed, twisting the car into drive. “Ever heard the saying curiosity killed the cat, my dear?”
You twisted our lips together at that, eyes immediately becoming downcast. You couldn’t tell if he was threatening you, or just being his usual, cocky self. “Yes.”
“Well you’re lucky I like you, or that would be all too real right now. Go ahead, look around. You better understand what you could be getting into with me.” He said with an evil grin. He knew, he damn knew that at this point, there was no turning back. In his eyes, you were his now, or you were dead. Simple as that.
Luckily, in your eyes, the world wasn’t black and white.
You allowed yourself another glance as he pulled out and onto the roadway, the car immediately wefting through traffic without a care for other driver’s safety, or your own. He was a maniac, thinking he was above it all. Even death.
“What is it?’ You hummed, turning back to watch him slowly.
He scoffed. “Oh, you sheltered little thing. Cocaine, heroin, ecstasy, you name it and it’s probably packed up somewhere. This cargo is worth a pretty penny.” He hummed, turning to meet your glance. With a smirk, he cocked his head teasingly at you. “But don’t worry. You’re the most precious cargo of all.”
You scoffed slightly at that, giving him a slight smile to cover the fact you felt like you were about to pass out. This was crazy, how he was fucking flaunting his dangerous arsenal without a care in the world. They weren’t smart with their business, you knew that, but the fact that those weapons seemed to make the ones Exodus had look like dust still made you want to scream. Maybe you were in over your head. Maybe this could really, like seriously be the end of it all.
But you didn’t allow yourself to stew on it too much before Tayeong interrupted your thoughts.
“So what brought you to Neoculture? I know it’s an esteemed company, but a pretty girl like you shouldn’t be involved in such dangerous activities.” He hummed, cranking the wheel to take over the carpool lane and slamming onto the gas. It made you lurch slightly in your seat, not that he noticed, or seemed to care.
“Um, I’d heard about you whenever I’d be, you know, out on the street. Stumbled into Baekhyun one day, seemed as good an opportunity as ever. I’ve always liked danger.” You replied with a faux smile, even going to far as to brush your hand against his on the gearshift. How was he always so damn cold?
He grinned at that, a cheshire one that seemed all too twisted for his steely appearance. “Well you’re a smart girl.” He hummed, switching back into the left lane with a loud honk form the car behind him. Ignoring it, he claimed the pavement with ease, the motion so slick and self-assured you would almost believe he thought he was invincible.
The car was leading to a part of the city you were unfamiliar with, all dark buildings and faded yellow streetlights. It was damp, you could see water spraying form either side of the racing tires. Dark and grungy, it made you twist slightly in your eat. 
It was nothing like the glimmering glass skyscrapers in Exodus territory.
Eventually Tayeong pulled to a harsh stop, the seatbelt digging into your waist with the motion. He flicked the car off, motioning you to climb out with a flick of his wrist. “Out.”
You nodded, popping open the car door into the damp air and stepping out onto the sidewalk. It must have been raining here, the moon not even visible from behind the thick smog of clouds, and the air was thick with the stench of garbage and soot that was coating the street. It was putrid, making you wrinkle your nose.
“What’s that look for?” Tayeong muttered as he walked around the car, eyes set on your face lowly. He moved like a tiger, a jungle cat stalking its prey as he watch your expression morph slightly, letting out an embarrassed grin.
“Sorry, it’s just... the smell.” You hummed, kicking a spare granola bar wrapper from under your foot slightly.
Tayeong scoffed as he tugged his phone from his pocket, unlocking it swiftly. Within a moment, he held it to his ear, waiting for someone on the other side to pick up.
In the meantime, Kyungsoo was back, mumbling in your ear. You had all but forgotten he was even there, he was so much quieter than Chanyeol had been. Now, his words claimed you, filling your veins with ice.
“I’m going to hang up, stash the earpiece in the tip of your shoe or something. He’s going to get... close, so don’t risk him seeing it at all.”
It was making you dizzy, the stanch and the soot and the sound of Kyungsoo giving you the okay to operate solo. Your heart was alight, almost drowning out Tayeong’s words beside you.
“Sicheng, last round it waiting out front. Keys are in the ignition, pull it out back before unloading.” He ordered, his voice empty of any emotion. You could hear someone on the other end mulling, but Tayeong didn’t even toss a goodbye before he hung up on him, mid-sentence.
“Come on, smells better inside.” Tayeong hummed, tossing you a glance before  walking ahead, towards dark glass double doors on a dark brick building. He didn’t wait for you to catch up, didn’t hold open the door while you walked inside. You didn’t know what you were expecting, but you weren’t sure why it surprised you.
If you were expecting to be warmed, you were sorely mistaken. Instead it was all cool granite, the floors nothing dark slate stone and walls exposed cement poorly attempted to be decorated with an assortment of canvas’. There were potted plants at the reception desk, which was vacant, before the ceiling suddenly disappeared, revealing it’s almost entirely hollow centre.
Your footsteps echoed as you glanced up at the various floors stretching above your head. Hallways and balconies lined the empty centre, glass banisters overlooking it. There was nothing but a few couches and coffee tables in the space - attempting to make it feel more full, certainly, but the effect was lost in the gaping abyss of the building. It was insanely large and domineering, rendering your words useless as you instead took it in.
There was nothing, nothing but cool stone and exposed steel. Here, there was nowhere to hide, every angle of the floor visible from the floors above. Even the elevator had glass walls, interior visible to anyone that dared to glance. There would be no sneaking around this place - even if you wanted to, you would certainly be gunned down.
“I know what you’re thinking, and yes, it’s very big.” Tayeong said, giving you a cocky smirk as he headed to the elevator. With the press of a button, you watched as it slid through the elevator shaft before finally coming to a rest on the first floor with a squeal.
You shook the shock from your being, instead giving him a lopsided smile. Somehow you prayed it would cover how your hands shook with eery breath, the distant humming in your head and the paleness in your cheeks.
“This is huge!” You hummed in false shock, keeping your eyes wide as you continues looking around. Thankfully, the elevator didn’t stop your wandering eyes, letting Tayeong press a button for the fifth floor while you leaned onto the railing to eep looking.
Your eyes hopefully looked wide in amazement, but in reality your training was keeping you grounded. Tracing the balconies hopefully looked like you were filled with wonder, but you knew better than let the shock consume you. Your gaze was instead scouting out every nick, every flaw in their design. The doorways were narrow, but there were spaces between them to shift to if someone were to fire through it. The large plant pots gave spaces for you to duck, if necessary. Still, it was empty - too empty. It was radically unsafe for you here. If you were discovered, there was barely a place to hide. 
You were a lamb in a lion’s den here.
The elevator slid to a stop on the fifth floor with a bing, the doors squeaking open loudly. It was a recurring pattern with Neoculture, you realized - all slick on the outside, but behind the scenes they were running on dust. It was all for show, all of it - they didn’t care if they struggled, so long as others thought they were succeeding.
You followed Tayeong down the hall, heels clicking harshly on the cement the entire way. He belonged here, you realized - his stone cold demeanour matched the cool, untouchable nature of these very walls. It was frightening, knowing that he was just as empty as this building was, no emotions or remorse. Even then, he was clearly relaxed. In his element. This was where he lived, truly came into his serpent skin. Part of you thought he may very well be cold blooded.
Finally, he came to a door, fishing a ring of keys from his pocket. There was only a few - thirteen, if you counted correctly. You watched them clinking together until he finally pulled one, using it to unlock the door swiftly. Around the same time, your brow furrowed. There were about thirteen floors in the building. Thirteen floors, thirteen keys.
Now, your twisted smile was genuine. They kept the locks on each floor the same.
Suddenly, however, your smile drifted away as you stepped into the room. 
There were no windows. Only one door. A worn desk sat on one wall, on a patchy rug, and it smelled like must. Musty, and dusty, and disgusting.
“This is my office, where I run everything. It’s also where I conduct job interviews.” He said, turning to give you a small, gut wrenching grin. Slowly, he cocked his head, notched brow arching harshly. “Care to take a seat?”
You covered your tremoring with a soft laugh, nodding as you settled into a worn cloth chair across from his desk. It was nowhere near as plush or luxurious in the ones with Junmeyon’s office.
Tayeong took his place in the chair behind the desk, his eyes never leaving yours - or more so your chest - the entire way. His gaze was sickening, making your gut twist and skin begin to sweat. Your hands trembled, so you folded them on your lap slightly, arching a perfectly manicured brow. “What would you like to ask?”
Tayeong scoffed at that, his eyes never stopping their tracing over the dips and valleys of your chest and hips. You felt it again, that disgusting, sick-inducing feeling. You were nothing, another pretty decoration in his decrepit office, something he wanted to have constantly under his hands, and tongue.
And he only confirmed it, when he scoffed. His eyes narrowed, hands turning white as he gripped onto the scripted wood of his desk. “No, I don’t want to know anything. Get over here and get on my desk.” 
You wanted to scoff. Flip him off, scream. Kick his face in until that stupid, disgusting, sleazy smirk slipped off his face, make his heart race the way yours was. You felt like you were having a heart attack.
But instead, you knew better. You knew this was your job, that you had no fucking choice in the matter. Your every fibre ached to snap, but you couldn’t no matter how badly you wanted it.
So instead, you bit down the voice in your head that told you to run, and shot him a slight smile. “On your desk, sir?” You hummed meekly, cocking your head at him as though you were confused.
Tayeong growled, giving his desk a firm tap with his fingers. “Yes. Now.”
His voice was authoritative, firm in his demand, making you rise to your feet. Your knees wobbled slightly, matching the trembling in your skin. But you continued, slowly crossing in front of his desk, settling yourself down on the wood slowly. Your hands gripped tightly onto the wood, your breathing growing shallow as you watched his hands come up to cup your knees quickly.
“What a magnificent thing you are. I’m sure I’ve told you enough, hm?” Tayeong growled, his teeth showing from behind his thin lips. It was like a wolf, snarling at you, ready to eat.
You laughed lightly, head spinning diss circles. You were on the brink of vomiting, black specks darting through your vision. His hands were cold and thin, too cold. You wanted large, dwarfing, warm hands to engulf you. Not this. Never this. 
“Yes, you’ve mentioned it.” You hummed, leaning backwards onto your hands slightly. Wether it was for balance, or to prevent you from collapsing to get your head to fucking stop ringing, you weren’t sure.
He growled slightly, his hands shifting upwards quickly and roughly, making goosebumps erupt on your skin. God, this felt weird as hell, pretending to be so willing to open yourself to him, when really you wanted anything but.
When he shifted upwards onto his feet, his mouth catching purchase on your neckline, you let out a whine. To him, it certainly came across as sexy, wanting. Really, it was the opposite - uncomfortable, aching to pry away. 
Because it didn’t feel good. He was all harsh lines and cool skin, his teeth already gnashing against your flesh. It took you back, to drunken teenage hookups, experimenting and trying to be a damn porn star. You would have liked it - when you were sixteen. Now, you wanted an experienced guy, broad chest and tender licks across your skin, biting down only after you had been worked to the brink.
You wanted the kind of sex Chanyeol gave you, laboured breathing and firm grasps of your shoulders. You wanted breathless teasing and unencumbered touches, feeling his grin pressing into your neck when he would push you just a little too far. You didn’t want some stranger with dark eyes. You wanted him.
Now your eyes flashed open, looking up at the ceiling as your breathing deepened. It wasn’t the good deep, the kind of excited, intoxicating deep that made you feel like it was the only way you would stay alive. It was a bad, gut wrenching tug of air, making you want to scream into a void and snap out of the current predicament you were stuck in. 
You wanted to scream because you loved your job, yes. But you hated this.
Suddenly Tayeong brushed aside your hair, his hand clamping slightly onto your neck. He gave you a cocky smirk, his free hand brushing over the hemline of your panties beneath your dress. “Say my name.” He said, a guttural grumble that made your insides melt to acid.
Gritting your teeth, you hummed. “T-Tayeong.” 
“Good.” He gritted, his hand now tightening onto the marks he had already forced into your throat earlier. The pain returned with a dull ache, flooding your veins slowly and with enough force to make your heart thud.
Suddenly, however, his hand moved to flick the hair behind your back, his lips quickly biting harshly into your jaw. It caused pain to flare across your skin, but that wasn’t making your breathing stop cold.
‘The earpiece.’ You thought, your eyes fluttering back shut. Immediately, you wanted to fucking kick yourself. God, the earpiece was still in, and if his eyes were to open you would be outed. Shot, tortured, killed. You would die, and this would all be for waste. Fuck, you even had the option to stash it in the tip of your heel, never had even a second without him to consider how the hell you would make it work.
Now, your hands came up to Tayeong’s chest, pushing him slightly. “”God, I -” You huffed, your mind racing a million miles a minute, because he was right there and you were going to die.
So, you did the only thing you thought of.
You tilted your head to him, forcing his teeth to release their hold on your skin before he could even flinch and, you kissed him. Fully, so you could feel the metal lip ring under your lips, smell his sharp, metallic scent. He smelled too close to blood for your liking.
But you ignored it, slipping your tongue into his mouth (to his surprised grunt). He didn’t mind, judging my how his hands immediately slipped from the skirt of your dress to grab your jaw, angling you under his hold so he could control your motions. His teeth bit down on your lower lip, tugging it harshly and making you whimper.
“You even sound delicate.” He growled, his fingers digging into your skull harshly. At that, you let out another light grunt, light and airy, disguising your disgust with the situation at whole.
Ever wanted the world to stop? Just fucking pause, for one second, so you could catch your breath and think, consider all possible outcomes before your next move? Because you wanted that now, anted it so badly you could kill, your gaze becoming hazy and head murky in the thought of please, God, stop this.
And for the first time in your life, God was watching you tonight.
The old landline on his desk let out a shrill ring, cutting through the sounds of your shallow breathing like a hot knife. Tayeong growled, hand immediately flying to bring the phone to his ear. “What?”
You took the opportunity to catch your breath, immediately slipping the sleeve of your dress that had fallen off at some point during the ordeal. You were freezing, fucking cold as ice. It felt like the room had dropped twenty degrees.
“Is it one from Exodus?” Tayong grunted, making your ears twitch slightly. What the hell? Someone had come, someone else had taken the bait to go to the club? This was your job, your mission, even if so far you were catastrophically failing. 
You could hear someone, an unfamiliar voice on the other end of the line. “He’s not talking, we’ve tried everything.”
Tayeong’s next sentence made your blood rush cold. 
“Tell me it’s that redhead.”
His words made your breathing stop. They made the urge to vomit a thousand times worse, made your heart palpitate, and made you want to collapse. You had been aching for the world to stop, for one moment, but now that it had, you were worse off then before.
There were no fucking redheads in Exodus, except for the one you couldn’t get off your mind. The one with warm eyes and newly dyed black hair.
They wanted Chanyeol.
“Well bring him into the foyer, it’s easy to clean.” Tayeong scoffed, slamming the phone back onto the receiver with a growl. He spun to face you, running a hand through his hair with a rough sigh. 
“Something came up, let’s go.” He grunted, only taking a second to straighten his mussed shirt before he turned towards the door. 
He was gone in a flash, leaving you scrambling after him, yet again. Your mind was moving a mile a minute, head heavy and eyes burning. 
What if it was him? What if you went and watched him put a bullet through Chanyeol’s skull, had to listen to the sound of his breathing stop short and watch the life spill from his veins.
You couldn’t do it, you knew that. You’d never be able to watch idly while they killed him. You’d have to fight, as terrifying as that seemed.
But in order to fight, you had to be there to see it.
So you clambered off the desk and spun through the doorway, running down the hallway on your toweringly high heels. Following Tayeong’s form as he pressed the call button for the elevator, your racing pulse refused to slow. Your breathing was heavy now, but you still remained straight upright, not showing any form of weakness or unease. 
You couldn’t dwell on this, the fact Chanyeol could very well be about to die. If you did, you might die too. Instead, your head was racing with every stitch of training you had endured the last month. The kicks, the punches, the aiming and gunshot recoiling in your hands replaying vividly you could almost feel it. 
The elevator creaked open, but not before you heard it. This building was like a fucking echo machine, and you could hear the scuffling across the main floor, the grunts and low, guttural moans. Moans of pain.
Stepping inside, you gulped while the elevator slowly sent the two of you downwards. You could see the floors flashing by, but couldn’t look out the glass windows. You weren’t sure how you would react if you did.
“Remember when you said you always liked danger?” Tayeong hummed, giving you a dangerous grin. If you thought his eyes were hungry when he looked at you, but this was nothing like that. He looked like a starving man, especially when he tugged a previously unseen gun from the hem of his jeans, underneath where his shirt concealed it.
You forced out a weak, nauseous smile. “Yeah, I do.”
He nodded. “Well, you’re about to see what we do here. I hope you’re excited.”
The doors slid open with a shrill beep, which Tayeong immediately took as a sign to get out. He never waited, which you were growing used to, but now you were thankful for. It hid your pale, sweaty skin from his gaze.
You followed him, heels clicking, and eyes immediately falling onto a mess of a scene before you. Four men were dragging someone before they dropped him with a painful thud, leaving him crumpled on the floor in a heap. Baekhyun was one of them - he was quick to find your eyes, giving you a sorrowful look, with the slight shake of his head.
Your brow furrowed. His face was twisted in disgust, sorrow, a thousand emotions you couldn’t place. What the fuck? His teeth were gritted, jaw locked, and you could see his knuckles were fiercely scathed. His face however, remained trained on yours, watching your emotions carefully. No, it couldn’t be.
Seeing your reaction, he immediately flicked his head towards the door, sending you a silent command. 
Get out of here.
But you couldn’t, now when one of the men shifted, giving you a glimpse at the guy on the ground. Dark jeans, gangly limbs were all you could see while the men watched him like vultures.
You were going to pass out.
“Who do you work for?” Tayeong grunted. At his words, the men parted, letting both him and you take a better look.
“N-No one! Please, I-I swear!” The man spat blood onto the ground, making you wince. He was battered and bruised, his lip cut and bleeding, eye already swollen shut. He looked like hell, and a lot like you, pale and sweaty. You were shot back to the interrogation room when his eye met yours, pleading, desperate. He was scared.
You didn’t recognize him. He wasn't Exodus blood. It wasn’t Chanyeol, no, but it was still a person. You were scared too. For him, the stranger on the ground. You were so scared your throat was closing off, so scared you could barely see a foot in front of you, your mind clouding like a murky fog was washing over your eyes. 
“Then why the hell were you looting around the back of that club tonight?” Tayeong growled, free hand coming to cock his handgun. The sharp sound ricocheted throughout the building, making you jump, as well as the guy on the ground.
“P-Please don't! I- I... I’m a drug dealer, I got kicked out of my house, please.” The man pleaded, wincing at the image of steely Tayeong slowly pointing the gun in his face. 
You were frozen. You wanted to move, to snap the gun out of Tayeong’s hands, to trail it on his forehead instead. The guy was honest, you could feel in in your bones, in your heart. He was a poor kid, homeless and struggling and probably just wanting someone to hold him, but you still couldn’t move. You could do something, anything, but your limbs were limp. It was like you were watching from an outsider’s perspective. Depersonalized. Derealized.
“Hm.” Tayeong hummed, twisting his arm slightly as he extended it even more. Now, the barrel was just a foot from his face, unwavering and deadly. “Ever heard the saying curiosity killed the cat?”
The man spluttered, more blood dripping down his chin with the motion. His hands were raised, pleading. “I-I’ll leave, I’ll forget this ever happened, I swear! Please, just -”
But that’s all the man got before Tayeong fired.
You couldn't help but let a shrill scream fall from your lips, head snapping away from the scene before you could see anything. But you could hear everything, the bang, the resounding echo assaulting your ears even though your eyes were squeezed shut. You could hear the splatter, feel it spraying across your front, the remainder of what was left of his head spreading across the cement floor. Glancing down at the flecks of metallic red liquid scattering your chest, sobs immediately shuddered throughout your body. 
The smell was next, putrid metallic blood that seemed to suit this building all too well. It was heady and thick, fueling the shaking of your hands, sobs racketeering your shoulders. The smell was hell. But the silence after, that was what made tears slip down your cheeks.
You couldn’t turn, couldn’t look at what was left of him, even when Tayeong muttered. “Good riddance. Sicheng, clean this up, we have work to do.”
You wanted to scream again, at the cold, calculated drag of his body you heard across the floor. It was quiet now, too quiet, the only sound the sniffled and sobs that were wreaking havoc on your body because that man, that boy, you could have saved. 
You bit down another scream when you felt his hands brushing across your shoulder softly, his lips lean in to trace your ear, laced with a bitter smile. 
“Don’t worry. First time is the worst.” He hummed with a slight laugh, before suddenly, Tayeong was gone.
“Baekhyun, get her out of here. I’ll expect her at our next event.”
You were numb now, numbed by his words to even Baekhyuns warm touch on your lower back, slowly guiding you out the door. He had blood on his shirt. The man’s blood. It was on your front, too.
You could barely hear his whispers, about how it was fine and you’d be okay, but what the hell did that matter anyway? Because he, that guy, was not okay. That guy was dead. Tayeong killed him, and for what? He was nothing in his eyes, no threat to the company, anyone or anything. He was young, and stupid.
And now, he was dead.
You barely noticed when you collapsed into the car, only the slam of a door alerting you to the fact. Only then did you let yourself really scream - a guttural, resounding yell that echoed throughout head and tainted the image of that man. You could still see him, smell his blood, hear the gunshot that ceased his breathing.
Baekhyun climbed in, hand immediately coming to rest on your thigh. “Hey, hey! It’s okay, you’re okay jagi.” He hummed, attempting to comfort you.
You smacked his hand away, eyes only able to see the blood on his knuckles and splatter on his shirtsleeves. “Get the fuck off of me! Don’t fucking touch me!” You cried, hands cupping your face to cushion your sobs.
Your breathing was rapid, even as Baekhyun pulled away from the curb, now silent. He never spoke, letting your cries fill the void, the shaking of your hands on your face the only company you had. He was everywhere - his swollen eye, bloody lip, spitting acid into your eyes. The world was still spinning, tugging you further away from reality, because holy fuck, a guy had just been killed, and you were what? Going home, going to go to sleep? Did you even have that right when he would never experience it again?
“Pull over.” You managed to stammer, hand fumbling with the clasp of the door handle roughly. It was a one lane road, he had to stop the damn car!
“What?!” Baekhyun asked, quickly yanking the car to the side of the road, even with his confusion. Swiftly, he unlocked it, allowing you to tumble outside.
You fell to your hands and knees on the rough cement, scathing your knees, but you didn’t care. All you could see was the splatter of blood on your dress, a deep rusty red.
So on your hands and knees, in the misty air, you finally threw up.
You slammed your front door with a jarring, empty huff, hands immediately tugging the bluetooth from your ear and throwing it against the floor harshly. The tears had stopped, the tremoring of your hands had weakened, but now, you were just... empty.
Heaving in breath, your hands pulled the hair from your face roughly, kicking off your stupid heels and casting them aside as you instead ran to your bathroom. The blood was on your chest, your neck, your dress. You wanted to scrub yourself out of this entire damn situation.
The water splurged from your tap, letting you immediately cast your hands under its scalding spray. It was numbingly hot, but you didn’t care. You were numb anyway.
“Hey!” 
A deep, booming voice made you jump, throat catching onto any air in your windpipe and claiming it as it’s own. You spun, shoulders immediately lurching into another fit of tremors. Every scenario, the image of him died once you recognized the man standing in your bathroom doorway.
“What’s wrong, what happened?” Chanyeol growled, fishing his way itno the small space and immediately going to inspect your hands. His were warm and dwarfing your own, reminding you of how Tayeong’s had been the exact opposite. The memory made you lurch your hands away harshly, stammering for breath.
“Are you hurt?” Chanyeol pressed, making eye contact in the mirror. You knew you should be embarrassed - your mascara running harsh black lines down your face, eyes red and raw, nose sniffling. You still couldn’t bring yourself to care, instead scoffing out an empty laugh.
“I’m fine.” You lied, gritting your teeth against the husky gravel of your voice.
“No, you’re not fine, what the hell happened?” Chanyeol urged, brushing your hair as he inspected your back for any sign of injury. 
You spun, pressing his hands away quickly. He could see right through you, although it wasn’t hard. It was easy as hell for him to tell that no, you weren’t fine, how could you be?! With every blink, you only saw that guy, his body being dragged across the floor, his blood splattering everyone surrounding him.
“They killed him!” You shrieked, slapping away his touched harshly. You couldn’t have him touch you when you still felt so disgusting. “They killed him, and I watched, and I could have stopped - !”
“Shh, they killed who?” Chanyeol hummed, his voice trying to soothe your sobs.
You pushed your hair out of your face, wiping at your stupid, teary eyes with the motion. “I-I don’t know, some guy, but he was nothing! He wouldn’t have done anything to them and they still fucking killed him for it!” You hiccuped, cursing the tremoring of your hands.
“You couldn’t have stopped anything.” Chanyeol muttered, shaking his head slowly. “Nothing at all. This is what they do.”
“They fucking blew his head off, Yeol!” You yelled, hands forming fists at your sides. “And I stood beside Tayeong while he did it, I should have -”
“Should have what? Punched him? Tried to knock him out? You were outnumbered, you would have been killed too!” Chanyeol urged, clasping onto your shoulders tightly to stop your shaking. You couldn’t look at him, even when you felt his eyes searching your face. You're ashamed.
“I should have done something.” You finally huffed, blinking and meeting his gaze. It was sad, the way he looked at you. He looked at you with pity, like he had seen a thousand times worse, and you didn’t doubt it for even a second.
“You did the right thing. That guy was in the wrong place, at the wrong time. That’s it.” He hummed, his deep tenor seeming to rattle your bones.
“How do I do this?” You whimpered, now searching his eyes as well, like he held all the answers. “How do I go back to Tayeong and pretend this never happened? He’s dead, Chanyeol.”
Chanyeol shook his head slowly, his lips twisting into a slight frown. “I know you don’t want to hear this, but it gets better.”
You scoffed at that, turning back to the mirror and out of his grasp. “Don’t fucking say that.”
“I have to, okay? It’s stupid but the first is always the worst. You never forget, not a single one.” Chanyeol urged, watching you return your hands to the scalding spray of water from your faucet. “Each one you name. You imagine them as a person, because that’s how you get through. You’ll avenge him, okay? You’ll make his death worth it.”
“How the hell am I supposed to do that?” You laughed, empty.
Chanyeol sighed, his hands coming to unclasp your necklaced from around your neck carefully. He was trying not to scare you off, you could tell from the fluttering touch, like a butterfly. 
“It’s not easy. It fucking sucks, but you’re going to remember him, and the countless others those guys needlessly killed to get to the top. You’re going to remember his face when you get the chance to hurt Tayeong, the way he hurt him.” He hummed, slipping the chains off your neck and clattering them onto the countertop slowly. “Because when he’s gone, it’s over. They can’t do that shit anymore if they’re dead, too. That’s what you look forward to.”
You shook your head slowly, tears slipping down your cheeks slowly. You wanted to believe him, wanted to trust in his words, but when you’re working the same system it was impossible not to. Neoculture and Exodus, you both operated outside the law. Two sides of the same coin. When that’s the case, how do you know right from wrong?
 “Do we do that? At Exodus, do we kill people like that?” You whimpered, glancing back up at him through the mirror.
Immediately, Chanyeol shook his head, so  fast you immediately felt your sobs slowly begin to quench. “No. Never.”
At that, you just let out a weak nod, shoulders finally deflating. Because you had no other choice now. This was your life.
And you trusted that Chanyeol wouldn’t lie to you.
At your silence, Chanyeol sent you a sympathetic glance, cocking his head slightly. Shifting, he twisted on the faucet to your tub, plugging it and allowing the water to wash across the yellowed ceramic.
“What are you doing?” You asked quietly, watching his motions all the while. The way the tattoo on his arm stretched with the movement of his wrist, the veins in his calloused hands.
He huffed slightly, pushing the dark hair off his forehead slightly while he caught your eye in the mirror. Shaking his head, he gave you a slight, tight-lipped smile. “My first time was bad too, but I went back in that basement in Exodus and scrubbed myself alone. For hours. That was the worst, being alone. There were no distractions.” He hummed, his finger slowly brushing the zip of your dress, carefully. “I’m going to clean you up so you can just relax. You need it.”
So, when his hands slowly began unzipping the material, you nodded, allowing him to slip it off your shoulders slowly. You were back to being catatonic, just relishing in the feeling of him stripping you of your clothing. Grabbing an elastic, he twisted your hair up in a novice, haphazard bun, before clasping onto your shoulders softly.
“Go on in, it’s warm.” He hummed, stepping back and letting you move.
Your motions were robotic when you stepped into the water, slipping your body until you were curled into a ball on one end, arms looping around your legs. The water was silky and slick, warming your lukewarm frame.
“Come on, stretch out.” Chanyeol hummed, grabbing a bar of soap from the ledge and offering it to you quickly.
You followed his direction silently, still letting tears slip off your cheeks as you slowly ran it over your neck and chest. You could see the specks of crusty red leeching off, spreading their crimson tendrils through the water like fingers. It made you want to vomit again, the sight of his blood flaking off your skin.
It could have been seconds or hours, the time you spent in the water, scrubbing your flesh. You wanted to rub him off, the memory of him, his death. You wanted to scrub a piece of yourself off with him.
Finally, after the water had long turned cold and your motions fell limp, Chanyeol turned from where he was sitting, on the edge of the tub. He was biting his lip slowly, his head tilting as he took in your tiny, trembling frame.
Finally, he spoke. “Towels?”
You pointed to the back of the bathroom door, where they were hung. Stepping over, he plucked one off the task, before turning and giving you a sympathetic grin. “Come on, you’re clean. Up you get.”
You couldn't bring yourself to match his expression, instead just offering a small thanks before you pulled yourself up, walking into his arms, where he had the towel extended and waiting for your body.
Slowly, he wrapped it around your shoulders like a cape, until he was able to rope his arms around you. It was then that he paused, his breathing stuttering slightly.
You looked up at him questioningly, furrowing your brow at his pause. His lip was still being steadily chewed, eyes flickering slightly over your features. He stammered slightly, jaw falling slack, before he set it roughly.
“I’m going to hug you now.” He said with a swift nod, waiting to gauge your response. “Okay?”
Now, you didn't mind the pink flush on his ears, or how it made your heat thud. It reminded you that you were alive. So, you nodded slightly.
He was dizzyingly warm when his arms claimed you inside them, tugging you into his chest softly, until you could bury your face in his neck. You could feel his heartbeat, slightly quick, matching your own.
“Nobody held me after my first. I wanted someone to, but nobody did, so I’m going to hold you for a bit, okay?”
Gulping, you nodded again. “Okay.” 
He was soft from under his grasp, a stark contrast to the initial rigid exterior he had shown to you. It was comforting, his warmth and soft scent, cedar making your head finally stop circling. In his arms, sheltered from the outside world, you could almost, almost forget everything you had endured tonight. His hand slowly traced up and down your spine, his breath splaying across your shoulders, encouraging yours to match his verbatim.
Eventually, however, he pulled away with a slight smile. He watched you carefully, brushing a story strand of hair out of your eyes slowly. “Feel better?”
Huffing out a slight sigh, you finally managed a weak smile. “Yeah, I’m better.” You hummed, appreciating how his eyes crinkled with the motion of his fuller smile.
“Okay. Come on, get ready for bed then.”
You secured the towel around your shoulders, giving him a slight smile before you padded outside, towards your bedroom. He followed, his heavy footsteps tracing your own until he stood in your doorway, simply watching as you tugged open your dresser in search of pajamas.
Your hands claimed a tee shirt and sweatpants, pulling them onto your body quickly and ignoring his gaze. It wasn’t pressing, sexual in any way. It was just comforting.
Finally you stepped towards your bed slowly, turning to give him another glance.
At your eye, he shifted, standing up straight. “Okay. You’re okay now?”
You scoffed slightly. “No. But I will be, hopefully.”
Chanyeol hummed, giving you a lopsided smile slowly while you clambered onto your soft white bedsheets. “Okay.”
You crawled under the heavy sheet, only stopping when you heard him move. He had turned, heading away from your door and towards the hallway, towards an exit. Somehow though, it made your throat tighten.
“Wait!” You called, watching his steps freeze with the word. 
Maybe it was unfair, that you wanted him to stay. Maybe it was stupid, and childish that you didn’t want to sleep alone, let the image of the shot man lull you into a fit of nightmares. It was unfair that you even had the luxury of sleep and he didn’t.
Even so, you knew you wouldn’t want to be alone tonight.
“Stay. Please. I don’t - I don’t want to be alone, not yet. Just sleep here, please.” You hummed, watching Chanyeol pause with the words.
After what felt like years, he turned, face etched with an emotion you couldn’t place. It made you nervous, how you couldn’t tell what he was thinking. It was whisked away though, when he took a slow, hesitant step into your room.
“You sure?” He hummed, but his feet continued in their motion until his knees were brushing the duvet.
Offering a weak smile, you nodded. “Yeah.”
Chanyeol nodded, lips twisting to keep himself from smiling, you thought. Slowly, his frame made a dip in the bed when he crawled alongside you, his head resting on the pillow softly when he laid down, gazes locking.
You could smell him again, that cologne that always had your head spinning. It was a thousand times better than the scent that was stuck in your head -  the smell of blood. So, even though it was against your very nature, you allowed yourself a moment of weakness.
“Can you hold me?”
Chanyeol grunted a slight laugh at that, but was quick to reach out and tug you into him. Your hands clutched at his shirt, forehead resting on his chest, the rising and falling of his breathing bringing far more security than anything else you could imagine. 
You let yourself soak in it, the feeling of safety against his chest. These days, it felt hard to come by. This job was nuts. Heaven and hell all at once, the best and worst thing that had ever happened to you. You were alive and free, but twisted under Tayeong’s grasp. A puppet to his regime. You weren’t sure if you could do it anymore. Once so certain, your mind was now wiped of anything. How the hell were you supposed to go back?
Softly, you whispered into the darkness. “How am I supposed to do this again? How do I know I’ll be okay, after all this?”
Chanyeol hummed, and you could feel his hands slowly twining in your own shirt. “You’ll be okay, I know it. I am. If worse comes to worst, at least you have me you can talk to. You have me, okay?”
And you nodded against his chest, even though your stomach twisted. Because yes, even if a part of this job involved the horrors you had witnessed tonight, you had him.
But not if Tayeong got him first.
decietful masterlist
grand masterlist
talk to me!
145 notes · View notes
orbemnews · 3 years
Link
Traveling This Memorial Day Weekend? Pack Patience. Last year, for the first time in 20 years, AAA, the automobile owners group, declined to put out its annual Memorial Day travel forecast as the surging coronavirus pandemic kept many people close to home. Its forecast this year: Travel is back. More than 37 million people are expected to venture 50 or more miles away from home between May 27 and May 31, AAA said. That’s a 60 percent increase from the 23 million who actually traveled last year, the lowest on record since AAA began counting in 2000. “Americans are demonstrating a strong desire to travel this Memorial Day,” said Paula Twidale, AAA’s senior vice president in a statement. “This pent-up demand will result in a significant increase in Memorial Day travel, which is a strong indicator for summer.” The Transportation Security Administration essentially said the same thing at a news conference on Tuesday, when Darby LaJoye, the acting administrator of the T.S.A., warned of longer wait times at some security checkpoints at airports because of the increasing number of passengers. On Sunday, the T.S.A. screened more than 1.8 million people, the most since the coronavirus pandemic began in March 2020. While the increasing numbers may be good news for the travel industry, which has been among the hardest hit by the pandemic, for travelers they could make things complicated. AAA said that drivers in major cities should be prepared for road trips to be double or triple the length of a normal trip. So many ride-share drivers have stopped working that those relying on ride-sharing apps may face long wait times and prices that are multiples of their usual fares. Hotel rooms are booked up and many destinations are still struggling to hire staff, meaning that stays may be rocky. Many Americans seem to have booked earlier this year, perhaps spurred by eagerness to get out of the house once they were fully vaccinated. A recent report by the travel technology company Amadeus found that, when the pandemic was at its height, most people were booking within a week of their expected travel, perhaps because it was so hard to make plans. But recently, same-day bookings have been falling, while those for stays 31 to 60 days out have increased. They now make up 11 percent of reservations, compared to 6 percent in the first week of 2021. The result: a shortage of places to stay, especially in top destinations like the Outer Banks in North Carolina and Cape Cod in Massachusetts. “We have 19,000 guest rooms, and we expect them to be full this weekend,” said Bill DeSousa-Mauk, a spokesman for the Cape Cod Convention and Visitors Bureau. “I think we’ll have a completely sold out summer on the Cape this year,” he said. Lodging choices may also be limited because many people who own second homes on the Cape and rented them out in past years have moved, at least somewhat permanently, to the area. Lee Nettles, the executive director of the Outer Banks Visitors Bureau, said that the area, known for its more than 100 miles of shoreline, is also experiencing a shortage of rental properties. “Our lodging partners are telling us that they’re getting really close to being sold out” for Memorial Day weekend, Mr. Nettles said. Those looking to stay in the Outer Banks should, he recommends, “contact your lodging providers as quickly as possible.” The travel industry still has a ways to go. There are nearly six million fewer people traveling this weekend than did so in 2019, according to AAA, and air travel has yet to reach prepandemic levels, largely because business travel has not resumed. Big cities with hotels devoted to conventions are still experiencing low occupancy rates. But those who are traveling may feel the crunch because of diminished capacity. Hosts on Airbnb have dropped off the platform, and Brian Chesky, Airbnb’s chief executive, recently told CNBC that demand would “probably” outpace the number of available Airbnb listings as travel rebounds. He added that the company would need to add “millions more” hosts in the coming years to keep up. Campers, too, should brace themselves for what experts said could be the busiest camping season ever, according to data analyzed by the e-commerce company Pattern. The company tracked consumer behavior in 2021 so far compared to the two previous years, and found that the demand for camping tents this spring is already up 97 percent compared to the same period in 2020 and 85 percent compared to 2019. Jenny Anzelmo-Sarles, a spokeswoman for the National Park Service, said that overnight lodging at many of the system’s top destinations, such as Yosemite, Yellowstone and Grand Teton, is nearly or fully booked through Labor Day. Campsite bookings through Recreation.gov, the government’s reservations system, are up 73 percent compared to this time in 2019, she said. “One of our top tips is to make sure folks have reservations before they hop in a car for that weekend road trip,” Ms. Anzelmo-Sarles said. “We don’t want people to show up and have nowhere to stay.” This increased demand is coming at a time when many parks, hotels and food service establishments continue to experience staffing shortages. Over the past 15 months, many hospitality workers have been laid off or have left the industry, and seasonal workers from overseas have been unable to get into the United States. Ms. Anzelmo-Sarles said travelers may see limited services in parks or in businesses in surrounding communities. And a survey of members of the American Hotel and Lodging Association found that 48 percent of hoteliers have closed or limited food and beverage and other hotel services because of a lack of staff. The tourism bureaus in Cape Cod and on Michigan’s Mackinac Island said that Covid-19 restrictions have prevented the usual flood of foreign workers who typically help during their busiest seasons from arriving. “At the moment, there are a lot of owners that are wiping down tables, busing tables, cleaning guest rooms, making beds, doing laundry, because they have to,” Mr. DeSousa-Mauk of the Cape Cod tourism bureau said. “Logistically, will people who visit be happy coming and having to wait for dinner or if their room’s not ready when they arrive at the hotel?” he added. But some people said they got ahead of the curve. Christian Asencio, the executive chef and general manager of the Chatham Squire in Chatham, Mass., on Cape Cod, said he “thought ahead about the staffing issue” after facing it last year. “We put up a bunch of ads,” he said. “I personally contacted chef friends from Maine and chef friends from Florida for seasonal cooks, and they were able to send me a whole army of cooks and servers.” Bill Catania, who owns the Cape Codder Resort and Spa, in Hyannis, said that keeping a core staff helped him prepare for the surge in travelers over the last few weeks. “Fortunately we had a strong base staff to start with, so we’re able to get it done. It’s just a lot harder to do,” Mr. Catania said, adding that accessibility to certain services has been limited and that he has set two- or three-night minimums on some rooms to minimize checkouts. “We basically allow the amount of business that our staff can handle.” But it can be hard to balance that with guest expectations, said Jake Hatch, the director of sales and marketing at the Sanderling Resort in Duck, N.C., on the Outer Banks. The resort’s occupancy is at a record high, and it is charging higher than usual rates. At the same time, daily cleaning has been eliminated and its high-end restaurant, Kimball’s Kitchen, has been closed since the end of the summer season in 2019. It will finally open this weekend. Mr. Hatch worries that guests will want more of a four-star resort. “That’s been a tough line for us to straddle,” he said. Across the Outer Banks, he said, “it’ll be very noticeable around the island that everybody is short-staffed,” with longer waits and restaurants declining to take reservations. “It’s still the same beautiful Outer Banks,” he said, but people should “just be patient as they can be with staff.” Higher prices for ride shares may add to the misery. Susan Subracko, a mother of three who lives in Brooklyn, was trying to get to Kennedy International Airport in early May. She was forced to cancel two rides after the Lyft drivers did not arrive, and when she finally got a ride it cost $160 — about twice what she was originally quoted and $100 more than she usually pays. The company reimbursed her after she filed a complaint. On her way home, there were no ride-share cars available and she instead waited two hours for a yellow cab. A Twitter user who goes by @sundeep recently shared a similar experience: His ride to J.F.K. cost him nearly $250 — about as much as the cost of his flight to San Francisco. In April, Uber announced a $250 million driver stimulus to boost earnings for drivers and get them back on the road. Lyft is also providing incentives for drivers to meet the increased demand. The national shortage of rental cars is another hurdle for travelers. Emily Armstrong, a community college instructor in Kansas City, Mo., said she and her husband booked a van for their family of six three weeks ahead of their 12-hour road trip to the Smoky Mountains on Saturday. But when Ms. Armstrong called the rental company to ask for an earlier pickup, a customer service representative accidentally canceled their reservation and later told her there are no more similar vans available in her area. Instead, she said the family would either squeeze into their four-door sedan or have some of their children ride with relatives. “I know this is a first-world problem, and we understand the shortage,” Ms. Armstrong said. “It was just kind of a surprise and caught us off guard.” Adding to the tension for travelers are the conflicting feelings and differing regulations around mask usage and other Covid-19 rules. The Centers for Disease Control and Prevention recently announced that vaccinated travelers do not need to wear masks, but this does not necessarily apply everywhere. Masks are still required in airports and planes, for instance. Tim Hygh, the executive director of the Mackinac Island Tourism Bureau, said that though regulations in Michigan have been relaxed, masks are still required on the ferry that takes people to the island. He added that “each business on the island is still adapting their own rules based on what they want to do for their employees and what they want for their visitors.” The Federal Aviation Administration recently said that there has been a “disturbing increase” in the number of unruly passengers who have returned to the skies with the easing of pandemic restrictions. The F.A.A. said this month that it had received more than 1,300 unruly-passenger reports from airlines since February. In the previous decade, the agency said, it took enforcement actions against 1,300 passengers total. Earlier this week, a woman on a Southwest Airlines flight was arrested after getting into a physical altercation with a flight attendant, who, according to one passenger on the flight, had reminded the woman to wear her mask. The flight attendant lost two of her teeth, according to a letter from a union representative to the head of Southwest. Mr. Hygh, of the Mackinac tourism bureau, urges visitors to be flexible and do their research ahead of traveling. “Any time you’re in a time of transition, there’s going to be confusion and sometimes confusion can lead to anger,” he said. “I’m hoping everyone gives everyone else a break.” Jackie Snow contributed reporting. Source link Orbem News #Day #memorial #pack #Patience #Traveling #Weekend
0 notes
skqq-net · 5 years
Text
Top 7 Fastest WordPress Hosting Providers In The Market
This text will consider the quickest wordpress cyber internet hosting suppliers, their elements and can allow you to resolve out the best cyber internet hosting agency to invent a fast wordpress net area. 
With out reference to what net area you might possibly per likelihood possibly possibly furthermore simply take take heed to – be it a wordpress weblog, an ecommerce retailer or a enterprise area – velocity is regularly essential.
Unhurried-loading web pages had been regularly tense. No individual likes to attend larger than a pair of seconds for an online area to load. And that is the explanation solely typical on account of a gorgeous individual journey is the well-known factor that makes us process assist to an online area.
There are numerous of advice on how one can velocity up your wordpress net area on the procure, nevertheless the well-known cause an online area may possibly per likelihood possibly furthermore furthermore be slack is its cyber internet hosting supplier. And verbalize me, whereas I used to be testing completely different wordpress cyber internet hosting suppliers I spotted intensive variations in velocity.
Enviornment is that there’s this type of variety of “lickety-split” wordpress cyber internet hosting suppliers that it may actually possibly per likelihood possibly furthermore furthermore be sophisticated to catch a gorgeous one. So how one can create the best need?
Nicely, there are some essential elements to look at up on at when deciding on a gorgeous and likewise fast wordpress cyber internet hosting supplier: uptime, response time, official improve, effectivity, and a great deal of others. 
To create points extra easy for you, I examined a bunch of wordpress cyber internet hosting suppliers and chosen those that met all of the requirements to be thought to be as lickety-split cyber internet hosting selections.
Quickest wordpress Web cyber internet hosting Suppliers
Listed below are the quickest wordpress cyber internet hosting suppliers that I examined out and for my fragment counsel:
1.bluehost – beginner-marvelous wordpress cyber internet hosting supplier 2.WP Engine – lickety-split wordpress cyber internet hosting supplier for medium to very large firms 3.HostGator – lickety-split and steady wordpress cyber internet hosting provider 4.Hostinger – low-fee and spacious-lickety-split wordpress cyber internet hosting decision 5.DreamHost – fast and correct cyber internet hosting agency for wordpress 6.Kinsta – lickety-split managed wordpress cyber internet hosting agency 7.A2 Web cyber internet hosting – characteristic-prosperous and fast wordpress cyber internet hosting provider
1. bluehost – Simple to Use Web cyber internet hosting Supplier
Uptime
99.84%
Response time
1,037ms
Cost from
$2.95/mo
Go to area
bluehost should all the time be your first resolve on a list for cyber internet hosting suppliers for these who fancy to want to host a fast wordpress net area that’s simple to dwelling. It has servers optimized for wordpress, skilled improve, spectacular effectivity and is beginner-marvelous.
At least, bluehost is promoted by wordpress.org itself.
bluehost Pricing
bluehost is an low cost supplier. Even with probably the most fee-fine concept that begins at $2.95/month, you salvage a free space identify, SSL certificates, and limitless bandwidth.
For these who resolve out a thought for $5.45/month, you might possibly per likelihood furthermore be provided unmetered SSD storage, limitless domains, and web pages. 
bluehost is Beginner-Suited
bluehost has fairly a pair of elements that create it easy-to-exhaust lickety-split cyber internet hosting supplier. Such elements as preinstalled wordpress, automated updates, tutorials within the dashboard, and smartly-trained improve. 
bluehost mechanically installs the most recent wordpress mannequin after you might possibly per likelihood possibly possibly furthermore be completed with signing up. This cyber internet hosting supplier additionally will mechanically exchange wordpress at any time when, so that you do now not choose to misfortune about your WP being outdated.
Moreover, bluehost has a wonderful dashboard, the place you might possibly per likelihood possibly enact step after step tutorials to protect a watch on and manufacture an online area. It helps you write your first weblog, introduces search optimization (Web on-line web page positioning) instruments and the tactic through which one can exhaust them correctly.
Even for these who bustle into any considerations – they might possibly per likelihood possibly furthermore furthermore be resolved lickety-split by bluehost improve that’s obtainable by methodology of cellular phone or chat 24/7.
So bluehost is a efficient need for these who fancy to invent a fast net area due to its lickety-split-responding improve, automated updates, and easy to make exhaust of dashboard that guides you by strategy of the process of rising your area.
bluehost Efficiency
bluehost is recognized for having lickety-split and bonafide servers. Since they’re optimized for wordpress that process your net area will load even sooner. An internet primarily based area that I examined had 254ms response time on common, whereas something beneath 500ms is a intensive consequence. These numbers discuss for themselves.
What’s loopy that over an full week my wordpress net area did now not journey any downtime. I verbalize we will agree that bluehost actually shines within the effectivity division as neatly.
General, bluehost is a intensive need for a fast wordpress cyber internet hosting supplier on account of or not it’s simple to make exhaust of and navigate, has intensive improve, eminent effectivity and is type of sensible.
Go to bluehost
2. WP Engine – wordpress Specialists Web cyber internet hosting Your Industrial Web on-line web page
Uptime
Unavailable
Response time
Unavailable
Cost from
$29.17/mo
Go to area
WP Engine is a specialised wordpress cyber internet hosting supplier, which affords lickety-split and developed server options for firms. Or now now not it’s a fast wordpress cyber internet hosting agency that’s extra right for medium and massive firms than non-public duties. WP Engine is a intensive need for these who fancy to want to be supported by wordpress specialists themselves.
WP Engine Pricing
WP Engine plans open at $29.17/month for the Startup thought and attain $241.67/month with the Scale thought. Nonetheless, for these who possess a obedient on-line enterprise that wishes extra sources, you might possibly per likelihood possibly negotiate a tag that matches you utilizing a Custom-made thought.
All the plans embody World CDN boosters, SSL safety, 35 prime fee themes, and 24/7 chat improve.
On the origin discover, WP Engine may possibly per likelihood possibly furthermore investigate cross-check pricy, however possess in thoughts the indeniable actuality that they are aiming for larger web pages. Such webpages generate fairly a pair of visitors and are extra enterprise-based principally absolutely so it requires extra sources. And that is the explanation exactly what WP Engine affords.
Official wordpress Oriented Web cyber internet hosting
Since WP Engine is a cyber internet hosting supplier that helps wordpress most attention-grabbing it has its managed servers for wordpress. Which process all of the items will most seemingly be hazard up for you already. Technical considerations mustn’t be a subject.
Even for these who stumble upon some technical difficulties you regularly possess smartly-trained wordpress oriented improve that may reply your questions by methodology of chat or cellular phone 24/7.
WP Engine additionally affords light-weight themes to your wordpress net area. Using light-weight themes is a orderly process to create your net area sooner since they’re extra easy to load.
Managed wordpress cyber internet hosting and easy to load themes are a gorgeous combination to own a fast and stress-free wordpress cyber internet hosting journey.
WP Engine Efficiency
WP Engine claims to be specialists at managing wordpress servers and that basically exhibits. As properly they provide a world CDN that helps your net area to stop alive.
Over per week of testing and monitoring my net area had a mean response time of 259ms, which is a stupendous consequence.
Additionally, my net area did now not endure any downtime for per week.
Whereas monitoring an online area World CDN was on. It creates a group of servers across the realm and delivers the static ship from the closest server to the individual’s area.
CDN will create specific you might possibly per likelihood possibly possibly furthermore simply possess 100% uptime switching from one server to at least one extra if one server by accident goes down. And, as you might possibly per likelihood possibly sight, the CDN works fairly neatly.
All in all, WP Engine may possibly per likelihood possibly furthermore simply be fairly a pricy but genuine need for a wordpress net area. It has wordpress oriented group that may will allow you to invent a fast enterprise net area. Take into accout, that this supplier is healthier for medium and massive duties larger than restricted blogs or portfolios.
Go to WP Engine
3. HostGator – Procure and Fleet Efficiency
Uptime
100.00%
Response time
1,870ms
Cost from
$5.95/mo
Go to area
For these who may possibly per likelihood possibly furthermore be in quest of an all-inclusive lickety-split wordpress cyber internet hosting supplier – HostGator is a stupendous resolve. It has larger than correct cyber internet hosting, there’s a net area builder and space registrar provided as neatly. Not most attention-grabbing it’s simple to make exhaust of or not it’s additionally fairly low-fee and performs neatly. 
HostGator Pricing
For wordpress oriented plans, probably the most fee-fine “Starter” thought is $5.95/mo. There’s additionally the “Customary” concept that prices $7.95/mo and the priciest one is the “Industrial” concept that comes for a $9.95/mo.
All three of those plans possess free SSL certificates, free space and unmetered disk storage. Additionally, you salvage limitless e mail addresses in your entire plans.
So HostGator affords intensive effectivity for fairly a restricted tag. This supplier entails fairly a pair of free stuff and unmetered disk storage is a intensive factor to own whereas cyber internet hosting a wordpress net area.
Web on-line web page Necessities
HostGator affords a free equipment of net area requirements that abet your net area to stop now now not most attention-grabbing lickety-split, however sterling as neatly. It entails CodeGuard, SiteLock, and SSL Certificates. There’s additionally Area Privateness that may possibly per likelihood possibly furthermore furthermore be bought separately after testing.
CodeGuard is responsible for automated every day backups, so your net area is prevented from shedding its recordsdata. In case of any digital assault – you might possibly per likelihood possibly possibly furthermore be sterling on account of a backup is already completed and CodeGuard will most seemingly be in a neighborhood to revive an online area to what it was earlier than the topic.
SiteLock is a provider that scans your net area every day to title threats and protect a neighborhood from viruses, snide-space scripting, SQL injection, and e mail blacklisting. So that you and your buyer will know when an online area is perilous to look suggestion from.
SSL Certificates is a safety protocol that secures a sterling connection between an online area and a server. It additionally makes specific that transactions which are taking place on your net area are sterling and likewise you might possibly per likelihood possibly receive individual’s funds.
All in all, HostGator lets it is good to possibly per likelihood possibly possibly furthermore simply possess now now not most attention-grabbing lickety-split however steady effectivity as neatly. It’s in all probability you may possibly per likelihood possibly possibly furthermore be being prevented from digital assaults, that may slack you down and even shut down the procure area.
HostGator Efficiency
HostGator makes use of cloud cyber internet hosting for his or her wordpress cyber internet hosting plans. That’s even handed certainly one of many the clarification why this supplier has intensive uptime and response conditions.
At some stage of per week of testing my net area had an common of 386ms response time, which is silent intensive on account of or not it’s now now not as much as 500ms that’s even handed a mean for a fast net area.
I verbalize, that due to cloud cyber internet hosting that they exhaust my net area did now not endure any downtime all of the tactic through which by strategy of an full week.
This cyber internet hosting supplier affords elements that steady your net area. Additionally, it is a long way type of sensible and performs decently. HostGator makes use of cloud servers for his or her cyber internet hosting suppliers and merchandise which makes them deliver lickety-split and correct effectivity.
Go to HostGator
4. Hostinger – Mammoth Fleet wordpress Experience
Uptime
100%
Response time
67ms
Cost from
$0.80/mo
Go to area
Hostinger is a cyber internet hosting supplier that’s sensible and has lickety-split wordpress effectivity. It has probably the most easy quality-tag ratio accessible available in the market today. This cyber internet hosting agency ensures 99.99% uptime and bonafide purchaser improve as neatly.
Hostinger Pricing
Hostinger’s affords are so tempting or not it’s tough to declare no to it. Pricing begins at $0.80/mo with Single wordpress Web cyber internet hosting thought. There’s additionally the High class concept that prices $2.15/mo and the Industrial thought for $3.45/mo. 
What’s in there for you? Nicely, Hostinger’s High class thought affords 2 conditions sooner wordpress optimized servers’ and the Advertising and marketing technique affords Four conditions sooner effectivity for wordpress servers.
Additionally, all three of those plans embody a free SSL certificates, extraordinarily positive protect watch over panel, person-marvelous salvage admission to supervisor.
So that you might possibly per likelihood possibly ogle how Hostinger’s plans promise sooner wordpress net area effectivity with every pork up.
Custom-made Help watch over Panel
For these who may possibly per likelihood possibly furthermore be now now not a newbie in working with cyber internet hosting and its suppliers and merchandise you may wish to possess heard about cPanel. Usually, Hostinger developed its possess cPanel, redesigned, and named it hPanel.
For some it’s going to be a professional, for some it’s going to be a con on account of hPanel is barely completely different from cPanel. All comes all the way down to your need.
Additionally, hPanel was developed so it could be extra gratified to make exhaust of and extra easy to learn. Icons in hPanel are larger, some pointless elements had been taken out. Or now now not it’s easy to learn and lickety-split to navigate panel that lets you be sooner now now not most attention-grabbing in loading velocity however in rising and rising your net area as neatly.
Hostinger Efficiency
Hostinger ensures beautiful effectivity and retains its promise. It’s in all probability you may possibly per likelihood possibly sight that each one the tactic through which by strategy of an full week of monitoring my net area I had a mean of 253ms response time. Response time had a pair of spikes however largely stayed correct.
My net area’s uptime was 99.99% correct fancy Hostinger claims. There was most attention-grabbing one minute of micro downtime all of the tactic through which by strategy of the week, so it mustn’t even hazard the procure area’s effectivity in any respect. Largely, on account of micro downtimes are inclined to occur with completely different cyber internet hosting suppliers as neatly and so they additionally do not seem to be a vital subject.
All in all, Hostinger is a fast and low-fee decision for a wordpress net area. It has its possess personalized panel redeveloped, first fee effectivity and sensible plans. All these elements can with out issues designate Hostinger as a fast wordpress cyber internet hosting supplier.
Go to Hostinger
5. DreamHost – Trusty Managed wordpress Web cyber internet hosting
Uptime
100.00%
Response time
129ms
Cost from
$2.59/mo
Go to area
DreamHost is a cyber internet hosting supplier that affords a fast, correct and sensible wordpress cyber internet hosting journey. It has one-click wordpress arrange, CDN, layers of caching, SSD storage and wordpress guides that consequence in lickety-split net area effectivity.
DreamHost can be recognized for being a actually correct and characteristic-prosperous cyber internet hosting supplier.
DreamHost Pricing
Dreamhost affords 5 wordpress cyber internet hosting centered plans – 2 of them are in sustaining with shared cyber internet hosting and completely different Three are utilizing excessive-efficiency cloud servers.
Shared cyber internet hosting plans open at $2.59/mo with the “Shared Starter” thought. There’s additionally a “Shared Limitless” thought which prices $4.59/mo. Every of those plans are beautiful for speedy wordpress cyber internet hosting since they exhaust SSD storage. As properly they embody free SSL certificates, possess limitless visitors and supply space privateness with out spending a dime.
Every of those shared cyber internet hosting plans are a gorgeous need for these who may possibly per likelihood possibly furthermore be questioning a pair of restricted to medium dimension net area, the place you might possibly per likelihood possibly possibly furthermore simply now now not journey intense visitors.
Nonetheless, for these who may possibly per likelihood possibly furthermore be an enterprise-degree net area or an ecommerce retailer, then I might counsel testing their cloud cyber internet hosting plans that open from $16.95/mo since they’re extra wordpress oriented.
DreamHost’s Managed wordpress Web cyber internet hosting
DreamHost has thought to be certainly one of many quickest wordpress cyber internet hosting options and that may possibly per likelihood possibly be their managed wordpress cloud cyber internet hosting.
DreamHost’s managed wordpress cyber internet hosting plans supply fairly a pair of elements that optimize an online area. These elements deliver a stress-free cyber internet hosting journey. Dreamhost’s group takes care of all of the items – from migrating your net area (for these who already possess one) to mechanically updating your wordpress and optimizing their servers for probably the most easy conceivable effectivity.
They even possess constructed-in caching that hurries up an online area’s loading velocity whereas memorizing static recordsdata of that net area and loading them sooner subsequent time that your customers search suggestion from.
One different frigid attribute that DreamHost affords with their managed wordpress cyber internet hosting is their 1-click staging. Or now now not it’s an environment friendly machine that you just simply might possibly per likelihood possibly exhaust to take a check out out plugins or unique elements on your net area’s copy whereas now now not slowing down your common net area on reside.
All in all, all elements provided in managed wordpress cyber internet hosting plans are price the associated fee and is recurrently a key to a fast and correct wordpress net area.
DreamHost Efficiency
I used to be testing my DreamHost wordpress net area for per week. The frequent response time was 419ms, which silent is healthier than 550ms – the procure’s common. 
DreamHost stored its promise about being a correct cyber internet hosting supplier with 100% uptime and that exhibits in a graph above as neatly. My net area did now not endure any downtime all of the tactic through which by strategy of your full week.
An extra factor to disclose: this take a look at was completed on shared wordpress cyber internet hosting plans, wordpress managed cyber internet hosting plans should all the time develop even higher than this.
General, DreamHost is a correct cyber internet hosting supplier that excels in managed wordpress cyber internet hosting. Or now now not it’s a characteristic-prosperous, lickety-split, wordpress oriented cyber internet hosting supplier that retains its ensures and delivers stress-free effectivity.
Go to DreamHost
6. Kinsta – Developed Managed wordpress Web cyber internet hosting
Uptime
100.00%
Response time
106ms
Cost from
$30/mo
Go to area
Kinsta is a cyber internet hosting supplier that focuses on managed wordpress cyber internet hosting. Kinsta works with google Cloud Platform recordsdata facilities, so its main intention is to deliver lickety-split effectivity. This cyber internet hosting supplier additionally affords simple to make exhaust of interface and 24/7 wordpress oriented improve.
This cyber internet hosting supplier is on a pricier facet, however that is because of it principally focuses on enterprise-degree cyber internet hosting.
Kinsta Pricing
Kinsta affords loads of plans and so they additionally open at $30/mo and will possibly per likelihood possibly breeze as much as as pricy as $1500/mo. The precious variations between plans are how mighty sources are provided to your cyber internet hosting needs.
All of Kinsta’s plans embody a chance to take their recordsdata coronary heart’s area, extraordinarily steady group, every day backups, a staging area, and very positive administration.
Kinsta additionally affords free migration from completely different cyber internet hosting suppliers for these who already possess an online area someplace and wish to host with Kinsta as a alternative.
It’s in all probability you may possibly per likelihood possibly possibly furthermore furthermore salvage 2 free months of cyber internet hosting for these who resolve out to pay to your thought yearly and now now not month-to-month.
Informative Administration Dashboard
Kinsta affords simplified area administration the place you might possibly per likelihood possibly salvage admission to and analyze just about about something on your net area. Or now now not it’s a characteristic-prosperous dashboard with a whole lot of recordsdata and instruments that helps you survey the procure area’s progress and tinker its settings.
It’s in all probability you may possibly per likelihood possibly with out issues manufacture a staging net area, the place you might possibly per likelihood possibly take a check out plugins with out slowing down your common net area. When the staging net area is completed in rising, you might possibly per likelihood possibly correct push all of the adjustments to reside with one click on.
MyKinsta Analytics net web page additionally affords salvage admission to to specific metrics referring to your net area. There’s the Efficiency Monitoring portion that places your response conditions in a graph. It additionally exhibits you what error codes your customers salvage if one factor rotten occurs to your net area.
All in all, Kinsta’s dashboard affords you the chance to music your net area’s effectivity in-depth. Using this recordsdata correctly is a large step towards having a fast wordpress net area.
Kinsta Efficiency
I used to be monitoring my net area for per week and the common response time was 148ms which is intensive on account of now now not most attention-grabbing or not it’s now now not as much as common 500ms it is a long way additionally now now not as much as 200ms that’s even handed a fast net area by google requirements.
What severely stunned me that this type of fast effectivity was adopted by a 100% uptime as neatly.
Pondering that Kinsta affords fairly pricey plans or not it’s efficient to look at up on that it delivers its promise to stop lickety-split and develop neatly.
In conclusion, Kinsta is a fairly pricey cyber internet hosting supplier that has a terribly informative and easy to make exhaust of dashboard. Using recordsdata out of your net area’s metrics can provide you a intensive increase in effectivity.
Go to Kinsta
7. A2 Web cyber internet hosting – Fleet and Official
Uptime
99.99%
Response time
193ms
Cost from
$2.96/mo
Go to area
For these who may possibly per likelihood possibly furthermore be in quest of a low-fee and lickety-split cyber internet hosting decision – you may wish to take a discover at A2 Web cyber internet hosting. Not most attention-grabbing or not it’s lickety-split and low-fee it additionally affords optimized options for any type of net area you might possibly per likelihood possibly possibly furthermore be pondering of organising.
A2 Web cyber internet hosting affords a list of personalized machine options, the place you might possibly per likelihood possibly possibly furthermore catch machine packs for with regards to about any type of net area.
A2 Web cyber internet hosting Pricing
A2 Web cyber internet hosting affords Three shared wordpress cyber internet hosting plans that open at $2.96/mo and Three managed wordpress cyber internet hosting plans that open at $9.78/mo. 
All of A2 Web cyber internet hosting plans embody one satisfactory attribute – anytime money-help ship. Further to customary 30-day money-help ship you might possibly per likelihood possibly possibly furthermore furthermore quiz for a compensation after 30 day size is over. How does it work?
Nicely, after your 30 day size for refund is over, you might possibly per likelihood possibly silent quiz for a compensation and salvage a partial refund for the provider that you just simply paid for. As an exAMPle, for these who paid for a concept that goes to closing three years and after a yr you fancy to want to refund – or not it’s conceivable. You’ll most seemingly be paid assist for unused time, so on this case, for these two years that weren’t extinct for cyber internet hosting suppliers and merchandise.
System Options Tailored for Your Web on-line web page
Not most attention-grabbing this supplier is lickety-split and performs neatly for a primary fee tag, on the alternative hand it additionally saves your time with these machine options. You do now not choose to exhaust hours discovering out how one can particularly tinker your net area.
A2 Web cyber internet hosting is able to abet now now not most attention-grabbing those who need customary cyber internet hosting however moreover to customers who want to host a specific type of net area. This cyber internet hosting supplier affords just about about 50 personalized variety duties.
Does not matter for these who fancy to want to invent an ecommerce retailer, host a music net area or correct a simple portfolio – A2 Web cyber internet hosting has you lined.
Within the pause, though some considerations pop up you might possibly per likelihood possibly regularly contact their improve that works 24/7/365 by methodology of chat, e mail, and cellular phone. 
A2 Web cyber internet hosting Efficiency
Over per week of testing my A2 Web cyber internet hosting wordpress net area I spotted that the common response time was 255ms. That’s intensive response time, although there had been a pair of spikes all of the tactic through which by strategy of your full effectivity.
Additionally, my take a look at net area suffered 1 minute of micro downtime. Nonetheless uptime silent did now not fall beneath the market’s promised common which is 99.99%.
All in all, A2 Web cyber internet hosting affords beautiful response time, first fee uptime, and sensible pricing. Its personalized net area machine options is a efficient extra to own when cyber internet hosting a fast wordpress net area.
Go to A2 Web cyber internet hosting
Devour the Quickest wordpress Web cyber internet hosting Supplier?
Not each chance out of all 7 that had been listed above may possibly per likelihood possibly furthermore simply work you. It is best to to create specific what type of an online area you might possibly per likelihood possibly possibly furthermore be aiming for. Is it an ecommerce retailer? Or a weblog? Portfolio, pictures area, enterprise net area? All these elements dictate what type of a fast wordpress cyber internet hosting supplier to ogle.
bluehost is a intensive need for its slick wordpress integration and is beginner-marvelous;
WP Engine is barely pricy but lickety-split wordpress cyber internet hosting need that’s higher for medium and massive duties;
HostGator is a steady and lickety-split wordpress cyber internet hosting supplier, optimized for restricted to medium web pages ;
Hostinger is a low-fee and spacious-lickety-split wordpress host for restricted to medium non-public duties;
DreamHost is type of lickety-split and correct wordpress cyber internet hosting agency for medium and massive firms;
Kinsta is an pricey managed wordpress cyber internet hosting supplier that’s higher vital for enormous enterprises and affords deep perception on an online area’s effectivity;
A2 Web cyber internet hosting is a fast WP host that affords fairly a pair of machine capabilities particularly tailor-made for any type of net area.
When in quest of the quickest cyber internet hosting for wordpress, by no process neglect that the ship that’s uploaded can possess an impression on loading speeds – streamlining your area recordsdata can drastically pork up load conditions regardless of which host you choose out.
Within the pause, I am hoping this checklist helped you look what you had been in quest of. Trustworthy success with extra net rising!
The put up High 7 Quickest wordpress Web cyber internet hosting Suppliers In The Market regarded first on Web Web cyber internet hosting Critiques by Proper Clients and Web Web cyber internet hosting Specialists.
from WordPress https://ift.tt/332otcr via IFTTT
0 notes
thrashermaxey · 6 years
Text
Ramblings: Bruins take a licking…Knights are Golden, other fantasy hockey thoughts (Apr 30)
AWWW! Now I have to wait all summer before I can watch Brad Marchand lick someone’s face again.
*
The Bruins are out, which actually surprises me because I felt that Tampa Bay went from being by far and away the best team in the league in the first half – to being seventh or eighth best in the second half. Andrei Vasilevskiy fell apart, Nikita Kucherov came back down to earth and Steven Stamkos turned into just ordinary.
Click this – Steven Stamkos. Shameless plug to get you to check out our new player profiles, but hell after seeing these you will remove the bookmark for any other player profile because this is what you need. What we’ve added in the last week – a buy/sell meter on several stats. You can find them in the Advanced Stats tab. For Stamkos, you can see that his four stats are in the “normal” color code. Check other players for their buy/sell meters. Very fast loading too. Now go to Career stats and scroll beneath them to see a new thing we added – quarterly comparison. At a glance you can see that Stamkos had 35 points in the first quarter, 51 in the next three quarters. So he really dropped off after that hot start.
We added the above two tools based on your requests, so keep ‘em coming.
Look at this play with JT Miller and Nikita Kucherov:
{youtube}776o2xnNp5I{/youtube}
This was a play that they had practiced and had saved it for this situation – and were stoked that it worked. Very cool story.
*
Although Tuukka Rask ended up with a 0.903 SV%, there wasn’t really a point where he was terrible. He was also never really great, either. At least – Boston didn’t lose because of him. Saddle him with one of the losses against Tampa and one against Toronto. But the rest – it was the scoring. And you certainly can’t blame David Pastrnak, Brad Marchand and Patrice Bergeron there. The three combined for 53 points in the 12 games. But in each series that trio exploded out of the gate, but by Game 3 of each series both Toronto and Tampa figured out how to slow them down.
It’s ironic that Boston’s undoing came in the form of their scoring depth. Because this is a team that can make Danton Heinen, Brian Gionta and Tommy Wingels healthy scratches last night – and at other times had Ryan Donato scratched. One of the two or three best (if not “the” best) teams in the second half. And that’s why I thought the Bruins would win this round.
It should be worth noting that Jake DeBrusk was the other forward who had a very strong postseason. I’m a big fan of his playoff upside and I love that his regular season floor is still very good. His ceiling isn’t the highest – maybe 65 points one day depending on how he works with future linemates. But he’s a good steady player in terms of production who turns it up a notch in the postseason. Something to remember for future playoff pool drafts. It was a shame that he only played 13:16 Sunday and his PP time disappeared (and was fairly minimal throughout). Four power-play points with 12 minutes of PP ice time says to me that he should have gotten more.
David Backes left the game with a UBI after taking a pretty big hit from JT Miller. Almost looks in slo-mo, but the collision was the worst angle.
{youtube}tBmvcuFAEdc{/youtube}
*
I think we’ve seen the last of Brian Gionta. Yes, he made a huge splash early on as the “new team adrenalin” kicked in – he had six points in his first five games. But he was pretty bad in the Olympics and after those five games he only managed one points in 15 games. And then he only got into one uneventful playoff game. Now 39, at best he’ll get a training camp invite – and then he’ll be released. That’s if he doesn’t retire before then.
In the end, was Rick Nash worth the price of a) putting Danton Heinen in the press box and b) Ryan Spooner, Ryan Lindgren, Matt Beleskey’s contract, a 2018 1st and a 2019 7th? Nope. But we knew that immediately. As we do with most trade deadline deals and most July 1st signings.
*
As a GM, I would only target the truly unattainable (for most of their career) players on July 1st. This year that would be John Tavares and John Carlson. Last year I don’t think there was anybody. Every other player – I’d ignore. Let other GMs shoot themselves in the foot. Because three years after a big signing we always see either fans flooding social media with pleas for a buyout…or just bad contracts that are untradeable but that fans wish were off the books. Every single one. So I would just chase the franchise players only. The guys who are safe from looking bad in four years. And then later in July I would sign one or two depth guys on the cheap to fill other needs. Honestly you just build through the draft along with smart summer or early-season trades when there is no pressure. That’s how you rein in spending, and not enough GMs practice it. Dobber for GM!
*
Another example – a first, second and third-round pick for Tomas “press box” Tatar. That’s a hefty price to pay to acquire a popcorn server. Plus they have to pay Tatar $5.3 million per season the next three years.
*
Joe Thornton took the ice for warmups Sunday, but didn’t dress for the game. I think we’ll see him again. As a Shark.
The Sharks are out, so now we have to wait all summer before we get to see Joe Pavelski lick someone’s face. Wait…that was just Marchand’s thing, sorry.
Evander Kane had one point against Vegas in five games and was minus-5. Joe Pavelski three points in six games and minus-3. Brent Burns five points and minus-6, and three of those points were in one game.
Seven points for playoff stud Logan Couture, though.
After the game, Kane said that he had been playing with a separated shoulder plus an MCL injury
*
If Vegas gets to the Stanley Cup Final and loses – the Conn Smythe still goes to Marc-Andre Fleury. Geez, part of me thinks that if they take the Semi-Final to Game 7 and lose he still somehow wins the Smythe and becomes the first non-Final participant to do so. He’s really been awesome.
Reilly Smith has really snuck a lot of points in there. I’ve seen William Karlsson and Jonathan Marchessault all over the place so of course Smith is going to get his points, but I didn’t know he’d have more than Karlsson (11 to 10).
Nate Schmidt had four of his five points in the San Jose series. Erik Haula had five of his six. Both players I had marked off as playoff sleepers in the Draft List.
In the end, the difference was depth. Vegas had Ryan Reaves play just 10 minutes, but every other forward saw a minimum of 12:30 ice time. Meanwhile, the Sharks had three forwards at under 11:30. It’s nice to comfortably roll four lines.
*
It looks like Mathieu Perreault will finally get back into the lineup for the Jets tonight. He was ready to go in Game 4 but Paul Maurice said he didn’t want to insert two players back from injury into the same game. Weird reasoning but okay…
*
If the Caps put Jakub Vrana on the Alex Ovechkin – Evgeny Kuznetsov line, then the Penguins will be in a lot of trouble. I have a feeling that line would be one of those “ah-ha” moments. The trio had been put together before, and in fact were on the ice together for five of Vrana’s points (20.8% of them) during the season and 12% of his line frequency. But with young players like that sometimes it’s the fourth or fifth opportunity in that situation before things really click. And I’ll tell you – if he’s on that line and it does work and they eliminate Pittsburgh, then that line will continue to fly all the way to the Cup Final. And Vrana would be a massive sneaky pickup at drafts in September. It could finally be his time. The problem is, in keeper leagues, Vrana owners are already watching and are well aware of this. So I doubt there’s a steal to be had.
*
The 2018 DobberHockey products are now up in the shop for pre-sale! That includes the Ultimate Fantasy Pack, the Keeper League Pack and the Fantasy Prospects Report. The FPR is released June 1 and I’m nearing the halfway point on writing and editing the content, so it’s really coming along nicely.
*
See you next week
      from All About Sports https://dobberhockey.com/hockey-rambling/ramblings-bruins-take-a-lickingknights-are-golden-other-fantasy-hockey-thoughts-apr-30/
0 notes
Text
A Look at Apollo, From a Relay Perspective
By JEREMY GAYED
Editor’s note: This article has been reposted from the author’s personal Medium account, with minor edits.
Our team is hard at work on implementing an isomorphic (or, “universal”) application that we’re slowly rolling out. While the complexities introduced by this isomorphism are non-trivial, we felt the benefit outweighed the cost — we were keen on keeping TTFP low, ensuring that there are no issues with SEO (even though there’s mixed thoughts on to what extent fully JavaScript-driven apps actually perform from an SEO perspective) and we wanted to still be able to take advantage of full-page caching where it made sense to. We were also attracted to the ease of which React could be rendered server-side and then pick up from where it left off on the client-side, so we were in.
As part of this new front-end stack, the back-end was also going through changes. We knew we didn’t want to continue hitting REST-based APIs where the mix of /v1 and /v2 endpoints were only growing. We decided to jump in on the GraphQL bandwagon.
At the time, the de facto standard for talking to GraphQL servers on the frontend was (is) Relay. So we didn’t think twice about starting there. However, because our app needed to be isomorphic, there were some non-trivial challenges that came along with that decision. Luckily, there were a few modules available to address these issues and help us render our Relay-based app isomorphically: isomorphic-relay and isomorphic-relay-router. If you’re new to this type of stack, the names of those modules alone might raise some eyebrows. But, they were working and they seemed solid as we started building out our prototype. We were also encouraged by the fact that the super smart author behind those modules, Denis Nedelyaev, was contributing code back into Relay.
If you’re only interested in the upshot of all of this, see the TL;DR at the end of this post.
Mo’ Code, Mo’ Problems
As our prototype started to gradually morph into a full-fledged production-level application (with more teams across the org starting to contribute), the challenges of writing an isomorphic application started to present themselves. We had established a number of patterns that were working, so the pain wasn’t spread throughout the teams contributing, but it did feel like one of those nagging itches that kept coming back.
Just for some context, here is what a typical route in our app looks like:
<Route path="/imageviewer/*" getComponent={importImageViewer} getQueries={({ location }) => (location.state ? { image: () => Relay.QL`query { node(id: $id) }` } : { image: () => Relay.QL`query { asset(id: $id) }` }) } prepareParams={({ splat, ...otherParams }, { location }) => { const id = (location.state && location.state.relayId) ? location.state.relayId : `imageviewer/${splat}`; return { id, ...otherParams }; }} render={({ error, props, element }) => { if (error) { return <InternalError />; } else if (props) { return React.cloneElement(element, props); } return <LoadingPage />; }} />
So, I started looking into some alternatives to Relay. The biggest player here is arguably, Apollo. I was quite impressed with the list of features touted on their site — not the least of which was server-side rendering (SSR) out of the box. That means SSR was a first-class citizen, which I was pretty stoked about. Plus, their documentation was absolutely superb, which is critical for a library that would be at the core of our application as we scaled out to more developers.
Apollo vs. Relay
The following is a write-up I initially did internally to my team that I wanted to share out in case others are looking for more comparisons on these two excellent libraries. Keep in mind that this list is in no way exhaustive, nor is it necessarily 100% accurate — that is, there may be (rather, likely) cases where it’s just user error on our part (e.g. we didn’t write the Relay code completely idiomatically). It’s also in no particular order. So, take what’s here with a grain of salt, but please feel free to comment or call things out. I’m much more interested in learning than I am about calling one library or the other a “winner” (spoiler: there is no winner, the “right” library is the one that works for your use case).
Here goes…
Removing the complexity around isomorphic-relay and isomorphic-relay-router
The isomorphic-relay and isomorphic-relay-router modules are written by a single developer. While that developer was able to contribute things back into Relay for better integration with these modules, the concern is that these are modules we rely on with a relatively small community around them (e.g. in contrast to the Apollo community).
In addition, we’ve come across a couple of cases where we were not able to easily do one thing or another because of these modules. One example is we were unable to experiment with a preact alias because it was incompatible with these modules.
Loading state information provided to the component
A loading prop is provided to the component so that the component itself can handle how it should indicate loading progress. This gives us very granular control over how different components present loading state to the user.
render() { const { loading } = this.props.data;
if (loading) { return <LoadingPage />; // or, LoadingSpinner etc. }
// ... }
In our application, we had been handing this at our routing layer, this means our routing was doing much more than just pure routing logic, and it was done very coarsely. While a similar pattern might be possible with Relay’s pendingVariables, the mental model of a simple loading prop at the component-level seems simpler from a developer’s perspective. It was also unclear if pendingVariables still apply in the isomorphic code path, but this could have been a user-error case :)
Error information provided locally to the component
Similarly to the loading flag above, errors are provided in an error prop to the component itself (this.props.data.error[]). This means that error handling can be done directly in the component and does not need to happen at the route level. Which means that we can still render our shell even if some query deep in the component hierarchy results in some error.
Again, this is another case we were handling at the routing layer, which means it was done very coarsely. The benefit of moving this to the component layer means we do not have to error-out the entire app and can appropriately compartmentalize error handling at the individual component level.
Note that this is for query errors. React’s Error Boundaries (expected to land as part of React Fiber) is handling a different class of errors (errors thrown within a components render() block, for example). It might be that in future versions, Relay takes advantage of React’s Error Boundaries, but that isn’t possible as of this writing.
Skipping queries for SSR
This is by far the biggest win on Apollo’s side. It’s features like these that show the benefit of going with a library that handles server-side rendering as a first-class feature.
Skipping queries during SSR can be done simply by passing in an ssr: false flag into the query options. Our use case for this was in a <WithUserContext /> component that we didn’t want done server-side (for caching concerns) and only need it to run on the client:
@graphql(gql`query UserQuery($token: String) { user(token: $token) { id entitlements } } `, { options: { // Don't run this query on the server ssr: false, // Look how easy! variables: { token, }, }, }) export default class WithUserContext extends Component { ... }
We have yet to find an appropriate solution to this problem in Relay. Unfortunately, to this day, we are still making this extraneous request server-side (which means we’re doing it twice for every request).
No need to leak queries up to the route level
Currently, our <Shell /> component (a top-level component) defines a root query because of the way isomorphic-relay-router works. This is arguably a leaky abstraction, as the Shell itself does not require any GQL data. Neither does the <Masthead /> component rendered within it. Only when we get to the <UserModal /> component (that’s rendered within Masthead) is the GQL query useful.
<Shell> <Masthead> <UserModal user={userData} /> /* GQL data needed */ </Masthead> </Shell>
In our current app, we’ve had to “leak” this query up to the root component, <Shell />, which essentially breaks the co-located queries with the components that use them goal.
With Apollo, <Shell /> and <Masthead /> can stay pure, and the User query can stay local to <UserModal /> where it belongs.
This also means being able to render the Shell even if there is an error in the User (or any other) query. It also means we can share the Shell component with other React-based apps that do not use Relay for data-fetching.
Built on top of Redux
We’re holding back on pulling the trigger to introduce a Redux layer into our app for as long as possible. But, introducing a Redux layer, if desired, is a smaller ask with Apollo since its data store is Redux. This means we can take advantage of the same dehydrate/rehydrate step for all of our apps data needs moving forward instead of introducing a second one for a Redux store when using Relay. Apollo provides documentation on how to integrate with an app-specific Redux store.
SSR out of the box
Again, since Apollo is built with isomorphic apps in mind, it supports SSR out of the box. It works by doing a ‘virtual’ render of the app on the server to collect all the queries for the given route, then initializes a Redux store (since Apollo is built on Redux) which is dehydrated on the server then rehydrated on the client. I’m not entirely sure how isomorphic-relay does its query collecting and if it also includes a virtual render or not, but I was concerned that this may negatively impact performance so I ran some abtests locally and it appears (*unscientifically) that there is not much of a performance impact — in fact, it appears to perform better in comparison.
Captured ab numbers below. This is for the same route with the same data, all other routes were commented out. *Unscientific because this was done on my local machine and not against some dedicated performance test cluster.
relay
Time taken for tests: 6.842 seconds Complete requests: 100 Failed requests: 0 Total transferred: 19907700 bytes HTML transferred: 19888600 bytes Requests per second: 14.62 [#/sec] (mean) Time per request: 68.420 [ms] (mean) Time per request: 68.420 [ms] (mean, across all concurrent requests) Transfer rate: 2841.46 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 55 68 16.8 64 187 Waiting: 54 67 16.8 63 186 Total: 55 68 16.8 64 187
Percentage of the requests served within a certain time (ms) 50% 64 66% 65 75% 70 80% 71 90% 82 95% 91 98% 150 99% 187 100% 187 (longest request)
apollo
Time taken for tests: 6.270 seconds Complete requests: 100 Failed requests: 0 Total transferred: 16914300 bytes HTML transferred: 16895200 bytes Requests per second: 15.95 [#/sec] (mean) Time per request: 62.700 [ms] (mean) Time per request: 62.700 [ms] (mean, across all concurrent requests) Transfer rate: 2634.44 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 1 Processing: 52 62 8.4 60 95 Waiting: 51 61 8.3 59 93 Total: 52 63 8.4 60 95
Percentage of the requests served within a certain time (ms) 50% 60 66% 62 75% 64 80% 65 90% 74 95% 86 98% 94 99% 95 100% 95 (longest request)
Normalized object cache
By default, Apollo tries to use the shape of a query itself as a cache so that disparate parts of the app can take advantage of data fetched elsewhere (e.g. think of the use case where User data is grabbed in <UserModal /> and also in <WithUserContext />). This is probably fine in most cases, but in cases where we know this may not work we can manually create an object cache key, more info here.
The difference here with Relay is that the object ID is the default for Relay queries (which is why there’s Relay influence in the schema on the GraphQL server, which wouldn’t be necessary for Apollo). We could chose to continue using the Relay influenced schema and reuse the Relay-ID, or define our own object IDs client side depending on the use cases.
The difference here is probably inconsequential, but worth noting.
Mutation queries update store state
Mutation queries in Apollo also update the store state, so there’s no explicit “fat query” required to keep the UI consistent when doing a mutation query as is the case with Relay (although the Apollo docs do recommend to include fields that could be affected by the mutation in the query). Relay2 is supposed to solve this problem better but not sure what details are available or how that will work quite yet.
The difference here may be two sides of the same coin though. We haven’t written many (read: any) mutations in our app yet, so we’re not sure of the subtleties.
Supports decorators out of the box
Apollo provides support for the @decorator() syntax out of the box. I’m a big fan of decorators. Although to be fair, adding it ourselves for Relay was easy enough, but it meant that depending on if a developer was writing a React class or a stateless functional component, they’d want to import two different things for Relay (our @withRelay decorator or react-relayrespectively), which could be confusing.
Prefetch out of the box
This is a real use case for us, and I was quite impressed to see support for pre-fetching supported out of the box and how easy it is to take advantage ofwith Apollo.
Prefetching is just a function call, which means we can do it virtually anywhere/at any time that it makes sense to. E.g. we could prefetch common user flows immediately after mounting on the client, or when the user hovers over a certain link, etc. It’s not clear how the same can be achieved in Relay.
PropType validation
While we’ve previously decided we do not need PropType validation on Relay-backed proptypes (since we deemed them redundant with the GraphQL schema backing), Apollo has a graphql-anywhere package that provides proptype validation based on the GQL query automatically. This means developers do not need to manually write these proptypes and we can take advantage of them when sharing GQL-backed components. This package maybe(?) useable with Relay as well, so it might be a push here.
Preact alias, hard dependencies on some libraries
By removing isomorphic-relay et al this reopens the door for using the Preact alias for React. We had initially tried out a handful of things to see if we could squeeze out some performance wins preemptively, but this was one of those things we were unable to do because of the isomorphic tools that we needed to support Relay.
We’re also unable to update to the new react-router v4 because of the hard dependencies the isomorphic tools have on how RRv3 works. Not a huge deal since the current routing solution works, but it’s certainly a concern since as the community progresses, we wouldn’t want to pin to an older version of a core library we rely on for support reasons, documentation, etc.
Apollo devtool
Apollo also has a really nice Chrome devtool extension, which provides insight into the queries executed by the app, the data cache and even a Graphiql instance. I believe there is a Relay tab in the React devtools but I could not get it to work locally for whatever reason.
Persisted Queries
The Apollo ecosystem also adds support for Persisted Queries.
This has a few benefits, including:
Whitelisting queries
Minimize bandwidth usage between client/server (since query IDs are transferred over the wire instead of the entire query)
The overhead here is in how we synchronize this with the server, how we have our GraphQL server understand and ingest this statically provided information at app build-time.
Read more about persisted queries here: Persisted Queries And here’s the persisted query module: persistgraphql
There’s an RFC to add something similar for Relay.
Native teams are exploring Apollo
Our Native teams are also looking into using Apollo (iOS and Android teams). They have mentioned already contributing caching strategies back into apollo-client which we theoretically should be able to take advantage of. The main benefit here for us is to be in the same data-fetching ecosystem as other teams across the org.
Drawbacks
It’s not all rosy for Apollo, of course. With everything, there are drawbacks and tradeoffs, some listed below.
A tangential ecosystem
The drawback with using Apollo is that it’s a library not written by Facebook. So there may be some challenges when either Apollo or Facebook update their APIs as the two projects progress.
Static analysis done differently
Currently, the way Apollo does static analysis at build time is to define queries in separate .gqlor .graphql files and then use the webpack loader provided by graphql-tag/loader. There’s pros and cons to this approach.
The Apollo team is also working on babel-plugin-graphql-tag which will function similar to Relay’s. The issue to track this work is here: apollographql/graphql-tag#31
One thing to note is that there is a trade-off with doing this at build time. At build-time means a potentially larger JS bundle which can negatively impact TTP/TTI. And of course doing it at runtime can hamper overall page performance. Ideally we’d find the sweet spot and figure out the best way to do it, but it certainly would be nice to have the option either way.
What’s Next?
Since it seems Relay2 is “right around the corner” we thought it best to see what that looks like before deciding on making the switch or not. One thing to note, however, is that Relay2 will still not support SSR out of the box. So the consideration will be on whether Relay teams’ goal of making it “easy for the community to build upon [Relay’s API] to make a server rendering module for Relay” pans out or not.
TL;DR
If you’re building an app that needs to server-side render and talks to a GraphQL server, strongly consider Apollo before jumping straight into Relay; the complexity otherwise is considerable. If SSR is not important to you, Relay is probably a good choice here since you’ll be staying within the “Facebook ecosystem” of tools and modules.
Jeremy Gayed is a lead engineer at The New York Times. He’s working on building out the next generation web platform for various teams at The Times.
A Look at Apollo, From a Relay Perspective was originally published in Times Open on Medium, where people are continuing the conversation by highlighting and responding to this story.
from Times Open - Medium http://ift.tt/2s2ELnl via IFTTT
0 notes
Text
A Look at Apollo, From a Relay Perspective
By JEREMY GAYED
Editor’s note: This article has been reposted from the author’s personal Medium account, with minor edits.
Our team is hard at work on implementing an isomorphic (or, “universal”) application that we’re slowly rolling out. While the complexities introduced by this isomorphism are non-trivial, we felt the benefit outweighed the cost — we were keen on keeping TTFP low, ensuring that there are no issues with SEO (even though there’s mixed thoughts on to what extent fully JavaScript-driven apps actually perform from an SEO perspective) and we wanted to still be able to take advantage of full-page caching where it made sense to. We were also attracted to the ease of which React could be rendered server-side and then pick up from where it left off on the client-side, so we were in.
As part of this new front-end stack, the back-end was also going through changes. We knew we didn’t want to continue hitting REST-based APIs where the mix of /v1 and /v2 endpoints were only growing. We decided to jump in on the GraphQL bandwagon.
At the time, the de facto standard for talking to GraphQL servers on the frontend was (is) Relay. So we didn’t think twice about starting there. However, because our app needed to be isomorphic, there were some non-trivial challenges that came along with that decision. Luckily, there were a few modules available to address these issues and help us render our Relay-based app isomorphically: isomorphic-relay and isomorphic-relay-router. If you’re new to this type of stack, the names of those modules alone might raise some eyebrows. But, they were working and they seemed solid as we started building out our prototype. We were also encouraged by the fact that the super smart author behind those modules, Denis Nedelyaev, was contributing code back into Relay.
If you’re only interested in the upshot of all of this, see the TL;DR at the end of this post.
Mo’ Code, Mo’ Problems
As our prototype started to gradually morph into a full-fledged production-level application (with more teams across the org starting to contribute), the challenges of writing an isomorphic application started to present themselves. We had established a number of patterns that were working, so the pain wasn’t spread throughout the teams contributing, but it did feel like one of those nagging itches that kept coming back.
Just for some context, here is what a typical route in our app looks like:
<Route path="/imageviewer/*" getComponent={importImageViewer} getQueries={({ location }) => (location.state ? { image: () => Relay.QL`query { node(id: $id) }` } : { image: () => Relay.QL`query { asset(id: $id) }` }) } prepareParams={({ splat, ...otherParams }, { location }) => { const id = (location.state && location.state.relayId) ? location.state.relayId : `imageviewer/${splat}`; return { id, ...otherParams }; }} render={({ error, props, element }) => { if (error) { return <InternalError />; } else if (props) { return React.cloneElement(element, props); } return <LoadingPage />; }} />
So, I started looking into some alternatives to Relay. The biggest player here is arguably, Apollo. I was quite impressed with the list of features touted on their site — not the least of which was server-side rendering (SSR) out of the box. That means SSR was a first-class citizen, which I was pretty stoked about. Plus, their documentation was absolutely superb, which is critical for a library that would be at the core of our application as we scaled out to more developers.
Apollo vs. Relay
The following is a write-up I initially did internally to my team that I wanted to share out in case others are looking for more comparisons on these two excellent libraries. Keep in mind that this list is in no way exhaustive, nor is it necessarily 100% accurate — that is, there may be (rather, likely) cases where it’s just user error on our part (e.g. we didn’t write the Relay code completely idiomatically). It’s also in no particular order. So, take what’s here with a grain of salt, but please feel free to comment or call things out. I’m much more interested in learning than I am about calling one library or the other a “winner” (spoiler: there is no winner, the “right” library is the one that works for your use case).
Here goes…
Removing the complexity around isomorphic-relay and isomorphic-relay-router
The isomorphic-relay and isomorphic-relay-router modules are written by a single developer. While that developer was able to contribute things back into Relay for better integration with these modules, the concern is that these are modules we rely on with a relatively small community around them (e.g. in contrast to the Apollo community).
In addition, we’ve come across a couple of cases where we were not able to easily do one thing or another because of these modules. One example is we were unable to experiment with a preact alias because it was incompatible with these modules.
Loading state information provided to the component
A loading prop is provided to the component so that the component itself can handle how it should indicate loading progress. This gives us very granular control over how different components present loading state to the user.
render() { const { loading } = this.props.data;
if (loading) { return <LoadingPage />; // or, LoadingSpinner etc. }
// ... }
In our application, we had been handing this at our routing layer, this means our routing was doing much more than just pure routing logic, and it was done very coarsely. While a similar pattern might be possible with Relay’s pendingVariables, the mental model of a simple loading prop at the component-level seems simpler from a developer’s perspective. It was also unclear if pendingVariables still apply in the isomorphic code path, but this could have been a user-error case :)
Error information provided locally to the component
Similarly to the loading flag above, errors are provided in an error prop to the component itself (this.props.data.error[]). This means that error handling can be done directly in the component and does not need to happen at the route level. Which means that we can still render our shell even if some query deep in the component hierarchy results in some error.
Again, this is another case we were handling at the routing layer, which means it was done very coarsely. The benefit of moving this to the component layer means we do not have to error-out the entire app and can appropriately compartmentalize error handling at the individual component level.
Note that this is for query errors. React’s Error Boundaries (expected to land as part of React Fiber) is handling a different class of errors (errors thrown within a components render() block, for example). It might be that in future versions, Relay takes advantage of React’s Error Boundaries, but that isn’t possible as of this writing.
Skipping queries for SSR
This is by far the biggest win on Apollo’s side. It’s features like these that show the benefit of going with a library that handles server-side rendering as a first-class feature.
Skipping queries during SSR can be done simply by passing in an ssr: false flag into the query options. Our use case for this was in a <WithUserContext /> component that we didn’t want done server-side (for caching concerns) and only need it to run on the client:
@graphql(gql`query UserQuery($token: String) { user(token: $token) { id entitlements } } `, { options: { // Don't run this query on the server ssr: false, // Look how easy! variables: { token, }, }, }) export default class WithUserContext extends Component { ... }
We have yet to find an appropriate solution to this problem in Relay. Unfortunately, to this day, we are still making this extraneous request server-side (which means we’re doing it twice for every request).
No need to leak queries up to the route level
Currently, our <Shell /> component (a top-level component) defines a root query because of the way isomorphic-relay-router works. This is arguably a leaky abstraction, as the Shell itself does not require any GQL data. Neither does the <Masthead /> component rendered within it. Only when we get to the <UserModal /> component (that’s rendered within Masthead) is the GQL query useful.
<Shell> <Masthead> <UserModal user={userData} /> /* GQL data needed */ </Masthead> </Shell>
In our current app, we’ve had to “leak” this query up to the root component, <Shell />, which essentially breaks the co-located queries with the components that use them goal.
With Apollo, <Shell /> and <Masthead /> can stay pure, and the User query can stay local to <UserModal /> where it belongs.
This also means being able to render the Shell even if there is an error in the User (or any other) query. It also means we can share the Shell component with other React-based apps that do not use Relay for data-fetching.
Built on top of Redux
We’re holding back on pulling the trigger to introduce a Redux layer into our app for as long as possible. But, introducing a Redux layer, if desired, is a smaller ask with Apollo since its data store is Redux. This means we can take advantage of the same dehydrate/rehydrate step for all of our apps data needs moving forward instead of introducing a second one for a Redux store when using Relay. Apollo provides documentation on how to integrate with an app-specific Redux store.
SSR out of the box
Again, since Apollo is built with isomorphic apps in mind, it supports SSR out of the box. It works by doing a ‘virtual’ render of the app on the server to collect all the queries for the given route, then initializes a Redux store (since Apollo is built on Redux) which is dehydrated on the server then rehydrated on the client. I’m not entirely sure how isomorphic-relay does its query collecting and if it also includes a virtual render or not, but I was concerned that this may negatively impact performance so I ran some abtests locally and it appears (*unscientifically) that there is not much of a performance impact — in fact, it appears to perform better in comparison.
Captured ab numbers below. This is for the same route with the same data, all other routes were commented out. *Unscientific because this was done on my local machine and not against some dedicated performance test cluster.
relay
Time taken for tests: 6.842 seconds Complete requests: 100 Failed requests: 0 Total transferred: 19907700 bytes HTML transferred: 19888600 bytes Requests per second: 14.62 [#/sec] (mean) Time per request: 68.420 [ms] (mean) Time per request: 68.420 [ms] (mean, across all concurrent requests) Transfer rate: 2841.46 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 55 68 16.8 64 187 Waiting: 54 67 16.8 63 186 Total: 55 68 16.8 64 187
Percentage of the requests served within a certain time (ms) 50% 64 66% 65 75% 70 80% 71 90% 82 95% 91 98% 150 99% 187 100% 187 (longest request)
apollo
Time taken for tests: 6.270 seconds Complete requests: 100 Failed requests: 0 Total transferred: 16914300 bytes HTML transferred: 16895200 bytes Requests per second: 15.95 [#/sec] (mean) Time per request: 62.700 [ms] (mean) Time per request: 62.700 [ms] (mean, across all concurrent requests) Transfer rate: 2634.44 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 1 Processing: 52 62 8.4 60 95 Waiting: 51 61 8.3 59 93 Total: 52 63 8.4 60 95
Percentage of the requests served within a certain time (ms) 50% 60 66% 62 75% 64 80% 65 90% 74 95% 86 98% 94 99% 95 100% 95 (longest request)
Normalized object cache
By default, Apollo tries to use the shape of a query itself as a cache so that disparate parts of the app can take advantage of data fetched elsewhere (e.g. think of the use case where User data is grabbed in <UserModal /> and also in <WithUserContext />). This is probably fine in most cases, but in cases where we know this may not work we can manually create an object cache key, more info here.
The difference here with Relay is that the object ID is the default for Relay queries (which is why there’s Relay influence in the schema on the GraphQL server, which wouldn’t be necessary for Apollo). We could chose to continue using the Relay influenced schema and reuse the Relay-ID, or define our own object IDs client side depending on the use cases.
The difference here is probably inconsequential, but worth noting.
Mutation queries update store state
Mutation queries in Apollo also update the store state, so there’s no explicit “fat query” required to keep the UI consistent when doing a mutation query as is the case with Relay (although the Apollo docs do recommend to include fields that could be affected by the mutation in the query). Relay2 is supposed to solve this problem better but not sure what details are available or how that will work quite yet.
The difference here may be two sides of the same coin though. We haven’t written many (read: any) mutations in our app yet, so we’re not sure of the subtleties.
Supports decorators out of the box
Apollo provides support for the @decorator() syntax out of the box. I’m a big fan of decorators. Although to be fair, adding it ourselves for Relay was easy enough, but it meant that depending on if a developer was writing a React class or a stateless functional component, they’d want to import two different things for Relay (our @withRelay decorator or react-relayrespectively), which could be confusing.
Prefetch out of the box
This is a real use case for us, and I was quite impressed to see support for pre-fetching supported out of the box and how easy it is to take advantage ofwith Apollo.
Prefetching is just a function call, which means we can do it virtually anywhere/at any time that it makes sense to. E.g. we could prefetch common user flows immediately after mounting on the client, or when the user hovers over a certain link, etc. It’s not clear how the same can be achieved in Relay.
PropType validation
While we’ve previously decided we do not need PropType validation on Relay-backed proptypes (since we deemed them redundant with the GraphQL schema backing), Apollo has a graphql-anywhere package that provides proptype validation based on the GQL query automatically. This means developers do not need to manually write these proptypes and we can take advantage of them when sharing GQL-backed components. This package maybe(?) useable with Relay as well, so it might be a push here.
Preact alias, hard dependencies on some libraries
By removing isomorphic-relay et al this reopens the door for using the Preact alias for React. We had initially tried out a handful of things to see if we could squeeze out some performance wins preemptively, but this was one of those things we were unable to do because of the isomorphic tools that we needed to support Relay.
We’re also unable to update to the new react-router v4 because of the hard dependencies the isomorphic tools have on how RRv3 works. Not a huge deal since the current routing solution works, but it’s certainly a concern since as the community progresses, we wouldn’t want to pin to an older version of a core library we rely on for support reasons, documentation, etc.
Apollo devtool
Apollo also has a really nice Chrome devtool extension, which provides insight into the queries executed by the app, the data cache and even a Graphiql instance. I believe there is a Relay tab in the React devtools but I could not get it to work locally for whatever reason.
Persisted Queries
The Apollo ecosystem also adds support for Persisted Queries.
This has a few benefits, including:
Whitelisting queries
Minimize bandwidth usage between client/server (since query IDs are transferred over the wire instead of the entire query)
The overhead here is in how we synchronize this with the server, how we have our GraphQL server understand and ingest this statically provided information at app build-time.
Read more about persisted queries here: Persisted Queries And here’s the persisted query module: persistgraphql
There’s an RFC to add something similar for Relay.
Native teams are exploring Apollo
Our Native teams are also looking into using Apollo (iOS and Android teams). They have mentioned already contributing caching strategies back into apollo-client which we theoretically should be able to take advantage of. The main benefit here for us is to be in the same data-fetching ecosystem as other teams across the org.
Drawbacks
It’s not all rosy for Apollo, of course. With everything, there are drawbacks and tradeoffs, some listed below.
A tangential ecosystem
The drawback with using Apollo is that it’s a library not written by Facebook. So there may be some challenges when either Apollo or Facebook update their APIs as the two projects progress.
Static analysis done differently
Currently, the way Apollo does static analysis at build time is to define queries in separate .gqlor .graphql files and then use the webpack loader provided by graphql-tag/loader. There’s pros and cons to this approach.
The Apollo team is also working on babel-plugin-graphql-tag which will function similar to Relay’s. The issue to track this work is here: apollographql/graphql-tag#31
One thing to note is that there is a trade-off with doing this at build time. At build-time means a potentially larger JS bundle which can negatively impact TTP/TTI. And of course doing it at runtime can hamper overall page performance. Ideally we’d find the sweet spot and figure out the best way to do it, but it certainly would be nice to have the option either way.
What’s Next?
Since it seems Relay2 is “right around the corner” we thought it best to see what that looks like before deciding on making the switch or not. One thing to note, however, is that Relay2 will still not support SSR out of the box. So the consideration will be on whether Relay teams’ goal of making it “easy for the community to build upon [Relay’s API] to make a server rendering module for Relay” pans out or not.
TL;DR
If you’re building an app that needs to server-side render and talks to a GraphQL server, strongly consider Apollo before jumping straight into Relay; the complexity otherwise is considerable. If SSR is not important to you, Relay is probably a good choice here since you’ll be staying within the “Facebook ecosystem” of tools and modules.
Jeremy Gayed is a lead engineer at The New York Times. He’s working on building out the next generation web platform for various teams at The Times.
A Look at Apollo, From a Relay Perspective was originally published in Times Open on Medium, where people are continuing the conversation by highlighting and responding to this story.
from Times Open - Medium http://ift.tt/2s2ELnl via IFTTT
0 notes