OOP: Just One Reason Why
Object-Oriented Programming is without a doubt an 800 pound gorilla. Ignore it at your peril, and be prepared for derision by your fellow programmers if you do. Actually, there is quite a backlash that's developed against OOP. I was surprised to find that a good part of the Wikipedia entry on the topic was actually a critique of it, rather than a clear explanation. (I guess that's the sort of thing that happens when you have an entire encyclopedia written by geeks who think they know everything...)
Rather than join in the chorus for or against, I simply wish to make a single point as to why OOP is extremely useful for building large-scale applications. Traditionally, the main benefits of OOP are claimed to be Reusability, Reliability, Robustness, Extensibility and Maintainability. From my experience, the only one that matters most of the time is Maintainability.
Let's face it: when you start a new project, it's unlikely that you're going to reuse large portains of old code. Okay, you might reuse some basic classes like "Rect" and "XML", but usually every project is unique and different, and has its own needs. Furthermore, the goal of reusability can be achieved pretty well just by creating libraries, even if they're not OOP. It is true, however, that reusability of Objects within a program is a major benefit over procedural programs. If you have a game with a ton of animated Sprites flying around, it's a very natural thing to make each a self-contained object.
Robustness and Reliability are both potential beneftis of OOP, but I would say they do not come for free, and have more to do with good planning and code design than with a particular programming paradigm.
Extensibility mainly refers to inheritance, which allows you to create subclasses that share the same functionality as parent classes. Unfortunately, inheritance can easily get out of hand and create massive, confusing hierarchies of Objects. In most cases, containment is the safer way to go. (The only time to use inheritance is when there is a true equality between two things. Thus, a Person may be considered a type of Animal, but Waiter is not a type of Person. Waiter extends Job, not erson.)
Finally, we have Maintainability, which is the most immediate benefit you are likely to experience if you follow good Object Oriented Practices. To get this benefit, it's not enough that you use objects, you must be strict about encapsulating all your data, and enforcing very strict limitations on how objects communicate back and forth. If you do this, you will find that your programs are significantly less buggy, and easier to modify as they become large, for the simple reason that every line of code has a specific place it must go where it makes the most sense -- an association with a particular Object.
Now, if you don't think about encapsulating your data, you're liable to have a mess on your hands, with numerous objects talking back and forth in an ad hoc manner. And you'll have twice as many lines of code as you would have had in a procedural program. I'm sure this experience has led many to start bashing OOP. But I've found that once you get into the habit of making each Object self-contained, it becomes easier. And before long, the magic starts to happen! If an artist asks you to make fundamental changes to an animation routine, you know that you can safely change your Animation Class, and you don't have to worry too much about breaking other parts of the application, potentially saving you tons of regression testing.
Procedural (non-OOP) programs can also be written in a modular way, as collections of functions, but there is a great tempatation to cut corners when doing so. That's when you get into trouble. All the rules of OOP may be tiresome, but they are there to help keep your code manageable. Certainly for shorter programs, there is a case to be made against OOP, and the additional overhead it entails. But for next big application, avoid it at your own risk!
Rather than join in the chorus for or against, I simply wish to make a single point as to why OOP is extremely useful for building large-scale applications. Traditionally, the main benefits of OOP are claimed to be Reusability, Reliability, Robustness, Extensibility and Maintainability. From my experience, the only one that matters most of the time is Maintainability.
Let's face it: when you start a new project, it's unlikely that you're going to reuse large portains of old code. Okay, you might reuse some basic classes like "Rect" and "XML", but usually every project is unique and different, and has its own needs. Furthermore, the goal of reusability can be achieved pretty well just by creating libraries, even if they're not OOP. It is true, however, that reusability of Objects within a program is a major benefit over procedural programs. If you have a game with a ton of animated Sprites flying around, it's a very natural thing to make each a self-contained object.
Robustness and Reliability are both potential beneftis of OOP, but I would say they do not come for free, and have more to do with good planning and code design than with a particular programming paradigm.
Extensibility mainly refers to inheritance, which allows you to create subclasses that share the same functionality as parent classes. Unfortunately, inheritance can easily get out of hand and create massive, confusing hierarchies of Objects. In most cases, containment is the safer way to go. (The only time to use inheritance is when there is a true equality between two things. Thus, a Person may be considered a type of Animal, but Waiter is not a type of Person. Waiter extends Job, not erson.)
Finally, we have Maintainability, which is the most immediate benefit you are likely to experience if you follow good Object Oriented Practices. To get this benefit, it's not enough that you use objects, you must be strict about encapsulating all your data, and enforcing very strict limitations on how objects communicate back and forth. If you do this, you will find that your programs are significantly less buggy, and easier to modify as they become large, for the simple reason that every line of code has a specific place it must go where it makes the most sense -- an association with a particular Object.
Now, if you don't think about encapsulating your data, you're liable to have a mess on your hands, with numerous objects talking back and forth in an ad hoc manner. And you'll have twice as many lines of code as you would have had in a procedural program. I'm sure this experience has led many to start bashing OOP. But I've found that once you get into the habit of making each Object self-contained, it becomes easier. And before long, the magic starts to happen! If an artist asks you to make fundamental changes to an animation routine, you know that you can safely change your Animation Class, and you don't have to worry too much about breaking other parts of the application, potentially saving you tons of regression testing.
Procedural (non-OOP) programs can also be written in a modular way, as collections of functions, but there is a great tempatation to cut corners when doing so. That's when you get into trouble. All the rules of OOP may be tiresome, but they are there to help keep your code manageable. Certainly for shorter programs, there is a case to be made against OOP, and the additional overhead it entails. But for next big application, avoid it at your own risk!
17 Comments:
You claim that OOP makes it easier to maintain large programs. However, I find that the best way to maintain large programs is to *avoid* large programs to begin with. Eliminate the problem instead of tango with it.
I design procedural code as relatively small, independant "tasks" that communicate mostly through an RDBMS (and shared libraries). I agree that pre-RDBMS procedural code was a mess. RDBMS are the brass bullet (there is no silver bullet) that allows one to avoid "big EXE syndrom". The database is the larger-scale "protocol", and I find relational offers more discipline and consistency than a sea of classes, which are a variation of the "navigational" structures that were found lacking by Dr. Codd when he formulated relational.
Set theory and the ability to change your viewpoint of the same info to fit specific needs and wants is the main power behind relational. Plus, it offers many collection-handling operations that OOP does not natively handle.
By
Anonymous, at 9:20 AM
In some cases, you can't avoid writing a large program. You're not going to be able to write a Word Processro or an MMORPG in 500 lines. Programming is always going to be about reducing a problem to smaller problems, and for this reason, some sort of modular approach is going to make sense.
We can debate over whether it's best for those modules to be objects or procedural snippets. When you're building an application where it's easy to identify "real-world" analogues for your modules, say in building a GUI, an OOP approach makes sense.
For processing a relational database, you may be correct some kind of set theory approach works best. Use the tool works best to solve the problem.
By
adampasz, at 12:28 PM
Consider the possibility that dissent towards OOP arises mainly from developers who enjoy hacking together solutions instead of looking at a global picture of the problem domain and extrapolation of a unified representation of said domain. In almost all cases of procedural preference, the resulting software ended up being little more than a conglomeration of hacks exactly for the reason that so basic a concept as encapsulation was no adhered to. It's easy to forget that a program is not just a bunch of functions, not is it only a state, but that it's both...that certain states correspond to certain functions, and that only certain functions should results in certain states. Sure, you can do that in procedural programming by being careful, but what's the guarantee that then next developer working on the same program will be just as careful? In fact, how will they even know? At some point, it gets murky with global variables, because there's a tendency towards abuse by cramming whatever state information you damn well please into them from any function. Not so with private members in classes--they will always be responsible only for storing the state of exactly one class. Yes, this is a restriction, but so is having laws to prevent crime...but I digress. If anyone has not yet understood this, I'll say it here plain and simple: OOP is the evolution of procedural programming. This is contrary to how most debaters make them out to be parallel paradigms. And just as there was the deficiency of explicit state encapsulation in procedural programming, OOP is not without it's limitations, which is why we have AOP today. But that's a topic for another day I suppose.
By
Eugene, at 5:48 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 1:42 AM
cream filled babes -
deep in her -
double diper -
fucked tits -
fucking machines -
gagging whores -
gag sluts -
hog tied -
men in pain -
mother daughter fuck -
my favorite creampies -
my wifes friends -
naughty best friends -
pervert paradise -
pigtails round asses -
pop porno -
pvc and latex -
real big racks -
sapphic erotica -
spanked and abused -
stink fillers -
tease it out -
tranny rach -
ultimate surrender -
water bondage -
will she gag -
wired pussy -
young ripe and ready -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
all star porn girls -
anal lick fest -
ass like that -
bang bus -
black attack gangbang -
cream filled babes -
deep in her -
double diper -
fucked tits -
fucking machines -
gagging whores -
gag sluts -
hog tied -
men in pain -
mother daughter fuck -
my favorite creampies -
my wifes friends -
naughty best friends -
pervert paradise -
pigtails round asses -
pop porno -
pvc and latex -
real big racks -
sapphic erotica -
spanked and abused -
stink fillers -
tease it out -
tranny ranch -
ultimate surrender -
water bondage -
will she gag -
wired pussy -
young ripe and ready -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
big cock teen addiction -
anal lick fest -
ass like that -
bang bus -
black attack gangbang -
cream filled babes -
deep in her -
drool my load -
fucked tits -
fucking machines -
gagging whores -
gag sluts -
hog tied -
men in pain -
mother daughter fuck -
my favourite creampies -
naughty best friends -
no cum dodging allowed -
pigtails round asses -
pimp juice xxx -
pop porno -
pvc and latex -
real big racks -
sapphic erotica -
spanked and abused -
stink fillers -
tease it out -
tranny ranch -
ultimate surrender -
water bondage -
will she gag -
wired pussy -
young ripe and ready -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
big cock teen addiction -
anal lick fest -
ass like that -
bang bus -
black attack gangbang -
cream filled babes -
deep in her -
drool my load -
fucked tits -
fucking machines -
gagging whores -
gag sluts -
hog tied -
men in pain -
mother daughter fuck -
my favorite creampies -
naughty best friends -
no cum dodging allowed -
pigtails round asses -
pimp juice xxx -
pop porno -
pvc and latex -
real big racks -
sapphic erotica -
spanked and abused -
stink fillers -
tease it out -
tranny ranch -
ultimate surrender -
water bondage -
will she gag -
wired pussy -
young ripe and ready -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
big league facials -
anal lick fest -
ass like that -
bang bus -
black attack gangbang -
cream filled babes -
deep in her -
drool my load -
fucked tits -
fucking machines -
gagging whores -
gag sluts -
hog tied -
men in pain -
mother daughter fuck -
my favourite creampies -
naughty best friends -
no cum dodging allowed -
pigtails round asses -
pimp juice xxx -
pop porno -
pvc and latex -
real big racks -
sapphic erotica -
spanked and abused -
stink fillers -
teen slam -
tranny ranch -
ultimate surrender -
water bondage -
will she gag -
wired pussy -
young ripe and ready -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
big league facials -
anal lick fest -
ass like that -
bang bus -
black attack gangbang -
cream filled babes -
deep in her -
drool my load -
fucked tits -
fucking machines -
gagging whores -
gag sluts -
hog tied -
men in pain -
mother daughter fuck -
my favorite creampies -
naughty best friends -
no cum dodging allowed -
pigtails round asses -
pimp juice xxx -
pop porno -
pvc and latex -
real big racks -
sapphic erotica -
spanked and abused -
stink fillers -
teen slam -
tranny ranch -
ultimate surrender -
water bondage -
will she gag -
wired pussy -
young ripe and ready -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
big tit patrol -
anarchy archives -
ass like that -
bang bus -
black attack gangbang -
creamed cornholes -
creamed feet -
deep in her -
drool my load -
fucked tits -
fucking machines -
gag sluts -
hell fire sex -
hog tied -
men in pain -
mother daughter fuck -
my favourite creampies -
naughty best friends -
no cum dodging allowed -
pigtails round asses -
pimp juice xxx -
pop porno -
pvc and latex -
real big racks -
sapphic erotica -
spanked and abused -
stink fillers -
teen slam -
tranny ranch -
ultimate surrender -
whipped ass -
will she gag -
wired pussy -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
big tit patrol -
anarchy archives -
ass like that -
bang bus -
black attack gangbang -
creamed cornholes -
creamed feet -
deep in her -
drool my load -
fucked tits -
fucking machines -
gag sluts -
hell fire sex -
hog tied -
men in pain -
mother daughter fuck -
my favorite creampies -
naughty best friends -
no cum dodging allowed -
pigtails round asses -
pimp juice xxx -
pop porno -
pvc and latex -
real big racks -
sapphic erotica -
spanked and abused -
stink fillers -
teen slam -
tranny ranch -
ultimate surrender -
whipped ass -
will she gag -
wired pussy -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
casting couch teens -
anarchy archives -
ass like that -
bang bus -
blowjob quickies -
creamed cornholes -
creamed feet -
deep in her -
drool my load -
fucked tits -
fucking machines -
gag sluts -
hell fire sex -
hog tied -
men in pain -
mother daughter fuck -
my favorite creampies -
naughty best friends -
nut in her mouth -
pigtails round asses -
pop porno -
porn jackass -
real big racks -
sapphic erotica -
sleep assault -
stink fillers -
teen slam -
tranny ranch -
ultimate surrender -
use my daughter -
whipped ass -
will she gag -
wired pussy -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
casting couch teens -
anarchy archives -
ass like that -
bang bus -
blowjob quickies -
creamed cornholes -
creamed feet -
deep in her -
drool my load -
fucked tits -
fucking machines -
gag sluts -
hell fire sex -
hog tied -
men in pain -
mother daughter fuck -
my favorite creampies -
naughty best friends -
nut in her mouth -
pigtails round asses -
porn jackass -
real big racks -
sapphic erotica -
sleep assault -
stink fillers -
teen slam -
tranny ranch -
ultimate surrender -
use my daughter -
whipped ass -
will she gag -
wired pussy -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
college teens book bang -
ass 2 mouth sluts -
bang bus -
blowjob quickies -
creamed feet -
cum farters -
facial cum targets -
fucked tits -
fucking machines -
hell fire sex -
hog tied -
men in pain -
mother daughter fuck -
nut in her mouth -
porn jackass -
sapphic erotica -
sleep assault -
top notch bitches -
ultimate surrender -
use my daughter -
whipped ass -
wired pussy -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
college teens book bang -
ass 2 mouth sluts -
bang bus -
blowjob quickies -
creamed feet -
cum farters -
facial cum targets -
fucked tits -
fucking machines -
hell fire sex -
hog tied -
men in pain -
mother daughter fuck -
nut in her mouth -
porn jackass -
sapphic erotica -
sleep assault -
top notch bitches -
ultimate surrender -
use my daughter -
whipped ass -
wired pussy -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
giants black meat white treat -
altered assholes -
ass 2 mouth sluts -
bang bus -
blowjob quickies -
creamed feet -
cum farters -
facial cum targets -
fucked tits -
fucking machines -
hell fire sex -
hog tied -
men in pain -
mother daughter fuck -
nut in her mouth -
pov pervert -
sapphic erotica -
sleep assault -
top notch bitches -
ultimate surrender -
use my daughter -
whipped ass -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
giants black meat white treat -
altered assholes -
ass 2 mouth sluts -
bang bus -
blowjob quickies -
creamed feet -
cum farters -
facial cum targets -
fucked tits -
fucking machines -
hell fire sex -
hog tied -
men in pain -
mother daughter fuck -
nut in her mouth -
pov pervert -
sapphic erotica -
sleep assault -
top notch bitches -
ultimate surrender -
use my daughter -
whipped ass -
2 chicks 1 dick -
big sausage pizza -
cheerleader auditions -
eat my black meat -
euro bride tryouts -
girls hunting girls -
hardcore partying -
milf cruiser -
teen hitchhikers -
hrony spanish flies -
adult dating friends -
adult love line -
adult singles zone -
altered assholes -
amateur match -
asian amateur match -
asian love line -
ass 2 mouth sluts -
bang bus -
cam club -
chix in the mix -
college party dates -
creamed feet -
cum farters -
ebony love line -
facial cum targets -
fucked tits -
fucking machines -
gay amateur match -
hog tied -
i want u -
latin love line -
lonely wifes dating club -
man hookups -
meat members -
nuts on sluts -
penetration tease -
pov pervert -
sapphic erotica -
sex and submission -
sex search -
sleep assault -
spread 4 u -
top notch bitches -
ultimate surrender -
use my daughter -
whipped ass -
wild hot dates -
horny spanish flies -
adult dating friends -
adult love line -
adult singles zone -
altered assholes -
amateur match -
asian amateur match -
asian love line -
ass 2 mouth sluts -
bang bus -
cam club -
chix in the mix -
college party dates -
creamed feet -
cum farters -
ebony love line -
facial cum targets -
fucked tits -
fucking machines -
gay amateur match -
hog tied -
i want u -
latin love line -
lonely wifes dating club -
man hookups -
meat members -
nuts on sluts -
penetration tease -
pov pervert -
sapphic erotica -
sex and submission -
sex search -
sleep assault -
spread 4 u -
top notch bitches -
ultimate surrender -
use my daughter -
whipped ass -
wild hot dates -
i spy camel toe -
adult dating friends -
adult love line -
adult singles zone -
altered assholes -
amateur match -
asian amateur match -
asian love line -
bang bus -
banzai sluts -
cam club -
chix in the mix -
college party dates -
creamed feet -
cum farters -
ebony love line -
facial cum targets -
fucked tits -
fucking machines -
gay amateur match -
hog tied -
i want u -
latin love line -
lonely wifes dating club -
man hookups -
midnight prowl -
nuts on sluts -
penetration tease -
pov pervert -
sapphic erotica -
sex and submission -
sex search -
sleep assault -
spread 4 u -
ultimate surrender -
use my daughter -
whipped ass -
white meat on black street -
wild hot dates -
i spy cameltoe -
adult dating friends -
adult love line -
adult singles zone -
altered assholes -
amateur match -
asian amateur match -
asian love line -
bang bus -
banzai sluts -
cam club -
chix in the mix -
college party dates -
creamed feet -
cum farters -
ebony love line -
facial cum targets -
fucked tits -
fucking machines -
gay amateur match -
hog tied -
i want u -
latin love line -
lonely wifes dating club -
man hookups -
midnight prowl -
nuts on sluts -
penetration tease -
pov pervert -
sapphic erotica -
sex and submission -
sex search -
sleep assault -
spread 4 u -
ultimate surrender -
use my daughter -
whipped ass -
white meat on black street -
wild hot dates -
pimp my black teen -
adult dating friends -
adult love line -
adult singles zone -
altered assholes -
amateur match -
asian love line -
bang bus -
banzai sluts -
cam club -
chix in the mix -
college party dates -
cum filled mouths -
cummy pantyhose -
ebony love line -
frank wank -
fucking machines -
gay amateur match -
hog tied -
hot shemale sluts -
i want u -
latin love line -
lonely wifes dating club -
man hookups -
midnight prowl -
nuts on sluts -
penetration tease -
By
Anonymous, at 1:26 AM
real milf gangbang -
sapphic erotica -
sex and submission -
sex search -
sleep asault -
spread 4 u -
ultimate surrender -
use my daughter -
whipped ass -
white meat on black street -
wild hot dates -
pimp my black teen -
adult dating friends -
adult love line -
adult single zone -
altered assholes -
amateur match -
asian love line -
bang bus -
banzai sluts -
cam club -
chix in the mix -
college party dates -
cum filled mouths -
cummy pantyhose -
ebony love line -
frank wank -
fucking machines -
gay amateur match -
hot shemale sluts -
i want u -
latin love line -
lonely wifes dating club -
man hookups -
midnight prowl -
nuts on sluts -
penetration tease -
real milf gangbang -
sapphic erotica -
sex and submission -
sex search -
sleep assault -
spread 4 u -
ultimate surrender -
use my daughter -
whipped ass -
white meat on black street -
wild hot dates -
please bang my wife -
adult dating friends -
adult love line -
adult singles zone -
amateur match -
anal cum junkies -
asian love line -
bang bus -
banzai sluts -
cam club -
college party dates -
cum filled mouths -
cummy pantyhose -
ebony love line -
frank wank -
fucking machines -
hot shemale sluts -
i want u -
latin love line -
lonely wifes dating club -
man hookups -
midnight prowl -
oral cum queens -
penetration tease -
real milf gangbang -
sapphic erotica -
sex and submission -
sex search -
sleep assault -
spread 4 u -
use my daughter -
water bondage -
white meat on black street -
wild hot dates -
please bang my wife -
adult dating friends -
adult love line -
adult singles zone -
amateur match -
anal cum junkies -
asian love line -
bang bus -
banzai sluts -
cam club -
college party dates -
cum filled mouths -
cummy pantyhose -
ebony love line -
frank wank -
fucking machines -
hog tied -
hot shemale sluts -
i want u -
latin love line -
lonely wifes dating club -
man hookups -
midnight prowl -
oral cum queens -
penetration tease -
real milf gangbang -
sapphic erotica -
sex and submission -
sex search -
sleep assault -
spread 4 u -
use my daughter -
water bondage -
white meat on black street -
wild hot dates -
reality pass plus -
all inclusive pass -
amateur match -
anal cum junkies -
bang bus -
black addiction -
cam club -
chix in the mix -
cum filled mouths -
cummy pantyhose -
frank wank -
fucking machines -
hog tied -
hot shemale sluts -
i want u -
midnight prowl -
oral cum queens -
pvc and latex -
real milf gangbang -
sapphic erotica -
sex and submission -
sex search -
sleep assault -
spread 4 u -
water bondage -
white meat on black street -
wired pussy -
reality pass plus -
all inclusive pass -
amateur match -
anal cum junkies -
bang bus -
black addiction -
cam club -
chix in the mix -
cum filled mouths -
cummy pantyhose -
frank wank -
fucking machines -
hog tied -
hot shemale sluts -
i want u -
midnight prowl -
oral cum queens -
pvc and latex -
real milf gangbang -
sapphic erotica -
sex and submission -
sex search -
spread 4 u -
wter bondage -
white meat on black street -
wired pussy -
see her squirt -
all inclusive pass -
anal cum junkies -
bang bus -
black addiction -
cock brutality -
cum filled mouths -
cummy pantyhose -
frank wank -
fucking machines -
hog tied -
hot shemale sluts -
midnight prowl -
oral cum queens -
pvc and latex -
real milf gangbang -
sapphic erotica -
sex and submission -
sex search -
sleep assault -
water bondage -
whorgies -
wired pussy -
see her squirt -
all inclusive pass -
anal cum junkies -
bang bus -
black addiction -
cock brutality -
cum filled mouths -
cummy pantyhose -
frank wank -
fucking machines -
hog tied -
hot shemale sluts -
midnight prowl -
oral cum queens -
pvc and latex -
real milf gangbang -
sapphic erotica -
sex and submission -
sex search -
sleep assault -
water bondage -
whorgies -
wired pussy -
teeny bopper club -
all inclusive pass -
anal cum junkies -
bang bus -
black addiction -
cock brutality -
cummy pantyhose -
double diper -
frank wank -
fucking machines -
hog tied -
hot shemale sluts -
my wifes friends -
pervert paradise -
pvc and latex -
sapphic erotica -
sex and submission -
sex search -
spanked and abused -
tease it out -
water bondage -
whorgies -
wired pussy -
teeny bopper club -