properly privatise all the private classes
note where the YAML recipe came from