Cleanup, documentation edits, factoring out creations of objects into protected methods suitable for overriding