Moved generating into its own class to isolate away from Hug