Adding in equals and hash code overrides to module and version. As marked fields as read-only when applicable.