From what I've seen, most use an existing module as a model of sorts, and construct theirs using the existing module as an example.