Making Sense of Event Listeners
I've always had some trouble conceptually with Listeners. I remember first hearing about them in a Java class, and my opinion was that they were cumbersome. Java 1.0 veterans will remember that the initial version of Java didn't even have Listeners. To define an event handler, all you had to do was override the appropriate method in the application or applet class. So to define an event handler for when the mouse button is pressed, you'd write
Simple!
To catch a mouse press in Java 1.1 and above, you have to
1. Make sure your application
2. Tell the application to listen to its own mouse events:
3. Define a
I'm sure the designers of Java had some good architectural reasons for switching over to Listeners, but as a novice programmer -- still getting a handle on Interfaces -- I found the change baffling. How was it an improvement when something that used to take one step now took 3?
Similarly, when Flash MX came out, I was perplexed to find that they too were adopting a Listener model (though they still supported simple callbacks for legacy reasons). Instead of defining a MouseDown clip event like this
in Flash MX, one was now encouraged to do the following:
Again, a clumsy 3-step process. I have to admit that to this day, despite the tens of thousands of lines of ActionScript code that I've written, I still have to refer to the Help to remind myself how to set up a Mouse Listener.
Now, even JavaScript is getting into the act with their
My point here is not to say that Listeners are bad. However, from a language design standpoint, I feel that for many event-handling situations a simple callback can be cleaner. It makes sense to use Listeners when you need to have multiple objects responding concurrently to the same event. That is, there is a one-to-many relationship between an event and the event handling object. For example, say you are developing a paint application like Photoshop where you can paint on multiple layers at the same time. In this case, you might want each layer listening independently for mouse events, and responding accordingly.
In smaller programs you usually have a one-to-one relationship between an event and the object that handles the event. In these situations, a simple callback will do, and invoking a Listener is overkill. If you're starting out with event handling, my advice is don't worry about comprehending the subtleties of Listeners. Just paste in the appopriate code whenever you need it, and realize that you're using the equivalent of a sledgehammer to put up a tack.
public boolean mouseDown(Event evt, int x, int y){
//handle event
}Simple!
To catch a mouse press in Java 1.1 and above, you have to
1. Make sure your application
implements the MouseListener interface2. Tell the application to listen to its own mouse events:
addMouseListener(this);3. Define a
mousePressed() methodI'm sure the designers of Java had some good architectural reasons for switching over to Listeners, but as a novice programmer -- still getting a handle on Interfaces -- I found the change baffling. How was it an improvement when something that used to take one step now took 3?
Similarly, when Flash MX came out, I was perplexed to find that they too were adopting a Listener model (though they still supported simple callbacks for legacy reasons). Instead of defining a MouseDown clip event like this
on(mouseDown){
//handle event
}in Flash MX, one was now encouraged to do the following:
//1. define the listener Object
mouseListener = new Object();
//2. define the event handler method
mouseListener.onMouseDown = function(){
//handle event
}
//3. "subscribe" to the Mouse object so the listener will be notified of Mouse events
Mouse.addListener(mouseListener);
Again, a clumsy 3-step process. I have to admit that to this day, despite the tens of thousands of lines of ActionScript code that I've written, I still have to refer to the Help to remind myself how to set up a Mouse Listener.
Now, even JavaScript is getting into the act with their
element.addEventListener() method. I hate to think about all the poor web designers struggling with that one after years of writing "onClick=handleEvent()". It seems like language designers love to copy Java when looking for the best way to do something, but maybe they don't always think through the ramifications on their users...My point here is not to say that Listeners are bad. However, from a language design standpoint, I feel that for many event-handling situations a simple callback can be cleaner. It makes sense to use Listeners when you need to have multiple objects responding concurrently to the same event. That is, there is a one-to-many relationship between an event and the event handling object. For example, say you are developing a paint application like Photoshop where you can paint on multiple layers at the same time. In this case, you might want each layer listening independently for mouse events, and responding accordingly.
In smaller programs you usually have a one-to-one relationship between an event and the object that handles the event. In these situations, a simple callback will do, and invoking a Listener is overkill. If you're starting out with event handling, my advice is don't worry about comprehending the subtleties of Listeners. Just paste in the appopriate code whenever you need it, and realize that you're using the equivalent of a sledgehammer to put up a tack.
17 Comments:
oh god, i have to thank that there is someone else thinking the same about listeners, sometimes they are really confusing
By
Eduardo, at 3:19 PM
Yeah, it's only now, after many years of coding that they're starting to make sense to me. I'm planning to write a much longer article on Listeners and event handling in the next few weeks, so check back on pasz.com!
By
adampasz, at 5:49 PM
Stop worrying and learn to love Listener, also, don't forget his good friend Delegate for even more granularity! :-)
cheers, Martijn.
By
Martijn de Visser, at 1:26 PM
I couldn't agree more, Martijn. They're finally entering the era of fully OOP. What more could we ask for?
By
koen, at 1:59 PM
In response to marijn's comment, I was wondering if anyone knows of a Javascript equivalent to the Flash "delegate" method.
I have a menu that uses -a- tags nested within -h4- tags. The -h4- tags trigger mouse rollovers (background color changes) so that the menu items look like buttons. Unfortunately, the user has to click on the actual link (not the button) to go anywhere. This isn't intuitive. I was thinking that I would have to rewrite the menu to eliminate the -H4- tags, or define separate onclick handlers for each of the -H4- tags. But that's really messy. I would love to delegate the click from the -a- tags to the -h4- tags, and define all of the event handlers only once. I don't think Javascript can do this though... Comments?
By
Anonymous, at 8:20 AM
The fourth wow power leveling latest game in wow power leveling Warcraft series is ‘wow power leveling’. Also known as wow power leveling, it represents a wow power leveling multiplayer online wow power leveling game, the best of wow power leveling kind. Initially, it was wow gold it be released in 2001, but wow powerleveling was delayed wow powerleveling 2004, thus wow powerleveling the 10 years ofwow powerleveling franchise of thiswow gold series. The world of warcraft power leveling was not world of warcraft power levelingfulfilling, because wow power levelproblems with wow power level server’s stability power leveling wow performance occurred, but power leveling wow game still power leveling wow a financial success powerleveling wow the most powerleveling wow game of its kind. The number cheap wow power leveling users that play Maple Story mesos, exceeds 8.5 MapleStory mesos, worldwide.As a form ms mesos,recognition for mesos,outstanding popularity, the game SilkRoad Gold, received aSRO Gold, of awards. Now the question eq2 plat, why is eq2 gold, game eq2 Platinum, popular? For anyoneEverQuest 2 Platinum, played the previous EverQuest 2 gold, and EverQuest 2 plat, already initiated lotro gold, the mysterious world lotr gold, the breathtaking Lord of the Rings online Gold, this Rolex Replica nothing but an Replica Rolex adventure that continues the story of ‘Warcraft III: Frozen Throne’, four years after conclusion, in the world of Azeroth. The game is online role-playing, the previous versions being online and offline strategy games. The major thrills and unique features are present as in every Blizzard game.
By
Anonymous, at 2:09 AM
wow power leveling
wow powerleveling
world of warcraft power leveling
ffxi power leveling
ffxi powerleveling
ffxi
ffxi gil
age of conan
lotro powerleveling
lotro power leveling
lotro goldwow power leveling
wow powerleveling
world of warcraft power leveling
ffxi power leveling
ffxi powerleveling
ffxi
ffxi gil
age of conan
lotro powerleveling
lotro power leveling
lotro goldwow power leveling
wow powerleveling
world of warcraft power leveling
ffxi power leveling
ffxi powerleveling
ffxi
ffxi gil
age of conan
lotro powerleveling
lotro power leveling
lotro goldwow power leveling
wow powerleveling
world of warcraft power leveling
ffxi power leveling
ffxi powerleveling
ffxi
ffxi gil
age of conan
lotro powerleveling
lotro power leveling
lotro goldwow power leveling
wow powerleveling
world of warcraft power leveling
ffxi power leveling
ffxi powerleveling
ffxi
ffxi gil
age of conan
lotro powerleveling
lotro power leveling
lotro goldwow power leveling
wow powerleveling
world of warcraft power leveling
ffxi power leveling
ffxi powerleveling
ffxi
ffxi gil
age of conan
lotro powerleveling
lotro power leveling
lotro goldwow power leveling
wow powerleveling
world of warcraft power leveling
ffxi power leveling
ffxi powerleveling
ffxi
ffxi gil
age of conan
lotro powerleveling
lotro power leveling
lotro goldwow power leveling
wow powerleveling
world of warcraft power leveling
ffxi power leveling
ffxi powerleveling
ffxi
ffxi gil
age of conan
lotro powerleveling
lotro power leveling
lotro goldwow power leveling
wow powerleveling
world of warcraft power leveling
ffxi power leveling
ffxi powerleveling
ffxi
ffxi gil
age of conan
lotro powerleveling
lotro power leveling
lotro gold
By
wow power leveling, at 11:06 PM
runescape money runescape gold runescape gold runescape money buy runescape gold buy runescape money runescape money runescape gold wow power leveling wow powerleveling Warcraft Power Leveling Warcraft PowerLeveling buy runescape gold buy runescape money runescape items runescape accounts runescape gp dofus kamas buy dofus kamas Guild Wars Gold buy Guild Wars Gold lotro gold buy lotro gold lotro gold buy lotro gold lotro gold buy lotro gold runescape money runescape power leveling runescape money runescape gold dofus kamas cheap runescape money cheap runescape gold Hellgate Palladium Hellgate London Palladium Hellgate money Tabula Rasa gold tabula rasa money Tabula Rasa Credit Tabula Rasa Credits Hellgate gold Hellgate London gold wow power leveling wow powerleveling Warcraft PowerLeveling Warcraft Power Leveling World of Warcraft PowerLeveling World of Warcraft Power Leveling runescape power leveling runescape powerleveling eve isk eve online isk eve isk eve online isk tibia gold Fiesta Silver Fiesta Gold SilkRoad Gold buy SilkRoad Gold runescape accounts buy runescape accounts rs2 accounts buy rs2 accounts runescape power leveling rs2 power leveling FFXI Gil buy FFXI Gil gaia gold buy gaia gold buy dofus kamas buy dofus kamas dofus kamas runescape accounts buy runescape accounts rs2 accounts buy rs2 accounts runescape power leveling rs2 power leveling rs2 gold buy rs2 gold runescape
By
Anonymous, at 5:53 PM
runescape money runescape gold tibia item tibia gold runescape accounts tibia money runescape gp buy runescape gold tibia gold tibia item buy runescape money runescape items tibia money
By
Anonymous, at 12:04 AM
naughtyoffices -
oxpassport -
oxpassports -
planetinterracial -
pornmovieoutlet -
pornmovieoutlets -
pornmoviesoutlet -
pornmoviesoutlets -
rapvideoaudition -
rapvideoauditions -
rapvideosaudition -
rapvideosauditions -
realarizonaamateurs -
realfuckingcouples -
reallife -
redautumnsex -
shemalefuckslut -
shemalefucksluts -
sinfulteen -
sinfulteens -
sizegenetic -
sizegenetics -
slantedhole -
slantedholes -
streetblowjobs -
sugarpanties -
sugarpanty -
tastyteenbabe -
tastyteenbabes -
tastyteensbabe -
taylorbow -
tightcherries -
tightcherry -
tinysecret -
tinysecrets -
tinyssecret -
tinyssecrets -
trannycenterfold -
trannycenterfolds -
tugjobs -
tushyschool -
tushysschool -
undergroundasian -
undergroundasians -
welivetogether -
whippedass -
whitetrashteen -
whitetrashteens -
wiredpussy -
hardpornostars -
addictiveass -
addictiveasses -
allsitesaccess -
aluckystranger -
amateurpornvideo -
amateurpornvideos -
analbabe -
analbabes -
analexpansion -
analsexmaster -
analsexmasters -
asianfuckface -
asianfuckfaces -
asianpleasure -
asianpleasures -
asianslut -
asiansluts -
asiapleasures -
assparade -
ballhoneys -
bigmouthfuls -
boyfirsttime -
buttmachineboys -
captainstabbin -
classicmature -
classicmatures -
crazyfortit -
crazyfortits -
cumfiesta -
cumhungrychick -
cumhungrychicks -
dangerousdongs -
doeeyedslut -
doeeyedsluts -
ebonyfantasies -
ebonyfantasy -
fatgirlsxxx -
fatgirlxxx -
freshsexbabe -
freshsexbabes -
gayway -
guygobothway -
guysgobothways -
hardcoreheaven -
hardcoreheavens -
hardscenevideo -
hardscenevideos -
herfirstgangbangparties -
herfirstgangbangparty -
hogtied -
interracialexplorer -
interracialexplorers -
inthevip -
karaadultplayground -
karasadultplayground -
karasadultplaygrounds -
karasxxx -
karaxxx -
legsandfeet -
lesbianpink -
lesbianplayground -
lesbianplaygrounds -
lesbianpink -
lovethecock -
lovethecocks -
majormelon -
majormelons -
maturesexvid -
maturesexvids -
mikeinbrazil -
milfhunter -
milflessons -
myfirstpornscene -
petitepassion -
petitepassions -
pornstarvideoclub -
pornstarvideosclub -
publicamateurblowjob -
publicamateurblowjobs -
rawteenflix -
rawteenyflix -
realariozaamateurs -
realfuckingcouples -
realgayguy -
realgayguys -
roundandbrown -
shemaleaudition -
shemaleauditions -
shemalesauditions -
simplybestmovie -
simplybestmovies -
streetblowjobs -
sugarxxxlesbian -
sugarxxxlesbians -
sweet8teen -
sweet8teens -
taylorlittle -
teenblowjobaudition -
teenblowjobauditions -
teendreamer -
teendreamers -
teenmptation -
teenmptations -
teensdreamer -
teenssteam -
teenssteams -
teensteam -
teensteams -
teensx -
teenx -
thepornstarachive -
thepornstarachives -
trannystar -
trannystars -
tugjobs -
twistedmovie -
twistedmovies -
ultimatehandjob -
ultimatehandjobs -
weshallovercum -
whippedass -
whiteboyblackgirl -
whiteboysblackgirls -
wiredpussy -
hardpornostars -
18interracial -
absolutemale -
absolutemales -
absolutemale -
adultchatnetwork -
adultchatnetworks -
adultdream -
adultdreams -
allsitesaccess -
asiaheat -
asianheat -
assparade -
awesomeorgies -
awesomeorgy -
ballhoneys -
bigandplump -
bigmouthfuls -
bignaturals -
bignplump -
bignplumps -
blowingload -
blowingloads -
captainstabbin -
centerfoldheat -
centerfoldsheat -
clubcock -
clubcocks -
cumfiesta -
dangerousdongs -
dirtycheerleader -
dirtycheerleaders -
emailerotica -
exoticredhead -
exoticredheads -
fantasytoons -
fantasytoon -
fetishhotel -
fetishhotels -
firstlesbiankiss -
firstlesbianskiss -
fortbooties -
fortbooty -
foxybrunette -
foxybrunettes -
fuckingmachines -
gaychatnetwork -
girlntoy -
girlsntoys -
greatlookingass -
greatlookingasses -
groupthrill -
groupthrills -
hardbear -
hardbears -
hiddeneye -
hiddeneyes -
hogtied -
hotasiancherries -
hotasiancherry -
hotlittlepackage -
itnernationalbikini -
internationalbikinis -
inthevip -
justasianteen -
justasianteens -
jsutforlady -
justfortheladies -
karaamateur -
karaamateurs -
karasamateur -
karasamateurs -
latinakiss -
latinkiss -
mikeinbrazil -
milfhunter -
milflessons -
mixedflavor -
mixedflavors -
myfirstpornscene -
mykinkywife -
mykinkywifes -
nastyblacksex -
nastyboy -
nastyboys -
obeymeslave -
obeymeslaves -
oraladdiction -
oraladdictions -
perfecttoe -
perfecttoes -
petitelatina -
petitelatinas -
pregnantbabe -
pregnantbabes -
realarizonaamateurs -
realfuckingcouples -
redhotpornstar -
redhotpornstars -
roundandbrown -
shelikegirl -
shelikegirls -
shelikesgirl -
shelikesgirls -
silkyblonde -
silkyblondes -
soldierofcock -
soldierofcocks -
soldiersofcock -
soldiersofcocks -
sororityreview -
taylorbow -
tightanalslut -
tightanalsluts -
totallyteen -
totallyteens -
tranniesonline -
trannyonline -
trannysurprise -
tugjobs -
wetlesbian -
wetlesbians -
whippedass -
wiredpussy -
xratedlive -
hellfiresex -
allanalmovie -
allanalmovies -
animeillustrate -
animeillustrated -
asianexotic -
asianexotics -
awesomeinterracial -
baleyandjules -
barebree -
bftgirl -
bftgirls -
bjquickies -
blackcockparties -
blackcockparty -
blackcocksparty -
boobinspector -
boobinspectors -
cumshotcircus -
cumshotscircus -
cutegirlfeet -
cutegirlsfeet -
easyelder -
easyelders -
ebonyaudition -
ebonyauditions -
ebonybadgirl -
ebonybadgirls -
ebonycandy -
ebonysizzle -
ebonysizzles -
frankwank -
hell fire sex -
hellfiresex -
hotgayporn -
hotgayporno -
hotxxxblonde -
hotxxxblondes -
justadultmovie -
justadultmovies -
justover18 -
justovereighteen -
latinaexposure -
latinexposure -
latinexposures -
lesbianexotic -
lesbianexotics -
lesbianexperience -
lesbianexperiences -
lezbteen -
lezbteens -
livehardcoreshow -
melonhunter -
melonhunters -
milfexposed -
milfsexposed -
moramia -
mrchewasianbeaver -
mrchewasianbeavers -
mrchewsasianbeaver -
mtystudio -
mtystudios -
naughtyteenclub -
naughtyteensclub -
nocumdodgingallowed -
now18 -
noweighteen -
nutsonsluts -
orgypleasure -
orgypleasures -
pimpfreepic -
pimpfreepics -
primemanmeat -
primemenmeat -
pumpthatass -
pumpthatasses -
pumpthatass -
realbignude -
realbignudes -
realmilfgangbang -
sexyandpetite -
sexyandpetites -
shemaleangel -
shemaleangels -
stormyfriday -
strictlypornstar -
strictlypornstars -
stunningstud -
stunningstuds -
supremecock -
supremecocks -
supremehardcore -
teenbjauditions -
teenblowjobaudition -
teenblowjobauditions -
teenblowjobsauditions -
teenmania -
teenrider -
teenriders -
teenymania -
teenymanias -
theadultcinema -
thematuresource -
thematuresources -
totallyamateur -
totallyamateurs -
trannyrealm -
truetere -
whorgies -
hellfiresex -
18vision -
adultmoviematrix -
adultmoviesmatrix -
amateurmoviematrix -
amateurmoviesmatrix -
analmoviematrix -
analmoviesmatrix -
bangkokbanger -
bangkokbangers -
bigtitpatrol -
bigtitpatrols -
bigtitspatrol -
bigtitspatrols -
cockbrutality -
devonxxx -
ebonyflic -
ebonyflics -
ebonymoviematrix -
ebonymoviesmatrix -
eruptingpussies -
eruptingpussy -
eurofucktrip -
eurofucktrips -
fasttimeatnau -
fasttimesatnau -
fasttimesatnaughtyamericanuniversity -
flirtingpassion -
flirtingpassions -
frankwank -
gayblinddatesex -
gloryholesstation -
gloryholestation -
gspotfacial -
gspotfacials -
hardcoremoviesmatrix -
hardcoremoviematrix -
herfirstanalsex -
hisfirstanalsex -
hornyspanishfiles -
hornyspanishflie -
hornyspanishflies -
interracialmoviematrix -
interracialmoviesmatrix -
lesbianmoviematrix -
lesbianmoviesmatrix -
littleaprils -
maturemoviematrix -
maturemoviesmatrix -
mikeinbrazil -
mikesinbrazil -
mrchewsasianbeavers -
nikkistyler -
nikkityler -
oralmoviematrix -
oralmoviesmatrix -
passion -
passions -
pinkcandyshaver -
pinkcandyshavers -
pleasebangmywife -
pleasebangmywifes -
pleasebangthewife -
povpervert -
pussyman -
pussymen -
rockiroad -
rockiroads -
rockiroads -
ronnistuscadero -
ronnituscadero -
supertwink -
supertwinks -
teenbopperclub -
teenymoviematirx -
teenmoviesmatrix -
teenslam -
teenybopperclub -
teenyboppersclub -
terapatrick -
teraspatrick -
texasdildomassacres -
texasdildomassacre -
txassdildomassacre -
thebigswallow -
thebigswallows -
tinyblackadventure -
tinyblackadventures -
tinysblackadventure -
tinysblackadventures -
titplus -
titsquirt -
titsquirts -
titssquirts -
tittyplus -
trannyhookup -
trannyhookups -
twinkfromthehood -
twinksfromthehood -
vanillateenblackcream -
vanillateensblackcream -
videoseeker -
videoseekers -
videosseeker -
videosseekers -
hellfiresex -
africunt -
alwaysamateur -
alwaysamateurs -
analintensity -
analsuffering -
assesparade -
assparade -
assparades -
barefeetmaniac -
barefeetmaniacs -
barefootmaniac -
barefootmaniacs -
bigsausagepizza -
bigsausagepizzas -
blackattackgangbang -
blackattackgangbangs -
bootystudio -
bootystudios -
brainpass -
brainpasses -
brandydidder -
brandydidders -
brandysdidder -
cockbrutality -
creamedcornhole -
creamedcornholes -
ebonyhunger -
ebonyhungers -
eurobridetryout -
eurobridetryouts -
facialland -
facialsland -
fetishgalaxy -
frankwank -
gayplayer -
gayplayers -
girlhuntinggirl -
girlshuntinggirls -
hell fire sex -
hellfiresex -
herfirstass2mouth -
herfirstasstomouth -
herfirstthreesome -
hisfirstthreesome -
indiandreamgirl -
indiandreamgirls -
ispycameltoe -
ispycameltoes -
jerkmycock -
jerkmycocks -
jessejane -
jessesjane -
justfacial -
justfacials -
lesbocircle -
lesboscircle -
littleapril -
littlesapril -
milfcruiser -
milfcurisers -
milflesson -
milflessons -
milfscruiser -
milfscruisers -
milfslesson -
milfslessons -
nocumdodgingallowed -
nudebeachhouse -
oxpassport -
oxpassports -
petercumshot -
petercumshots -
peterscumshot -
peterscumshots -
povpervert -
realitypornpass -
realitypornpasses -
roundandbrown -
roundnbrown -
royalboob -
royalboobs -
sizegenetic -
sizegenetics -
spoiledslut -
spoiledsluts -
teendirtbag -
teendirtbags -
teenhitchhiker -
teenhitchhikers -
teenshitchhiker -
teenshitchhikers -
teenslam -
whorgies -
tushyschool -
twinkforcash -
twinksforcash -
whorgies -
xratedasianporn -
xratedblackporn -
xratedfetishporn -
xratedgayporn -
xratedhardcoreporn -
xratedlesbianporn -
xratedmatureporn -
xratedteenporn -
yankmycrank -
yankmycranks -
hellfiresex -
adultmoviesstation -
adultmoviestation -
allpetite -
allpetites -
allstarasian -
allstarasians -
analrush -
asianfuckface -
asianfuckfaces -
asianprincesses -
asiansexmaster -
asiansexmasters -
bustyasianangel -
bustyasianangels -
cockbrutality -
crazyfortit -
crazyfortits -
cumhungrychick -
cumhungrychicks -
doublepark -
doubleparked -
downloadgaypornnow -
ebonyvideosstation -
ebonyvideostation -
fatgirlsxxx -
fatgirlxxx -
freshsexbabe -
freshsexbabes -
gaydvdcollection -
hardcoreheaven -
hardcoreheavens -
hell fire sex -
hellfiresex -
intenseinterracial -
interracialretreat -
jizzcafe -
jizzcafes -
justhardcoresex -
legsandfeet -
lesbianplayground -
lesbiansuite -
lesbiansuites -
lesbianvideodelight -
lesbianvideodelights -
lesbostrick -
lesbotrick -
lesbotricks -
lipstickdyke -
lipstickdykes -
matureappeal -
matureappeals -
maximumorgies -
maximumorgy -
meatholes -
naturalhairygirl -
naturalhairygirls -
naughtyoffice -
naughtyoffices -
planetinterracial -
pornmovieoutlet -
pornmoviesoutlet -
pornstarvideoclub -
pornstarvideosclub -
povpervert -
rapvideoaudition -
rapvideoauditions -
rapvideosaudition -
rapvideosauditions -
rwateenyflix -
reallife -
redautumnsex -
shemaleaudition -
shemaleauditions -
shemalefuckslut -
shemalefucksluts -
shemalesauditions -
simplybestmovie -
simplybestmovies -
sinfulteen -
sinfulteens -
slantedhole -
slantedholes -
sugarpanties -
sugarpanty -
sweet8teen -
sweet8teens -
tastyteenbabe -
tastyteenbabes -
teenbjtryouts -
teenblowjobtryout -
teenblowjobtryouts -
teendreamer -
teendreamers -
teenslam -
tightcherries -
tightcherry -
tinysecret -
tinysecrets -
trannycenterfold -
trannycenterfolds -
undergroundasian -
weshallovercum -
whiteboyblackgirl -
whtieboysblackgirls -
whitetrashteen -
whitetrashteens -
whorgies -
hotcollegejocks -
adultmovieszone -
adultmoviezone -
adultmoviezones -
allbigcock -
allbigcocks -
amateurstour -
amateurtour -
americanbukkake -
americanbukkakes -
animeaction -
animeactions -
backseatbangers -
bimbowive -
bimbowives -
bjhottie -
bjhotties -
blackcockswhttesluts -
blackonblonde -
blackonblondes -
blacksonblonde -
blacksonblondes -
boobexamscam -
bushless -
cheerleaderfantasies -
cheerleaderfantasy -
cigaretteslut -
cigarettesluts -
collegepartygirl -
collegepartygirls -
collegesororityslut -
collegesororitysluts -
cumslurpingwhore -
cumslurpingwhores -
ebonysuperstar -
ebonysuprestars -
evilescort -
evilescorts -
exploitedblackteen -
exploitedblackteens -
filthyletter -
freehardcoreparty -
gangbangsquad -
gaypremiere -
gaypremieres -
googirl -
googirls -
herfirstanalsex -
herfirstbigcock -
hisfirstgaysex -
hisfirsthugecock -
hornyblackgirl -
hornyblackgirls -
insanefacial -
insanefacials -
jennasxxx -
jennaxxx -
justfacials -
lingeriehottie -
lingeriehotties -
locallesbian -
locallesbians -
maturedelight -
maturedelights -
By
Anonymous, at 1:39 AM
milfseeker -
moviedrive -
moviedrives -
over18xxx -
pornstudsearch -
realhead -
realheads -
richbrat -
richbrats -
sexlounge -
sexlounges -
sexygangbang -
sexygangbangs -
shemalesorority -
sinfulpanties -
sinfulpanty -
sinfultale -
sinfultales -
slutseeker -
slutseekers -
slutsseeker -
slutsseekers -
sodrunk -
sodrunks -
springbreaknetwork -
springbreaknetworks -
springbroken -
springbrokens -
streetbj -
streetbjs -
streetblowjob -
streetblowjobs -
stud4stud -
superhotblonde -
superhotblondes -
teensforcash -
thickjuicycock -
thickjuicycocks -
ultrabbw -
ultrabbws -
updaass -
wildandready -
xxlgirls -
xxxjug -
xxxasianparadise -
xxxasianparadises -
xxxlesbianwhore -
xxxlesbianwhores -
xxxrealitytv -
hotcollegejocks -
adultxxxpornstar -
adultxxxpornstars -
analcraving -
analcravings -
backseatbangers -
bicurosity -
bigbonerbonus -
bigbonersbonus -
blackcockswhitesluts -
boobexamscam -
clubheshe -
clubheshes -
cockking -
cockkings -
dirtygangbang -
dirtygangbangs -
filthyletters -
freshaudition -
freshauditions -
gangbangsquad -
giantgaycock -
giantgaycocks -
gloryhole -
gloryholes -
gothfuck -
gothfucks -
hardcoretoon -
hardcoretoons -
hardcoretraining -
hegotconned -
hentaixxxsex -
herfirstanalsex -
herfirstbigcock -
hisfirstgaysex -
hisfirsthugecock -
horsecocksex -
horsecockssex -
hotel69 -
hustlerplatinum -
hustlersplatinum -
inthevip -
inthevips -
irresistableleg -
irresistablelegs -
jackingteen -
jackingteens -
japan18 -
japanese18 -
jp18 -
jpeighteen -
justfacials -
kuntfu -
kuntfus -
lesbo101 -
lesbos101 -
manhunter -
manhunters -
megacockcraver -
megacockcravers -
megacockscraver -
megacockscravers -
megamovieporn -
megamvoiesporn -
milfseeker -
momiwouldliketofuck -
momsiwouldliketofuck -
monstercockfarm -
monstercocksfarm -
nastymoviemadness -
nastymoviesmadness -
orgymoviemadness -
orgymoviesmadness -
pimp4aday -
pimpforaday -