PM: refactor - start to improve docs and split out tests
PM: refactor - split out tests to match file structure