What's the purpose of all those *.m files? Are they just interface specifications to be read by humans or are they used to generate some code?