Includes some refactoring to allow testing the output in isolation. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>