Refactor Deg::deg into Deg::generate
Make Deg non instantiable
Fix Deg::generate logic to be more readable