Added HashSet to track draining parts
Avoids several scans through the entire part list on each iteration
Updated DLLs