Eh? The constructor in Acme::Playmate could have been called get_playmate_data and returned an unblessed hash? The semantics of using the module would have been exactly the same. I don't see how that warrants OO in any manner. Besides the constructor being a constructor there's nothing OO about even the existing interface at all.