Popping Library Browse Tags Search

Over the Electric Grapevine

I hang my jacket up on my coat rack and sigh as I walk over to the blinds in my apartment and draw them closed. Ripping the shitty khakis and burgundy polo shirt off, I slide a plain white t-shirt and pajama pants over my svelte form. As I pull them up to my waist, my bottom right hand brushes my underpants. I feel a bit of a rush.

Yeah, I could stand to blow off some steam.

I go to the minifridge under my desk and pull out a couple cans of cheap shit, extra carbonated and begin drinking. I sigh as I feel the beer release its bubbles into me, my member sticking a bit up at attention. I stare at myself in the black monitor, lit from behind by cheap color LEDs. My face is a bit flush, and my antennae were twitching involuntarily. I lean back. I had a bit of a potbelly from chugging two. My bottom pair of hands slides to its surface and I feel the heat return. My wings perk up.

Unthinkingly, my top arms go to my keyboard and the shitty installation of LiveCam auto-opens. Though I’d curse it nine times out of 10, I immediately click through and begin scrolling through my recent NSFW streamers. My mouse hovers over one in particular.

Expressa is having a donation night. Oh hell yeah.

It starts in 5 minutes so I pull two more beers out. I chug half the third, before I decide to start pacing myself. I check to see what the energy of the chat is like.

Exqubex_119: DOUBLE STREAM DOUBLE STRESM

jthransis: Ooh, we just had one yesterday. Hard up on cash, balloon?

azrBee Donated $100.00 with the message “I hope we get :xprOverstuff: today :xprWoo:”

I smile at the degens frothing each other up in the chat and take a few more gulps of beer, feeling them hit my stomach and assert their pressure on its surface. My fingers train across my front under my shirt as I set out soft, joyous sounds between mouthfuls.

frxjthkck: can someone explain this here in the text chat ?

GutGrabber_49: How did you get red bold text boomer :lmao:

KSBTDF donated $25.00

jthransis: [message removed]

[MOD] glow_in_the_starc: Please keep hornyposting sensible @jthransis

As I finish up the third, open the fourth, and pull out the fifth, I finally realize that I barely even have the energy to not jack off till the stream starts. I abandon all pretense of holding back and begin to chug the fourth. I drink from my top right hand and hold the other two in my bottom left and right. My free hand feels my belly swell in real time under my smooth, firm fingertips. Whenever I finish a can, I rotate the cans counterclockwise and my hands swap duties. Eventually, I get to the end of the 6-can pack and let out a heavy belch and a grunt.

Pushing the six empty cans into my plastic can bag, I lean all the way back in my chair and place all my hands again on my swell. As my hands tease the pressure in my soccer-ball gut, I can’t help but moan out my feelings on the matter.

OOOURP-nghh HRRRP-Nghhhnhh~”

I hear the stream startup sound and switch my attention to the new-in-camera snow leopard. Her signature red and pink cat keyhole bra morphs around a bouncing pair as she shoots her hand in the air.

“Good evening everyone, yes, surprise dono stream! I was feeling kinda lonely and bothered, so I figured I’d let you lovelies bug me on it. And it looks like you really wanted to get me, huh. $560 dollars in the pre-stream, I’ll be enormous dears~.”

As I cradle my belly with my bottom two hands I type away a horny message of my own to join the upswelling in chat.

goth_ball_12: I hope you don’t mind me joining in at home :xprSmug:~

tacons: I WANNA SEE STRETCHMARKS :xprUhOh: :explosion_1:

frxjthkck: goth_ball_12 you serious haha

GutGrabber_49: Dumbfuck you gotta put the @ in front @frxjthkck

frxjthkck: @GutGrabber_49 your first

[MOD] glow_in_the_starc: Hold on @Expressa I have to join and reconnect. I can't delete messages for some reason. Can some other mod deal with the above interaction, I think it counts as targeted harassment. What rank is that?

I lose sight of the crowds as I feel the alcohol begin to really take over. Hiccups begin to pierce my soft groans as my belly swells gently.

“Ma-ahhn~ I rea-AOOURP-hic jeez, I really over-hic did it, huh?” I manage to choke out to myself through the protests of my belly.

I turn to the stream again. It looks like the explanation for the new people is over and the plug hose is in. Time for fun.

I watch her push the big red button on her desk. Her overeager under-desk pump instantly shoots a jet of high pressure air up into her, eliciting a grunt as she barely has time to adjust to the beachball-ization of her belly. She chuckles as the speed goes down to a normal level.

“Oh dear, you guys are gonna wreck me tonight, huh? Might have an impromptu emergency shutoff test~”

My favorite part of Expressa streams is how her and the crowd form a symbiotic organism. She teases and prods the crowd, the crowd swells with excitement, the donations roll in, and she swells with air. It’s truly a work of art.

She coos and sighs as her white underbelly grows taut with pleasure. Her breasts begin to perk up with the residual air from her midsection. I watch as she pushes her chair back from the desk a bit more. It was clear her matching cat keyhole underpants were digging into more ass than usual. The bottom cat keyhole of her outfit previewed a tuft of white pubic hair over a softly bulging pelvis, eager to meet her belly soon.

I briefly feel a pang of envy. I curse my shyness for sticking me at a department store and not inflating in front of thousands. But I‘m too horny to dwell on it for long and I begin pawing at my crotch with my bottom right. Deftly trading off to my top right, the bottom pair of hands slide my bottoms over my bottom, revealing an eager new thing to focus on.

My bottom right hand reaches for the lotion and I collect a sensible dollop, and then begin stroking up and down my length. I work my belly with my bottom left and top right, and I pick my top left up to a nipple and tweak it gently. The combination produces a lascivious involuntary combination of hiccups and burps, squeaks and moans. Maybe I should be a performer. I’m already playing an instrument. I chuckle for a bit to myself, then am stifled by another hiccup.

Expressa shares in the revelry of being swollen from across the screen. Her significant personality experience keeps her giggling and talking while her belly begins to reach small medicine ball territory. However, after receiving $1500 in air and anticipating $1000 more, her utterances were beginning to get less coherent and more lustful.

“God, I can’t believe you just said that to me, Lex, you horny bitch! I bet you wouldn’t last three minutes humping it! God, just thinking about your mess glistening down my front, hnnf~, I might, hooh this is a lot of air guys, fuck, nnhg~!”

The chat ate this progression up.

jthransis: Call me babe 555-0136 or get in VC :xprAhhn:

[MOD] glow_in_the_starc: someone jelp me gona pop

jthransis Donated $50.00 with the message “555-0136 call me”

frxjthkck: @glow_in_the_starc should have stopped bugging me scraps

I throw my head back and sigh a heavy sigh, soaking in the energy of the crowd as though some of it were mine. My hands continue their duties at an increasing pace as I hear air-gulping gasps from my monitor speakers. My own beach ball gut tenses and deforms in rapture under my arms as I join in the uncouth noises. My idol and I were both losing the war to our desires.

I hear it over my own noise. A long, keening, grunting moan. My eyes dart down to the screen and see her fingers at her bottom entrance. Slick with herself, tongue lolling. My wings pump outward again. My intensity initially picks up, but then I stop, confused.

The pump had stopped working, despite there being over $1200 remaining in the queue. Expressa looks down at the button.

“Did the API break again?” She pouts as she looks down at the cheaply-encased button.

“No that was just me settin’ the stage up for me.”

The voice commands my eyes to the corner of the room. Standing there by an open window is a humanoid beagle, tall but hunched. The over-exaggerated lean-in of a stage actor causes a deep purple, over-decorated top hat to begin sliding off. With a practiced lurch-forward, the inertia from his neck craning backward rights his hat. I boggle silently as he traipses like a rubber-hose character over to the shocked, silent streamer.

Crashbox stops next to her and speaks.

“See this ‘internet’ business it’s new as day is. Gerry said it would do the boring parts of my job for me so I let him handle it all. But he never told me you could go this nuts with it.” His matter-of-fact lilt hides basset, growling apex-predator notes.

I blink hard through the star-struck daze. All I can do is let out a confused hiccup as Crashbox places a clawed hand firmly on Express and firmly pushes her away from the streaming setup. She squeaks at the contact and unwilling movement.

“And the money goes through the air from the losers at home into you?” The words fell out of his mouth like a stream of consciousness. They blend into tangled rhythmic strings, nearly effortless but clearly intentional.

Expressa tempered her shock enough to half-yell a question.

“What are you doing in my house?!”

He immediately tangents.

“Wait a minute strangers have paid you $3200 to this point to stick a hose in your ass and jill off in the interweb public eyeball? What do they not have a friend to fuck with? I did so much good strong work making a city of marble for you degens and you wanna stay indoors?”

I flinch. That was maybe a bit too close to home. I’m tired, what do you want? I think.

Expressa spoke from behind the intruder. “Ok, guys apparently there’s a surprise guest on this stream so say hello to… Crashbox.”

She peeks out from behind the large cape-like purple jacket and the beagle in it. Her confused expression suggests a famous rockstar crawling in her apartment window is not normal.

Crashbox begins fucking around with the stream setup with a look like he’s trying and failing to understand something. I watch as he tries to poke the screen a couple of times. I hear a couple computer beeps as his droopy ears accidentally depress a few keys. Eventually, he pounds on the desk a couple times before backing up.

“God hot damn this stupid fucking screen display sucks I can’t even touch the buttons like the touch screens!” He exasperates. Then he pulls out a pager of some kind, angrily tapping at the keypad till he nods. He hucked it into one of his inside coat pockets seemingly at random.

He turns back to the screen and menaces. “But now I’m buying the equipment so pucker up.” I swear he looked directly into my eyes as he grins.

“Buying what equipment?” Expressa grunts in frustrated confusion.

A message pops up on the stream. My jaw drops. Her eyes widen.

frxjthkck Donated $100,000.00 with the message “buying your soul <3”

Of course, the pump did not kick into action immediately. Crashbox wheels around and speaks outside of the camera shot for a moment.

“I just learned 25 minutes ago upon eyeing this interstream that I’m breaking into a new market and I want you. Of course I can’t un-donate that money so I hope you choose to make some good use of it and accept my offer. Or, to put it simply…”

He chuckles and walks around the back of the gaming chair, emergency start/stop button in hand. He pushes Expressa back up to her desk and places it on her stretched out middle. Then he walks around her back and speaks over her shoulder directly into her left ear.

“Wanna Name? Press the button.”

I feel my dick twitch again. There it was, a button that would at least send her to the hospital. I reach down to my own gut and rub, thinking about what I’d do in that scenario. If the biggest celebrity in town just offered me a contract and a deadly amount of money… I can only huff softly as I send my hands back to my middle.

Expressa had watched the button for about 20 seconds at that point. I can only imagine what she was thinking. No matter how unorthodox the situation was, Crashbox noticed her. That was making it. All she has to do is take in more air than she’d ever hope to last through.

She reaches over and presses the button.

The expansion is instant. She reached down to push the button one second, and her arm was too bloated to reach it the very next second. She shoots out of her gaming chair and falls backwards, eagerly-stained panties taking center stage. The sensation of a body warping out to its spherical state, one typically enjoyed slowly, was thrust upon poor Expressa all at once. Her bray of conflicted emotions lights my speakers up as the wet spot on her ass slowly spreads.

I could only scream “YES!” as I watch her midsection rocket out. My drunken fervor drowns out any of the complaints she made as I return to my self-pleasure with increased velocity. I imagine the sensations of my body straining to contain itself. Straining as you become trapped in yourself. The creaking from all the abuse. I’d never experienced it on my own for safety reasons, but a moth could dream. Chat certainly concurred that it was pretty great.

tacons: VINDICATED :explosion_1: :explosion_1: :explosion_1:

KSBTDF donated $25.00

RGExeter: POP STREAM :xprGlare: POP STREAM :xprGlare: NOT A DRILL

Stream Chat is on an :xprAhhn: COMBO x7

I jump at a sudden plastic POP noise. Her custom-made stretchy bra rockets over her midsection and drapes lazily onto her swollen body. Chat and I practically screamed. The progression was otherworldly. I look on, practically gasping at the convergence of emotion as the ruthless pump machine ticks down the clock on her hide. Initially twitching at every new sensation, the toes at the end of her foot paws fully extended, spread in what would certainly be a pose of pure pleasure if she wasn’t an orb. A steady chorus of mewls and moans crawl out of her headphone mic as the air assault continues unabated.

With a SNAP the panties also gave up the ghost, revealing a delightfully quivering pair of bottom lips. Rivulets of fluid, now unabsorbed by the undergarment, traced down her swollen ass, eliciting pleasurable shivering noises. I can only imagine how sensitive you have to be for a trail of liquid to be so enticing. I begin to pump my dick faster.

Suddenly, there was a straining, creaking noise and a grunt. Immediately, the air snaps off again. Gently swaying and softly groaning, the stretch marks on her surface cry that she’s full.

There’s a slow clapping as Crashbox walks around the expanse to the front. He gingerly tugs on the buttplug still in Expressa and comments “Good job.” Then his eyes drift over the chat, clearly looking for something or someone. He nods and raises his eyebrows with a neutral expression as he looks at the engagement numbers tick up in real time. Then he turns.

He drawls casually of brutally shameful, lascivious things just as he might shoot the breeze with a stranger.

“I was gonna burst you anyways but I wanna hear you say you want it.”

My heart skips a beat as he provokes Expressa like that. What would she say? What would I say?

“...push the button again…”

The needy groan from behind her body was all I needed to hear. She would. I probably would too.

Crashbox goes out of frame for a bit, returns with the button, and then looks at the stream before pressing definitively down on the center of it.

The remainder of the donations for the night start assailing Expressa’s reddening skin. The groans coming from her suggest that she’s losing lucidity as the creaking really begins in earnest. Thin rivulets of her own juices leak from her vibrating form down her underside, around the plug, mingling with a sheen of sweat as they went. I watch as the pressure slowly forces the claws on her toes out of their sheathes, air digging into every corner of her body.

At this point I’m close to my own sort of release. The cavalcade of moans and burps escaping my gullet matched the intensity of the leathery noises coming from my speaker. I feel and hear us careen off the edge simultaneously.

First a tense, pulling, tearing noise and then an overwhelmed ecstatic moan, and finally Expressa’s solo streaming career was ended with a catastrophic

BOOM

I breathe hard. I can feel a trail painting the underside of my belly.

Crashbox looks up from his pager and nods at the scraps in the air. He walks over in his jilted sway and then snaps his hands together in the air where she once was, wicked like two jaws. A soft glow escapes from his hands as he chuckles and shoves them into one of his inside pockets. He then does jazz hands like a stage magician, emphasizing that they’re now completely empty.

“Now Gerry has explained to me how this ‘internet’ shit works and I’m coming for my marks. First stop is where that ‘gut grabber’ fellow is.”

I hiccup as the surprises keep coming. Sure, Crashbox had magic, yeah. But he couldn’t just…

My objection was answered as Crashbox’s form dissipates. The stream goes dark for a couple of seconds before a new room in a different place pops up on my monitor. On the other side, a chubby looking black-and-white spaniel man, only in boxer-briefs. His nervous eyes dart to chat, then over the rest of his room.

“Dog-eat-dog world out there huh?” The rockstar growls as he walks up to his left side and traces a black painted claw across his next victim’s collarbone. The lesser dog gulps.

“Hey hold on, OK wait you aren’t really gonna-”

Crashbox leans in slowly as he mutters his rationale. “I’m absolutely gonna cause I need material for a project I came up with as I was texting Gerry. GERRY!!!” He shoots his hands in the air with a yell and then hugs himself, wiggling. ”Oh god bless Gerry he always gets the creative juices pumping!”

Crashbox’s laugh pours from my speakers. I finally snap myself out of my stupor. The alcohol had done numbers on my thought process. I gurgle ruefully, feeling my nerves rise.

If he could go to anyone in this stream… but then of course there’s no way he would know about me. I hadn’t…

I look at my chat history. I sent only one message this stream and I wasn’t tagged by him. I sigh. There was still a chance he could choose to grab me randomly, but-

My tunnel of thought abruptly stops as I hear a leathery groan from my speakers. Crashbox’s arms and legs had split halfway down the middle into a tangle of green garden hoses. One was lodged in the spaniel’s mouth and one snaked back around behind him. One was caressing the poor pup’s at-attention member. The rest were squeezing and compressing every surface of his waterlogged body. He lets out a grunt of discomfort as the water whorls and attacks every section of his overstressed insides, pushing his arms and legs out like a starfish.

“Well pal that’s the last time those arms are gonna be grabbing any guts.” Crashbox laughs high and piercing like a knife. The spaniel could only buck, moan, and whine in response.

“Man you’re a terrible bad conversationalist. No wonder you stay indoors. I need to go collect more now so buh-bye.”

Crashbox’s hose appendages straighten out as grid lines across the tortured surface of GutGrabber and begin to squeeze. I watch as square sections of his body as well as his eyes bulge out under the ratcheting tension. A discomforted moan climbs up to a muffled scream as his failing body plays him out. Suddenly, Crashbox’s hoses squeeze in an extra inch as-

BOOOSH

The camera is instantly covered in a blurry layer of water. Miraculously, the stream stays up. The camera is dark for a second as Crashbox’s hand wipes away the water, revealing a singular wicked yellow eye.

“This thing looks like the camera on my phone this is the camera right?”

I can barely catch up with my drunk thoughts. What the fuck is happening right now? I look away from the stream down to chat and place my bottom left gingerly on my midsection..

SragoDrago: Yo CB me and my gf are watching from the party hmu if you wanna 3 later

Exqubex_119: DOUBLE KILL!!! :xprAhhn: :explosion_1: :explosion_1:

Tatiana_Pleasure: FREE S/E/X 24/7 S.E.X. DA..T..ING 4tvw35yotm9.to

azrBee: Shame, he was cute. I hope I’m not next~

I shake my head and look to my lap to think. So he can pick random people on the stream and get them. I could screen record the stream for later, but then there’s an off chance he gets me. I could leave the stream running and take a walk. I’d have to get pretty far. Not a fantastic value proposition with the types that walk around on a Friday night. Maybe I just shut it off. Yeah-

“Alright now where’s that goth ball fucker?”

Oh please fucking God no.

I feel a firm hand on my right shoulder, its claws digging in maybe a little bit too much.

“OH you’re a MOTH! HAHAHA that’s fucking hilarious moth with the goth makeup I didn’t even get that pun cause I never seen your bitch ass in my life.”

I look up at the stream. I see a horrified moth wearing messy makeup he forgot to wash off. Hovering offset behind that moth are a pair of yellow eyes and a jaw of bright, almost fluorescent teeth. The teeth lean in, revealing some snout around them.

“And it looks like you were pre-gaming too.” He growls directly behind my ear in a very red bold manner. It’s impossible to describe, his speech is just redder bolder than mine on some fundamental level.

I start trying to make excuses. “I’m sorry I didn’t I mean I can’t please I-”

“You said you’d be joining the streamer tonight and the streamer is dead so that means dead.” He interrupts me, then motions to the chat.

I find my only message for the night again. Plain as day it said “I hope you don’t mind me joining in at home”.

I missed Crashbox’s non-@ reply the first time. I was fucked basically the second I turned on the stream.

“God damn it.” I sigh. I can feel a tear involuntarily run down my cheek. A sob. Then an extra one.

“...now I understand why these things are so popular. It’s because you’re a coward.”

Crashbox’s words were like knives in the back of my neck just as his claws are knives in my shoulder. He continues.

“I do fantastic work making this city a fun amount of dangerous for you fuckers. You think that you can engage in fun without me and my most faithful goons if you do it anonymously over the internet. NOT HAPPENING!!!”

I bring my top left and right up to my ear holes. “I can’t do this, please-”

“I haven’t bothered to break into the cowardly demographic.”

I look up at him. He has an aluminum baseball bat. I have no idea where he got the aluminum baseball bat. I yelp at its shining surface in my poorly lit room. He begins.

“You’re gonna help me. You’re gonna help me break the internet open like a fortune cookie and scoop its unclaimed paper out into my pockets. Cause you’re like a decade younger than me you know how interweb cowards move. How they think and act. You’re gonna help me hunt them down. I will abide by no such people in my domain and they will be repurposed just like you.”

I can only gape in confusion. “What do you-”

The aluminum baseball bat was suddenly a can in his hand. I have no idea when it stopped being one thing and started being another, but by the time it thudded down in front of me on my desk, it was a can of my preferred brand. The extra extra carbonated kind, with the health warnings on it. He growls in a reserved but forceful deadpan.

“Drink it or it will be a bat again.”

I hiccup in response and then sit there breathing heavily for a bit. All four of my arms rest on my middle. Do I really wanna pop live in front of thousands of people? Would I prefer to just be brained with a baseball bat by a demigod?

I look down at the chat.

Exqubex_119: THE TRIPLE??? :xprWow: (rip queen)

jthransis: Nevermind I found a new one 555-0136 :lips:

Tatiana_Pleasure: [message removed]

[MOD] BrainserGod: What the fuck happened here?

SragoDrago: Ay when you come over to ours bring the moth. My GF says she wants to ‘peg him till he cant cum anymore’. So basically she wants to buy him off you

KSBTDF Donated $25.00 with the message “I’d ask you to DM me your number but…”

I let out a single chuckle and hear it come back to me through my speakers. All this time I could have…

I pop the can top and pick it up to my lips. I toss it to the ground, all the way gone in less than 10 seconds. I shoot the now empty hand back to my belly. My one lubed hand shoots back to my dick and grabs it.

Immediately I feel the wooziness ratchet up. The fingers on my resting hands spread out as the violent, sloshing roil pushes my insides outward. I can only grunt and groan and burp heinously as the flood comes for my torso next, quickly rounding out my back and puffing up my arms. I try to pump harder while I still can but sure enough my arm slides off with a frustrated grunt and I’m forced to look at myself swelling out with no release. My wings are straight back at this point, arcing over my office chair.

CRACK

Well, there goes that cheap office chair. I begin to fall backwards but am propped up from behind by a pair of hands. I squeak as the claws push in and I begin to roll forward. My midsection squeaks like sweaty rubber as it hits my desk and slides down a couple extra inches. I am firmly wedged between the floor and the desk. My breath hitches involuntarily as I peer out with half-closed eyes at my monitor, hiccuping intermittently. The sweaty sheen. The tongue lolling as I breathe hard. The blushing on both sides of my face. Damn, I look ridiculous.

There’s another thunk. I weakly look down, cross-eyed at the desk. Another can. I hear him speaking, his voice vibrates through my entire body.

“I’ll finish you off if you finish this off.”

I can barely nod, but he gets the message. He pops the top and tilts it back into me and I chug as hard as my tortured guts can stand. The fervor in them kicks up again and I moan through the can. Eventually, he pulls it away from my lips. I let out another burp followed by a long groan. I look at my monitor and see him do jazz hands again. This time, a dozen or more ephemeral hands form around him, and then smoothly glide over to me.

I feel a soft hand-shaped impact on my side and gasp. Another and another. All around me they grab on and begin to smoothly drift over my surface. One grabs my dick aggressively. I squeak, then again as I feel a couple of fingers shoot up inside me. I swear I feel a claw up in there for a split second, but then a soft fingertip hits the spot and I involuntarily buck and whine. Oh fuck yeah.

It’s really beginning to get hard to think. The way that the desk is cramming into my midsection. The hands all over me going to town. The absolutely savage treatment my backside is getting. Fuck, it’s hard to even breathe anymore through the hiccups.

“OH MY GOD! You’re into this shit, and also you’re a MOTH! A goth moth ball shaped like a mothball oh you’re definitely keeping that name how did I not come up with that I could have…”

Crashbox’s voice trails off into the back of my mind as my eyes begin to twist inwards and upwards. My cheeks puff out, sealing me shut. Only tighter from here. The hands on my surface and the fizzing behemoth inside are pressing my skin into a tighter and tighter position and it protests this with desperate creaking.

I can feel each bubble like a pinprick on the inside of me, each finger gliding like a thunderstorm, the hand on my member like an irresistible drumbeat. Completely diffuse with sensations which would individually paralyze my drunk mind but together cause it to scream with ecstasy. I’m not even bucking with pleasure anymore, I’m vibrating.

I can feel myself finally getting closer as Crashbox continues to blather about something. The pumping of the spectral hand and the kneading of those spectral fingers is slowing, pacing out my ascent to rapture. Of course, the fizzing inside is falling off, producing a double-edged effect. I squeak and grunt in frustration, or at least I think I do. The noises I’m making would almost probably be really dumb if I could focus on anything but how close I am. The hands pump again.

Again.

One more time.

I scream through puffy cheeks as I finally feel it. Like a lance from orbit, careening directly into my core, diffusing heat across every inch of me. As the orgasm slays me my mind boils. All the muscles in my body flex under the sensation. Tighter, TIGHTER!

I feel my body warp out to one side. I let out a hitched gasp-

BLOOOOSH!

The last thing I remember before blacking out is a pair of hands clamping over me like jaws.

Tags

Sources

www.furaffinity.net