I think I agree with the main thrust of your post, but just to nitpick a little, I don't think you actually wrote "imperative code", at least as far as I understand the term, and perhaps if I'm wrong somebod will correct me. You are actually writing Object Oriented code because you define a set of data then you write methods that operate on this set of data. The fact that the language doesn't have, or you aren't using, any specific syntactical features related to OO code doesn't matter, as far as I know.