KRACOEUS-7847 and KRACOEUS-7282

Please review this PR, some more work pending, don't merge it just yet.
Please make all private methods protected.