Learning object oriented design is a never ending path.

Its amazing how much fundamental OOP I continue to learn, with regards to acheiving the perfect object oriented design. I mean, you can learn to write some decent apps, get them working, maintain them for a while, but really really getting down to necessary names and abstractions, class attributes, methods, when to do this/when to do that, really is a (seemlingly) never-ending learning process.

I continue to find new OOPs rules worthy of being etched in stone, and their simplistic and obvious nature amazes me.