Yeah, OO really only works if you actually properly follow OO design patterns, and if what you're building is suited to it. The software I'm working on is OO and it works well 90% of the time, but there are some places where... odd choices were made, mostly in the direction of going a little too...