Introduce Builder struct for Output
This would allow remove some setters from public access, essentially protecting Output from unauthorized modifications.
This would allow remove some setters from public access, essentially protecting Output from unauthorized modifications.