Loads of renaming and refactoring of the Artifact hierarchy. I removed the optional attribute from Dependency and then refactored everything with better names.