I don't find the `utility functions` and `initialization` sections helpful, as they are vague and there's a certain amount of overlap. Dividing the code into functional areas might be better.