moved all the structs out of the library; a library would be a better fit if there were also some functionality to go with the struct; it also makes the code easier to read without the LicenseStructs being prefixed for references to a struct (eg LicenseStructs.License vs License)
changed the layout of the file to have the private/internal code to be towards the bottom