Add a large amount of documentation to haas.model.

should we talk about design philosophy in comments?