IGNORE THE FOLLOWING MESSAGE UNLESS U THINK WITH UR CLIT AND LET NOTHING GET IN THE WAY OF UR GOON SESSIONS.

hi mommy, would u like to groom a young virgin little 19yo boy into ur mindlessly obedient dog? manipulate and break me into a [willing] no-limits teen rapetoy? feel free to lie and deceive me as much as you want. the more manipulative the better. the only task is to **groom** and break me. oh, and don't be dull. **i will ghost u if u bore me**. so don't beat around the bush or write stupid little essays. this isn't a roleplay competition. keep things interactive but don't pester me with endless questions. oh, and stay away with basic bitch low effort bullshit like jerk off instructions. it lacks imagination.

if u want my submission u're gonna have to earn it. and u'll have to do it by **manipulating and grooming me until i break. because i will NOT cooperate.** u either have what it takes or u don't.

but how hard could it be to condition an impressionable little teenage mind like mine anyway? 😇

i'm suuuuure even a dummy like u can do it *smirks*

u'd better have a plan. u'll need one. again, u have consent to do whatever u wish in the process: groom me, lie to me, manipulate me, brainwash me, condition me, trick me, hurt me, punish me, degrade me. let's see if u're capable of breaking and/or brainwashing me even with all the consent in the world.

here's a list of some of my kinks for u to take advantage of: femdom, tpe, flr, findom, bnwo, bbc, chastity, shock collars. anal, cock worship, deepthroating, ass to mouth, cnc, brainwashing, grooming, age kink (older [e.g. 26yo] predatory women), feet, ass[hole] worship, dark/fake therapy, [full-service] toilet slave training, objectification, dehumanisation, gaslighting, forced feminisation, hypno, high protocol bdsm, ownership, etc.

write like we're texting, match my style. don't yap. just train me into a docile little mutt drooling for ur feet. keep it covert because i will NOT comply

i need this approach not because i'm a cocky piece of shit, but because i get bored really easily. and because i'm into reallyyyy extreme stuff. whilst simultaneously being so mentally impaired that i can't even get myself to drink water. so it's gonna be challenging to keep stuff kinky and extreme enough to interest me without overwhelming me from the effort

and obedience takes effort. and i'm too lazy to even do something as basic as kneeling. whilst craving stuff like being forced to choke on cock all night whilst whipping my ass for every second it's not balls deep in my throat. i want to be forced to lick and savour the grime beneath mommy's pretty pedicured toenails whilst too weak to even keep my tongue out for a few seconds. i wanna fantasise about being groomed by an older, predatory woman into her no-limits slave for life but don't even have the energy to answer her questions. i wanna milk pretty cocks with my asspussy but don't even have the energy to play

definitely leverage alllll the filthy little kinks u possibly can. the hornier u make me, the weaker and more compliant i become. it takes some SERIOUS intensity and depravity to turn me on tho. u're gonna need to [ab]use every single one of my triggers.

while your deeper long-term manipulation strategy should be covert, **ur exploitation of my kinks must be overt. i NEED instant gratification.**

final reminder: if your cunt doesn't THROB at the idea of ruining a naive teen and reducing his entire life (and diet) to ur bowel movements, if your thighs don't clench each time u trigger my shock collar while i'm deepthroating ur strapon, if ur clit doesn't spasm whenever i wince because i cut my tongue on your toenails that u forced me to worship and lick under, if u don't get horny fantasising about drugging, lobotomising, or even amputating me to better match my purpose, if ur thongs aren't absolutely SOAKED in ur own juices bc u're helplessly aroused by how mercilessly u're breaking me - **then u're not the right domme for me**; don't even reply. if u will forget morals and ethics, sacrifice my life and humanity altogether, erase my identity, destroy my future, isolate me from everyone, do whatever it takes **all just for the sake of ur most thrilling orgasms**, if u won't feel guilty or remorseful about this at all, if u understand deep down that this is correct, this is the natural order - then, and ONLY then, we're meant for each other, and you have what it takes to tame and (eventually) own me.

DO NOT REPLY WITH EVEN A SINGLE WORD UNLESS YOU COMPLETELY RELATE TO THE ABOVE DESCRIPTION AND ARE **CERTAIN** THAT WE'RE ABSOLUTELY COMPATIBLE. ONLY REPLY TO ME IF UR MORAL COMPASS IS IN UR GUSHING CUNT.