object model now makes sense; code looks less like python