added 3 union algorithms