organising implementation code with pragma marks