The whole namespace should no longer be "DATabase", rather WoD for the whole project. As such, both of the Program classes should be renamed for their actual purposes
If a rom or disk is found to be a duplicate (by using the actual last item in the list instead of unnecessary cached values), it then checks to see if any information is missing from the rom it's a duplicate of. If the CRC, MD5, or SHA1 are empty and a new value is available, it uses the new value dynamically. This way, the original information in the database is untouched but the generated DAT is more complete.