Moved generation to their own files